--- gcc/testsuite/c-c++-common/Wconversion-real.c.orig +++ gcc/testsuite/c-c++-common/Wconversion-real.c @@ -5,6 +5,12 @@ /* { dg-options "-std=c99 -Wconversion" { target c } } */ /* { dg-options "-Wconversion" { target c++ } } */ /* { dg-require-effective-target large_double } */ +/* Due to i386 rounding of long doubles on FreeBSD and DragonFly, the tests + should be set to "xfail" for those platforms, but it's not possible to + set both "target" and "xfail" together. An attempt to mark it + UNSUPPORTED for large_long_double and not (i386 FreeBSD i386 DragonFly) + failed. All the supported platforms of gcc-aux have large long double + so we'll just assume it for these two tests and use xfail instead. */ float vfloat; double vdouble; @@ -24,8 +30,8 @@ vfloat = 3.1; /* { dg-warning "conversion" } */ ffloat (3.1L); /* { dg-warning "conversion" } */ vfloat = 3.1L; /* { dg-warning "conversion" } */ - fdouble (3.1L); /* { dg-warning "conversion" "" { target large_long_double } } */ - vdouble = 3.1L; /* { dg-warning "conversion" "" { target large_long_double } } */ + fdouble (3.1L); /* { dg-warning "conversion" "" { xfail { i?86-*-freebsd* i?86-*-dragonfly* } } } */ + vdouble = 3.1L; /* { dg-warning "conversion" "" { xfail { i?86-*-freebsd* i?86-*-dragonfly* } } } */ ffloat (vdouble); /* { dg-warning "conversion" } */ vfloat = vdouble; /* { dg-warning "conversion" } */ ffloat (vlongdouble); /* { dg-warning "conversion" } */ --- libstdc++-v3/testsuite/lib/libstdc++.exp.orig +++ libstdc++-v3/testsuite/lib/libstdc++.exp @@ -877,17 +877,18 @@ set f [open $src "w"] puts $f "#include " puts $f "#include " - puts $f "using namespace std;" + puts $f "using namespace std;" puts $f "int main (int argc, char** argv)" puts $f "{" + puts $f " const char* mlx = *(argv + 1);" puts $f " try" puts $f " {" - puts $f " locale(*(argv + 1));" + puts $f " locale((char*)(mlx));" puts $f " return 0;" puts $f " }" puts $f " catch(...)" puts $f " {" - puts $f " printf(\"locale '%s' not supported\\n\", *(argv + 1));" + puts $f " printf(\"locale '%s' not supported\\n\", mlx);" puts $f " return 1;" puts $f " }" puts $f "}"