@@ -872,7 +872,6 @@ bool CombinerHelper::matchSextTruncSextLoad(MachineInstr &MI) {
872
872
873
873
void CombinerHelper::applySextTruncSextLoad (MachineInstr &MI) {
874
874
assert (MI.getOpcode () == TargetOpcode::G_SEXT_INREG);
875
- Builder.setInstrAndDebugLoc (MI);
876
875
Builder.buildCopy (MI.getOperand (0 ).getReg (), MI.getOperand (1 ).getReg ());
877
876
MI.eraseFromParent ();
878
877
}
@@ -1299,7 +1298,6 @@ bool CombinerHelper::matchCombineIndexedLoadStore(
1299
1298
void CombinerHelper::applyCombineIndexedLoadStore (
1300
1299
MachineInstr &MI, IndexedLoadStoreMatchInfo &MatchInfo) {
1301
1300
MachineInstr &AddrDef = *MRI.getUniqueVRegDef (MatchInfo.Addr );
1302
- Builder.setInstrAndDebugLoc (MI);
1303
1301
unsigned Opcode = MI.getOpcode ();
1304
1302
bool IsStore = Opcode == TargetOpcode::G_STORE;
1305
1303
unsigned NewOpcode = getIndexedOpc (Opcode);
@@ -1416,14 +1414,8 @@ void CombinerHelper::applyCombineDivRem(MachineInstr &MI,
1416
1414
// deps by "moving" the instruction incorrectly. Also keep track of which
1417
1415
// instruction is first so we pick it's operands, avoiding use-before-def
1418
1416
// bugs.
1419
- MachineInstr *FirstInst;
1420
- if (dominates (MI, *OtherMI)) {
1421
- Builder.setInstrAndDebugLoc (MI);
1422
- FirstInst = &MI;
1423
- } else {
1424
- Builder.setInstrAndDebugLoc (*OtherMI);
1425
- FirstInst = OtherMI;
1426
- }
1417
+ MachineInstr *FirstInst = dominates (MI, *OtherMI) ? &MI : OtherMI;
1418
+ Builder.setInstrAndDebugLoc (*FirstInst);
1427
1419
1428
1420
Builder.buildInstr (IsSigned ? TargetOpcode::G_SDIVREM
1429
1421
: TargetOpcode::G_UDIVREM,
@@ -1556,7 +1548,6 @@ static APFloat constantFoldFpUnary(const MachineInstr &MI,
1556
1548
1557
1549
void CombinerHelper::applyCombineConstantFoldFpUnary (MachineInstr &MI,
1558
1550
const ConstantFP *Cst) {
1559
- Builder.setInstrAndDebugLoc (MI);
1560
1551
APFloat Folded = constantFoldFpUnary (MI, MRI, Cst->getValue ());
1561
1552
const ConstantFP *NewCst = ConstantFP::get (Builder.getContext (), Folded);
1562
1553
Builder.buildFConstant (MI.getOperand (0 ), *NewCst);
@@ -1691,7 +1682,6 @@ void CombinerHelper::applyShiftImmedChain(MachineInstr &MI,
1691
1682
Opcode == TargetOpcode::G_USHLSAT) &&
1692
1683
" Expected G_SHL, G_ASHR, G_LSHR, G_SSHLSAT or G_USHLSAT" );
1693
1684
1694
- Builder.setInstrAndDebugLoc (MI);
1695
1685
LLT Ty = MRI.getType (MI.getOperand (1 ).getReg ());
1696
1686
unsigned const ScalarSizeInBits = Ty.getScalarSizeInBits ();
1697
1687
auto Imm = MatchInfo.Imm ;
@@ -1807,7 +1797,6 @@ void CombinerHelper::applyShiftOfShiftedLogic(MachineInstr &MI,
1807
1797
1808
1798
LLT ShlType = MRI.getType (MI.getOperand (2 ).getReg ());
1809
1799
LLT DestType = MRI.getType (MI.getOperand (0 ).getReg ());
1810
- Builder.setInstrAndDebugLoc (MI);
1811
1800
1812
1801
Register Const = Builder.buildConstant (ShlType, MatchInfo.ValSum ).getReg (0 );
1813
1802
@@ -1943,7 +1932,6 @@ void CombinerHelper::applyCombineShlOfExtend(MachineInstr &MI,
1943
1932
int64_t ShiftAmtVal = MatchData.Imm ;
1944
1933
1945
1934
LLT ExtSrcTy = MRI.getType (ExtSrcReg);
1946
- Builder.setInstrAndDebugLoc (MI);
1947
1935
auto ShiftAmt = Builder.buildConstant (ExtSrcTy, ShiftAmtVal);
1948
1936
auto NarrowShift =
1949
1937
Builder.buildShl (ExtSrcTy, ExtSrcReg, ShiftAmt, MI.getFlags ());
@@ -2013,7 +2001,6 @@ void CombinerHelper::applyCombineUnmergeMergeToPlainValues(
2013
2001
LLT SrcTy = MRI.getType (Operands[0 ]);
2014
2002
LLT DstTy = MRI.getType (MI.getOperand (0 ).getReg ());
2015
2003
bool CanReuseInputDirectly = DstTy == SrcTy;
2016
- Builder.setInstrAndDebugLoc (MI);
2017
2004
for (unsigned Idx = 0 ; Idx < NumElems; ++Idx) {
2018
2005
Register DstReg = MI.getOperand (Idx).getReg ();
2019
2006
Register SrcReg = Operands[Idx];
@@ -2066,7 +2053,6 @@ void CombinerHelper::applyCombineUnmergeConstant(MachineInstr &MI,
2066
2053
assert ((MI.getNumOperands () - 1 == Csts.size ()) &&
2067
2054
" Not enough operands to replace all defs" );
2068
2055
unsigned NumElems = MI.getNumOperands () - 1 ;
2069
- Builder.setInstrAndDebugLoc (MI);
2070
2056
for (unsigned Idx = 0 ; Idx < NumElems; ++Idx) {
2071
2057
Register DstReg = MI.getOperand (Idx).getReg ();
2072
2058
Builder.buildConstant (DstReg, Csts[Idx]);
@@ -2104,7 +2090,6 @@ bool CombinerHelper::matchCombineUnmergeWithDeadLanesToTrunc(MachineInstr &MI) {
2104
2090
}
2105
2091
2106
2092
void CombinerHelper::applyCombineUnmergeWithDeadLanesToTrunc (MachineInstr &MI) {
2107
- Builder.setInstrAndDebugLoc (MI);
2108
2093
Register SrcReg = MI.getOperand (MI.getNumDefs ()).getReg ();
2109
2094
Register Dst0Reg = MI.getOperand (0 ).getReg ();
2110
2095
Builder.buildTrunc (Dst0Reg, SrcReg);
@@ -2152,8 +2137,6 @@ void CombinerHelper::applyCombineUnmergeZExtToZExt(MachineInstr &MI) {
2152
2137
LLT Dst0Ty = MRI.getType (Dst0Reg);
2153
2138
LLT ZExtSrcTy = MRI.getType (ZExtSrcReg);
2154
2139
2155
- Builder.setInstrAndDebugLoc (MI);
2156
-
2157
2140
if (Dst0Ty.getSizeInBits () > ZExtSrcTy.getSizeInBits ()) {
2158
2141
Builder.buildZExt (Dst0Reg, ZExtSrcReg);
2159
2142
} else {
@@ -2207,7 +2190,6 @@ void CombinerHelper::applyCombineShiftToUnmerge(MachineInstr &MI,
2207
2190
2208
2191
LLT HalfTy = LLT::scalar (HalfSize);
2209
2192
2210
- Builder.setInstr (MI);
2211
2193
auto Unmerge = Builder.buildUnmerge (HalfTy, SrcReg);
2212
2194
unsigned NarrowShiftAmt = ShiftVal - HalfSize;
2213
2195
@@ -2292,15 +2274,13 @@ bool CombinerHelper::matchCombineI2PToP2I(MachineInstr &MI, Register &Reg) {
2292
2274
void CombinerHelper::applyCombineI2PToP2I (MachineInstr &MI, Register &Reg) {
2293
2275
assert (MI.getOpcode () == TargetOpcode::G_INTTOPTR && " Expected a G_INTTOPTR" );
2294
2276
Register DstReg = MI.getOperand (0 ).getReg ();
2295
- Builder.setInstr (MI);
2296
2277
Builder.buildCopy (DstReg, Reg);
2297
2278
MI.eraseFromParent ();
2298
2279
}
2299
2280
2300
2281
void CombinerHelper::applyCombineP2IToI2P (MachineInstr &MI, Register &Reg) {
2301
2282
assert (MI.getOpcode () == TargetOpcode::G_PTRTOINT && " Expected a G_PTRTOINT" );
2302
2283
Register DstReg = MI.getOperand (0 ).getReg ();
2303
- Builder.setInstr (MI);
2304
2284
Builder.buildZExtOrTrunc (DstReg, Reg);
2305
2285
MI.eraseFromParent ();
2306
2286
}
@@ -2343,7 +2323,6 @@ void CombinerHelper::applyCombineAddP2IToPtrAdd(
2343
2323
2344
2324
LLT PtrTy = MRI.getType (LHS);
2345
2325
2346
- Builder.setInstrAndDebugLoc (MI);
2347
2326
auto PtrAdd = Builder.buildPtrAdd (PtrTy, LHS, RHS);
2348
2327
Builder.buildPtrToInt (Dst, PtrAdd);
2349
2328
MI.eraseFromParent ();
@@ -2375,7 +2354,6 @@ void CombinerHelper::applyCombineConstPtrAddToI2P(MachineInstr &MI,
2375
2354
auto &PtrAdd = cast<GPtrAdd>(MI);
2376
2355
Register Dst = PtrAdd.getReg (0 );
2377
2356
2378
- Builder.setInstrAndDebugLoc (MI);
2379
2357
Builder.buildConstant (Dst, NewCst);
2380
2358
PtrAdd.eraseFromParent ();
2381
2359
}
@@ -2455,7 +2433,6 @@ void CombinerHelper::applyCombineExtOfExt(
2455
2433
(MI.getOpcode () == TargetOpcode::G_SEXT &&
2456
2434
SrcExtOp == TargetOpcode::G_ZEXT)) {
2457
2435
Register DstReg = MI.getOperand (0 ).getReg ();
2458
- Builder.setInstrAndDebugLoc (MI);
2459
2436
Builder.buildInstr (SrcExtOp, {DstReg}, {Reg});
2460
2437
MI.eraseFromParent ();
2461
2438
}
@@ -2488,7 +2465,6 @@ void CombinerHelper::applyCombineTruncOfExt(
2488
2465
replaceRegWith (MRI, DstReg, SrcReg);
2489
2466
return ;
2490
2467
}
2491
- Builder.setInstrAndDebugLoc (MI);
2492
2468
if (SrcTy.getSizeInBits () < DstTy.getSizeInBits ())
2493
2469
Builder.buildInstr (SrcExtOp, {DstReg}, {SrcReg});
2494
2470
else
@@ -2576,8 +2552,6 @@ bool CombinerHelper::matchCombineTruncOfShift(
2576
2552
2577
2553
void CombinerHelper::applyCombineTruncOfShift (
2578
2554
MachineInstr &MI, std::pair<MachineInstr *, LLT> &MatchInfo) {
2579
- Builder.setInstrAndDebugLoc (MI);
2580
-
2581
2555
MachineInstr *ShiftMI = MatchInfo.first ;
2582
2556
LLT NewShiftTy = MatchInfo.second ;
2583
2557
@@ -2823,7 +2797,6 @@ void CombinerHelper::applyFunnelShiftConstantModulo(MachineInstr &MI) {
2823
2797
APInt NewConst = VRegAndVal->Value .urem (
2824
2798
APInt (ConstTy.getSizeInBits (), DstTy.getScalarSizeInBits ()));
2825
2799
2826
- Builder.setInstrAndDebugLoc (MI);
2827
2800
auto NewConstInstr = Builder.buildConstant (ConstTy, NewConst.getZExtValue ());
2828
2801
Builder.buildInstr (
2829
2802
MI.getOpcode (), {MI.getOperand (0 )},
@@ -2866,35 +2839,31 @@ bool CombinerHelper::matchOperandIsKnownToBeAPowerOfTwo(MachineInstr &MI,
2866
2839
2867
2840
void CombinerHelper::replaceInstWithFConstant (MachineInstr &MI, double C) {
2868
2841
assert (MI.getNumDefs () == 1 && " Expected only one def?" );
2869
- Builder.setInstr (MI);
2870
2842
Builder.buildFConstant (MI.getOperand (0 ), C);
2871
2843
MI.eraseFromParent ();
2872
2844
}
2873
2845
2874
2846
void CombinerHelper::replaceInstWithConstant (MachineInstr &MI, int64_t C) {
2875
2847
assert (MI.getNumDefs () == 1 && " Expected only one def?" );
2876
- Builder.setInstr (MI);
2877
2848
Builder.buildConstant (MI.getOperand (0 ), C);
2878
2849
MI.eraseFromParent ();
2879
2850
}
2880
2851
2881
2852
void CombinerHelper::replaceInstWithConstant (MachineInstr &MI, APInt C) {
2882
2853
assert (MI.getNumDefs () == 1 && " Expected only one def?" );
2883
- Builder.setInstr (MI);
2884
2854
Builder.buildConstant (MI.getOperand (0 ), C);
2885
2855
MI.eraseFromParent ();
2886
2856
}
2887
2857
2888
- void CombinerHelper::replaceInstWithFConstant (MachineInstr &MI, ConstantFP *CFP) {
2858
+ void CombinerHelper::replaceInstWithFConstant (MachineInstr &MI,
2859
+ ConstantFP *CFP) {
2889
2860
assert (MI.getNumDefs () == 1 && " Expected only one def?" );
2890
- Builder.setInstr (MI);
2891
2861
Builder.buildFConstant (MI.getOperand (0 ), CFP->getValueAPF ());
2892
2862
MI.eraseFromParent ();
2893
2863
}
2894
2864
2895
2865
void CombinerHelper::replaceInstWithUndef (MachineInstr &MI) {
2896
2866
assert (MI.getNumDefs () == 1 && " Expected only one def?" );
2897
- Builder.setInstr (MI);
2898
2867
Builder.buildUndef (MI.getOperand (0 ));
2899
2868
MI.eraseFromParent ();
2900
2869
}
@@ -2962,7 +2931,6 @@ bool CombinerHelper::matchCombineInsertVecElts(
2962
2931
2963
2932
void CombinerHelper::applyCombineInsertVecElts (
2964
2933
MachineInstr &MI, SmallVectorImpl<Register> &MatchInfo) {
2965
- Builder.setInstr (MI);
2966
2934
Register UndefReg;
2967
2935
auto GetUndef = [&]() {
2968
2936
if (UndefReg)
@@ -2981,7 +2949,6 @@ void CombinerHelper::applyCombineInsertVecElts(
2981
2949
2982
2950
void CombinerHelper::applySimplifyAddToSub (
2983
2951
MachineInstr &MI, std::tuple<Register, Register> &MatchInfo) {
2984
- Builder.setInstr (MI);
2985
2952
Register SubLHS, SubRHS;
2986
2953
std::tie (SubLHS, SubRHS) = MatchInfo;
2987
2954
Builder.buildSub (MI.getOperand (0 ).getReg (), SubLHS, SubRHS);
@@ -3084,7 +3051,6 @@ void CombinerHelper::applyBuildInstructionSteps(
3084
3051
MachineInstr &MI, InstructionStepsMatchInfo &MatchInfo) {
3085
3052
assert (MatchInfo.InstrsToBuild .size () &&
3086
3053
" Expected at least one instr to build?" );
3087
- Builder.setInstr (MI);
3088
3054
for (auto &InstrToBuild : MatchInfo.InstrsToBuild ) {
3089
3055
assert (InstrToBuild.Opcode && " Expected a valid opcode?" );
3090
3056
assert (InstrToBuild.OperandFns .size () && " Expected at least one operand?" );
@@ -3120,7 +3086,6 @@ void CombinerHelper::applyAshShlToSextInreg(
3120
3086
int64_t ShiftAmt;
3121
3087
std::tie (Src, ShiftAmt) = MatchInfo;
3122
3088
unsigned Size = MRI.getType (Src).getScalarSizeInBits ();
3123
- Builder.setInstrAndDebugLoc (MI);
3124
3089
Builder.buildSExtInReg (MI.getOperand (0 ).getReg (), Src, Size - ShiftAmt);
3125
3090
MI.eraseFromParent ();
3126
3091
}
@@ -3399,7 +3364,6 @@ bool CombinerHelper::matchXorOfAndWithSameReg(
3399
3364
void CombinerHelper::applyXorOfAndWithSameReg (
3400
3365
MachineInstr &MI, std::pair<Register, Register> &MatchInfo) {
3401
3366
// Fold (xor (and x, y), y) -> (and (not x), y)
3402
- Builder.setInstrAndDebugLoc (MI);
3403
3367
Register X, Y;
3404
3368
std::tie (X, Y) = MatchInfo;
3405
3369
auto Not = Builder.buildNot (MRI.getType (X), X);
@@ -3431,7 +3395,6 @@ bool CombinerHelper::matchPtrAddZero(MachineInstr &MI) {
3431
3395
3432
3396
void CombinerHelper::applyPtrAddZero (MachineInstr &MI) {
3433
3397
auto &PtrAdd = cast<GPtrAdd>(MI);
3434
- Builder.setInstrAndDebugLoc (PtrAdd);
3435
3398
Builder.buildIntToPtr (PtrAdd.getReg (0 ), PtrAdd.getOffsetReg ());
3436
3399
PtrAdd.eraseFromParent ();
3437
3400
}
@@ -3442,7 +3405,6 @@ void CombinerHelper::applySimplifyURemByPow2(MachineInstr &MI) {
3442
3405
Register Src0 = MI.getOperand (1 ).getReg ();
3443
3406
Register Pow2Src1 = MI.getOperand (2 ).getReg ();
3444
3407
LLT Ty = MRI.getType (DstReg);
3445
- Builder.setInstrAndDebugLoc (MI);
3446
3408
3447
3409
// Fold (urem x, pow2) -> (and x, pow2-1)
3448
3410
auto NegOne = Builder.buildConstant (Ty, -1 );
@@ -3507,8 +3469,6 @@ bool CombinerHelper::matchFoldBinOpIntoSelect(MachineInstr &MI,
3507
3469
// / to fold.
3508
3470
void CombinerHelper::applyFoldBinOpIntoSelect (MachineInstr &MI,
3509
3471
const unsigned &SelectOperand) {
3510
- Builder.setInstrAndDebugLoc (MI);
3511
-
3512
3472
Register Dst = MI.getOperand (0 ).getReg ();
3513
3473
Register LHS = MI.getOperand (1 ).getReg ();
3514
3474
Register RHS = MI.getOperand (2 ).getReg ();
@@ -4029,7 +3989,6 @@ void CombinerHelper::applyExtractVecEltBuildVec(MachineInstr &MI,
4029
3989
Register DstReg = MI.getOperand (0 ).getReg ();
4030
3990
LLT DstTy = MRI.getType (DstReg);
4031
3991
4032
- Builder.setInstrAndDebugLoc (MI);
4033
3992
if (ScalarTy != DstTy) {
4034
3993
assert (ScalarTy.getSizeInBits () > DstTy.getSizeInBits ());
4035
3994
Builder.buildTrunc (DstReg, Reg);
@@ -4095,14 +4054,12 @@ void CombinerHelper::applyExtractAllEltsFromBuildVector(
4095
4054
4096
4055
void CombinerHelper::applyBuildFn (
4097
4056
MachineInstr &MI, std::function<void (MachineIRBuilder &)> &MatchInfo) {
4098
- Builder.setInstrAndDebugLoc (MI);
4099
- MatchInfo (Builder);
4057
+ applyBuildFnNoErase (MI, MatchInfo);
4100
4058
MI.eraseFromParent ();
4101
4059
}
4102
4060
4103
4061
void CombinerHelper::applyBuildFnNoErase (
4104
4062
MachineInstr &MI, std::function<void (MachineIRBuilder &)> &MatchInfo) {
4105
- Builder.setInstrAndDebugLoc (MI);
4106
4063
MatchInfo (Builder);
4107
4064
}
4108
4065
@@ -4204,7 +4161,6 @@ void CombinerHelper::applyRotateOutOfRange(MachineInstr &MI) {
4204
4161
MI.getOpcode () == TargetOpcode::G_ROTR);
4205
4162
unsigned Bitsize =
4206
4163
MRI.getType (MI.getOperand (0 ).getReg ()).getScalarSizeInBits ();
4207
- Builder.setInstrAndDebugLoc (MI);
4208
4164
Register Amt = MI.getOperand (2 ).getReg ();
4209
4165
LLT AmtTy = MRI.getType (Amt);
4210
4166
auto Bits = Builder.buildConstant (AmtTy, Bitsize);
@@ -5027,7 +4983,6 @@ MachineInstr *CombinerHelper::buildUDivUsingMul(MachineInstr &MI) {
5027
4983
LLT ShiftAmtTy = getTargetLowering ().getPreferredShiftAmountTy (Ty);
5028
4984
LLT ScalarShiftAmtTy = ShiftAmtTy.getScalarType ();
5029
4985
auto &MIB = Builder;
5030
- MIB.setInstrAndDebugLoc (MI);
5031
4986
5032
4987
bool UseNPQ = false ;
5033
4988
SmallVector<Register, 16 > PreShifts, PostShifts, MagicFactors, NPQFactors;
@@ -5213,7 +5168,6 @@ MachineInstr *CombinerHelper::buildSDivUsingMul(MachineInstr &MI) {
5213
5168
LLT ShiftAmtTy = getTargetLowering ().getPreferredShiftAmountTy (Ty);
5214
5169
LLT ScalarShiftAmtTy = ShiftAmtTy.getScalarType ();
5215
5170
auto &MIB = Builder;
5216
- MIB.setInstrAndDebugLoc (MI);
5217
5171
5218
5172
bool UseSRA = false ;
5219
5173
SmallVector<Register, 16 > Shifts, Factors;
@@ -5295,8 +5249,6 @@ void CombinerHelper::applySDivByPow2(MachineInstr &MI) {
5295
5249
LLT CCVT =
5296
5250
Ty.isVector () ? LLT::vector (Ty.getElementCount (), 1 ) : LLT::scalar (1 );
5297
5251
5298
- Builder.setInstrAndDebugLoc (MI);
5299
-
5300
5252
// Effectively we want to lower G_SDIV %lhs, %rhs, where %rhs is a power of 2,
5301
5253
// to the following version:
5302
5254
//
@@ -5354,8 +5306,6 @@ void CombinerHelper::applyUDivByPow2(MachineInstr &MI) {
5354
5306
LLT Ty = MRI.getType (Dst);
5355
5307
LLT ShiftAmtTy = getTargetLowering ().getPreferredShiftAmountTy (Ty);
5356
5308
5357
- Builder.setInstrAndDebugLoc (MI);
5358
-
5359
5309
auto C1 = Builder.buildCTTZ (ShiftAmtTy, RHS);
5360
5310
Builder.buildLShr (MI.getOperand (0 ).getReg (), LHS, C1);
5361
5311
MI.eraseFromParent ();
@@ -5385,7 +5335,6 @@ void CombinerHelper::applyUMulHToLShr(MachineInstr &MI) {
5385
5335
LLT ShiftAmtTy = getTargetLowering ().getPreferredShiftAmountTy (Ty);
5386
5336
unsigned NumEltBits = Ty.getScalarSizeInBits ();
5387
5337
5388
- Builder.setInstrAndDebugLoc (MI);
5389
5338
auto LogBase2 = buildLogBase2 (RHS, Builder);
5390
5339
auto ShiftAmt =
5391
5340
Builder.buildSub (Ty, Builder.buildConstant (Ty, NumEltBits), LogBase2);
@@ -5465,7 +5414,6 @@ bool CombinerHelper::matchFsubToFneg(MachineInstr &MI, Register &MatchInfo) {
5465
5414
}
5466
5415
5467
5416
void CombinerHelper::applyFsubToFneg (MachineInstr &MI, Register &MatchInfo) {
5468
- Builder.setInstrAndDebugLoc (MI);
5469
5417
Register Dst = MI.getOperand (0 ).getReg ();
5470
5418
Builder.buildFNeg (
5471
5419
Dst, Builder.buildFCanonicalize (MRI.getType (Dst), MatchInfo).getReg (0 ));
0 commit comments