aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2023-05-15 09:10:08 +0200
committerRichard Biener <rguenther@suse.de>2023-05-15 10:40:54 +0200
commit7db541ce448c2776971be63c957dcc887bd09bf8 (patch)
tree40c0fa3d7454999f3308be612f1be13d53c2bdf5
parent66e268eb063de32b232f6f006048e6f7bae6268f (diff)
downloadgcc-7db541ce448c2776971be63c957dcc887bd09bf8.zip
gcc-7db541ce448c2776971be63c957dcc887bd09bf8.tar.gz
gcc-7db541ce448c2776971be63c957dcc887bd09bf8.tar.bz2
tree-optimization/109848 - fix TARGET_MEM_REF store from CTOR simplification
I've put the preparation stmt in the wrong place. PR tree-optimization/109848 * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the TARGET_MEM_REF address preparation before the store, not before the CTOR.
-rw-r--r--gcc/tree-ssa-forwprop.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/tree-ssa-forwprop.cc b/gcc/tree-ssa-forwprop.cc
index e63d2ab..06f1986 100644
--- a/gcc/tree-ssa-forwprop.cc
+++ b/gcc/tree-ssa-forwprop.cc
@@ -3841,7 +3841,10 @@ pass_forwprop::execute (function *fun)
if (auto_var_p (use_lhs))
DECL_NOT_GIMPLE_REG_P (use_lhs) = 1;
else if (TREE_CODE (use_lhs) == TARGET_MEM_REF)
- use_lhs = prepare_target_mem_ref_lvalue (use_lhs, &gsi);
+ {
+ gimple_stmt_iterator gsi2 = gsi_for_stmt (use_stmt);
+ use_lhs = prepare_target_mem_ref_lvalue (use_lhs, &gsi2);
+ }
for (unsigned HOST_WIDE_INT bi = 0; bi < n; bi += elt_w)
{
unsigned HOST_WIDE_INT ci = bi / elt_w;