aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2017-02-01 12:47:25 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2017-02-01 12:47:25 +0000
commit1e7ef862ac809db0f6b9dfb746a12e27b7098194 (patch)
tree77929da05e27174ece26f2fdae72cad96f8f0b27 /gcc/tree-cfg.c
parent11d10beb5762c48de90a004368df2c2863b33d7a (diff)
downloadgcc-1e7ef862ac809db0f6b9dfb746a12e27b7098194.zip
gcc-1e7ef862ac809db0f6b9dfb746a12e27b7098194.tar.gz
gcc-1e7ef862ac809db0f6b9dfb746a12e27b7098194.tar.bz2
re PR tree-optimization/79315 (ICE while building SPEC CPU 2006 FP with -Ofast -ftree-parallelize-loops)
2017-02-01 Richard Biener <rguenther@suse.de> PR middle-end/79315 * tree-cfg.c (move_stmt_op): Never set TREE_BLOCK when it was not set before. * gfortran.dg/pr79315.f90: New testcase. From-SVN: r245089
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 315d0e1..a540416 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -6636,11 +6636,12 @@ move_stmt_op (tree *tp, int *walk_subtrees, void *data)
if (EXPR_P (t))
{
tree block = TREE_BLOCK (t);
- if (block == p->orig_block
- || (p->orig_block == NULL_TREE
- && block != NULL_TREE))
+ if (block == NULL_TREE)
+ ;
+ else if (block == p->orig_block
+ || p->orig_block == NULL_TREE)
TREE_SET_BLOCK (t, p->new_block);
- else if (flag_checking && block != NULL_TREE)
+ else if (flag_checking)
{
while (block && TREE_CODE (block) == BLOCK && block != p->orig_block)
block = BLOCK_SUPERCONTEXT (block);