aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2013-08-16 11:05:52 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2013-08-16 11:05:52 +0200
commit639dc669ec1690bc413131c177d50e3b5c5924c9 (patch)
tree20cfc9214ac1875fdf984844b7f7764c97bba4fb /gcc/gimple.c
parent7a46059462cd49f3304fe42437b94697a50e9bed (diff)
downloadgcc-639dc669ec1690bc413131c177d50e3b5c5924c9.zip
gcc-639dc669ec1690bc413131c177d50e3b5c5924c9.tar.gz
gcc-639dc669ec1690bc413131c177d50e3b5c5924c9.tar.bz2
re PR tree-optimization/58164 (internal compiler error: in make_decl_rtl, at varasm.c:1147)
PR tree-optimization/58164 * gimple.c (walk_stmt_load_store_addr_ops): For visit_addr walk gimple_goto_dest of GIMPLE_GOTO. * gcc.c-torture/compile/pr58164.c: New test. From-SVN: r201782
Diffstat (limited to 'gcc/gimple.c')
-rw-r--r--gcc/gimple.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/gimple.c b/gcc/gimple.c
index f507419..ae9fca7 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -4049,6 +4049,13 @@ walk_stmt_load_store_addr_ops (gimple stmt, void *data,
ret |= visit_addr (stmt, TREE_OPERAND (op, 0), data);
}
}
+ else if (visit_addr
+ && gimple_code (stmt) == GIMPLE_GOTO)
+ {
+ tree op = gimple_goto_dest (stmt);
+ if (TREE_CODE (op) == ADDR_EXPR)
+ ret |= visit_addr (stmt, TREE_OPERAND (op, 0), data);
+ }
return ret;
}