mirror of
https://github.com/mirror/make.git
synced 2025-01-14 06:10:12 +08:00
Performance improvements
This commit is contained in:
parent
acbdc33e1c
commit
174e910a1d
@ -1,3 +1,8 @@
|
||||
2009-10-05 Boris Kolpackov <boris@codesynthesis.com>
|
||||
|
||||
* implicit.c (pattern_search): Initialize file variables only
|
||||
if we need to parse a rule that requires the second expansion.
|
||||
|
||||
2009-10-03 Paul Smith <psmith@gnu.org>
|
||||
|
||||
* make.h: Include <alloca.h> even on systems where __GNUC__ is
|
||||
|
15
implicit.c
15
implicit.c
@ -247,6 +247,9 @@ pattern_search (struct file *file, int archive,
|
||||
/* Nonzero if should consider intermediate files as dependencies. */
|
||||
int intermed_ok;
|
||||
|
||||
/* Nonzero if we have initialized file variables for this target. */
|
||||
int file_vars_initialized = 0;
|
||||
|
||||
/* Nonzero if we have matched a pattern-rule target
|
||||
that is not just `%'. */
|
||||
int specific_rule_matched = 0;
|
||||
@ -431,10 +434,6 @@ pattern_search (struct file *file, int archive,
|
||||
}
|
||||
}
|
||||
|
||||
/* We are going to do second expansion so initialize file variables
|
||||
for the rule. */
|
||||
initialize_file_variables (file, 0);
|
||||
|
||||
/* Try each rule once without intermediate files, then once with them. */
|
||||
for (intermed_ok = 0; intermed_ok < 2; ++intermed_ok)
|
||||
{
|
||||
@ -613,6 +612,14 @@ pattern_search (struct file *file, int archive,
|
||||
add_dir = 1;
|
||||
}
|
||||
|
||||
/* Initialize file variables if we haven't already
|
||||
done so. */
|
||||
if (!file_vars_initialized)
|
||||
{
|
||||
initialize_file_variables (file, 0);
|
||||
file_vars_initialized = 1;
|
||||
}
|
||||
|
||||
/* Set file variables. Note that we cannot do it once at the
|
||||
beginning of the function because the stem value changes
|
||||
for each rule. */
|
||||
|
Loading…
Reference in New Issue
Block a user