]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/40832 (gfortran 4.4.0 generates invalid .s file on solaris-x86 using...
authorUros Bizjak <ubizjak@gmail.com>
Thu, 23 Jul 2009 10:23:43 +0000 (12:23 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Thu, 23 Jul 2009 10:23:43 +0000 (12:23 +0200)
PR target/40832
* config/i386/i386.c (output_387_ffreep): Rewrite to return
ASM_SHORT instead of .word.
* config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
instead of .word in asm template.

From-SVN: r149996

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.md

index bd7aed79ce6a4895093080d38611e6c3e9dc7e66..04b556f9573b4bc85b460d300802ee09d341f93b 100644 (file)
@@ -1,3 +1,11 @@
+2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/40832
+       * config/i386/i386.c (output_387_ffreep): Rewrite to return
+       ASM_SHORT instead of .word.
+       * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
+       instead of .word in asm template.
+
 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
 
        Backport from mainline:
index d5950fec44a59541f8bc9eb1b147fd3df73bae1d..2b66975cc45593f39d32f1c164cca05097f56b26 100644 (file)
@@ -9934,16 +9934,18 @@ static const char *
 output_387_ffreep (rtx *operands ATTRIBUTE_UNUSED, int opno)
 {
   if (TARGET_USE_FFREEP)
-#if HAVE_AS_IX86_FFREEP
+#ifdef HAVE_AS_IX86_FFREEP
     return opno ? "ffreep\t%y1" : "ffreep\t%y0";
 #else
     {
-      static char retval[] = ".word\t0xc_df";
+      static char retval[32];
       int regno = REGNO (operands[opno]);
 
       gcc_assert (FP_REGNO_P (regno));
 
-      retval[9] = '0' + (regno - FIRST_STACK_REG);
+      regno -= FIRST_STACK_REG;
+
+      snprintf (retval, sizeof (retval), ASM_SHORT "0xc%ddf", regno);
       return retval;
     }
 #endif
index ceb212ad6b9ee40a55be8aa962deda1325e4528b..1053d47e4b5312334cddf26534cf17eed3db906e 100644 (file)
    (unspec:DI [(match_operand:DI 1 "tls_symbolic_operand" "")]
              UNSPEC_TLS_GD)]
   "TARGET_64BIT"
-  ".byte\t0x66\;lea{q}\t{%a1@TLSGD(%%rip), %%rdi|rdi, %a1@TLSGD[rip]}\;.word\t0x6666\;rex64\;call\t%P2"
+  { return ".byte\t0x66\n\tlea{q}\t{%a1@TLSGD(%%rip), %%rdi|rdi, %a1@TLSGD[rip]}\n" ASM_SHORT "0x6666\n\trex64\n\tcall\t%P2"; }
   [(set_attr "type" "multi")
    (set_attr "length" "16")])