summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target
diff options
context:
space:
mode:
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2013-11-06 19:37:12 +0000
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2013-11-06 19:37:12 +0000
commit17f29ef392a21ea03178d60bf732081a12ed0b1d (patch)
treecf340a333dfb0fe4b2d672ec9e1a479acf1c29e6 /gcc/testsuite/gcc.target
parent8e53e2621010dc8e654fb06d8210f30478381893 (diff)
downloadgcc-17f29ef392a21ea03178d60bf732081a12ed0b1d.tar.gz
PR target/59021
* config/i386/i386.c (ix86_avx_u128_mode_needed): Require AVX_U128_DIRTY mode for call_insn RTXes that use AVX256 registers. (ix86_avx_u128_mode_needed): Return AVX_U128_DIRTY mode for call_insn RTXes that return in AVX256 register. testsuite/ChangeLog: PR target/59021 * gcc.target/i386/pr59021.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@204464 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.target')
-rw-r--r--gcc/testsuite/gcc.target/i386/pr59021.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/pr59021.c b/gcc/testsuite/gcc.target/i386/pr59021.c
new file mode 100644
index 00000000000..a1df27b105e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr59021.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mavx -mvzeroupper" } */
+
+extern void abort (void);
+
+struct S {
+ int i1;
+ int i2;
+ int i3;
+};
+
+typedef double v4df __attribute__ ((vector_size (32)));
+
+extern int foo (v4df, int i1, int i2, int i3, int i4, int i5, struct S s);
+
+void bar (v4df v, struct S s)
+{
+ int r = foo (v, 1, 2, 3, 4, 5, s);
+ if (r)
+ abort ();
+}
+
+/* { dg-final { scan-assembler-not "vzeroupper" } } */