diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2009-04-28 18:18:17 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2009-04-28 18:18:17 +0200 |
commit | f1028b9da4ea5614c012d87c928e68300cd786b6 (patch) | |
tree | 3014ac421165da8bcefc7487391364b1586f1f22 | |
parent | 9f1bdf53bddd5183e2c4bd62a92e83648671b8b2 (diff) | |
download | gcc-f1028b9da4ea5614c012d87c928e68300cd786b6.zip gcc-f1028b9da4ea5614c012d87c928e68300cd786b6.tar.gz gcc-f1028b9da4ea5614c012d87c928e68300cd786b6.tar.bz2 |
re PR rtl-optimization/39914 (96% performance regression in floating point code; part of the problem started 2009/03/12-13)
PR rtl-optimization/39914
* ira-conflicts.c (ira_build_conflicts): Prohibit call used
registers for allocnos created from user-defined variables only
when not optimizing.
From-SVN: r146904
-rw-r--r-- | gcc/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/ira-conflicts.c | 2 |
2 files changed, 10 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 72766c4..610bd1c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-04-28 Uros Bizjak <ubizjak@gmail.com> + + PR rtl-optimization/39914 + * ira-conflicts.c (ira_build_conflicts): Prohibit call used + registers for allocnos created from user-defined variables only + when not optimizing. + 2009-04-28 Richard Guenther <rguenther@suse.de> PR middle-end/39937 @@ -42,8 +49,7 @@ 2009-04-28 Richard Guenther <rguenther@suse.de> - * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix - type error. + * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error. 2009-04-28 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> @@ -83,8 +89,7 @@ (threadedge_finalize_values): Likewise. * tree-ssa-dom.c (ssa_name_values): New global variable. (SSA_NAME_VALUE): Define. - (tree_ssa_dominator_optimize): Initialize/free the value-handle - array. + (tree_ssa_dominator_optimize): Initialize/free the value-handle array. 2009-04-28 Ira Rosen <irar@il.ibm.com> diff --git a/gcc/ira-conflicts.c b/gcc/ira-conflicts.c index 399a28a..29c77c9 100644 --- a/gcc/ira-conflicts.c +++ b/gcc/ira-conflicts.c @@ -806,7 +806,7 @@ ira_build_conflicts (void) if ((! flag_caller_saves && ALLOCNO_CALLS_CROSSED_NUM (a) != 0) /* For debugging purposes don't put user defined variables in callee-clobbered registers. */ - || (optimize <= 1 + || (optimize == 0 && (attrs = REG_ATTRS (regno_reg_rtx [ALLOCNO_REGNO (a)])) != NULL && (decl = attrs->decl) != NULL && VAR_OR_FUNCTION_DECL_P (decl) |