Skip to content

Commit 28f5ad5

Browse files
committed
[GlobalISel] Fix compiler crash lowering G_LOAD in AArch64.
Patch by Daniel Rodríguez Troitiño. Differential Revision: https://reviews.llvm.org/D70794
1 parent 4ef9110 commit 28f5ad5

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2117,7 +2117,7 @@ LegalizerHelper::lower(MachineInstr &MI, unsigned TypeIdx, LLT Ty) {
21172117
default:
21182118
llvm_unreachable("Unexpected opcode");
21192119
case TargetOpcode::G_LOAD:
2120-
MIRBuilder.buildAnyExt(DstReg, TmpReg);
2120+
MIRBuilder.buildExtOrTrunc(TargetOpcode::G_ANYEXT, DstReg, TmpReg);
21212121
break;
21222122
case TargetOpcode::G_SEXTLOAD:
21232123
MIRBuilder.buildSExt(DstReg, TmpReg);
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2+
# RUN: llc -march=aarch64 -run-pass=legalizer %s -o - -verify-machineinstrs | FileCheck %s
3+
---
4+
name: test_load_trunc
5+
stack:
6+
- { id: 0, type: default, offset: 0, size: 2,
7+
alignment: 2, stack-id: default, callee-saved-register: '', callee-saved-restored: true,
8+
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
9+
body: |
10+
bb.0.entry:
11+
12+
; CHECK-LABEL: name: test_load_trunc
13+
; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0
14+
; CHECK: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[FRAME_INDEX]](p0) :: (load 2)
15+
; CHECK: [[TRUNC:%[0-9]+]]:_(s10) = G_TRUNC [[LOAD]](s16)
16+
; CHECK: [[TRUNC1:%[0-9]+]]:_(s1) = G_TRUNC [[TRUNC]](s10)
17+
; CHECK: RET_ReallyLR implicit [[TRUNC1]](s1)
18+
%0:_(p0) = G_FRAME_INDEX %stack.0
19+
%1:_(s10) = G_LOAD %0(p0) :: (load 2)
20+
%2:_(s1) = G_TRUNC %1(s10)
21+
RET_ReallyLR implicit %2(s1)
22+
...

0 commit comments

Comments
 (0)