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"] }