Commit ec1c5694 by Jakub Jelinek Committed by Jakub Jelinek

re PR target/78451 (FAIL: gcc.target/i386/sse-22a.c: error: inlining failed in…

re PR target/78451 (FAIL: gcc.target/i386/sse-22a.c: error: inlining failed in call to always_inline '_mm512_setzero_ps')

	PR target/78451
	* c-pragma.c (handle_pragma_target): Don't replace
	current_target_pragma, but chainon the new args to the current one.

	* gcc.target/i386/pr78451.c: New test.
	* gcc.target/i386/pr69255-1.c: Use #pragma GCC push_options
	and #pragma GCC pop_options around the first #pragma GCC target.
	* gcc.target/i386/pr69255-2.c: Likewise.
	* gcc.target/i386/pr69255-3.c: Likewise.

From-SVN: r242740
parent 43fd192f
2016-11-23 Jakub Jelinek <jakub@redhat.com>
PR target/78451
* c-pragma.c (handle_pragma_target): Don't replace
current_target_pragma, but chainon the new args to the current one.
2016-11-22 Nathan Sidwell <nathan@acm.org> 2016-11-22 Nathan Sidwell <nathan@acm.org>
* array-notation-common.c (cilkplus_extract_an_trplets): Fix * array-notation-common.c (cilkplus_extract_an_trplets): Fix
......
...@@ -893,7 +893,7 @@ handle_pragma_target(cpp_reader *ARG_UNUSED(dummy)) ...@@ -893,7 +893,7 @@ handle_pragma_target(cpp_reader *ARG_UNUSED(dummy))
args = nreverse (args); args = nreverse (args);
if (targetm.target_option.pragma_parse (args, NULL_TREE)) if (targetm.target_option.pragma_parse (args, NULL_TREE))
current_target_pragma = args; current_target_pragma = chainon (current_target_pragma, args);
} }
} }
......
2016-11-23 Jakub Jelinek <jakub@redhat.com>
PR target/78451
* gcc.target/i386/pr78451.c: New test.
* gcc.target/i386/pr69255-1.c: Use #pragma GCC push_options
and #pragma GCC pop_options around the first #pragma GCC target.
* gcc.target/i386/pr69255-2.c: Likewise.
* gcc.target/i386/pr69255-3.c: Likewise.
2016-11-23 Michael Collison <michael.collison@arm.com> 2016-11-23 Michael Collison <michael.collison@arm.com>
* testsuite/gcc.target/aarch64/and_const.c: New test to verify * testsuite/gcc.target/aarch64/and_const.c: New test to verify
......
...@@ -2,7 +2,9 @@ ...@@ -2,7 +2,9 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-msse4 -mno-avx" } */ /* { dg-options "-msse4 -mno-avx" } */
#pragma GCC push_options
#pragma GCC target "avx512vl" #pragma GCC target "avx512vl"
#pragma GCC pop_options
#pragma GCC target "no-avx512vl" #pragma GCC target "no-avx512vl"
__attribute__ ((__vector_size__ (32))) long long a; __attribute__ ((__vector_size__ (32))) long long a;
__attribute__ ((__vector_size__ (16))) int b; __attribute__ ((__vector_size__ (16))) int b;
...@@ -13,5 +15,5 @@ foo (const long long *p) ...@@ -13,5 +15,5 @@ foo (const long long *p)
a = __builtin_ia32_gather3siv4di (a, p, b, 1, 1); /* { dg-error "needs isa option -m32 -mavx512vl" } */ a = __builtin_ia32_gather3siv4di (a, p, b, 1, 1); /* { dg-error "needs isa option -m32 -mavx512vl" } */
} }
/* { dg-warning "AVX vector return without AVX enabled changes the ABI" "" { target *-*-* } 13 } */ /* { dg-warning "AVX vector return without AVX enabled changes the ABI" "" { target *-*-* } 15 } */
/* { dg-warning "AVX vector argument without AVX enabled changes the ABI" "" { target *-*-* } 13 } */ /* { dg-warning "AVX vector argument without AVX enabled changes the ABI" "" { target *-*-* } 15 } */
...@@ -2,7 +2,9 @@ ...@@ -2,7 +2,9 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-msse4 -mno-avx" } */ /* { dg-options "-msse4 -mno-avx" } */
#pragma GCC push_options
#pragma GCC target "avx512vl" #pragma GCC target "avx512vl"
#pragma GCC pop_options
#pragma GCC target "" #pragma GCC target ""
__attribute__ ((__vector_size__ (32))) long long a; __attribute__ ((__vector_size__ (32))) long long a;
__attribute__ ((__vector_size__ (16))) int b; __attribute__ ((__vector_size__ (16))) int b;
...@@ -13,5 +15,5 @@ foo (const long long *p) ...@@ -13,5 +15,5 @@ foo (const long long *p)
__builtin_ia32_gather3siv4di (a, p, b, 1, 1); /* { dg-error "needs isa option -m32 -mavx512vl" } */ __builtin_ia32_gather3siv4di (a, p, b, 1, 1); /* { dg-error "needs isa option -m32 -mavx512vl" } */
} }
/* { dg-warning "AVX vector return without AVX enabled changes the ABI" "" { target *-*-* } 13 } */ /* { dg-warning "AVX vector return without AVX enabled changes the ABI" "" { target *-*-* } 15 } */
/* { dg-warning "AVX vector argument without AVX enabled changes the ABI" "" { target *-*-* } 13 } */ /* { dg-warning "AVX vector argument without AVX enabled changes the ABI" "" { target *-*-* } 15 } */
...@@ -2,7 +2,9 @@ ...@@ -2,7 +2,9 @@
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-msse4 -mno-avx" } */ /* { dg-options "-msse4 -mno-avx" } */
#pragma GCC push_options
#pragma GCC target "avx512vl" #pragma GCC target "avx512vl"
#pragma GCC pop_options
#pragma GCC target "" #pragma GCC target ""
__attribute__ ((__vector_size__ (32))) long long a; __attribute__ ((__vector_size__ (32))) long long a;
__attribute__ ((__vector_size__ (16))) int b; __attribute__ ((__vector_size__ (16))) int b;
...@@ -13,5 +15,5 @@ foo (const long long *p, __attribute__ ((__vector_size__ (32))) long long *q) ...@@ -13,5 +15,5 @@ foo (const long long *p, __attribute__ ((__vector_size__ (32))) long long *q)
*q = __builtin_ia32_gather3siv4di (a, p, b, 1, 1); /* { dg-error "needs isa option -m32 -mavx512vl" } */ *q = __builtin_ia32_gather3siv4di (a, p, b, 1, 1); /* { dg-error "needs isa option -m32 -mavx512vl" } */
} }
/* { dg-warning "AVX vector return without AVX enabled changes the ABI" "" { target *-*-* } 13 } */ /* { dg-warning "AVX vector return without AVX enabled changes the ABI" "" { target *-*-* } 15 } */
/* { dg-warning "AVX vector argument without AVX enabled changes the ABI" "" { target *-*-* } 13 } */ /* { dg-warning "AVX vector argument without AVX enabled changes the ABI" "" { target *-*-* } 15 } */
/* PR target/78451 */
/* { dg-options "-O2 -mno-avx512f" } */
#pragma GCC push_options
#pragma GCC target ("avx512bw")
static inline int __attribute__ ((__always_inline__))
bar (void)
{
return 0;
}
#pragma GCC push_options
#pragma GCC target ("avx512vl")
int
foo (void)
{
return bar ();
}
#pragma GCC pop_options
#pragma GCC pop_options
#pragma GCC push_options
#pragma GCC target ("avx512vl")
#pragma GCC target ("avx512bw")
int
baz (void)
{
return bar ();
}
#pragma GCC pop_options
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment