On Thu, Nov 01, 2012 at 03:38:13PM -0700, H.J. Lu wrote: > On Thu, Nov 1, 2012 at 2:41 PM, H.J. Lu <hjl.to...@gmail.com> wrote: > > On Thu, Nov 1, 2012 at 6:47 AM, Jack Howarth <howa...@bromo.med.uc.edu> > > wrote: > >> On Fri, Aug 24, 2012 at 04:13:20PM +0200, Rainer Orth wrote: > >>> Jack Howarth <howa...@bromo.med.uc.edu> writes: > >>> > >>> > Currently the new testcase for gcc.target/i386/pr53249.c is failing > >>> > on darwin due to the absence of -mx32 support on that target. The > >>> > following > >>> > patch skips this testcase on darwin. Tested on x86_64-apple-darwin12... > >>> > >>> This also fails on Solaris/x86 (cf. PR testsuite/53365) and > >>> i686-unknown-linux-gnu. I'd strongly prefer if HJ could devise a real > >>> fix instead of just skipping the test on an explicit list of systems. > >>> > >>> Rainer > >> > >> Rainer, > >> What about using... > >> > >> Index: gcc/testsuite/gcc.target/i386/pr53249.c > >> =================================================================== > >> --- gcc/testsuite/gcc.target/i386/pr53249.c (revision 193061) > >> +++ gcc/testsuite/gcc.target/i386/pr53249.c (working copy) > >> @@ -1,4 +1,4 @@ > >> -/* { dg-do compile { target { ! { ia32 } } } } */ > >> +/* { dg-do compile { target { ! { ia32 || llp64 } } } } */ > >> /* { dg-options "-O2 -mx32 -ftls-model=initial-exec -maddress-mode=short" > >> } */ > >> > >> struct gomp_task > >> > >> This converts the failure at -m64 into an unsupported testcase on > >> x86_64-apple-darwin12. > > > > This will disable test on Linux/x86-64. > > > > -- > > H.J. > > We can add > > # Return 1 if -mx32 can compile, 0 otherwise. > > proc check_effective_target_maybe_x32 { } { > return [check_no_compiler_messages maybe_x32 object { > void foo (void) {} > } {-mx32}] > } > > and check it before compiling with -mx32. > > -- > H.J.
H.J., I tried that approach before and when using... /* { dg-do compile { target { ! { ia32 } } } } */ /* { dg-require-effective-target maybe_x32 } */ /* { dg-options "-O2 -mx32 -ftls-model=initial-exec -maddress-mode=short" } */ at the top of gcc/testsuite/gcc.target/i386/pr53249.c, I still get an excessive error failure at -m64 on x86_64-apple-darwin11... Executing on host: /sw/src/fink.build/gcc48-4.8.0-1000/darwin_objdir/gcc/xgcc -B/sw/src/fink.build/gcc48-4.8.0-1000/darwin_objdir/gcc/ /sw/src/fink.build/gcc48-4.8.0-1000/gcc-4.8-20121031/gcc/testsuite/gcc.target/i386/pr53249.c -fno-diagnostics-show-caret -O2 -mx32 -ftls-model=initial-exec -maddress-mode=short -S -m64 -o pr53249.s (timeout = 300) /sw/src/fink.build/gcc48-4.8.0-1000/gcc-4.8-20121031/gcc/testsuite/gcc.target/i386/pr53249.c:1:0: error: address mode 'short' not supported in the 64 bit mode compiler exited with status 1 output is: /sw/src/fink.build/gcc48-4.8.0-1000/gcc-4.8-20121031/gcc/testsuite/gcc.target/i386/pr53249.c:1:0: error: address mode 'short' not supported in the 64 bit mode FAIL: gcc.target/i386/pr53249.c (test for excess errors) Excess errors: /sw/src/fink.build/gcc48-4.8.0-1000/gcc-4.8-20121031/gcc/testsuite/gcc.target/i386/pr53249.c:1:0: error: address mode 'short' not supported in the 64 bit mode testcase /sw/src/fink.build/gcc48-4.8.0-1000/gcc-4.8-20121031/gcc/testsuite/gcc.target/i386/i386.exp completed in 1 seconds I believe you will have do a linkage test since for... % more mx32_test.c int foo (void) {} % gcc-fsf-4.8 -m32 -mx32 -c mx32_test.c % gcc-fsf-4.8 -m64 -mx32 -c mx32_test.c % gcc-fsf-4.8 -m32 -mx32 mx32_test.c ld: sectionForAddress(0x50000002D) address not in any section for architecture x86_64 collect2: error: ld returned 1 exit status % gcc-fsf-4.8 -m64 -mx32 mx32_test.c ld: sectionForAddress(0x50000002D) address not in any section for architecture x86_64 collect2: error: ld returned 1 exit status but I don't see a way to do that in target-supports.exp. Jack