On Mon, 23 Jul 2012 14:40:59 +0100
Richard Earnshaw <[email protected]> wrote:
> On 23/07/12 13:17, Julian Brown wrote:
> > Hi,
> >
> > The test case gcc.dg/torture/stackalign/builtin-apply-2.c makes
> > assumptions which cannot be met for __builtin_apply for the ARM
> > hard-float ABI variant. This patch simply skips the test in that
> > case.
> >
> > Tested (stackalign.exp only) for ARMv4t
> > -marm/-mthumb/-mfloat-abi=hard. The previously-failing test gets
> > skipped as expected with the patch. (This is another one that we've
> > had locally for a while.)
>
> Hmm, I think this won't work for platforms like fedora/arm, where
> -mfloat-abi=hard is the default.
Yes, you're probably right. Here's a new version, which still seems to
work for my test environment. I'm not prepared to test a compiler which
has the hard-float ABI turned on by default, but I think this should
work in theory.
(I didn't find an existing check_effective_target_<foo> function
suitable for this purpose, so I had to add one.)
OK?
Julian
ChangeLog
gcc/testsuite/
* lib/target-supports.exp (check_effective_target_arm_hf_eabi): New.
* gcc.dg/torture/stackalign/builtin-apply-2.c: Skip for
hard-float ARM.
Index: gcc/testsuite/lib/target-supports.exp
===================================================================
--- gcc/testsuite/lib/target-supports.exp (revision 189786)
+++ gcc/testsuite/lib/target-supports.exp (working copy)
@@ -2341,6 +2341,19 @@ proc check_effective_target_arm_eabi { }
}]
}
+# Return 1 if this is an ARM target that adheres to the hard-float variant of
+# the ABI for the ARM Architecture (e.g. -mfloat-abi=hard).
+
+proc check_effective_target_arm_hf_eabi { } {
+ return [check_no_compiler_messages arm_hf_eabi object {
+ #if !defined(__ARM_EABI__) || !defined(__ARM_PCS_VFP)
+ #error not hard-float EABI
+ #else
+ int dummy;
+ #endif
+ }]
+}
+
# Return 1 if this is an ARM target supporting -mcpu=iwmmxt.
# Some multilibs may be incompatible with this option.
Index: gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c (revision 189786)
+++ gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c (working copy)
@@ -5,6 +5,8 @@
with pre-pushed arguments (e.g. SPARC). */
/* { dg-do run } */
+
+/* { dg-skip-if "Variadic funcs use Base AAPCS. Normal funcs use VFP variant." { arm_hf_eabi } } */
#define INTEGER_ARG 5