diff options
author | Richard Biener <rguenther@suse.de> | 2023-05-15 09:10:08 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2023-05-15 10:40:54 +0200 |
commit | 7db541ce448c2776971be63c957dcc887bd09bf8 (patch) | |
tree | 40c0fa3d7454999f3308be612f1be13d53c2bdf5 | |
parent | 66e268eb063de32b232f6f006048e6f7bae6268f (diff) | |
download | gcc-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.cc | 5 |
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; |