[llvm] f3f15ca - [Alignment][NFC] Remove deprecated GlobalObject::getAlignment
Guillaume Chatelet via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 12 06:50:54 PST 2022
Author: Guillaume Chatelet
Date: 2022-12-12T14:50:39Z
New Revision: f3f15ca27fbb433ad5a65b1a1e0a071d2e9af505
URL: https://github.com/llvm/llvm-project/commit/f3f15ca27fbb433ad5a65b1a1e0a071d2e9af505
DIFF: https://github.com/llvm/llvm-project/commit/f3f15ca27fbb433ad5a65b1a1e0a071d2e9af505.diff
LOG: [Alignment][NFC] Remove deprecated GlobalObject::getAlignment
Differential Revision: https://reviews.llvm.org/D139836
Added:
Modified:
llvm/include/llvm/IR/GlobalObject.h
llvm/lib/IR/Globals.cpp
llvm/lib/Linker/LinkModules.cpp
llvm/lib/Object/IRSymtab.cpp
llvm/lib/Target/PowerPC/PPCMIPeephole.cpp
llvm/lib/Transforms/IPO/MergeFunctions.cpp
llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
llvm/unittests/IR/ValueTest.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/IR/GlobalObject.h b/llvm/include/llvm/IR/GlobalObject.h
index 96a2703166867..2a32ca217b961 100644
--- a/llvm/include/llvm/IR/GlobalObject.h
+++ b/llvm/include/llvm/IR/GlobalObject.h
@@ -66,12 +66,6 @@ class GlobalObject : public GlobalValue {
public:
GlobalObject(const GlobalObject &) = delete;
- /// FIXME: Remove this function once transition to Align is over.
- uint64_t getAlignment() const {
- MaybeAlign Align = getAlign();
- return Align ? Align->value() : 0;
- }
-
/// Returns the alignment of the given variable or function.
///
/// Note that for functions this is the alignment of the code, not the
diff --git a/llvm/lib/IR/Globals.cpp b/llvm/lib/IR/Globals.cpp
index ac9b830f9952c..c208ab0f3d6ba 100644
--- a/llvm/lib/IR/Globals.cpp
+++ b/llvm/lib/IR/Globals.cpp
@@ -124,8 +124,7 @@ void GlobalObject::setAlignment(MaybeAlign Align) {
unsigned AlignmentData = encode(Align);
unsigned OldData = getGlobalValueSubClassData();
setGlobalValueSubClassData((OldData & ~AlignmentMask) | AlignmentData);
- assert(MaybeAlign(getAlignment()) == Align &&
- "Alignment representation error!");
+ assert(getAlign() == Align && "Alignment representation error!");
}
void GlobalObject::copyAttributesFrom(const GlobalObject *Src) {
diff --git a/llvm/lib/Linker/LinkModules.cpp b/llvm/lib/Linker/LinkModules.cpp
index 17c3f09a23b72..2f5fac4951f29 100644
--- a/llvm/lib/Linker/LinkModules.cpp
+++ b/llvm/lib/Linker/LinkModules.cpp
@@ -352,8 +352,12 @@ bool ModuleLinker::linkIfNeeded(GlobalValue &GV,
SGVar->setConstant(false);
}
if (DGVar->hasCommonLinkage() && SGVar->hasCommonLinkage()) {
- MaybeAlign Align(
- std::max(DGVar->getAlignment(), SGVar->getAlignment()));
+ MaybeAlign DAlign = DGVar->getAlign();
+ MaybeAlign SAlign = SGVar->getAlign();
+ MaybeAlign Align = std::nullopt;
+ if (DAlign || SAlign)
+ Align = std::max(DAlign.valueOrOne(), SAlign.valueOrOne());
+
SGVar->setAlignment(Align);
DGVar->setAlignment(Align);
}
diff --git a/llvm/lib/Object/IRSymtab.cpp b/llvm/lib/Object/IRSymtab.cpp
index 5a7ecdb1fc25a..54ee000b302f8 100644
--- a/llvm/lib/Object/IRSymtab.cpp
+++ b/llvm/lib/Object/IRSymtab.cpp
@@ -289,7 +289,7 @@ Error Builder::addSymbol(const ModuleSymbolTable &Msymtab,
inconvertibleErrorCode());
Uncommon().CommonSize =
GV->getParent()->getDataLayout().getTypeAllocSize(GV->getValueType());
- Uncommon().CommonAlign = GVar->getAlignment();
+ Uncommon().CommonAlign = GVar->getAlign() ? GVar->getAlign()->value() : 0;
}
const GlobalObject *GO = GV->getAliaseeObject();
diff --git a/llvm/lib/Target/PowerPC/PPCMIPeephole.cpp b/llvm/lib/Target/PowerPC/PPCMIPeephole.cpp
index 605b2d2642e5a..1b79774544c6d 100644
--- a/llvm/lib/Target/PowerPC/PPCMIPeephole.cpp
+++ b/llvm/lib/Target/PowerPC/PPCMIPeephole.cpp
@@ -843,7 +843,7 @@ bool PPCMIPeephole::simplifyCode() {
if (SrcMI->getOperand(1).isGlobal()) {
const GlobalObject *GO =
dyn_cast<GlobalObject>(SrcMI->getOperand(1).getGlobal());
- if (GO && GO->getAlignment() >= 4)
+ if (GO && GO->getAlign() && *GO->getAlign() >= 4)
IsWordAligned = true;
} else if (SrcMI->getOperand(1).isImm()) {
int64_t Value = SrcMI->getOperand(1).getImm();
diff --git a/llvm/lib/Transforms/IPO/MergeFunctions.cpp b/llvm/lib/Transforms/IPO/MergeFunctions.cpp
index b850591b4aa65..2c02a396291c6 100644
--- a/llvm/lib/Transforms/IPO/MergeFunctions.cpp
+++ b/llvm/lib/Transforms/IPO/MergeFunctions.cpp
@@ -775,7 +775,12 @@ void MergeFunctions::writeAlias(Function *F, Function *G) {
auto *GA = GlobalAlias::create(G->getValueType(), PtrType->getAddressSpace(),
G->getLinkage(), "", BitcastF, G->getParent());
- F->setAlignment(MaybeAlign(std::max(F->getAlignment(), G->getAlignment())));
+ const MaybeAlign FAlign = F->getAlign();
+ const MaybeAlign GAlign = G->getAlign();
+ if (FAlign || GAlign)
+ F->setAlignment(std::max(FAlign.valueOrOne(), GAlign.valueOrOne()));
+ else
+ F->setAlignment(std::nullopt);
GA->takeName(G);
GA->setVisibility(G->getVisibility());
GA->setUnnamedAddr(GlobalValue::UnnamedAddr::Global);
@@ -822,12 +827,15 @@ void MergeFunctions::mergeTwoFunctions(Function *F, Function *G) {
removeUsers(F);
F->replaceAllUsesWith(NewF);
- MaybeAlign MaxAlignment(std::max(G->getAlignment(), NewF->getAlignment()));
-
writeThunkOrAlias(F, G);
writeThunkOrAlias(F, NewF);
- F->setAlignment(MaxAlignment);
+ const MaybeAlign NewFAlign = NewF->getAlign();
+ const MaybeAlign GAlign = G->getAlign();
+ if (NewFAlign || GAlign)
+ F->setAlignment(std::max(NewFAlign.valueOrOne(), GAlign.valueOrOne()));
+ else
+ F->setAlignment(std::nullopt);
F->setLinkage(GlobalValue::PrivateLinkage);
++NumDoubleWeak;
++NumFunctionsMerged;
diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
index 94aec1415e40e..7f5826bb8a2b2 100644
--- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
@@ -1759,7 +1759,7 @@ bool ModuleAddressSanitizer::shouldInstrumentGlobal(GlobalVariable *G) const {
// - Need to poison all copies, not just the main thread's one.
if (G->isThreadLocal()) return false;
// For now, just ignore this Global if the alignment is large.
- if (G->getAlignment() > getMinRedzoneSizeForGlobal()) return false;
+ if (G->getAlign() && *G->getAlign() > getMinRedzoneSizeForGlobal()) return false;
// For non-COFF targets, only instrument globals known to be defined by this
// TU.
diff --git a/llvm/unittests/IR/ValueTest.cpp b/llvm/unittests/IR/ValueTest.cpp
index 958340645d518..76a0b0c04f5f2 100644
--- a/llvm/unittests/IR/ValueTest.cpp
+++ b/llvm/unittests/IR/ValueTest.cpp
@@ -61,9 +61,11 @@ TEST(GlobalTest, CreateAddressSpace) {
GlobalVariable::NotThreadLocal,
1);
- EXPECT_TRUE(Value::MaximumAlignment == 4294967296ULL);
- Dummy0->setAlignment(Align(4294967296ULL));
- EXPECT_EQ(Dummy0->getAlignment(), 4294967296ULL);
+ const Align kMaxAlignment(Value::MaximumAlignment);
+ EXPECT_TRUE(kMaxAlignment.value() == 4294967296ULL);
+ Dummy0->setAlignment(kMaxAlignment);
+ EXPECT_TRUE(Dummy0->getAlign());
+ EXPECT_EQ(*Dummy0->getAlign(), kMaxAlignment);
// Make sure the address space isn't dropped when returning this.
Constant *Dummy1 = M->getOrInsertGlobal("dummy", Int32Ty);
More information about the llvm-commits
mailing list