Skip to content

Commit 8c72b02

Browse files
committedMay 12, 2020
[CodeGen] Use Align in MachineConstantPool.
1 parent 93bd696 commit 8c72b02

27 files changed

+95
-125
lines changed
 

‎llvm/include/llvm/CodeGen/MachineConstantPool.h

+18-22
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
#include "llvm/ADT/DenseSet.h"
1919
#include "llvm/MC/SectionKind.h"
20+
#include "llvm/Support/Alignment.h"
2021
#include <climits>
2122
#include <vector>
2223

@@ -45,7 +46,7 @@ class MachineConstantPoolValue {
4546
Type *getType() const { return Ty; }
4647

4748
virtual int getExistingMachineCPValue(MachineConstantPool *CP,
48-
unsigned Alignment) = 0;
49+
Align Alignment) = 0;
4950

5051
virtual void addSelectionDAGCSEId(FoldingSetNodeID &ID) = 0;
5152

@@ -71,31 +72,27 @@ class MachineConstantPoolEntry {
7172
MachineConstantPoolValue *MachineCPVal;
7273
} Val;
7374

74-
/// The required alignment for this entry. The top bit is set when Val is
75-
/// a target specific MachineConstantPoolValue.
76-
unsigned Alignment;
75+
/// The required alignment for this entry.
76+
Align Alignment;
7777

78-
MachineConstantPoolEntry(const Constant *V, unsigned A)
79-
: Alignment(A) {
78+
bool IsMachineConstantPoolEntry;
79+
80+
MachineConstantPoolEntry(const Constant *V, Align A)
81+
: Alignment(A), IsMachineConstantPoolEntry(false) {
8082
Val.ConstVal = V;
8183
}
8284

83-
MachineConstantPoolEntry(MachineConstantPoolValue *V, unsigned A)
84-
: Alignment(A) {
85+
MachineConstantPoolEntry(MachineConstantPoolValue *V, Align A)
86+
: Alignment(A), IsMachineConstantPoolEntry(true) {
8587
Val.MachineCPVal = V;
86-
Alignment |= 1U << (sizeof(unsigned) * CHAR_BIT - 1);
8788
}
8889

8990
/// isMachineConstantPoolEntry - Return true if the MachineConstantPoolEntry
9091
/// is indeed a target specific constantpool entry, not a wrapper over a
9192
/// Constant.
92-
bool isMachineConstantPoolEntry() const {
93-
return (int)Alignment < 0;
94-
}
93+
bool isMachineConstantPoolEntry() const { return IsMachineConstantPoolEntry; }
9594

96-
int getAlignment() const {
97-
return Alignment & ~(1 << (sizeof(unsigned) * CHAR_BIT - 1));
98-
}
95+
Align getAlign() const { return Alignment; }
9996

10097
Type *getType() const;
10198

@@ -118,7 +115,7 @@ class MachineConstantPoolEntry {
118115
/// address of the function constant pool values.
119116
/// The machine constant pool.
120117
class MachineConstantPool {
121-
unsigned PoolAlignment; ///< The alignment for the pool.
118+
Align PoolAlignment; ///< The alignment for the pool.
122119
std::vector<MachineConstantPoolEntry> Constants; ///< The pool of constants.
123120
/// MachineConstantPoolValues that use an existing MachineConstantPoolEntry.
124121
DenseSet<MachineConstantPoolValue*> MachineCPVsSharingEntries;
@@ -132,16 +129,15 @@ class MachineConstantPool {
132129
: PoolAlignment(1), DL(DL) {}
133130
~MachineConstantPool();
134131

135-
/// getConstantPoolAlignment - Return the alignment required by
136-
/// the whole constant pool, of which the first element must be aligned.
137-
unsigned getConstantPoolAlignment() const { return PoolAlignment; }
132+
/// Return the alignment required by the whole constant pool, of which the
133+
/// first element must be aligned.
134+
Align getConstantPoolAlign() const { return PoolAlignment; }
138135

139136
/// getConstantPoolIndex - Create a new entry in the constant pool or return
140137
/// an existing one. User must specify the minimum required alignment for
141138
/// the object.
142-
unsigned getConstantPoolIndex(const Constant *C, unsigned Alignment);
143-
unsigned getConstantPoolIndex(MachineConstantPoolValue *V,
144-
unsigned Alignment);
139+
unsigned getConstantPoolIndex(const Constant *C, Align Alignment);
140+
unsigned getConstantPoolIndex(MachineConstantPoolValue *V, Align Alignment);
145141

146142
/// isEmpty - Return true if this constant pool contains no constants.
147143
bool isEmpty() const { return Constants.empty(); }

‎llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp

+3-4
Original file line numberDiff line numberDiff line change
@@ -1831,7 +1831,7 @@ void AsmPrinter::emitConstantPool() {
18311831
SmallVector<SectionCPs, 4> CPSections;
18321832
for (unsigned i = 0, e = CP.size(); i != e; ++i) {
18331833
const MachineConstantPoolEntry &CPE = CP[i];
1834-
unsigned Align = CPE.getAlignment();
1834+
unsigned Align = CPE.getAlign().value();
18351835

18361836
SectionKind Kind = CPE.getSectionKind(&getDataLayout());
18371837

@@ -1882,8 +1882,7 @@ void AsmPrinter::emitConstantPool() {
18821882
MachineConstantPoolEntry CPE = CP[CPI];
18831883

18841884
// Emit inter-object padding for alignment.
1885-
unsigned AlignMask = CPE.getAlignment() - 1;
1886-
unsigned NewOffset = (Offset + AlignMask) & ~AlignMask;
1885+
unsigned NewOffset = alignTo(Offset, CPE.getAlign());
18871886
OutStreamer->emitZeros(NewOffset - Offset);
18881887

18891888
Type *Ty = CPE.getType();
@@ -2904,7 +2903,7 @@ MCSymbol *AsmPrinter::GetCPISymbol(unsigned CPID) const {
29042903
const DataLayout &DL = MF->getDataLayout();
29052904
SectionKind Kind = CPE.getSectionKind(&DL);
29062905
const Constant *C = CPE.Val.ConstVal;
2907-
unsigned Align = CPE.Alignment;
2906+
unsigned Align = CPE.Alignment.value();
29082907
if (const MCSectionCOFF *S = dyn_cast<MCSectionCOFF>(
29092908
getObjFileLowering().getSectionForConstant(DL, Kind, C, Align))) {
29102909
if (MCSymbol *Sym = S->getCOMDATSymbol()) {

‎llvm/lib/CodeGen/MIRParser/MIRParser.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -841,8 +841,7 @@ bool MIRParserImpl::initializeConstantPool(PerFunctionMIParsingState &PFS,
841841
const Align PrefTypeAlign =
842842
M.getDataLayout().getPrefTypeAlign(Value->getType());
843843
const Align Alignment = YamlConstant.Alignment.getValueOr(PrefTypeAlign);
844-
unsigned Index =
845-
ConstantPool.getConstantPoolIndex(Value, Alignment.value());
844+
unsigned Index = ConstantPool.getConstantPoolIndex(Value, Alignment);
846845
if (!ConstantPoolSlots.insert(std::make_pair(YamlConstant.ID.Value, Index))
847846
.second)
848847
return error(YamlConstant.ID.SourceRange.Start,

‎llvm/lib/CodeGen/MIRPrinter.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -517,7 +517,7 @@ void MIRPrinter::convert(yaml::MachineFunction &MF,
517517
yaml::MachineConstantPoolValue YamlConstant;
518518
YamlConstant.ID = ID++;
519519
YamlConstant.Value = StrOS.str();
520-
YamlConstant.Alignment = MaybeAlign(Constant.getAlignment());
520+
YamlConstant.Alignment = Constant.getAlign();
521521
YamlConstant.IsTargetSpecific = Constant.isMachineConstantPoolEntry();
522522

523523
MF.Constants.push_back(YamlConstant);

‎llvm/lib/CodeGen/MachineFunction.cpp

+4-6
Original file line numberDiff line numberDiff line change
@@ -1176,8 +1176,7 @@ static bool CanShareConstantPoolEntry(const Constant *A, const Constant *B,
11761176
/// Create a new entry in the constant pool or return an existing one.
11771177
/// User must specify the log2 of the minimum required alignment for the object.
11781178
unsigned MachineConstantPool::getConstantPoolIndex(const Constant *C,
1179-
unsigned Alignment) {
1180-
assert(Alignment && "Alignment must be specified!");
1179+
Align Alignment) {
11811180
if (Alignment > PoolAlignment) PoolAlignment = Alignment;
11821181

11831182
// Check to see if we already have this constant.
@@ -1186,7 +1185,7 @@ unsigned MachineConstantPool::getConstantPoolIndex(const Constant *C,
11861185
for (unsigned i = 0, e = Constants.size(); i != e; ++i)
11871186
if (!Constants[i].isMachineConstantPoolEntry() &&
11881187
CanShareConstantPoolEntry(Constants[i].Val.ConstVal, C, DL)) {
1189-
if ((unsigned)Constants[i].getAlignment() < Alignment)
1188+
if (Constants[i].getAlign() < Alignment)
11901189
Constants[i].Alignment = Alignment;
11911190
return i;
11921191
}
@@ -1196,8 +1195,7 @@ unsigned MachineConstantPool::getConstantPoolIndex(const Constant *C,
11961195
}
11971196

11981197
unsigned MachineConstantPool::getConstantPoolIndex(MachineConstantPoolValue *V,
1199-
unsigned Alignment) {
1200-
assert(Alignment && "Alignment must be specified!");
1198+
Align Alignment) {
12011199
if (Alignment > PoolAlignment) PoolAlignment = Alignment;
12021200

12031201
// Check to see if we already have this constant.
@@ -1223,7 +1221,7 @@ void MachineConstantPool::print(raw_ostream &OS) const {
12231221
Constants[i].Val.MachineCPVal->print(OS);
12241222
else
12251223
Constants[i].Val.ConstVal->printAsOperand(OS, /*PrintType=*/false);
1226-
OS << ", align=" << Constants[i].getAlignment();
1224+
OS << ", align=" << Constants[i].getAlign().value();
12271225
OS << "\n";
12281226
}
12291227
}

‎llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -418,9 +418,9 @@ void InstrEmitter::AddOperand(MachineInstrBuilder &MIB,
418418
unsigned Idx;
419419
MachineConstantPool *MCP = MF->getConstantPool();
420420
if (CP->isMachineConstantPoolEntry())
421-
Idx = MCP->getConstantPoolIndex(CP->getMachineCPVal(), Alignment.value());
421+
Idx = MCP->getConstantPoolIndex(CP->getMachineCPVal(), Alignment);
422422
else
423-
Idx = MCP->getConstantPoolIndex(CP->getConstVal(), Alignment.value());
423+
Idx = MCP->getConstantPoolIndex(CP->getConstVal(), Alignment);
424424
MIB.addConstantPoolIndex(Idx, Offset, CP->getTargetFlags());
425425
} else if (ExternalSymbolSDNode *ES = dyn_cast<ExternalSymbolSDNode>(Op)) {
426426
MIB.addExternalSymbol(ES->getSymbol(), ES->getTargetFlags());

‎llvm/lib/Target/AArch64/AArch64FastISel.cpp

+2-4
Original file line numberDiff line numberDiff line change
@@ -434,11 +434,9 @@ unsigned AArch64FastISel::materializeFP(const ConstantFP *CFP, MVT VT) {
434434

435435
// Materialize via constant pool. MachineConstantPool wants an explicit
436436
// alignment.
437-
unsigned Align = DL.getPrefTypeAlignment(CFP->getType());
438-
if (Align == 0)
439-
Align = DL.getTypeAllocSize(CFP->getType());
437+
Align Alignment = DL.getPrefTypeAlign(CFP->getType());
440438

441-
unsigned CPI = MCP.getConstantPoolIndex(cast<Constant>(CFP), Align);
439+
unsigned CPI = MCP.getConstantPoolIndex(cast<Constant>(CFP), Alignment);
442440
unsigned ADRPReg = createResultReg(&AArch64::GPR64commonRegClass);
443441
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(AArch64::ADRP),
444442
ADRPReg).addConstantPoolIndex(CPI, 0, AArch64II::MO_PAGE);

‎llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp

+2-4
Original file line numberDiff line numberDiff line change
@@ -3522,12 +3522,10 @@ unsigned
35223522
AArch64InstructionSelector::emitConstantPoolEntry(Constant *CPVal,
35233523
MachineFunction &MF) const {
35243524
Type *CPTy = CPVal->getType();
3525-
unsigned Align = MF.getDataLayout().getPrefTypeAlignment(CPTy);
3526-
if (Align == 0)
3527-
Align = MF.getDataLayout().getTypeAllocSize(CPTy);
3525+
Align Alignment = MF.getDataLayout().getPrefTypeAlign(CPTy);
35283526

35293527
MachineConstantPool *MCP = MF.getConstantPool();
3530-
return MCP->getConstantPoolIndex(CPVal, Align);
3528+
return MCP->getConstantPoolIndex(CPVal, Alignment);
35313529
}
35323530

35333531
MachineInstr *AArch64InstructionSelector::emitLoadFromConstantPool(

‎llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1737,7 +1737,7 @@ static unsigned duplicateCPV(MachineFunction &MF, unsigned &CPI) {
17371737
cast<ARMConstantPoolMBB>(ACPV)->getMBB(), PCLabelId, 4);
17381738
else
17391739
llvm_unreachable("Unexpected ARM constantpool value type!!");
1740-
CPI = MCP->getConstantPoolIndex(NewCPV, MCPE.getAlignment());
1740+
CPI = MCP->getConstantPoolIndex(NewCPV, MCPE.getAlign());
17411741
return PCLabelId;
17421742
}
17431743

‎llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ void ARMBaseRegisterInfo::emitLoadConstPool(
477477
MachineConstantPool *ConstantPool = MF.getConstantPool();
478478
const Constant *C =
479479
ConstantInt::get(Type::getInt32Ty(MF.getFunction().getContext()), Val);
480-
unsigned Idx = ConstantPool->getConstantPoolIndex(C, 4);
480+
unsigned Idx = ConstantPool->getConstantPoolIndex(C, Align(4));
481481

482482
BuildMI(MBB, MBBI, dl, TII.get(ARM::LDRcp))
483483
.addReg(DestReg, getDefRegState(true), SubIdx)

‎llvm/lib/Target/ARM/ARMConstantIslandPass.cpp

+7-8
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ bool ARMConstantIslands::runOnMachineFunction(MachineFunction &mf) {
345345

346346
LLVM_DEBUG(dbgs() << "***** ARMConstantIslands: "
347347
<< MCP->getConstants().size() << " CP entries, aligned to "
348-
<< MCP->getConstantPoolAlignment() << " bytes *****\n");
348+
<< MCP->getConstantPoolAlign().value() << " bytes *****\n");
349349

350350
STI = &static_cast<const ARMSubtarget &>(MF->getSubtarget());
351351
TII = STI->getInstrInfo();
@@ -483,7 +483,7 @@ ARMConstantIslands::doInitialConstPlacement(std::vector<MachineInstr*> &CPEMIs)
483483
MF->push_back(BB);
484484

485485
// MachineConstantPool measures alignment in bytes.
486-
const Align MaxAlign(MCP->getConstantPoolAlignment());
486+
const Align MaxAlign = MCP->getConstantPoolAlign();
487487
const unsigned MaxLogAlign = Log2(MaxAlign);
488488

489489
// Mark the basic block as required by the const-pool.
@@ -507,14 +507,13 @@ ARMConstantIslands::doInitialConstPlacement(std::vector<MachineInstr*> &CPEMIs)
507507
const DataLayout &TD = MF->getDataLayout();
508508
for (unsigned i = 0, e = CPs.size(); i != e; ++i) {
509509
unsigned Size = TD.getTypeAllocSize(CPs[i].getType());
510-
unsigned Align = CPs[i].getAlignment();
511-
assert(isPowerOf2_32(Align) && "Invalid alignment");
510+
Align Alignment = CPs[i].getAlign();
512511
// Verify that all constant pool entries are a multiple of their alignment.
513512
// If not, we would have to pad them out so that instructions stay aligned.
514-
assert((Size % Align) == 0 && "CP Entry not multiple of 4 bytes!");
513+
assert(isAligned(Alignment, Size) && "CP Entry not multiple of 4 bytes!");
515514

516515
// Insert CONSTPOOL_ENTRY before entries with a smaller alignment.
517-
unsigned LogAlign = Log2_32(Align);
516+
unsigned LogAlign = Log2(Alignment);
518517
MachineBasicBlock::iterator InsAt = InsPoint[LogAlign];
519518
MachineInstr *CPEMI =
520519
BuildMI(*BB, InsAt, DebugLoc(), TII->get(ARM::CONSTPOOL_ENTRY))
@@ -531,7 +530,7 @@ ARMConstantIslands::doInitialConstPlacement(std::vector<MachineInstr*> &CPEMIs)
531530
CPEntries.emplace_back(1, CPEntry(CPEMI, i));
532531
++NumCPEs;
533532
LLVM_DEBUG(dbgs() << "Moved CPI#" << i << " to end of function, size = "
534-
<< Size << ", align = " << Align << '\n');
533+
<< Size << ", align = " << Alignment.value() << '\n');
535534
}
536535
LLVM_DEBUG(BB->dump());
537536
}
@@ -657,7 +656,7 @@ Align ARMConstantIslands::getCPEAlign(const MachineInstr *CPEMI) {
657656

658657
unsigned CPI = getCombinedIndex(CPEMI);
659658
assert(CPI < MCP->getConstants().size() && "Invalid constant pool index.");
660-
return Align(MCP->getConstants()[CPI].getAlignment());
659+
return MCP->getConstants()[CPI].getAlign();
661660
}
662661

663662
/// scanFunctionJumpTables - Do a scan of the function, building up

‎llvm/lib/Target/ARM/ARMConstantPoolValue.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ StringRef ARMConstantPoolValue::getModifierText() const {
7373
}
7474

7575
int ARMConstantPoolValue::getExistingMachineCPValue(MachineConstantPool *CP,
76-
unsigned Alignment) {
76+
Align Alignment) {
7777
llvm_unreachable("Shouldn't be calling this directly!");
7878
}
7979

@@ -189,7 +189,7 @@ const BlockAddress *ARMConstantPoolConstant::getBlockAddress() const {
189189
}
190190

191191
int ARMConstantPoolConstant::getExistingMachineCPValue(MachineConstantPool *CP,
192-
unsigned Alignment) {
192+
Align Alignment) {
193193
int index =
194194
getExistingMachineCPValueImpl<ARMConstantPoolConstant>(CP, Alignment);
195195
if (index != -1) {
@@ -237,7 +237,7 @@ ARMConstantPoolSymbol *ARMConstantPoolSymbol::Create(LLVMContext &C,
237237
}
238238

239239
int ARMConstantPoolSymbol::getExistingMachineCPValue(MachineConstantPool *CP,
240-
unsigned Alignment) {
240+
Align Alignment) {
241241
return getExistingMachineCPValueImpl<ARMConstantPoolSymbol>(CP, Alignment);
242242
}
243243

@@ -277,7 +277,7 @@ ARMConstantPoolMBB *ARMConstantPoolMBB::Create(LLVMContext &C,
277277
}
278278

279279
int ARMConstantPoolMBB::getExistingMachineCPValue(MachineConstantPool *CP,
280-
unsigned Alignment) {
280+
Align Alignment) {
281281
return getExistingMachineCPValueImpl<ARMConstantPoolMBB>(CP, Alignment);
282282
}
283283

‎llvm/lib/Target/ARM/ARMConstantPoolValue.h

+6-8
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,11 @@ class ARMConstantPoolValue : public MachineConstantPoolValue {
7676
bool AddCurrentAddress);
7777

7878
template <typename Derived>
79-
int getExistingMachineCPValueImpl(MachineConstantPool *CP,
80-
unsigned Alignment) {
81-
unsigned AlignMask = Alignment - 1;
79+
int getExistingMachineCPValueImpl(MachineConstantPool *CP, Align Alignment) {
8280
const std::vector<MachineConstantPoolEntry> &Constants = CP->getConstants();
8381
for (unsigned i = 0, e = Constants.size(); i != e; ++i) {
8482
if (Constants[i].isMachineConstantPoolEntry() &&
85-
(Constants[i].getAlignment() & AlignMask) == 0) {
83+
Constants[i].getAlign() >= Alignment) {
8684
auto *CPV =
8785
static_cast<ARMConstantPoolValue*>(Constants[i].Val.MachineCPVal);
8886
if (Derived *APC = dyn_cast<Derived>(CPV))
@@ -114,7 +112,7 @@ class ARMConstantPoolValue : public MachineConstantPoolValue {
114112
bool isPromotedGlobal() const{ return Kind == ARMCP::CPPromotedGlobal; }
115113

116114
int getExistingMachineCPValue(MachineConstantPool *CP,
117-
unsigned Alignment) override;
115+
Align Alignment) override;
118116

119117
void addSelectionDAGCSEId(FoldingSetNodeID &ID) override;
120118

@@ -187,7 +185,7 @@ class ARMConstantPoolConstant : public ARMConstantPoolValue {
187185
}
188186

189187
int getExistingMachineCPValue(MachineConstantPool *CP,
190-
unsigned Alignment) override;
188+
Align Alignment) override;
191189

192190
/// hasSameValue - Return true if this ARM constpool value can share the same
193191
/// constantpool entry as another ARM constpool value.
@@ -223,7 +221,7 @@ class ARMConstantPoolSymbol : public ARMConstantPoolValue {
223221
StringRef getSymbol() const { return S; }
224222

225223
int getExistingMachineCPValue(MachineConstantPool *CP,
226-
unsigned Alignment) override;
224+
Align Alignment) override;
227225

228226
void addSelectionDAGCSEId(FoldingSetNodeID &ID) override;
229227

@@ -259,7 +257,7 @@ class ARMConstantPoolMBB : public ARMConstantPoolValue {
259257
const MachineBasicBlock *getMBB() const { return MBB; }
260258

261259
int getExistingMachineCPValue(MachineConstantPool *CP,
262-
unsigned Alignment) override;
260+
Align Alignment) override;
263261

264262
void addSelectionDAGCSEId(FoldingSetNodeID &ID) override;
265263

‎llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp

+5-4
Original file line numberDiff line numberDiff line change
@@ -1426,9 +1426,10 @@ bool ARMExpandPseudo::ExpandMI(MachineBasicBlock &MBB,
14261426
ARMConstantPoolSymbol::Create(MF->getFunction().getContext(),
14271427
"__aeabi_read_tp", PCLabelID, 0);
14281428
Register Reg = MI.getOperand(0).getReg();
1429-
MIB = BuildMI(MBB, MBBI, MI.getDebugLoc(),
1430-
TII->get(Thumb ? ARM::tLDRpci : ARM::LDRi12), Reg)
1431-
.addConstantPoolIndex(MCP->getConstantPoolIndex(CPV, 4));
1429+
MIB =
1430+
BuildMI(MBB, MBBI, MI.getDebugLoc(),
1431+
TII->get(Thumb ? ARM::tLDRpci : ARM::LDRi12), Reg)
1432+
.addConstantPoolIndex(MCP->getConstantPoolIndex(CPV, Align(4)));
14321433
if (!Thumb)
14331434
MIB.addImm(0);
14341435
MIB.add(predOps(ARMCC::AL));
@@ -1514,7 +1515,7 @@ bool ARMExpandPseudo::ExpandMI(MachineBasicBlock &MBB,
15141515

15151516
MachineInstrBuilder MIB =
15161517
BuildMI(MBB, MBBI, MI.getDebugLoc(), TII->get(LDRLITOpc), DstReg)
1517-
.addConstantPoolIndex(MCP->getConstantPoolIndex(CPV, 4));
1518+
.addConstantPoolIndex(MCP->getConstantPoolIndex(CPV, Align(4)));
15181519
if (IsARM)
15191520
MIB.addImm(0);
15201521
MIB.add(predOps(ARMCC::AL));

0 commit comments

Comments
 (0)