summaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index e6052633d34..f34285be7d5 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -3445,16 +3445,14 @@ emit_push_insn (rtx x, enum machine_mode mode, tree type, rtx size,
static rtx
get_subtarget (rtx x)
{
- return ((x == 0
+ return (optimize
+ || x == 0
/* Only registers can be subtargets. */
|| !REG_P (x)
/* If the register is readonly, it can't be set more than once. */
|| RTX_UNCHANGING_P (x)
/* Don't use hard regs to avoid extending their life. */
|| REGNO (x) < FIRST_PSEUDO_REGISTER
- /* Avoid subtargets inside loops,
- since they hide some invariant expressions. */
- || preserve_subexpressions_p ())
? 0 : x);
}