https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64873
Bug ID: 64873 Summary: jit testsuite failures on powerpc64le-unknown-linux-gnu Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: jit Assignee: dmalcolm at gcc dot gnu.org Reporter: dmalcolm at gcc dot gnu.org Host: powerpc64le-unknown-linux-gnu Target: powerpc64le-unknown-linux-gnu Build: powerpc64le-unknown-linux-gnu With r220259 (aka 5bb1df18a77ddc8bae7dd610128fec21b64a2ca0), "make check-jit" fails some testcases with: jit.sum:358:FAIL: test-accessing-union.c.exe killed: 14656 exp7 0 0 CHILDKILLED SIGILL {illegal instruction} jit.sum:857:FAIL: test-combination.c.exe killed: 16447 exp7 0 0 CHILDKILLED SIGILL {illegal instruction} jit.sum:1036:FAIL: test-dot-product.c.exe killed: 15939 exp8 0 0 CHILDKILLED SIGILL {illegal instruction} jit.sum:1781:FAIL: test-expressions.c.exe killed: 14878 exp7 0 0 CHILDKILLED SIGILL {illegal instruction} jit.sum:1842:FAIL: test-functions.c.exe killed: 16230 exp7 0 0 CHILDKILLED SIGILL {illegal instruction} jit.sum:2417:FAIL: test-nested-loops.c.exe killed: 14676 exp7 0 0 CHILDKILLED SIGILL {illegal instruction} jit.sum:2674:FAIL: test-threads.c.exe killed: 16692 exp7 0 0 CHILDKILLED SIGILL {illegal instruction} (I also see PR jit/64752) Configured with: --enable-host-shared --enable-languages=jit,c++ --disable-bootstrap --enable-checking=release --disable-multilib Build compiler: gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7) as: GNU assembler version 2.23.52.0.1 (ppc64le-redhat-linux) using BFD version version 2.23.52.0.1-26.bs4 20130226 Setting: gcc_jit_context_set_bool_option ( ctxt, GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES, 1); to debug. For test-accessing-union.c.exe, SIGILL happens here: #0 0x00003fffb0100714 in test_union (i=42) from /tmp/libgccjit-lh83IX/fake.so (gdb) disassemble Dump of assembler code for function test_union: 0x00003fffb0100710 <+0>: rldicr r9,r3,32,31 => 0x00003fffb0100714 <+4>: mtvsrd vs1,r9 0x00003fffb0100718 <+8>: xscvspdpn vs1,vs1 0x00003fffb010071c <+12>: blr 0x00003fffb0100720 <+16>: .long 0x0 0x00003fffb0100724 <+20>: .long 0x0 0x00003fffb0100728 <+24>: .long 0x0 End of assembler dump. The corresponding fake.s file was: .file "fake.c" .machine power8 .abiversion 2 .section ".toc","aw" .section ".text" .Ltext0: .cfi_sections .debug_frame .align 2 .p2align 4,,15 .globl test_union .type test_union, @function test_union: .LFB0: .cfi_startproc .LVL0: sldi 9,3,32 mtvsrd 1,9 xscvspdpn 1,1 blr .long 0 .byte 0,0,0,0,0,0,0,0 .cfi_endproc .LFE0: .size test_union,.-test_union .Letext0: .section .debug_info,"",@progbits .Ldebug_info0: (...snip...) test-expressions.c.exe dies in this jit-generated code: Program received signal SIGILL, Illegal instruction. (gdb) disassemble Dump of assembler code for function test_cast_from_float_to_int: 0x00003fffb00d1260 <+0>: fctiwz f1,f1 => 0x00003fffb00d1264 <+4>: mfvsrd r3,vs1 0x00003fffb00d1268 <+8>: extsw r3,r3 0x00003fffb00d126c <+12>: blr 0x00003fffb00d1270 <+16>: .long 0x0 0x00003fffb00d1274 <+20>: .long 0x0 0x00003fffb00d1278 <+24>: .long 0x0 End of assembler dump. test-dot-product.c.exe dies in this ahead-of-time compiled code in "verify_code": 0x00000000100032bc <+292>: stfd f1,104(r31) 0x00000000100032c0 <+296>: lfd f12,104(r31) 0x00000000100032c4 <+300>: lfd f0,104(r31) => 0x00000000100032c8 <+304>: mfvsrd r4,vs12 0x00000000100032cc <+308>: fmr f1,f0 0x00000000100032d0 <+312>: addis r3,r2,-2 0x00000000100032d4 <+316>: addi r3,r3,31384 0x00000000100032d8 <+320>: bl 0x10002168 <note+8> 0x00000000100032dc <+324>: lfd f12,104(r31) 0x00000000100032e0 <+328>: addis r9,r2,-2