diff options
author | Richard Biener <rguenther@suse.de> | 2014-08-15 11:42:01 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2014-08-15 11:42:01 +0000 |
commit | 09ad9c71aa55114612e605da8774309a05fac6dc (patch) | |
tree | 307576c9bd6a9927b6e723588a41415771423135 /gcc | |
parent | 5f75acf4a404fd3f73dd9f9670ae95444491c105 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fold-const.c | 26 |
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; |