config/i386/i386.md (revision 182083)+++ config/i386/i386.md (working
copy)@@ -1960,7 +1960,7 @@ (define_insn "*movdi_internal_rex64"
[(set (match_operand:DI 0 "nonimmediate_operand"- "=r,r ,r,m
,!m,*y,*y,?r ,m ,?*Ym,?*y,*x,*x,?r ,m,?*Yi,*x,?*x,?*Ym")+ "=r,r
,r,m ,!o,*y,*y,?r ,m ,?*Ym,?*y,*x,*x,?r ,m,?*Yi,*x,?*x,?*Ym")
(match_operand:DI 1 "general_operand" "Z ,rem,i,re,n ,C
,*y,*Ym,*y,r ,m ,C ,*x,*Yi,*x,r ,m ,*Ym,*x"))] "TARGET_64BIT &&
!(MEM_P (operands[0]) && MEM_P (operands[1]))"@@ -2905,7 +2905,7 @@
(define_insn "*movdf_internal_rex64" [(set (match_operand:DF 0
"nonimmediate_operand"- "=f,m,f,r ,m,!r,!m,Y2*x,Y2*x,Y2*x,m ,Yi,r
")+ "=f,m,f,r ,m,!r,!o,Y2*x,Y2*x,Y2*x,m ,Yi,r ") (match_operand:DF
1 "general_operand" "fm,f,G,rm,r,F ,F ,C ,Y2*x,m ,Y2*x,r ,Yi"))]
"TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1]))
===================================================================
@@ -0,0 +1,11 @@
+/* { dg-do compile { target *-*-linux* } } */
+/* { dg-options "-fPIE -Wwrite-strings" } */
+
+#include <string.h>
+static __thread char buffer[25];
+const char * error_message (void)
+{
+oops:
+ strcpy (buffer, "Unknown code ");
+ return 0;
+}