From: Jakub Jelinek Date: Fri, 28 Mar 2014 19:31:17 +0000 (+0100) Subject: re PR target/60693 (ICE on funny memcpy) X-Git-Tag: releases/gcc-4.9.0~244 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ff76f4e2c026de44df33189825ae3f2b7d582f1a;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8434f0448ecb..5e1879d876a1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-03-28 Jakub Jelinek + + 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 * 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 842be686da97..328fe409bacc 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 f43bd841292a..f650e3dabf8f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-03-28 Jakub Jelinek + + PR target/60693 + * gcc.target/i386/pr60693.c: New test. + 2014-03-28 Vishnu K S * 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 000000000000..e6033a783f43 --- /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); +}