diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-04-03 23:42:51 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-04-03 23:42:51 +0200 |
commit | 0d2f7959f7b5fed2f74f5ed1f3e2d7db77bb5361 (patch) | |
tree | 52968a0319c6f87b841240b400e66ef4b54f813a /gcc/builtins.c | |
parent | 8d0d49f8b457d47539898886e3f94aaee9c572d6 (diff) | |
download | gcc-0d2f7959f7b5fed2f74f5ed1f3e2d7db77bb5361.zip gcc-0d2f7959f7b5fed2f74f5ed1f3e2d7db77bb5361.tar.gz gcc-0d2f7959f7b5fed2f74f5ed1f3e2d7db77bb5361.tar.bz2 |
re PR tree-optimization/85156 (ICE with -O1 -g: gimplification failed)
PR tree-optimization/85156
* builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
evaluating the argument multiple times.
* c-c++-common/pr85156.c: New test.
* gcc.c-torture/execute/pr85156.c: New test.
From-SVN: r259057
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r-- | gcc/builtins.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c index 0c56018..e0f6c2a 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -7998,6 +7998,7 @@ fold_builtin_expect (location_t loc, tree arg0, tree arg1, tree arg2) { tree op0 = TREE_OPERAND (inner, 0); tree op1 = TREE_OPERAND (inner, 1); + arg1 = save_expr (arg1); op0 = build_builtin_expect_predicate (loc, op0, arg1, arg2); op1 = build_builtin_expect_predicate (loc, op1, arg1, arg2); |