OSDN Git Service

* expr.c (expand_expr, case ADDR_EXPR): Don't honor
authorhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Dec 2001 02:16:33 +0000 (02:16 +0000)
committerhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Dec 2001 02:16:33 +0000 (02:16 +0000)
flag_force_addr for modifier != EXPAND_CONST_ADDRESS,
modifier != EXPAND_INITIALIZER and modifier != EXPAND_SUM.

* gcc.dg/20011113-1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47984 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/expr.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/20011113-1.c [new file with mode: 0644]

index 74563e6..a4ef206 100644 (file)
@@ -1,3 +1,9 @@
+2001-12-13  Hans-Peter Nilsson  <hp@axis.com>
+
+       * 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.
+
 Thu Dec 13 20:30:08 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
        * expr.c (copy_blkmode_from_reg): Add missing braces to eliminate
index 5884217..9e5bf95 100644 (file)
@@ -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
index 60ace64..957cb04 100644 (file)
@@ -1,3 +1,7 @@
+2001-12-13  Hans-Peter Nilsson  <hp@axis.com>
+
+       * gcc.dg/20011113-1.c: New test.
+
 2001-12-13  John David Anglin  <dave@hiauly1.hia.nrc.ca>
 
        * g++.old-deja/g++.jason/template31.C: Remove templates for classes
diff --git a/gcc/testsuite/gcc.dg/20011113-1.c b/gcc/testsuite/gcc.dg/20011113-1.c
new file mode 100644 (file)
index 0000000..3f40160
--- /dev/null
@@ -0,0 +1,16 @@
+/* Copyright (C) 2001  Free Software Foundation.
+   by Hans-Peter Nilsson  <hp@axis.com>  */
+
+/* { dg-do compile } */
+/* { dg-options "-O2 -fforce-addr" } */
+
+const char foo[] = "fum";
+const struct fi
+{
+  const char *const in;
+  const char *const out;
+  const int flags;
+} fie[] = {
+  {"nw", " new", 0},
+  {"dl", foo, 1}
+};