diff options
author | Hans-Peter Nilsson <hp@axis.com> | 2001-12-14 02:16:33 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@gcc.gnu.org> | 2001-12-14 02:16:33 +0000 |
commit | 05c8e58b272aa126a2a3d4f66e95df055bf12bfb (patch) | |
tree | 2d5f3cafc7c251c04b6d58417c531a4995917206 /gcc | |
parent | 1ed1b4fbd88c56569d7c3543585769f4efd6b69a (diff) | |
download | gcc-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')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/expr.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/20011113-1.c | 16 |
4 files changed, 31 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 74563e6..a4ef206 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 @@ -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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 60ace64..957cb04 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 index 0000000..3f40160 --- /dev/null +++ b/gcc/testsuite/gcc.dg/20011113-1.c @@ -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} +}; |