diff options
| author | amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-03-30 03:51:12 +0000 |
|---|---|---|
| committer | amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-03-30 03:51:12 +0000 |
| commit | bb2327a8596e13142cdade6cbf57945f3cd56e0f (patch) | |
| tree | 834aa6a4528876c7d8d36898fe5367d7f65b6754 | |
| parent | de10c095ac3943fce76dc0499ad2a01d1c884bc6 (diff) | |
| download | ppe42-gcc-bb2327a8596e13142cdade6cbf57945f3cd56e0f.tar.gz ppe42-gcc-bb2327a8596e13142cdade6cbf57945f3cd56e0f.zip | |
PR target/20203
* builtins.c (get_memory_rtx): Expand address exp using EXPAND_NORMAL.
Remove convert_memory_address call duplicating that in memory_address.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97233 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/builtins.c | 8 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr20203.c | 16 |
4 files changed, 28 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fbd8351723a..ad34f0ea119 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-03-30 Alan Modra <amodra@bigpond.net.au> + + PR target/20203 + * builtins.c (get_memory_rtx): Expand address exp using EXPAND_NORMAL. + Remove convert_memory_address call duplicating that in memory_address. + 2005-03-29 Richard Henderson <rth@redhat.com> PR c/20519 diff --git a/gcc/builtins.c b/gcc/builtins.c index 23bb4298884..68b91c56772 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -979,12 +979,8 @@ expand_builtin_prefetch (tree arglist) static rtx get_memory_rtx (tree exp) { - rtx addr = expand_expr (exp, NULL_RTX, ptr_mode, EXPAND_SUM); - rtx mem; - - addr = convert_memory_address (Pmode, addr); - - mem = gen_rtx_MEM (BLKmode, memory_address (BLKmode, addr)); + rtx addr = expand_expr (exp, NULL_RTX, ptr_mode, EXPAND_NORMAL); + rtx mem = gen_rtx_MEM (BLKmode, memory_address (BLKmode, addr)); /* Get an expression we can use to find the attributes to assign to MEM. If it is an ADDR_EXPR, use the operand. Otherwise, dereference it if diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7c7534420d7..991873cb8ab 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2005-03-30 Alan Modra <amodra@bigpond.net.au> + + * gcc.c-torture/compile/pr20203.c: New test. + 2005-03-26 Steven G. Kargl <kargls@comcast.net> * gfortran.dg/promotion.f90: New test. diff --git a/gcc/testsuite/gcc.c-torture/compile/pr20203.c b/gcc/testsuite/gcc.c-torture/compile/pr20203.c new file mode 100644 index 00000000000..1fb2a045d55 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr20203.c @@ -0,0 +1,16 @@ +void *memset (void *, int, unsigned long); + +typedef struct bfd_section +{ + unsigned long size; + unsigned char *contents; +} asection; + +int +_bfd_mips_elf_finish_dynamic_sections (asection *s) +{ + long long dummy_offset; + dummy_offset = s->size - 16; + memset (s->contents + dummy_offset, 0, 16); + return 1; +} |

