aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-03-28 20:31:17 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2014-03-28 20:31:17 +0100
commitff76f4e2c026de44df33189825ae3f2b7d582f1a (patch)
tree4267ddb4a6d600efeb689ab64e86bbda647b23fc /gcc
parent27f083b84545e70a567571ccd44adbb7c2fec10a (diff)
downloadgcc-ff76f4e2c026de44df33189825ae3f2b7d582f1a.zip
gcc-ff76f4e2c026de44df33189825ae3f2b7d582f1a.tar.gz
gcc-ff76f4e2c026de44df33189825ae3f2b7d582f1a.tar.bz2
re PR target/60693 (ICE on funny memcpy)
PR target/60693 * config/i386/i386.c (ix86_copy_addr_to_reg): Call copy_addr_to_reg also if addr has VOIDmode. * gcc.target/i386/pr60693.c: New test. From-SVN: r208915
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr60693.c13
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8434f04..5e1879d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-03-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/60693
+ * config/i386/i386.c (ix86_copy_addr_to_reg): Call copy_addr_to_reg
+ also if addr has VOIDmode.
+
2014-03-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/aarch-common.c (aarch_crypto_can_dual_issue): New.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 842be68..328fe40 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -22755,7 +22755,7 @@ counter_mode (rtx count_exp)
static rtx
ix86_copy_addr_to_reg (rtx addr)
{
- if (GET_MODE (addr) == Pmode)
+ if (GET_MODE (addr) == Pmode || GET_MODE (addr) == VOIDmode)
return copy_addr_to_reg (addr);
else
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f43bd84..f650e3d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-03-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/60693
+ * gcc.target/i386/pr60693.c: New test.
+
2014-03-28 Vishnu K S <Vishnu.k_s@atmel.com>
* gcc.dg/pr59940.c (si): Use 32-bit SI mode instead of int.
diff --git a/gcc/testsuite/gcc.target/i386/pr60693.c b/gcc/testsuite/gcc.target/i386/pr60693.c
new file mode 100644
index 0000000..e6033a7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr60693.c
@@ -0,0 +1,13 @@
+/* PR target/60693 */
+/* { dg-do compile } */
+/* { dg-options "-O0" } */
+
+void bar (char *);
+
+void
+foo (void)
+{
+ char buf[4096];
+ __builtin_memcpy (buf, (void *) 0x8000, 4096);
+ bar (buf);
+}