re PR tree-optimization/26260 (PTA is slow with large structs (hits clisp))
2006-02-14 Daniel Berlin <dberlin@dberlin.org> Fix PR tree-optimization/26260 * doc/invoke.texi (max-fields-for-field-sensitive): Document param. * params.h (MAX_FIELDS_FOR_FIELD_SENSITIVE): New. * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Ditto. * tree-ssa-structalias.c (create_variable_info_for): Use MAX_FIELDS_FOR_FIELD_SENSITIVE. From-SVN: r110972
This commit is contained in:
parent
b076a3fd74
commit
98035a75ac
|
@ -1,3 +1,14 @@
|
|||
2006-02-14 Daniel Berlin <dberlin@dberlin.org>
|
||||
|
||||
Fix PR tree-optimization/26260
|
||||
|
||||
* doc/invoke.texi (max-fields-for-field-sensitive): Document
|
||||
param.
|
||||
* params.h (MAX_FIELDS_FOR_FIELD_SENSITIVE): New.
|
||||
* params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Ditto.
|
||||
* tree-ssa-structalias.c (create_variable_info_for): Use
|
||||
MAX_FIELDS_FOR_FIELD_SENSITIVE.
|
||||
|
||||
2006-02-14 Zdenek Dvorak <dvorakz@suse.cz>
|
||||
|
||||
* doc/invoke.texi (-fprefetch-loop-arrays, -fprefetch-loop-arrays-rtl):
|
||||
|
|
|
@ -6195,6 +6195,11 @@ protection when @option{-fstack-protection} is used.
|
|||
@item max-jump-thread-duplication-stmts
|
||||
Maximum number of statements allowed in a block that needs to be
|
||||
duplicated when threading jumps.
|
||||
|
||||
@item max-fields-for-field-sensitive
|
||||
Maximum number of fields in a structure we will treat in
|
||||
a field sensitive manner during pointer analysis.
|
||||
|
||||
@end table
|
||||
@end table
|
||||
|
||||
|
|
|
@ -558,7 +558,15 @@ DEFPARAM (PARAM_MAX_JUMP_THREAD_DUPLICATION_STMTS,
|
|||
"max-jump-thread-duplication-stmts",
|
||||
"Maximum number of statements allowed in a block that needs to be duplicated when threading jumps",
|
||||
15, 0, 0)
|
||||
|
||||
|
||||
/* This is the maximum number of fields a variable may have before the pointer analysis machinery
|
||||
will stop trying to treat it in a field-sensitive manner.
|
||||
There are programs out there with thousands of fields per structure, and handling them
|
||||
field-sensitively is not worth the cost. */
|
||||
DEFPARAM (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE,
|
||||
"max-fields-for-field-sensitive",
|
||||
"Maximum number of fields in a structure before pointer analysis treats the structure as a single variable",
|
||||
100, 0, 0)
|
||||
/*
|
||||
Local variables:
|
||||
mode:c
|
||||
|
|
|
@ -147,4 +147,6 @@ typedef enum compiler_param
|
|||
PARAM_VALUE (PARAM_MIN_VIRTUAL_MAPPINGS)
|
||||
#define VIRTUAL_MAPPINGS_TO_SYMS_RATIO \
|
||||
PARAM_VALUE (PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO)
|
||||
#define MAX_FIELDS_FOR_FIELD_SENSITIVE \
|
||||
((size_t) PARAM_VALUE (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE))
|
||||
#endif /* ! GCC_PARAMS_H */
|
||||
|
|
|
@ -3881,7 +3881,6 @@ check_for_overlaps (VEC (fieldoff_s,heap) *fieldstack)
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Create a varinfo structure for NAME and DECL, and add it to VARMAP.
|
||||
This will also create any varinfo structures necessary for fields
|
||||
of DECL. */
|
||||
|
@ -3945,7 +3944,8 @@ create_variable_info_for (tree decl, const char *name)
|
|||
if (use_field_sensitive
|
||||
&& !notokay
|
||||
&& !vi->is_unknown_size_var
|
||||
&& var_can_have_subvars (decl))
|
||||
&& var_can_have_subvars (decl)
|
||||
&& VEC_length (fieldoff_s, fieldstack) <= MAX_FIELDS_FOR_FIELD_SENSITIVE)
|
||||
{
|
||||
unsigned int newindex = VEC_length (varinfo_t, varmap);
|
||||
fieldoff_s *fo = NULL;
|
||||
|
|
Loading…
Reference in New Issue