An issue turned up in our internal 4.6 based testing that has been fixed on trunk. This patch backports the fix to 4.6. I also have a small test case that I will add to both 4.6 and 4.7.
Bootstrapped and checked with x86_64-unknown-linux-gnu. Can someone review? Thanks, Teresa 2011-12-07 Teresa Johnson <tejohn...@google.com> Backport from mainline: 2011-08-05 Uros Bizjak <ubiz...@gmail.com> * config/i386/i386.md (*movdi_internal_rex64): Use "!o" constraint instead of "!m" for operand 0, alternative 4. (*movdf_internal_rex64): Ditto for operand 0, alernative 6. 2011-12-07 Teresa Johnson <tejohn...@google.com> * gcc.target/i386/movdi-rex64.c: New. Index: config/i386/i386.md===================================================================--- 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])) Index: testsuite/gcc.target/i386/movdi-rex64.c =================================================================== --- testsuite/gcc.target/i386/movdi-rex64.c (revision 0) +++ testsuite/gcc.target/i386/movdi-rex64.c (revision 0) @@ -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; +} -- Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413