summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2012-06-18 09:32:51 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2012-06-18 09:32:51 +0000
commitfe26539668cdc56eb8ce1550f83909a811523d15 (patch)
treea6dd8cf008238dc0761746893e301eb03e72b83f /gcc
parent388e82a2f509835499fd003a78261b59df26068b (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/expr.c1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr53698.c16
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;
+ }
+}