diff options
author | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-06-18 09:32:51 +0000 |
---|---|---|
committer | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-06-18 09:32:51 +0000 |
commit | fe26539668cdc56eb8ce1550f83909a811523d15 (patch) | |
tree | a6dd8cf008238dc0761746893e301eb03e72b83f /gcc | |
parent | 388e82a2f509835499fd003a78261b59df26068b (diff) | |
download | gcc-fe26539668cdc56eb8ce1550f83909a811523d15.tar.gz |
gcc/
PR middle-end/53698
* expr.c (expand_expr_addr_expr_1): Convert to tmode before
performing an addition.
gcc/testsuite/
PR middle-end/53698
* gcc.target/i386/pr53698.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@188725 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/expr.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr53698.c | 16 |
4 files changed, 28 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7c9b56e5707..be59b02de53 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-06-18 Richard Sandiford <rdsandiford@googlemail.com> + + PR middle-end/53698 + * expr.c (expand_expr_addr_expr_1): Convert to tmode before + performing an addition. + 2012-06-17 Steven Bosscher <steven@gcc.gnu.org> * output.h (split_double): Move prototype to rtl.h. diff --git a/gcc/expr.c b/gcc/expr.c index 6012c5d3189..cad5b10b6b0 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -7630,6 +7630,7 @@ expand_expr_addr_expr_1 (tree exp, rtx target, enum machine_mode tmode, of such an object. */ gcc_assert ((bitpos % BITS_PER_UNIT) == 0); + result = convert_memory_address_addr_space (tmode, result, as); result = plus_constant (tmode, result, bitpos / BITS_PER_UNIT); if (modifier < EXPAND_SUM) result = force_operand (result, target); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 905c4bba64d..ccdc4ca8a16 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-06-18 Richard Sandiford <rdsandiford@googlemail.com> + + PR middle-end/53698 + * gcc.target/i386/pr53698.c: New test. + 2012-06-17 Uros Bizjak <ubizjak@gmail.com> * gcc.target/i386/pr33329.c (f): Increase tabs array to 1024. diff --git a/gcc/testsuite/gcc.target/i386/pr53698.c b/gcc/testsuite/gcc.target/i386/pr53698.c new file mode 100644 index 00000000000..3acefba00be --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr53698.c @@ -0,0 +1,16 @@ +/* { dg-do compile { target { ! { ia32 } } } } */ +/* { dg-options "-O -mx32 -maddress-mode=long -fno-tree-dominator-opts" } */ + +extern char foo[]; + +void +test2 (void) +{ + int s; + for (s = 0;; ++s) + { + if (foo[s] != s) + __builtin_abort (); + foo[s] = s; + } +} |