Hi,

Currently check_effective_target_mpx doesn't check libs availability for non 
Linux targets but tests require them.  This patch modifies test to requre 
wrappers library to link.  I suppose it should fix failing tests on Solaris and 
other non-Linux systems.  Patch also replaces alloca calls with 
__builtin_alloca calls.  Have no machine to test it though (Linux testing is 
OK).  Any help with testing?  Does it look OK?

Thanks,
Ilya
--
2015-03-30  Ilya Enkovich  <ilya.enkov...@intel.com>

        PR target/65602
        * gcc.target/i386/mpx/alloca-1-lbv.c (mpx_test): Use
        __builtin_alloca instead of alloca.
        * gcc.target/i386/mpx/alloca-1-nov.c (mpx_test): Likewise.
        * gcc.target/i386/mpx/alloca-1-ubv.c (mpx_test): Likewise.
        * lib/mpx-dg.exp (check_effective_target_mpx): Add wrapper
        check.


diff --git a/gcc/testsuite/gcc.target/i386/mpx/alloca-1-lbv.c 
b/gcc/testsuite/gcc.target/i386/mpx/alloca-1-lbv.c
index f81a5e2..57c05d3 100644
--- a/gcc/testsuite/gcc.target/i386/mpx/alloca-1-lbv.c
+++ b/gcc/testsuite/gcc.target/i386/mpx/alloca-1-lbv.c
@@ -16,7 +16,7 @@ int rd (int *p, int i)
 
 int mpx_test (int argc, const char **argv)
 {
-  int *buf = (int *)alloca (100 * sizeof(int));
+  int *buf = (int *)__buitlin_alloca (100 * sizeof(int));
 
   rd (buf, -1);
 
diff --git a/gcc/testsuite/gcc.target/i386/mpx/alloca-1-nov.c 
b/gcc/testsuite/gcc.target/i386/mpx/alloca-1-nov.c
index 162b4d5..835015f 100644
--- a/gcc/testsuite/gcc.target/i386/mpx/alloca-1-nov.c
+++ b/gcc/testsuite/gcc.target/i386/mpx/alloca-1-nov.c
@@ -13,7 +13,7 @@ int rd (int *p, int i)
 
 int mpx_test (int argc, const char **argv)
 {
-  int *buf = (int *)alloca (100 * sizeof(int));
+  int *buf = (int *)__builtin_alloca (100 * sizeof(int));
 
   rd (buf, 0);
   rd (buf, 99);
diff --git a/gcc/testsuite/gcc.target/i386/mpx/alloca-1-ubv.c 
b/gcc/testsuite/gcc.target/i386/mpx/alloca-1-ubv.c
index 9af3f11..c57c6c4 100644
--- a/gcc/testsuite/gcc.target/i386/mpx/alloca-1-ubv.c
+++ b/gcc/testsuite/gcc.target/i386/mpx/alloca-1-ubv.c
@@ -16,7 +16,7 @@ int rd (int *p, int i)
 
 int mpx_test (int argc, const char **argv)
 {
-  int *buf = (int *)alloca (100 * sizeof(int));
+  int *buf = (int *)__builtin_alloca (100 * sizeof(int));
 
   rd (buf, 100);
 
diff --git a/gcc/testsuite/lib/mpx-dg.exp b/gcc/testsuite/lib/mpx-dg.exp
index 0b731a7..c8f64cd 100644
--- a/gcc/testsuite/lib/mpx-dg.exp
+++ b/gcc/testsuite/lib/mpx-dg.exp
@@ -20,7 +20,13 @@
 proc check_effective_target_mpx {} {
     return [check_no_compiler_messages mpx executable {
        int *foo (int *arg) { return arg; }
-       int main (void) { return foo ((void *)0) == 0; }
+       int main (void)
+       {
+           int *p = __builtin_malloc (sizeof (int));
+           int res = foo (p) == 0;
+           __builtin_free (p);
+           return res;
+       }
     } "-fcheck-pointer-bounds -mmpx"]
 }
 

Reply via email to