From 09ad9c71aa55114612e605da8774309a05fac6dc Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Fri, 15 Aug 2014 11:42:01 +0000 Subject: [PATCH] fold-const.c (tree_swap_operands_p): Put all constants last... 2014-08-15 Richard Biener * 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 --- gcc/ChangeLog | 6 ++++++ gcc/fold-const.c | 26 ++++---------------------- 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6ec54a5d8494..d7689423fca6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-08-15 Richard Biener + + * 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 * config/aarch64/aarch64.c (aarch64_expand_mov_immediate): Move diff --git a/gcc/fold-const.c b/gcc/fold-const.c index d44476972158..26c811764ef4 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) + if (CONSTANT_CLASS_P (arg1)) return 0; - if (TREE_CODE (arg0) == INTEGER_CST) + if (CONSTANT_CLASS_P (arg0)) return 1; - if (TREE_CODE (arg1) == REAL_CST) - return 0; - if (TREE_CODE (arg0) == REAL_CST) - 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;