Skip to content

Commit ad9a283

Browse files
author
Thorsten Schütt
committed
address review comments
1 parent 1565efb commit ad9a283

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

llvm/lib/CodeGen/GlobalISel/CombinerHelperArtifacts.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,13 @@ bool CombinerHelper::matchMergeXAndUndef(const MachineInstr &MI,
3333
const GMerge *Merge = cast<GMerge>(&MI);
3434

3535
Register Dst = Merge->getReg(0);
36-
Register Undef = Merge->getSourceReg(1);
3736
LLT DstTy = MRI.getType(Dst);
3837
LLT SrcTy = MRI.getType(Merge->getSourceReg(0));
3938

39+
// Otherwise, we would miscompile.
40+
if (Merge->getNumSources() > 2)
41+
return false;
42+
4043
//
4144
// %bits_8_15:_(s8) = G_IMPLICIT_DEF
4245
// %0:_(s16) = G_MERGE_VALUES %bits_0_7:(s8), %bits_8_15:(s8)
@@ -46,8 +49,7 @@ bool CombinerHelper::matchMergeXAndUndef(const MachineInstr &MI,
4649
// %0:_(s16) = G_ZEXT %bits_0_7:(s8)
4750
//
4851

49-
if (!MRI.hasOneNonDBGUse(Undef) ||
50-
!isLegalOrBeforeLegalizer({TargetOpcode::G_ZEXT, {DstTy, SrcTy}}))
52+
if (!isLegalOrBeforeLegalizer({TargetOpcode::G_ZEXT, {DstTy, SrcTy}}))
5153
return false;
5254

5355
MatchInfo = [=](MachineIRBuilder &B) {

llvm/test/CodeGen/AArch64/GlobalISel/combine-unmerge.mir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@ body: |
564564
; CHECK-LABEL: name: test_merge_undef_multi_use
565565
; CHECK: %opaque:_(s64) = COPY $x0
566566
; CHECK-NEXT: %def:_(s64) = G_IMPLICIT_DEF
567-
; CHECK-NEXT: %me:_(s128) = G_MERGE_VALUES %opaque(s64), %def(s64)
567+
; CHECK-NEXT: %me:_(s128) = G_ZEXT %opaque(s64)
568568
; CHECK-NEXT: $q0 = COPY %me(s128)
569569
; CHECK-NEXT: $x0 = COPY %def(s64)
570570
%opaque:_(s64) = COPY $x0

0 commit comments

Comments
 (0)