Re: [testsuite] ARM ivopts tests: skip for no thumb support

2011-06-24 Thread Tom de Vries
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 jani...@codesourcery.com 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  jani...@codesourcery.com
Tom de Vries  t...@codesourcery.com

* 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)
+++ 

Re: [testsuite] ARM ivopts tests: skip for no thumb support

2011-06-24 Thread Janis Johnson
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 jani...@codesourcery.com 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

2011-06-24 Thread Ramana Radhakrishnan
 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

2011-06-24 Thread Janis Johnson
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

2011-06-23 Thread Ramana Radhakrishnan
On 23 June 2011 22:36, Janis Johnson jani...@codesourcery.com 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


Re: [testsuite] ARM ivopts tests: skip for no thumb support

2011-06-23 Thread Janis Johnson
On 06/23/2011 02:56 PM, Ramana Radhakrishnan wrote:
 On 23 June 2011 22:36, Janis Johnson jani...@codesourcery.com 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