]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/45213 ("suffix or operands invalid for `push'" triggered by optimisation...
authorUros Bizjak <uros@gcc.gnu.org>
Sat, 7 Aug 2010 20:32:30 +0000 (22:32 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Sat, 7 Aug 2010 20:32:30 +0000 (22:32 +0200)
PR target/45213
* config/i386/i386.c (ix86_print_operand): Handle 'q' operand modifier
to output 32bit SFmode immediate as 8 byte sign extended value.

testsuite/ChangeLog:

PR target/45213
* gcc.target/i386/pr45213.c: New test.

From-SVN: r162983

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr45213.c [new file with mode: 0644]

index 53f24f1b8c43008150566492467d20bb1b98e0c6..6516544f8d592d7f8caf86771b1632e83fd50dcd 100644 (file)
@@ -1,3 +1,10 @@
+2010-08-07  Uros Bizjak  <ubizjak@gmail.com>
+           H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/45213
+       * config/i386/i386.c (ix86_print_operand): Handle 'q' operand modifier
+       to output 32bit SFmode immediate as 8 byte sign extended value.
+
 2010-08-07  Marcus Shawcroft  <marcus.shawcroft@arm.com>
 
        * config/arm/linux-atomic.c (SUBWORD_VAL_CAS): Instantiate with
 
 2010-08-07  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
 
-        * config/arm/cortex-a9.md: Rewrite VFP Pipeline description.
-        * config/arm/arm.c (arm_xscale_tune): Initialize sched_adjust_cost.
-         (arm_fastmul_tune,arm_slowmul_tune, arm_9e_tune): Likewise.
-         (arm_adjust_cost): Split into xscale_sched_adjust_cost and a
-         generic part.
-         (cortex_a9_sched_adjust_cost): New function.
-         (xscale_sched_adjust_cost): New function.
-        * config/arm/arm-protos.h (struct tune_params): New field
-        sched_adjust_cost.
-        * config/arm/arm-cores.def: Adjust costs for cortex-a9.
+       * config/arm/cortex-a9.md: Rewrite VFP Pipeline description.
+       * config/arm/arm.c (arm_xscale_tune): Initialize sched_adjust_cost.
+       (arm_fastmul_tune,arm_slowmul_tune, arm_9e_tune): Likewise.
+       (arm_adjust_cost): Split into xscale_sched_adjust_cost and a
+       generic part.
+       (cortex_a9_sched_adjust_cost): New function.
+       (xscale_sched_adjust_cost): New function.
+       * config/arm/arm-protos.h (struct tune_params): New field
+       sched_adjust_cost.
+       * config/arm/arm-cores.def: Adjust costs for cortex-a9.
 
 2010-08-06  Eric Botcazou  <ebotcazou@adacore.com>
 
index 204211a6bfcce962f168236f62c5d7f11b9fe404..1877730bc03da6c90de7b134adc0563a21e86f10 100644 (file)
@@ -12921,7 +12921,11 @@ ix86_print_operand (FILE *file, rtx x, int code)
 
       if (ASSEMBLER_DIALECT == ASM_ATT)
        putc ('$', file);
-      fprintf (file, "0x%08lx", (long unsigned int) l);
+      /* Sign extend 32bit SFmode immediate to 8 bytes.  */
+      if (code == 'q')
+       fprintf (file, "0x%08llx", (unsigned long long) (int) l);
+      else
+       fprintf (file, "0x%08x", (unsigned int) l);
     }
 
   /* These float cases don't actually occur as immediate operands.  */
index e7f4524d744f563521c53e0151eae751299b8006..18f42a43fbf5c9566f1b03fd4595c7ef359841b4 100644 (file)
@@ -1,3 +1,8 @@
+2010-08-07  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/45213
+       * gcc.target/i386/pr45213.c: New test.
+
 2010-08-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libfortran/45143
@@ -5,9 +10,9 @@
 
 2010-08-07  Marcus Shawcroft <marcus.shawcroft@arm.com>
 
-        * lib/target-supports.exp: (check_effective_target_sync_int_long):
-        Add arm*-*-linux-gnueabi.
-        (check_effective_target_sync_char_short): Likewise.
+       * lib/target-supports.exp (check_effective_target_sync_int_long):
+       Add arm*-*-linux-gnueabi.
+       (check_effective_target_sync_char_short): Likewise.
 
 2010-08-06  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
diff --git a/gcc/testsuite/gcc.target/i386/pr45213.c b/gcc/testsuite/gcc.target/i386/pr45213.c
new file mode 100644 (file)
index 0000000..c575fb5
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do assemble } */
+/* { dg-options "-Os -fno-omit-frame-pointer" } */
+
+void f (float, float, float, float, float, float, float, float, float, float);
+
+void g (void)
+{
+  f (0, 0, 0, 0, 0, 0, 0, 0, -1, 1);
+}