http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48614
Summary: gcc.target/i386/pr46084.c should require avx_runtime
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: testsuite
AssignedTo: [email protected]
ReportedBy: [email protected]
Host: x86_64-pc-linux-gnu
Target: x86_64-pc-linux-gnu
Currently, that test fails with -ftree-vectorize in RUNTESTFLAGS:
$ gcc gcc.target/i386/pr46084.c -fsplit-stack -O2 -mavx -ftree-vectorize
$ gdb ./a.out
Program received signal SIGILL, Illegal instruction.
0x0000000000400d0e in use_buffer (buf=Unhandled dwarf expression opcode 0xf3
) at gcc.target/i386/pr46084.c:21
21 for (i = 0; i < c; ++i)
(gdb) disassemble
Dump of assembler code for function use_buffer:
...
0x0000000000400d02 <+98>: lea 0x1(%rax),%rdx
0x0000000000400d06 <+102>: mov %rax,-0x10(%rsp)
0x0000000000400d0b <+107>: add %rdi,%rcx
=> 0x0000000000400d0e <+110>: vmovq -0x10(%rsp),%xmm0
0x0000000000400d14 <+116>: vpinsrq $0x1,%rdx,%xmm0,%xmm1
0x0000000000400d1a <+122>: vmovdqa 0x10ae(%rip),%xmm13 # 0x401dd0
0x0000000000400d22 <+130>: xor %edx,%edx
0x0000000000400d24 <+132>: vmovdqa 0x10b4(%rip),%xmm0 # 0x401de0
0x0000000000400d2c <+140>: vmovdqa 0x10bc(%rip),%xmm9 # 0x401df0
0x0000000000400d34 <+148>: vmovdqa 0x10c4(%rip),%xmm8 # 0x401e00
0x0000000000400d3c <+156>: vmovdqa 0x10cc(%rip),%xmm12 # 0x401e10
0x0000000000400d44 <+164>: vmovdqa 0x10d4(%rip),%xmm11 # 0x401e20
0x0000000000400d4c <+172>: jmp 0x400d54 <use_buffer+180>
I know I am using custom RUNTESTFLAGS, but if the fix is as easy as adding "{
dg-require-effective-target avx_runtime }", it would be nice to have it fixed.
Index: gcc/testsuite/gcc.target/i386/pr46084.c
===================================================================
--- gcc/testsuite/gcc.target/i386/pr46084.c (revision 172439)
+++ gcc/testsuite/gcc.target/i386/pr46084.c (working copy)
@@ -2,6 +2,7 @@
only run on Unix. */
/* { dg-do run { target *-*-linux* *-*-solaris* *-*-darwin* } } */
/* { dg-require-effective-target avx } */
+/* { dg-require-effective-target avx_runtime } */
/* { dg-require-effective-target split_stack } */
/* { dg-options "-fsplit-stack -O2 -mavx" } */
Prevents the failure, but I am not sure if the line above the change isn't now
redundant.