Skip to content

Commit f125518

Browse files
committed
[NFC][Alignment] Remove max functions between Align and MaybeAlign
`llvm::max(Align, MaybeAlign)` and `llvm::max(MaybeAlign, Align)` are not used often enough to be required. They also make the code more opaque. Differential Revision: https://reviews.llvm.org/D128121
1 parent 009fe07 commit f125518

File tree

10 files changed

+21
-50
lines changed

10 files changed

+21
-50
lines changed

llvm/include/llvm/Support/Alignment.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -326,14 +326,6 @@ inline Align operator/(Align Lhs, uint64_t Divisor) {
326326
return Align(Lhs.value() / Divisor);
327327
}
328328

329-
inline Align max(MaybeAlign Lhs, Align Rhs) {
330-
return Lhs && *Lhs > Rhs ? *Lhs : Rhs;
331-
}
332-
333-
inline Align max(Align Lhs, MaybeAlign Rhs) {
334-
return Rhs && *Rhs > Lhs ? *Rhs : Lhs;
335-
}
336-
337329
#ifndef NDEBUG
338330
// For usage in LLVM_DEBUG macros.
339331
inline std::string DebugStr(const Align &A) {

llvm/lib/LTO/LTO.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -819,9 +819,10 @@ LTO::addRegularLTO(BitcodeModule BM, ArrayRef<InputFile::Symbol> Syms,
819819
// For now they aren't reported correctly by ModuleSymbolTable.
820820
auto &CommonRes = RegularLTO.Commons[std::string(Sym.getIRName())];
821821
CommonRes.Size = std::max(CommonRes.Size, Sym.getCommonSize());
822-
MaybeAlign SymAlign(Sym.getCommonAlignment());
823-
if (SymAlign)
824-
CommonRes.Align = max(*SymAlign, CommonRes.Align);
822+
if (uint32_t SymAlignValue = Sym.getCommonAlignment()) {
823+
const Align SymAlign(SymAlignValue);
824+
CommonRes.Align = std::max(SymAlign, CommonRes.Align.valueOrOne());
825+
}
825826
CommonRes.Prevailing |= Res.Prevailing;
826827
}
827828
}

llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -939,10 +939,9 @@ void AMDGPUTargetLowering::analyzeFormalArgumentsCompute(
939939
const bool IsByRef = Arg.hasByRefAttr();
940940
Type *BaseArgTy = Arg.getType();
941941
Type *MemArgTy = IsByRef ? Arg.getParamByRefType() : BaseArgTy;
942-
MaybeAlign Alignment = IsByRef ? Arg.getParamAlign() : None;
943-
if (!Alignment)
944-
Alignment = DL.getABITypeAlign(MemArgTy);
945-
MaxAlign = max(Alignment, MaxAlign);
942+
Align Alignment = DL.getValueOrABITypeAlignment(
943+
IsByRef ? Arg.getParamAlign() : None, MemArgTy);
944+
MaxAlign = std::max(Alignment, MaxAlign);
946945
uint64_t AllocSize = DL.getTypeAllocSize(MemArgTy);
947946

948947
uint64_t ArgOffset = alignTo(ExplicitArgOffset, Alignment) + ExplicitOffset;

llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -535,13 +535,11 @@ uint64_t AMDGPUSubtarget::getExplicitKernArgSize(const Function &F,
535535
for (const Argument &Arg : F.args()) {
536536
const bool IsByRef = Arg.hasByRefAttr();
537537
Type *ArgTy = IsByRef ? Arg.getParamByRefType() : Arg.getType();
538-
MaybeAlign Alignment = IsByRef ? Arg.getParamAlign() : None;
539-
if (!Alignment)
540-
Alignment = DL.getABITypeAlign(ArgTy);
541-
538+
Align Alignment = DL.getValueOrABITypeAlignment(
539+
IsByRef ? Arg.getParamAlign() : None, ArgTy);
542540
uint64_t AllocSize = DL.getTypeAllocSize(ArgTy);
543541
ExplicitArgBytes = alignTo(ExplicitArgBytes, Alignment) + AllocSize;
544-
MaxAlign = max(MaxAlign, Alignment);
542+
MaxAlign = std::max(MaxAlign, Alignment);
545543
}
546544

547545
return ExplicitArgBytes;

llvm/lib/Target/Hexagon/HexagonVExtract.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,7 @@ bool HexagonVExtract::runOnMachineFunction(MachineFunction &MF) {
106106
MachineFrameInfo &MFI = MF.getFrameInfo();
107107
Register AR =
108108
MF.getInfo<HexagonMachineFunctionInfo>()->getStackAlignBaseVReg();
109-
std::map<unsigned, SmallVector<MachineInstr*,4>> VExtractMap;
110-
MaybeAlign MaxAlign;
109+
std::map<unsigned, SmallVector<MachineInstr *, 4>> VExtractMap;
111110
bool Changed = false;
112111

113112
for (MachineBasicBlock &MBB : MF) {
@@ -131,14 +130,15 @@ bool HexagonVExtract::runOnMachineFunction(MachineFunction &MF) {
131130
return AddrR;
132131
};
133132

133+
MaybeAlign MaxAlign;
134134
for (auto &P : VExtractMap) {
135135
unsigned VecR = P.first;
136136
if (P.second.size() <= VExtractThreshold)
137137
continue;
138138

139139
const auto &VecRC = *MRI.getRegClass(VecR);
140140
Align Alignment = HRI.getSpillAlign(VecRC);
141-
MaxAlign = max(MaxAlign, Alignment);
141+
MaxAlign = std::max(MaxAlign.valueOrOne(), Alignment);
142142
// Make sure this is not a spill slot: spill slots cannot be aligned
143143
// if there are variable-sized objects on the stack. They must be
144144
// accessible via FP (which is not aligned), because SP is unknown,

llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1427,7 +1427,7 @@ void NVPTXAsmPrinter::emitFunctionParamList(const Function *F, raw_ostream &O) {
14271427
paramIndex](Type *Ty) -> Align {
14281428
Align TypeAlign = TLI->getFunctionParamOptimizedAlign(F, Ty, DL);
14291429
MaybeAlign ParamAlign = PAL.getParamAlignment(paramIndex);
1430-
return max(TypeAlign, ParamAlign);
1430+
return std::max(TypeAlign, ParamAlign.valueOrOne());
14311431
};
14321432

14331433
if (!PAL.hasParamAttr(paramIndex, Attribute::ByVal)) {

llvm/lib/Transforms/IPO/AttributorAttributes.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6242,13 +6242,14 @@ struct AAHeapToStackFunction final : public AAHeapToStack {
62426242

62436243
Align Alignment(1);
62446244
if (MaybeAlign RetAlign = AI.CB->getRetAlign())
6245-
Alignment = max(Alignment, RetAlign);
6245+
Alignment = std::max(Alignment, *RetAlign);
62466246
if (Value *Align = getAllocAlignment(AI.CB, TLI)) {
62476247
Optional<APInt> AlignmentAPI = getAPInt(A, *this, *Align);
62486248
assert(AlignmentAPI.hasValue() &&
6249+
AlignmentAPI.getValue().getZExtValue() > 0 &&
62496250
"Expected an alignment during manifest!");
6250-
Alignment =
6251-
max(Alignment, MaybeAlign(AlignmentAPI.getValue().getZExtValue()));
6251+
Alignment = std::max(
6252+
Alignment, assumeAligned(AlignmentAPI.getValue().getZExtValue()));
62526253
}
62536254

62546255
// TODO: Hoist the alloca towards the function entry.

llvm/lib/Transforms/Utils/InlineFunction.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1421,7 +1421,8 @@ static Value *HandleByValArgument(Type *ByValType, Value *Arg,
14211421
// If the byval had an alignment specified, we *must* use at least that
14221422
// alignment, as it is required by the byval argument (and uses of the
14231423
// pointer inside the callee).
1424-
Alignment = max(Alignment, MaybeAlign(ByValAlignment));
1424+
if (ByValAlignment > 0)
1425+
Alignment = std::max(Alignment, Align(ByValAlignment));
14251426

14261427
Value *NewAlloca =
14271428
new AllocaInst(ByValType, DL.getAllocaAddrSpace(), nullptr, Alignment,

llvm/lib/Transforms/Utils/MemoryTaggingSupport.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ uint64_t getAllocaSizeInBytes(const AllocaInst &AI) {
148148
}
149149

150150
void alignAndPadAlloca(memtag::AllocaInfo &Info, llvm::Align Alignment) {
151-
const Align NewAlignment = max(MaybeAlign(Info.AI->getAlign()), Alignment);
151+
const Align NewAlignment = std::max(Info.AI->getAlign(), Alignment);
152152
Info.AI->setAlignment(NewAlignment);
153153
auto &Ctx = Info.AI->getFunction()->getContext();
154154

llvm/unittests/Support/AlignmentTest.cpp

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -270,27 +270,6 @@ TEST(AlignmentTest, AlignComparisons) {
270270
}
271271
}
272272

273-
TEST(AlignmentTest, Max) {
274-
// We introduce std::max here to test ADL.
275-
using std::max;
276-
277-
// Uses llvm::max.
278-
EXPECT_EQ(max(MaybeAlign(), Align(2)), Align(2));
279-
EXPECT_EQ(max(Align(2), MaybeAlign()), Align(2));
280-
281-
EXPECT_EQ(max(MaybeAlign(1), Align(2)), Align(2));
282-
EXPECT_EQ(max(Align(2), MaybeAlign(1)), Align(2));
283-
284-
EXPECT_EQ(max(MaybeAlign(2), Align(2)), Align(2));
285-
EXPECT_EQ(max(Align(2), MaybeAlign(2)), Align(2));
286-
287-
EXPECT_EQ(max(MaybeAlign(4), Align(2)), Align(4));
288-
EXPECT_EQ(max(Align(2), MaybeAlign(4)), Align(4));
289-
290-
// Uses std::max.
291-
EXPECT_EQ(max(Align(2), Align(4)), Align(4));
292-
}
293-
294273
TEST(AlignmentTest, AssumeAligned) {
295274
EXPECT_EQ(assumeAligned(0), Align(1));
296275
EXPECT_EQ(assumeAligned(0), Align());

0 commit comments

Comments
 (0)