Issue 97304
Summary [RISCV]
Labels backend:RISC-V
Assignees
Reporter lukel97
    Compiling the below with `llc -verify-machineinstrs` fails during the machine verifier:
```llvm
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"

define i32 @_ZNK2cv12LMSolverImpl3runERKNS_17_InputOutputArrayE(i1 %cmp436) {
entry:
  br label %for.cond

for.cond: ; preds = %for.cond, %entry
  %conv = select i1 %cmp436, i32 32, i32 1
  %call479 = call i32 (ptr, ...) null(ptr null, i32 %conv, i32 0, i32 0, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00)
  br label %for.cond
}
```

```
# After Instruction Selection
# Machine code for function _ZNK2cv12LMSolverImpl3runERKNS_17_InputOutputArrayE: IsSSA, TracksLiveness
Function Live Ins: $x10 in %0

bb.0.entry:
 successors: %bb.1(0x80000000); %bb.1(100.00%)
  liveins: $x10
  %0:gpr = COPY $x10
  %1:gpr = COPY %0:gpr

bb.1.for.cond:
; predecessors: %bb.0, %bb.3
  successors: %bb.2(0x40000000), %bb.3(0x40000000); %bb.2(50.00%), %bb.3(50.00%)

  %2:gpr = ANDI %1:gpr, 1
  ADJCALLSTACKDOWN 8, 0, implicit-def dead $x2, implicit $x2
 %3:gpr = COPY $x2
  %4:gprjalr = COPY $x0
  SD %4:gprjalr, %3:gpr, 0 :: (store (s64))
  %5:gpr = ADDI $x0, 1
  %6:gpr = ADDI $x0, 32
 BNE %2:gpr, $x0, %bb.3

bb.2.for.cond:
; predecessors: %bb.1
 successors: %bb.3(0x80000000); %bb.3(100.00%)


bb.3.for.cond:
; predecessors: %bb.1, %bb.2
  successors: %bb.1(0x80000000); %bb.1(100.00%)

  %7:gpr = PHI %6:gpr, %bb.1, %5:gpr, %bb.2
  $x10 = COPY %4:gprjalr
  $x11 = COPY %7:gpr
  $x12 = COPY %4:gprjalr
  $x13 = COPY %4:gprjalr
  $x14 = COPY %4:gprjalr
  $x15 = COPY %4:gprjalr
 $x16 = COPY %4:gprjalr
  $x17 = COPY %4:gprjalr
  PseudoCALLIndirect %4:gprjalr, <regmask $vlenb $x0 $x1 $x8 $x9 $x18 $x19 $x20 $x21 $x22 $x23 $x24 $x25 $x26 $x27 $x8_x9 $x18_x19 $x20_x21 $x22_x23 $x24_x25 $x26_x27>, implicit-def dead $x1, implicit $x10, implicit $x11, implicit $x12, implicit $x13, implicit $x14, implicit $x15, implicit $x16, implicit $x17, implicit-def $x2, implicit-def $x10
  ADJCALLSTACKUP 8, 0, implicit-def dead $x2, implicit $x2
  %8:gpr = COPY $x10
  PseudoBR %bb.1

# End machine code for function _ZNK2cv12LMSolverImpl3runERKNS_17_InputOutputArrayE.

*** Bad machine code: Call frame size on entry does not match value computed from predecessor ***
- function: _ZNK2cv12LMSolverImpl3runERKNS_17_InputOutputArrayE
- basic block: %bb.2 for.cond (0x144084970)
Call frame size on entry 0 does not match value computed from predecessor 8

*** Bad machine code: Call frame size on entry does not match value computed from predecessor ***
- function: _ZNK2cv12LMSolverImpl3runERKNS_17_InputOutputArrayE
- basic block: %bb.3 for.cond (0x144084870)
Call frame size on entry 0 does not match value computed from predecessor 8
LLVM ERROR: Found 2 machine code errors.
```

The test case looks strange, but it was reduced from a crash when compiling OpenCV with `-rva22u64v -mllvm -verify-machineinstrs` .
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to