https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86683
Bug ID: 86683 Summary: ICE in altivec_expand_vec_perm_const at gcc/config/rs6000/rs6000.c:35074 Product: gcc Version: 9.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: segher at gcc dot gnu.org Target Milestone: --- Host: x86_64-pc-linux-gnu Target: ppc64le-linux-gnu Following causes trouble: $ ppc64le-linux-gnu-gcc /home/marxin/Programming/gcc/gcc/testsuite/gcc.dg/vect/slp-38.c -Ofast during RTL pass: expand /home/marxin/Programming/gcc/gcc/testsuite/gcc.dg/vect/slp-38.c: In function ‘Compute’: /home/marxin/Programming/gcc/gcc/testsuite/gcc.dg/vect/slp-38.c:16:13: internal compiler error: Segmentation fault Y[d].l= X[d].l + X[d].h; ~~~~~~^~~~~~~~~~~~~~~~~ 0x9e353f crash_signal /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/toplev.c:325 0x7ffff69d810f ??? /usr/src/debug/glibc-2.27-6.1.x86_64/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0 When running in GDB I see: Program received signal SIGSEGV, Segmentation fault. 0x0000000000000000 in ?? () (gdb) bt #0 0x0000000000000000 in ?? () #1 0x0000000000cb2b70 in insn_gen_fn::operator() (this=<optimized out>, a2=0x7ffff6952f00, a1=0x7ffff6952eb8, a0=0x7ffff6952f18) at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/recog.h:302 #2 altivec_expand_vec_perm_const (sel=..., op1=0x7ffff6952f00, op0=0x7ffff6952eb8, target=0x7ffff6952e40) at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/config/rs6000/rs6000.c:35074 #3 rs6000_vectorize_vec_perm_const(machine_mode, rtx_def*, rtx_def*, rtx_def*, vec_perm_indices const&) () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/config/rs6000/rs6000.c:35172 #4 0x000000000090bbaf in expand_vec_perm_const (mode=mode@entry=E_V4SFmode, v0=0x7ffff6952ba0, v1=0x7ffff6952ba0, sel=..., sel_mode=E_V4SImode, target=0x7ffff6952e28, target@entry=0x0) at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/optabs.c:5569 #5 0x0000000000755727 in expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier) () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/expr.c:9474 #6 0x0000000000746649 in expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/expr.c:9834 #7 0x000000000074ee15 in expand_expr (modifier=EXPAND_NORMAL, mode=E_VOIDmode, target=<optimized out>, exp=<optimized out>) at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/expr.h:279 #8 expand_operands (exp0=exp0@entry=0x7ffff67ad750, exp1=exp1@entry=0x7ffff67adcf0, target=0x0, op0=op0@entry=0x7fffffffcfc8, op1=op1@entry=0x7fffffffcfd0, modifier=modifier@entry=EXPAND_NORMAL) at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/expr.c:7784 #9 0x0000000000753abe in expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier) () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/expr.c:8644 #10 0x0000000000746649 in expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/expr.c:9834 #11 0x0000000000750ce4 in expand_expr (modifier=EXPAND_NORMAL, mode=E_VOIDmode, target=0x0, exp=0x7ffff67add38) at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/expr.h:279 #12 expand_assignment(tree_node*, tree_node*, bool) () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/expr.c:4993 #13 0x000000000065cbe1 in expand_gimple_stmt_1 (stmt=0x7ffff69575f0) at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/gimple.h:2677 #14 expand_gimple_stmt(gimple*) () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/cfgexpand.c:3734 #15 0x000000000065e0a0 in expand_gimple_basic_block(basic_block_def*, bool) () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/cfgexpand.c:5769 #16 0x0000000000662d17 in (anonymous namespace)::pass_expand::execute(function*) () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/cfgexpand.c:6372 #17 0x0000000000928982 in execute_one_pass(opt_pass*) () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/passes.c:2446 #18 0x00000000009290f8 in execute_pass_list_1(opt_pass*) () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/passes.c:2535 #19 0x0000000000929149 in execute_pass_list(function*, opt_pass*) () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/passes.c:2546 #20 0x000000000069325d in cgraph_node::expand() () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/context.h:48 #21 0x00000000006940fc in expand_all_functions () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/cgraphunit.c:2254 #22 symbol_table::compile() [clone .part.69] () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/cgraphunit.c:2605 #23 0x000000000069606a in symbol_table::compile (this=0x7ffff67a6000) at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/cgraphunit.c:2698 #24 symbol_table::finalize_compilation_unit (this=0x7ffff67a6000) at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/cgraphunit.c:2698 #25 0x00000000009e37fa in compile_file () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/toplev.c:480 #26 0x0000000000568114 in do_compile () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/toplev.c:2161 #27 toplev::main(int, char**) () at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/toplev.c:2296 #28 0x000000000056a34b in main (argc=21, argv=0x7fffffffd958) at /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64le/build/gcc/main.c:39 Verbose options: /dev/shm/buildbot/install/gcc/libexec/gcc/ppc64le-linux-gnu/9.0.0/cc1 -quiet -v -D__unix__ -D__gnu_linux__ -D__linux__ -Dunix -D__unix -Dlinux -D__linux -Asystem=linux -Asystem=unix -Asystem=posix /home/marxin/Programming/gcc/gcc/testsuite/gcc.dg/vect/slp-38.c -quiet -dumpbase slp-38.c -auxbase slp-38 -Ofast -version -o /tmp/ccupH7jf.s