Re: [testsuite] ARM ivopts tests: skip for no thumb support
On 06/24/2011 08:03 AM, Ramana Radhakrishnan wrote: >>> I introduced 2 new arm-related effective targets to accomplish this. >>> - arm_thumb2: Tests if we're compiling for thumb2. >>> - arm_nothumb: Tests if we're not compiling for any thumb. >>> I don't know how to get the same effect with the existing arm-related >>> effective >>> targets. >> >> That looks good to me, and those effective targets will be very useful. > > How is this different from arm_thumb2_ok and !arm_thumb2_ok ? > > If l Iook at arm_thumb2 that appears to be identical to what > arm_thumb2_ok does. > > proc check_effective_target_arm_thumb2_ok { } { > return [check_no_compiler_messages arm_thumb2_ok assembly { > #if !defined(__thumb2__) > #error FOO > #endif > } "-mthumb"]<=== HERE > } > > +# Return 1 is this is an ARM target where is Thumb-2 used. > + > +proc check_effective_target_arm_thumb2 { } { > +return [check_no_compiler_messages arm_thumb2 assembly { > + #if !defined(__thumb2__) > + #error FOO > + #endif > +} ""] > +} > + > > Or am I missing something ? > > Ramana arm_thumb_ok and arm_thumb2_ok check to see if the target will be as expected when compiling with -mthumb, and the tests that use it add -mthumb to the options. The new ones check to see if the target is thumb with current multilib options, and it can safely be used for dg-final. Janis Janis
Re: [testsuite] ARM ivopts tests: skip for no thumb support
>> I introduced 2 new arm-related effective targets to accomplish this. >> - arm_thumb2: Tests if we're compiling for thumb2. >> - arm_nothumb: Tests if we're not compiling for any thumb. >> I don't know how to get the same effect with the existing arm-related >> effective >> targets. > > That looks good to me, and those effective targets will be very useful. How is this different from arm_thumb2_ok and !arm_thumb2_ok ? If l Iook at arm_thumb2 that appears to be identical to what arm_thumb2_ok does. proc check_effective_target_arm_thumb2_ok { } { return [check_no_compiler_messages arm_thumb2_ok assembly { #if !defined(__thumb2__) #error FOO #endif } "-mthumb"] } +# Return 1 is this is an ARM target where is Thumb-2 used. + +proc check_effective_target_arm_thumb2 { } { +return [check_no_compiler_messages arm_thumb2 assembly { + #if !defined(__thumb2__) + #error FOO + #endif +} ""] +} + Or am I missing something ? Ramana
Re: [testsuite] ARM ivopts tests: skip for no thumb support
On 06/24/2011 03:29 AM, Tom de Vries wrote: > On 06/24/2011 12:07 AM, Janis Johnson wrote: >> On 06/23/2011 02:56 PM, Ramana Radhakrishnan wrote: >>> On 23 June 2011 22:36, Janis Johnson wrote: Tests gcc.target/arm/ivopts*.c add -mthumb but fail on targets without thumb support; skip those targets. The tests save temporary files and need to remove them at the end, easily done with cleanup-saved-temps. Test ivopts-6.c is the only one of the set that does not require thumb2 support in the check for object-size, and it fails for -march=iwmmxt and iwmmxt2; the check should probably be used on that test as well, although I haven't included it here. >>> >>> I'm not sure I understand the change for ivopts-6.c : >>> >>> It's skipping if there is no Thumb support by default but the test >>> assumes the test will run with -marm on the command line ? >>> >>> Ramana >> >> Oops, I got carried away and didn't notice that it uses -marm rather >> than -mthumb. I'll take another look at that one. >> >> Janis > > How about this patch? I removed all -mthumb/-marm option settings, and instead > focused on trying to guard the object-size tests properly. > > I introduced 2 new arm-related effective targets to accomplish this. > - arm_thumb2: Tests if we're compiling for thumb2. > - arm_nothumb: Tests if we're not compiling for any thumb. > I don't know how to get the same effect with the existing arm-related > effective > targets. That looks good to me, and those effective targets will be very useful. Reviewers, is Tom's patch OK? Janis
Re: [testsuite] ARM ivopts tests: skip for no thumb support
On 06/24/2011 12:07 AM, Janis Johnson wrote: > On 06/23/2011 02:56 PM, Ramana Radhakrishnan wrote: >> On 23 June 2011 22:36, Janis Johnson wrote: >>> Tests gcc.target/arm/ivopts*.c add -mthumb but fail on targets without >>> thumb support; skip those targets. The tests save temporary files and >>> need to remove them at the end, easily done with cleanup-saved-temps. >>> >>> Test ivopts-6.c is the only one of the set that does not require thumb2 >>> support in the check for object-size, and it fails for -march=iwmmxt >>> and iwmmxt2; the check should probably be used on that test as well, >>> although I haven't included it here. >> >> I'm not sure I understand the change for ivopts-6.c : >> >> It's skipping if there is no Thumb support by default but the test >> assumes the test will run with -marm on the command line ? >> >> Ramana > > Oops, I got carried away and didn't notice that it uses -marm rather > than -mthumb. I'll take another look at that one. > > Janis How about this patch? I removed all -mthumb/-marm option settings, and instead focused on trying to guard the object-size tests properly. I introduced 2 new arm-related effective targets to accomplish this. - arm_thumb2: Tests if we're compiling for thumb2. - arm_nothumb: Tests if we're not compiling for any thumb. I don't know how to get the same effect with the existing arm-related effective targets. Thanks, - Tom 2011-06-24 Janis Johnson Tom de Vries * lib/target-supports.exp (check_effective_target_arm_nothumb) (check_effective_target_arm_thumb2): New effective targets. * gcc.target/arm/ivopts.c: Remove -mthumb/-marm. Guard object-size properly. Clean up temporary files. * gcc.target/arm/ivopts-2.c: Likewise. * gcc.target/arm/ivopts-3.c: Likewise. * gcc.target/arm/ivopts-4.c: Likewise. * gcc.target/arm/ivopts-5.c: Likewise. * gcc.target/arm/ivopts-6.c: Remove duplicate of ivopts.c. diff -u gcc/testsuite/gcc.target/arm/ivopts-3.c (revision 0) gcc/testsuite/gcc.target/arm/ivopts-3.c (revision 0) --- gcc/testsuite/gcc.target/arm/ivopts-3.c (revision 0) +++ gcc/testsuite/gcc.target/arm/ivopts-3.c (revision 0) @@ -1,5 +1,5 @@ /* { dg-do assemble } */ -/* { dg-options "-Os -mthumb -fdump-tree-ivopts -save-temps" } */ +/* { dg-options "-Os -fdump-tree-ivopts -save-temps" } */ extern unsigned int foo2 (short*) __attribute__((pure)); @@ -19,2 +19,3 @@ -/* { dg-final { object-size text <= 30 { target arm_thumb2_ok } } } */ +/* { dg-final { object-size text <= 30 { target arm_thumb2 } } } */ /* { dg-final { cleanup-tree-dump "ivopts" } } */ +/* { dg-final { cleanup-saved-temps "ivopts" } } */ diff -u gcc/testsuite/gcc.target/arm/ivopts-4.c (revision 0) gcc/testsuite/gcc.target/arm/ivopts-4.c (revision 0) --- gcc/testsuite/gcc.target/arm/ivopts-4.c (revision 0) +++ gcc/testsuite/gcc.target/arm/ivopts-4.c (revision 0) @@ -1,5 +1,5 @@ /* { dg-do assemble } */ -/* { dg-options "-mthumb -Os -fdump-tree-ivopts -save-temps" } */ +/* { dg-options "-Os -fdump-tree-ivopts -save-temps" } */ extern unsigned int foo (int*) __attribute__((pure)); @@ -20,2 +20,3 @@ -/* { dg-final { object-size text <= 36 { target arm_thumb2_ok } } } */ +/* { dg-final { object-size text <= 36 { target arm_thumb2 } } } */ /* { dg-final { cleanup-tree-dump "ivopts" } } */ +/* { dg-final { cleanup-saved-temps "ivopts" } } */ diff -u gcc/testsuite/gcc.target/arm/ivopts-5.c (revision 0) gcc/testsuite/gcc.target/arm/ivopts-5.c (revision 0) --- gcc/testsuite/gcc.target/arm/ivopts-5.c (revision 0) +++ gcc/testsuite/gcc.target/arm/ivopts-5.c (revision 0) @@ -1,5 +1,5 @@ /* { dg-do assemble } */ -/* { dg-options "-Os -mthumb -fdump-tree-ivopts -save-temps" } */ +/* { dg-options "-Os -fdump-tree-ivopts -save-temps" } */ extern unsigned int foo (int*) __attribute__((pure)); @@ -19,2 +19,3 @@ -/* { dg-final { object-size text <= 30 { target arm_thumb2_ok } } } */ +/* { dg-final { object-size text <= 30 { target arm_thumb2 } } } */ /* { dg-final { cleanup-tree-dump "ivopts" } } */ +/* { dg-final { cleanup-saved-temps "ivopts" } } */ diff -u gcc/testsuite/gcc.target/arm/ivopts-2.c (revision 0) gcc/testsuite/gcc.target/arm/ivopts-2.c (revision 0) --- gcc/testsuite/gcc.target/arm/ivopts-2.c (revision 0) +++ gcc/testsuite/gcc.target/arm/ivopts-2.c (revision 0) @@ -1,5 +1,5 @@ /* { dg-do assemble } */ -/* { dg-options "-Os -mthumb -fdump-tree-ivopts -save-temps" } */ +/* { dg-options "-Os -fdump-tree-ivopts -save-temps" } */ extern void foo2 (short*); @@ -17,2 +17,3 @@ -/* { dg-final { object-size text <= 26 { target arm_thumb2_ok } } } */ +/* { dg-final { object-size text <= 26 { target arm_thumb2 } } } */ /* { dg-final { cleanup-tree-dump "ivopts" } } */ +/* { dg-final { cleanup-saved-temps "ivopts" } } */ diff -u gcc/testsuite/gcc.target/arm/ivopts.c (revision 0) gcc/testsuite/gcc.target/arm/ivopts.c (revision 0) --- gcc/testsuite/gcc.target/arm/ivopts.c (revision 0) +++ gc
Re: [testsuite] ARM ivopts tests: skip for no thumb support
On 06/23/2011 02:56 PM, Ramana Radhakrishnan wrote: > On 23 June 2011 22:36, Janis Johnson wrote: >> Tests gcc.target/arm/ivopts*.c add -mthumb but fail on targets without >> thumb support; skip those targets. The tests save temporary files and >> need to remove them at the end, easily done with cleanup-saved-temps. >> >> Test ivopts-6.c is the only one of the set that does not require thumb2 >> support in the check for object-size, and it fails for -march=iwmmxt >> and iwmmxt2; the check should probably be used on that test as well, >> although I haven't included it here. > > I'm not sure I understand the change for ivopts-6.c : > > It's skipping if there is no Thumb support by default but the test > assumes the test will run with -marm on the command line ? > > Ramana Oops, I got carried away and didn't notice that it uses -marm rather than -mthumb. I'll take another look at that one. Janis
Re: [testsuite] ARM ivopts tests: skip for no thumb support
On 23 June 2011 22:36, Janis Johnson wrote: > Tests gcc.target/arm/ivopts*.c add -mthumb but fail on targets without > thumb support; skip those targets. The tests save temporary files and > need to remove them at the end, easily done with cleanup-saved-temps. > > Test ivopts-6.c is the only one of the set that does not require thumb2 > support in the check for object-size, and it fails for -march=iwmmxt > and iwmmxt2; the check should probably be used on that test as well, > although I haven't included it here. I'm not sure I understand the change for ivopts-6.c : It's skipping if there is no Thumb support by default but the test assumes the test will run with -marm on the command line ? Ramana