------- Comment #6 from hjl at lucon dot org 2007-07-28 20:51 ------- This part of the patch:
Index: tree-ssa.c =================================================================== --- tree-ssa.c (revision 126326) +++ tree-ssa.c (working copy) @@ -979,11 +979,9 @@ useless_type_conversion_p (tree outer_ty return false; /* Do not lose casts between pointers with different - TYPE_REF_CAN_ALIAS_ALL setting or alias sets. */ - if ((TYPE_REF_CAN_ALIAS_ALL (inner_type) - != TYPE_REF_CAN_ALIAS_ALL (outer_type)) - || (get_alias_set (TREE_TYPE (inner_type)) - != get_alias_set (TREE_TYPE (outer_type)))) + TYPE_REF_CAN_ALIAS_ALL setting. */ + if (TYPE_REF_CAN_ALIAS_ALL (inner_type) + != TYPE_REF_CAN_ALIAS_ALL (outer_type)) return false; /* Do not lose casts from const qualified to non-const causes this performance regression. 437.leslie3d is a big file with 19 functions. If I put each function in a separate file, there is no regression. If I put 2 particular functions in one file, there are 10-30% regressions depending on input file. Those 2 functions work on several global arrays. I tried " --param max-aliased-vops=1000000 --param avg-aliased-vops=7". It doesn't make a difference. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32921