aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-08-15 11:42:01 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-08-15 11:42:01 +0000
commit09ad9c71aa55114612e605da8774309a05fac6dc (patch)
tree307576c9bd6a9927b6e723588a41415771423135
parent5f75acf4a404fd3f73dd9f9670ae95444491c105 (diff)
downloadgcc-09ad9c71aa55114612e605da8774309a05fac6dc.zip
gcc-09ad9c71aa55114612e605da8774309a05fac6dc.tar.gz
gcc-09ad9c71aa55114612e605da8774309a05fac6dc.tar.bz2
fold-const.c (tree_swap_operands_p): Put all constants last...
2014-08-15 Richard Biener <rguenther@suse.de> * fold-const.c (tree_swap_operands_p): Put all constants last, also strip sign-changing NOPs when considering further canonicalization. Canonicalize also when optimizing for size. From-SVN: r214013
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/fold-const.c26
2 files changed, 10 insertions, 22 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6ec54a5..d768942 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-08-15 Richard Biener <rguenther@suse.de>
+
+ * fold-const.c (tree_swap_operands_p): Put all constants
+ last, also strip sign-changing NOPs when considering further
+ canonicalization. Canonicalize also when optimizing for size.
+
2014-08-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/aarch64/aarch64.c (aarch64_expand_mov_immediate): Move
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index d444769..26c8117 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -6642,37 +6642,19 @@ reorder_operands_p (const_tree arg0, const_tree arg1)
bool
tree_swap_operands_p (const_tree arg0, const_tree arg1, bool reorder)
{
- STRIP_SIGN_NOPS (arg0);
- STRIP_SIGN_NOPS (arg1);
-
- if (TREE_CODE (arg1) == INTEGER_CST)
- return 0;
- if (TREE_CODE (arg0) == INTEGER_CST)
- return 1;
-
- if (TREE_CODE (arg1) == REAL_CST)
+ if (CONSTANT_CLASS_P (arg1))
return 0;
- if (TREE_CODE (arg0) == REAL_CST)
+ if (CONSTANT_CLASS_P (arg0))
return 1;
- if (TREE_CODE (arg1) == FIXED_CST)
- return 0;
- if (TREE_CODE (arg0) == FIXED_CST)
- return 1;
-
- if (TREE_CODE (arg1) == COMPLEX_CST)
- return 0;
- if (TREE_CODE (arg0) == COMPLEX_CST)
- return 1;
+ STRIP_NOPS (arg0);
+ STRIP_NOPS (arg1);
if (TREE_CONSTANT (arg1))
return 0;
if (TREE_CONSTANT (arg0))
return 1;
- if (optimize_function_for_size_p (cfun))
- return 0;
-
if (reorder && flag_evaluation_order
&& (TREE_SIDE_EFFECTS (arg0) || TREE_SIDE_EFFECTS (arg1)))
return 0;