Skip to content

Commit c91cbaf

Browse files
authored
TargetLibraryInfo: Delete default TargetLibraryInfoImpl constructor (#145826)
It should not be possible to construct one without a triple. It would also be nice to delete TargetLibraryInfoWrapperPass, but that is more difficult.
1 parent 418c5de commit c91cbaf

29 files changed

+96
-72
lines changed

llvm/include/llvm/Analysis/TargetLibraryInfo.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ class TargetLibraryInfoImpl {
136136
AMDLIBM // AMD Math Vector library.
137137
};
138138

139-
LLVM_ABI TargetLibraryInfoImpl();
139+
LLVM_ABI TargetLibraryInfoImpl() = delete;
140140
LLVM_ABI explicit TargetLibraryInfoImpl(const Triple &T);
141141

142142
// Provide value semantics.
@@ -294,6 +294,8 @@ class TargetLibraryInfo {
294294
std::bitset<NumLibFuncs> OverrideAsUnavailable;
295295

296296
public:
297+
TargetLibraryInfo() = delete;
298+
297299
explicit TargetLibraryInfo(const TargetLibraryInfoImpl &Impl,
298300
std::optional<const Function *> F = std::nullopt)
299301
: Impl(&Impl) {
@@ -649,7 +651,11 @@ class LLVM_ABI TargetLibraryInfoWrapperPass : public ImmutablePass {
649651

650652
public:
651653
static char ID;
654+
655+
/// The default constructor should not be used and is only for pass manager
656+
/// initialization purposes.
652657
TargetLibraryInfoWrapperPass();
658+
653659
explicit TargetLibraryInfoWrapperPass(const Triple &T);
654660
explicit TargetLibraryInfoWrapperPass(const TargetLibraryInfoImpl &TLI);
655661

llvm/include/llvm/LinkAllPasses.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@
4747
#include "llvm/Transforms/Vectorize/LoadStoreVectorizer.h"
4848
#include <cstdlib>
4949

50+
namespace llvm {
51+
class Triple;
52+
}
53+
5054
namespace {
5155
struct ForcePassLinking {
5256
ForcePassLinking() {
@@ -147,7 +151,7 @@ struct ForcePassLinking {
147151
llvm::Function::Create(nullptr, llvm::GlobalValue::ExternalLinkage)
148152
->viewCFGOnly();
149153
llvm::RGPassManager RGM;
150-
llvm::TargetLibraryInfoImpl TLII;
154+
llvm::TargetLibraryInfoImpl TLII((llvm::Triple()));
151155
llvm::TargetLibraryInfo TLI(TLII);
152156
llvm::AliasAnalysis AA(TLI);
153157
llvm::BatchAAResults BAA(AA);

llvm/lib/Analysis/TargetLibraryInfo.cpp

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -929,12 +929,6 @@ static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T,
929929
initializeLibCalls(TLI, T, StandardNames);
930930
}
931931

932-
TargetLibraryInfoImpl::TargetLibraryInfoImpl() {
933-
// Default to nothing being available.
934-
memset(AvailableArray, 0, sizeof(AvailableArray));
935-
initializeBase(*this, Triple());
936-
}
937-
938932
TargetLibraryInfoImpl::TargetLibraryInfoImpl(const Triple &T) {
939933
// Default to everything being available.
940934
memset(AvailableArray, -1, sizeof(AvailableArray));
@@ -1499,7 +1493,7 @@ unsigned TargetLibraryInfoImpl::getSizeTSize(const Module &M) const {
14991493
}
15001494

15011495
TargetLibraryInfoWrapperPass::TargetLibraryInfoWrapperPass()
1502-
: ImmutablePass(ID), TLA(TargetLibraryInfoImpl()) {}
1496+
: ImmutablePass(ID), TLA(TargetLibraryInfoImpl(Triple())) {}
15031497

15041498
TargetLibraryInfoWrapperPass::TargetLibraryInfoWrapperPass(const Triple &T)
15051499
: ImmutablePass(ID), TLA(TargetLibraryInfoImpl(T)) {}

llvm/unittests/Analysis/AliasAnalysisTest.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,8 @@ class AliasAnalysisTest : public testing::Test {
147147
std::unique_ptr<BasicAAResult> BAR;
148148
std::unique_ptr<AAResults> AAR;
149149

150-
AliasAnalysisTest() : M("AliasAnalysisTest", C), TLI(TLII) {}
150+
AliasAnalysisTest()
151+
: M("AliasAnalysisTest", C), TLII(M.getTargetTriple()), TLI(TLII) {}
151152

152153
AAResults &getAAResults(Function &F) {
153154
// Reset the Function AA results first to clear out any references.

llvm/unittests/Analysis/BasicAliasAnalysisTest.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ class BasicAATest : public testing::Test {
6666

6767
public:
6868
BasicAATest()
69-
: M("BasicAATest", C), B(C), DL(DLString), TLI(TLII), F(nullptr) {}
69+
: M("BasicAATest", C), B(C), DL(DLString), TLII(M.getTargetTriple()),
70+
TLI(TLII), F(nullptr) {}
7071
};
7172

7273
// Check that a function arg can't trivially alias a global when we're accessing

llvm/unittests/Analysis/DDGTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ static void runTest(Module &M, StringRef FuncName,
2929
auto *F = M.getFunction(FuncName);
3030
ASSERT_NE(F, nullptr) << "Could not find " << FuncName;
3131

32-
TargetLibraryInfoImpl TLII;
32+
TargetLibraryInfoImpl TLII(M.getTargetTriple());
3333
TargetLibraryInfo TLI(TLII);
3434
AssumptionCache AC(*F);
3535
DominatorTree DT(*F);

llvm/unittests/Analysis/IVDescriptorsTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ static void runWithLoopInfoAndSE(
2626
auto *F = M.getFunction(FuncName);
2727
ASSERT_NE(F, nullptr) << "Could not find " << FuncName;
2828

29-
TargetLibraryInfoImpl TLII;
29+
TargetLibraryInfoImpl TLII(M.getTargetTriple());
3030
TargetLibraryInfo TLI(TLII);
3131
AssumptionCache AC(*F);
3232
DominatorTree DT(*F);

llvm/unittests/Analysis/LoadsTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ loop.end:
180180
auto *F2 = dyn_cast<Function>(GV2);
181181
ASSERT_TRUE(F1 && F2);
182182

183-
TargetLibraryInfoImpl TLII;
183+
TargetLibraryInfoImpl TLII(M->getTargetTriple());
184184
TargetLibraryInfo TLI(TLII);
185185

186186
auto IsDerefReadOnlyLoop = [&TLI](Function *F) -> bool {

llvm/unittests/Analysis/LoopInfoTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ static void runWithLoopInfoPlus(
3838
auto *F = M.getFunction(FuncName);
3939
ASSERT_NE(F, nullptr) << "Could not find " << FuncName;
4040

41-
TargetLibraryInfoImpl TLII;
41+
TargetLibraryInfoImpl TLII(M.getTargetTriple());
4242
TargetLibraryInfo TLI(TLII);
4343
AssumptionCache AC(*F);
4444
DominatorTree DT(*F);

llvm/unittests/Analysis/LoopNestTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ static void runTest(
2525
auto *F = M.getFunction(FuncName);
2626
ASSERT_NE(F, nullptr) << "Could not find " << FuncName;
2727

28-
TargetLibraryInfoImpl TLII;
28+
TargetLibraryInfoImpl TLII(M.getTargetTriple());
2929
TargetLibraryInfo TLI(TLII);
3030
AssumptionCache AC(*F);
3131
DominatorTree DT(*F);

0 commit comments

Comments
 (0)