aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2021-08-11 14:10:52 +0200
committerRichard Biener <rguenther@suse.de>2021-08-11 16:24:08 +0200
commit2cb02e065ff015a69db918eb545a00cd6edf0194 (patch)
tree8af19d866577f223043875d9b03eb991b55f2b05 /gcc
parente8426554e1375fec2d119ba9cc5feb263db84559 (diff)
downloadgcc-2cb02e065ff015a69db918eb545a00cd6edf0194.zip
gcc-2cb02e065ff015a69db918eb545a00cd6edf0194.tar.gz
gcc-2cb02e065ff015a69db918eb545a00cd6edf0194.tar.bz2
target/101788 - avoid decomposing hard-register "loads"
This avoids decomposing hard-register accesses that masquerade as loads. 2021-08-11 Richard Biener <rguenther@suse.de> PR target/101877 * tree-ssa-forwprop.c (pass_forwprop::execute): Do not decompose hard-register accesses.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-ssa-forwprop.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index bd64b8e..5b30d4c 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -3190,7 +3190,8 @@ pass_forwprop::execute (function *fun)
|| (fun->curr_properties & PROP_gimple_lvec))
&& gimple_assign_load_p (stmt)
&& !gimple_has_volatile_ops (stmt)
- && !stmt_can_throw_internal (cfun, stmt))
+ && !stmt_can_throw_internal (cfun, stmt)
+ && (!VAR_P (rhs) || !DECL_HARD_REGISTER (rhs)))
optimize_vector_load (&gsi);
else if (code == COMPLEX_EXPR)