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

Reply via email to