aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2001-12-14 02:16:33 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2001-12-14 02:16:33 +0000
commit05c8e58b272aa126a2a3d4f66e95df055bf12bfb (patch)
tree2d5f3cafc7c251c04b6d58417c531a4995917206 /gcc/expr.c
parent1ed1b4fbd88c56569d7c3543585769f4efd6b69a (diff)
downloadgcc-05c8e58b272aa126a2a3d4f66e95df055bf12bfb.zip
gcc-05c8e58b272aa126a2a3d4f66e95df055bf12bfb.tar.gz
gcc-05c8e58b272aa126a2a3d4f66e95df055bf12bfb.tar.bz2
expr.c (expand_expr, [...]): Don't honor flag_force_addr for modifier != EXPAND_CONST_ADDRESS...
* expr.c (expand_expr, case ADDR_EXPR): Don't honor flag_force_addr for modifier != EXPAND_CONST_ADDRESS, modifier != EXPAND_INITIALIZER and modifier != EXPAND_SUM. * gcc.dg/20011113-1.c: New test. From-SVN: r47984
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 5884217..9e5bf95 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -8547,7 +8547,11 @@ expand_expr (exp, target, tmode, modifier)
op0 = force_operand (XEXP (op0, 0), target);
}
- if (flag_force_addr && GET_CODE (op0) != REG)
+ if (flag_force_addr
+ && GET_CODE (op0) != REG
+ && modifier != EXPAND_CONST_ADDRESS
+ && modifier != EXPAND_INITIALIZER
+ && modifier != EXPAND_SUM)
op0 = force_reg (Pmode, op0);
if (GET_CODE (op0) == REG