As explained in PR 52155, a disagreement between GCC and newlib about
the best choice of 32-bit type causes lots of conversion errors when
loongson.h is included on 32-bit mips*-elf* targets.  This patch works
around them by forcing -mlong64.  An alternative would be to use
-flax-vector-conversions, like we do for loongson-simd.c, but I thought
it would be better to always have something that tests loongson.h without
that flag.

Tested on mips64-linux-gnu and various ELF targets.  Applied.

Richard


gcc/testsuite/
        PR target/52155
        * gcc.target/mips/mips.exp (mips-dg-options): Handle target.
        * gcc.target/mips/loongson-shift-count-truncated-1.c: Force -mlong64
        for MIPS ELF.

Index: gcc/testsuite/gcc.target/mips/mips.exp
===================================================================
--- gcc/testsuite/gcc.target/mips/mips.exp      2012-02-06 20:35:25.000000000 
+0000
+++ gcc/testsuite/gcc.target/mips/mips.exp      2012-02-07 18:51:32.000000000 
+0000
@@ -855,6 +855,15 @@ proc mips-dg-options { args } {
     # Information about this run.
     global mips_base_options
 
+    if { [llength $args] >= 3 } {
+        switch { [dg-process-target [lindex $args 2]] } {
+            "S" { }
+            "N" { return }
+            "F" { error "[lindex $args 0]: `xfail' not allowed here" }
+            "P" { error "[lindex $args 0]: `xfail' not allowed here" }
+        }
+    }
+
     # Start out with the default option state.
     array set options [array get mips_base_options]
 
Index: gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c
===================================================================
--- gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c    
2012-02-06 20:35:25.000000000 +0000
+++ gcc/testsuite/gcc.target/mips/loongson-shift-count-truncated-1.c    
2012-02-07 18:59:41.000000000 +0000
@@ -5,6 +5,8 @@
    seem any good reason for it to, given that the Loongson processors
    do not support MIPS16.  */
 /* { dg-options "isa=loongson -mhard-float -mno-mips16 -O1" } */
+/* See PR 52155.  */
+/* { dg-options "isa=loongson -mhard-float -mno-mips16 -O1 -mlong64" { 
mips*-*-elf* && ilp32 } } */
 
 #include "loongson.h"
 #include <assert.h>

Reply via email to