| Issue |
166541
|
| Summary |
[AArch64][GISel] COPY "Register class GPR32all does not support subreg index sub_32"
|
| Labels |
backend:AArch64,
llvm:globalisel,
crash-on-valid
|
| Assignees |
|
| Reporter |
sjoerdmeijer
|
This IR:
```
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"
target triple = "aarch64-unknown-linux-gnu"
define i8 @_Z1ev(i1 %cmp724, ptr %a) {
entry:
br i1 %cmp724, label %for.cond5.for.cond.cleanup8_crit_edge, label %vector.main.loop.iter.check
vector.main.loop.iter.check: ; preds = %entry
%min.iters.check46 = icmp ult i32 0, 0
%.not109 = and i1 %cmp724, true
%rdx.select61 = select i1 %.not109, i8 1, i8 0
br label %for.cond5.for.cond.cleanup8_crit_edge
for.cond5.for.cond.cleanup8_crit_edge: ; preds = %vector.main.loop.iter.check, %entry
%conv12.lcssa = phi i8 [ %rdx.select61, %vector.main.loop.iter.check ], [ 0, %entry ]
%0 = freeze i8 %conv12.lcssa
store i8 %0, ptr %a, align 1
ret i8 0
}
```
Triggers this verifier failure:
```
*** Bad machine code: Invalid subregister index for virtual register ***
- function: _Z1ev
- basic block: %bb.3 for.cond5.for.cond.cleanup8_crit_edge (0x12f49e40)
- instruction: %20:gpr32 = COPY %19.sub_32:gpr32all
- operand 1: %19.sub_32:gpr32all
Register class GPR32all does not support subreg index sub_32
```
when compiled with `--verify-machineinstrs -global-isel`, see also:
https://godbolt.org/z/vK3sr9xvd
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs