aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2005-08-02 13:39:24 -0700
committerRichard Henderson <rth@gcc.gnu.org>2005-08-02 13:39:24 -0700
commit6d90db3a8badc31066e04b3d42985f795c797048 (patch)
tree41b57caed5f1d067c82e0bc45f8f59c9a998e888 /gcc
parent9a41773a6a3f13d3224c1c00d8ed3198e0d51507 (diff)
downloadgcc-6d90db3a8badc31066e04b3d42985f795c797048.zip
gcc-6d90db3a8badc31066e04b3d42985f795c797048.tar.gz
gcc-6d90db3a8badc31066e04b3d42985f795c797048.tar.bz2
re PR target/23196 (ICE instantiate_virtual_regs_in_insn when -fforce-addr used)
PR 23196 * explow.c (memory_address): Remove special-case for virtual_stack_vars_rtx and virtual_incoming_args_rtx. From-SVN: r102668
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/explow.c12
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20050802-1.c10
3 files changed, 19 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a323b8f..cf11cc3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2005-08-02 Richard Henderson <rth@redhat.com>
+
+ PR 23196
+ * explow.c (memory_address): Remove special-case for
+ virtual_stack_vars_rtx and virtual_incoming_args_rtx.
+
2005-08-02 Diego Novillo <dnovillo@redhat.com>
PR 23164
diff --git a/gcc/explow.c b/gcc/explow.c
index 23b124f..eea0e56 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -477,16 +477,10 @@ memory_address (enum machine_mode mode, rtx x)
win2:
x = oldx;
win:
- if (flag_force_addr && ! cse_not_expected && !REG_P (x)
- /* Don't copy an addr via a reg if it is one of our stack slots. */
- && ! (GET_CODE (x) == PLUS
- && (XEXP (x, 0) == virtual_stack_vars_rtx
- || XEXP (x, 0) == virtual_incoming_args_rtx)))
+ if (flag_force_addr && ! cse_not_expected && !REG_P (x))
{
- if (general_operand (x, Pmode))
- x = force_reg (Pmode, x);
- else
- x = force_operand (x, NULL_RTX);
+ x = force_operand (x, NULL_RTX);
+ x = force_reg (Pmode, x);
}
}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20050802-1.c b/gcc/testsuite/gcc.c-torture/compile/20050802-1.c
new file mode 100644
index 0000000..abd0b51
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20050802-1.c
@@ -0,0 +1,10 @@
+/* PR 23196 */
+/* { dg-options "-fforce-addr" } */
+
+void foo()
+{
+ char c;
+
+ c |= 1;
+ bar(&c);
+}