https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90723
Bug ID: 90723 Summary: pr88598-2.c segfaults with -msve-vector-bits=256 Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: prathamesh3492 at gcc dot gnu.org Target Milestone: --- cc1 segfaults with the following test-case, with -O2 -march=armv8.2-a+sve -msve-vector-bits=256: typedef double v4df __attribute__ ((vector_size (32))); void foo(v4df); int main () { volatile v4df x1; x1 = (v4df) { 0, 1, 1, 2 }; foo (x1); return 0; } gdb backtrace (clipped to last 14): Program received signal SIGSEGV, Segmentation fault. 0x0000000000bfdad1 in expand_binop_directly (icode=CODE_FOR_adddi3, mode=mode@entry=E_DImode, binoptab=binoptab@entry=add_optab, op0=op0@entry=0x7ffff7a233a8, op1=op1@entry=0x7ffff7a2b290, target=target@entry=0x7ffff5095468, unsignedp=1, methods=OPTAB_LIB_WIDEN, last=0x7ffff5094bc0) at ../../gcc/gcc/optabs.c:1038 1038 { (gdb) bt #0 0x0000000000bfdad1 in expand_binop_directly (icode=CODE_FOR_adddi3, mode=mode@entry=E_DImode, binoptab=binoptab@entry=add_optab, op0=op0@entry=0x7ffff7a233a8, op1=op1@entry=0x7ffff7a2b290, target=target@entry=0x7ffff5095468, unsignedp=1, methods=OPTAB_LIB_WIDEN, last=0x7ffff5094bc0) at ../../gcc/gcc/optabs.c:1038 #1 0x0000000000bfc0dd in expand_binop (mode=E_DImode, binoptab=<optimized out>, op0=0x7ffff7a233a8, op1=0x7ffff7a2b290, target=0x7ffff5095468, unsignedp=1, methods=OPTAB_LIB_WIDEN) at ../../gcc/gcc/optabs.c:1209 #2 0x00000000009cc7e4 in force_operand (value=0x7ffff7859f90, target=0x7ffff5095468) at ../../gcc/gcc/expr.c:7527 #3 0x00000000009a80a3 in copy_to_mode_reg (mode=E_DImode, x=x@entry=0x7ffff7859f90) at ../../gcc/gcc/explow.c:627 #4 0x0000000000bf2dce in maybe_legitimize_operand_same_code (icode=icode@entry=CODE_FOR_aarch64_pred_movvnx2df, opno=opno@entry=2, op=<optimized out>) at ../../gcc/gcc/optabs.c:7146 #5 0x0000000000bf56ee in maybe_legitimize_operand (op=0x7ffffbfff400, opno=2, icode=CODE_FOR_aarch64_pred_movvnx2df) at ../../gcc/gcc/optabs.c:7196 #6 maybe_legitimize_operands (icode=CODE_FOR_aarch64_pred_movvnx2df, opno=0, nops=<optimized out>, ops=0x7ffffbfff3c0) at ../../gcc/gcc/optabs.c:7323 #7 0x0000000000bf5c0a in maybe_gen_insn (icode=CODE_FOR_aarch64_pred_movvnx2df, nops=<optimized out>, ops=0x7ffffbfff3c0) at ../../gcc/gcc/optabs.c:7342 #8 0x0000000000bf8c39 in maybe_expand_insn (ops=ops@entry=0x7ffffbfff3b0, nops=nops@entry=3, icode=<optimized out>) at ../../gcc/gcc/optabs.c:7416 #9 expand_insn (icode=<optimized out>, nops=nops@entry=3, ops=ops@entry=0x7ffffbfff3c0) at ../../gcc/gcc/optabs.c:7416 #10 0x00000000010378a4 in aarch64_emit_sve_pred_move (dest=<optimized out>, pred=<optimized out>, src=<optimized out>) at ./insn-opinit.h:735 #11 0x00000000012cb710 in gen_movvnx2df (operand0=0x7ffff5095408, operand1=0x7ffff7859f78) at ../../gcc/gcc/config/aarch64/aarch64-sve.md:77 #12 0x00000000009c7505 in insn_gen_fn::operator() (this=<optimized out>, a1=0x7ffff7859f78, a0=0x7ffff5095408) at ../../gcc/gcc/recog.h:301 #13 emit_move_insn_1 (x=0x7ffff5095408, y=0x7ffff7859f78) at ../../gcc/gcc/expr.c:3701 #14 0x00000000009c7950 in emit_move_insn (x=x@entry=0x7ffff5095408, y=y@entry=0x7ffff7859f78) at ../../gcc/gcc/expr.c:3797 Thanks, Prathamesh