aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-02-09 08:35:22 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-02-09 08:35:22 +0000
commit7e1e8a0ae14583dced3eff91e9fc2a6c783e27de (patch)
tree3b351a007623e28b3834cca6e7c18edb98675d38 /gcc/tree-ssa.c
parent2746ac67d6d438b91c4a4399112aa4c03f3c7d88 (diff)
downloadgcc-7e1e8a0ae14583dced3eff91e9fc2a6c783e27de.zip
gcc-7e1e8a0ae14583dced3eff91e9fc2a6c783e27de.tar.gz
gcc-7e1e8a0ae14583dced3eff91e9fc2a6c783e27de.tar.bz2
re PR middle-end/69715 (ICE: in store_bit_field_1, at expmed.c:839)
2016-02-09 Richard Biener <rguenther@suse.de> PR tree-optimization/69715 * tree-ssa.c (execute_update_addresses_taken): Mark non-decl LHS on calls as non-rewritable. * gcc.dg/torture/pr69715.c: New testcase. From-SVN: r233239
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r--gcc/tree-ssa.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index adba2d8..6a16d26 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -1436,7 +1436,8 @@ execute_update_addresses_taken (void)
tree lhs = gimple_get_lhs (stmt);
if (lhs
&& TREE_CODE (lhs) != SSA_NAME
- && non_rewritable_lvalue_p (lhs))
+ && ((code == GIMPLE_CALL && ! DECL_P (lhs))
+ || non_rewritable_lvalue_p (lhs)))
{
decl = get_base_address (lhs);
if (DECL_P (decl))