diff options
author | Kugan Vivekanandarajah <kuganv@linaro.org> | 2018-07-06 22:10:20 +0000 |
---|---|---|
committer | Kugan Vivekanandarajah <kugan@gcc.gnu.org> | 2018-07-06 22:10:20 +0000 |
commit | 3f6f33195bc0ede860ecbf55fe92712f3f503f50 (patch) | |
tree | d67ff11dbd4272b079b2d01e3eba1d9861d0b585 /gcc/tree-scalar-evolution.c | |
parent | f290100275139ccb59832bb75ff7fb2606e110d7 (diff) | |
download | gcc-3f6f33195bc0ede860ecbf55fe92712f3f503f50.zip gcc-3f6f33195bc0ede860ecbf55fe92712f3f503f50.tar.gz gcc-3f6f33195bc0ede860ecbf55fe92712f3f503f50.tar.bz2 |
gimplify.h (generic_expr_could_trap_p): Set as global function.
gcc/ChangeLog:
2018-07-06 Kugan Vivekanandarajah <kuganv@linaro.org>
* gimplify.h (generic_expr_could_trap_p): Set as global function.
* gimplify.h (generic_expr_could_trap_p): Likwise.
* tree-scalar-evolution.c (expression_expensive_p): Handle COND_EXPR.
gcc/testsuite/ChangeLog:
2018-07-06 Kugan Vivekanandarajah <kuganv@linaro.org>
* gcc.dg/tree-ssa/pr64183.c: Disable final value replacement
to preserve the test.
* gcc.target/i386/pr85073.c: Likewise.
From-SVN: r262486
Diffstat (limited to 'gcc/tree-scalar-evolution.c')
-rw-r--r-- | gcc/tree-scalar-evolution.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c index 4b0ec02..8e29005 100644 --- a/gcc/tree-scalar-evolution.c +++ b/gcc/tree-scalar-evolution.c @@ -3508,6 +3508,18 @@ expression_expensive_p (tree expr) return false; } + if (code == COND_EXPR) + return (expression_expensive_p (TREE_OPERAND (expr, 0)) + || (EXPR_P (TREE_OPERAND (expr, 1)) + && EXPR_P (TREE_OPERAND (expr, 2))) + /* If either branch has side effects or could trap. */ + || TREE_SIDE_EFFECTS (TREE_OPERAND (expr, 1)) + || generic_expr_could_trap_p (TREE_OPERAND (expr, 1)) + || TREE_SIDE_EFFECTS (TREE_OPERAND (expr, 0)) + || generic_expr_could_trap_p (TREE_OPERAND (expr, 0)) + || expression_expensive_p (TREE_OPERAND (expr, 1)) + || expression_expensive_p (TREE_OPERAND (expr, 2))); + switch (TREE_CODE_CLASS (code)) { case tcc_binary: |