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);

llvm/unittests/Analysis/MemorySSATest.cpp

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

7171
public:
7272
MemorySSATest()
73-
: M("MemorySSATest", C), B(C), DL(DLString), TLI(TLII), F(nullptr) {}
73+
: M("MemorySSATest", C), B(C), DL(DLString), TLII(M.getTargetTriple()),
74+
TLI(TLII), F(nullptr) {}
7475
};
7576

7677
TEST_F(MemorySSATest, CreateALoad) {

llvm/unittests/Analysis/ScalarEvolutionTest.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ class ScalarEvolutionsTest : public testing::Test {
3939
std::unique_ptr<DominatorTree> DT;
4040
std::unique_ptr<LoopInfo> LI;
4141

42-
ScalarEvolutionsTest() : M("", Context), TLII(), TLI(TLII) {}
42+
ScalarEvolutionsTest()
43+
: M("", Context), TLII(M.getTargetTriple()), TLI(TLII) {}
4344

4445
ScalarEvolution buildSE(Function &F) {
4546
AC.reset(new AssumptionCache(F));

llvm/unittests/Analysis/TargetLibraryInfoTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class TargetLibraryInfoTest : public testing::Test {
2626

2727
std::unique_ptr<Module> M;
2828

29-
TargetLibraryInfoTest() : TLI(TLII) {}
29+
TargetLibraryInfoTest() : TLII(Triple()), TLI(TLII) {}
3030

3131
void parseAssembly(const char *Assembly) {
3232
SMDiagnostic Error;

llvm/unittests/Analysis/UnrollAnalyzerTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ runUnrollAnalyzer(Module &M, StringRef FuncName,
2727
auto *F = M.getFunction(FuncName);
2828
ASSERT_NE(F, nullptr) << "Could not find " << FuncName;
2929

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

llvm/unittests/SandboxIR/UtilsTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ define void @foo(ptr %ptr) {
8989
)IR");
9090
llvm::Function &LLVMF = *M->getFunction("foo");
9191
DominatorTree DT(LLVMF);
92-
TargetLibraryInfoImpl TLII;
92+
TargetLibraryInfoImpl TLII(M->getTargetTriple());
9393
TargetLibraryInfo TLI(TLII);
9494
DataLayout DL(M->getDataLayout());
9595
AssumptionCache AC(LLVMF);

llvm/unittests/Transforms/Instrumentation/MemProfUseTest.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ declare !dbg !19 void @_Z2f3v()
9191
auto *F = M->getFunction("_Z3foov");
9292
ASSERT_NE(F, nullptr);
9393

94-
TargetLibraryInfoWrapperPass WrapperPass;
94+
TargetLibraryInfoWrapperPass WrapperPass(M->getTargetTriple());
9595
auto &TLI = WrapperPass.getTLI(*F);
9696
auto Calls = extractCallsFromIR(*M, TLI);
9797

@@ -191,7 +191,7 @@ declare !dbg !25 void @_Z2g2v() local_unnamed_addr
191191
auto *F = M->getFunction("_Z3foov");
192192
ASSERT_NE(F, nullptr);
193193

194-
TargetLibraryInfoWrapperPass WrapperPass;
194+
TargetLibraryInfoWrapperPass WrapperPass(M->getTargetTriple());
195195
auto &TLI = WrapperPass.getTLI(*F);
196196
auto Calls = extractCallsFromIR(*M, TLI);
197197

@@ -282,7 +282,7 @@ attributes #2 = { builtin allocsize(0) }
282282
auto *F = M->getFunction("_Z3foov");
283283
ASSERT_NE(F, nullptr);
284284

285-
TargetLibraryInfoWrapperPass WrapperPass;
285+
TargetLibraryInfoWrapperPass WrapperPass(M->getTargetTriple());
286286
auto &TLI = WrapperPass.getTLI(*F);
287287
auto Calls = extractCallsFromIR(*M, TLI);
288288

@@ -398,7 +398,7 @@ attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "t
398398
auto *F = M->getFunction("_Z3foov");
399399
ASSERT_NE(F, nullptr);
400400

401-
TargetLibraryInfoWrapperPass WrapperPass;
401+
TargetLibraryInfoWrapperPass WrapperPass(M->getTargetTriple());
402402
auto &TLI = WrapperPass.getTLI(*F);
403403
auto Calls = extractCallsFromIR(*M, TLI);
404404

llvm/unittests/Transforms/Utils/BasicBlockUtilsTest.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ define i32 @foo(i32 %n) {
180180
LoopInfo LI(DT);
181181

182182
DataLayout DL("e-i64:64-f80:128-n8:16:32:64-S128");
183-
TargetLibraryInfoImpl TLII;
183+
TargetLibraryInfoImpl TLII(M->getTargetTriple());
184184
TargetLibraryInfo TLI(TLII);
185185
AssumptionCache AC(*F);
186186
AAResults AA(TLI);
@@ -255,7 +255,7 @@ declare void @sink_alt() cold
255255

256256
LoopInfo LI(DT);
257257

258-
TargetLibraryInfoImpl TLII;
258+
TargetLibraryInfoImpl TLII(M->getTargetTriple());
259259
TargetLibraryInfo TLI(TLII);
260260

261261
AAResults AA(TLI);

llvm/unittests/Transforms/Utils/CodeMoverUtilsTest.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ static void run(Module &M, StringRef FuncName,
3838
auto *F = M.getFunction(FuncName);
3939
DominatorTree DT(*F);
4040
PostDominatorTree PDT(*F);
41-
TargetLibraryInfoImpl TLII;
41+
TargetLibraryInfoImpl TLII(M.getTargetTriple());
4242
TargetLibraryInfo TLI(TLII);
4343
AssumptionCache AC(*F);
4444
AliasAnalysis AA(TLI);
@@ -227,7 +227,7 @@ TEST(CodeMoverUtils, IsControlFlowEquivalentCondNestTest) {
227227
// i = 2;
228228
// }
229229
std::unique_ptr<Module> M =
230-
parseIR(C, R"(define void @foo(i32* %i, i1 %cond1, i1 %cond2) {
230+
parseIR(C, R"(define void @foo(i32* %i, i1 %cond1, i1 %cond2) {
231231
entry:
232232
br i1 %cond1, label %if.outer.first, label %if.first.end
233233
if.outer.first:
@@ -282,8 +282,8 @@ TEST(CodeMoverUtils, IsControlFlowEquivalentImbalanceTest) {
282282
// if (cond1)
283283
// i = 4;
284284
// }
285-
std::unique_ptr<Module> M = parseIR(
286-
C, R"(define void @foo(i32* %i, i1 %cond1, i1 %cond2, i1 %cond3) {
285+
std::unique_ptr<Module> M =
286+
parseIR(C, R"(define void @foo(i32* %i, i1 %cond1, i1 %cond2, i1 %cond3) {
287287
entry:
288288
br i1 %cond1, label %if.outer.first, label %if.first.end
289289
if.outer.first:

llvm/unittests/Transforms/Utils/LoopRotationUtilsTest.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ deopt.exit:
7979
LoopInfo LI(DT);
8080
AssumptionCache AC(*F);
8181
TargetTransformInfo TTI(M->getDataLayout());
82-
TargetLibraryInfoImpl TLII;
82+
TargetLibraryInfoImpl TLII(M->getTargetTriple());
8383
TargetLibraryInfo TLI(TLII);
8484
ScalarEvolution SE(*F, TLI, AC, DT, LI);
8585
SimplifyQuery SQ(M->getDataLayout());
@@ -150,7 +150,7 @@ deopt.exit:
150150
LoopInfo LI(DT);
151151
AssumptionCache AC(*F);
152152
TargetTransformInfo TTI(M->getDataLayout());
153-
TargetLibraryInfoImpl TLII;
153+
TargetLibraryInfoImpl TLII(M->getTargetTriple());
154154
TargetLibraryInfo TLI(TLII);
155155
ScalarEvolution SE(*F, TLI, AC, DT, LI);
156156
SimplifyQuery SQ(M->getDataLayout());

llvm/unittests/Transforms/Utils/LoopUtilsTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ static void run(Module &M, StringRef FuncName,
3333
Test) {
3434
Function *F = M.getFunction(FuncName);
3535
DominatorTree DT(*F);
36-
TargetLibraryInfoImpl TLII;
36+
TargetLibraryInfoImpl TLII(M.getTargetTriple());
3737
TargetLibraryInfo TLI(TLII);
3838
AssumptionCache AC(*F);
3939
LoopInfo LI(DT);

llvm/unittests/Transforms/Utils/ScalarEvolutionExpanderTest.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ class ScalarEvolutionExpanderTest : public testing::Test {
4242
std::unique_ptr<DominatorTree> DT;
4343
std::unique_ptr<LoopInfo> LI;
4444

45-
ScalarEvolutionExpanderTest() : M("", Context), TLII(), TLI(TLII) {}
45+
ScalarEvolutionExpanderTest()
46+
: M("", Context), TLII(M.getTargetTriple()), TLI(TLII) {}
4647

4748
ScalarEvolution buildSE(Function &F) {
4849
AC.reset(new AssumptionCache(F));

llvm/unittests/Transforms/Utils/UnrollLoopTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ while.end: ; preds = %while.cond
6363
DominatorTree DT(*F);
6464
LoopInfo LI(DT);
6565
AssumptionCache AC(*F);
66-
TargetLibraryInfoImpl TLII;
66+
TargetLibraryInfoImpl TLII(M->getTargetTriple());
6767
TargetLibraryInfo TLI(TLII);
6868
ScalarEvolution SE(*F, TLI, AC, DT, LI);
6969

llvm/unittests/Transforms/Vectorize/SandboxVectorizer/DependencyGraphTest.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,26 @@ struct DependencyGraphTest : public testing::Test {
3030
std::unique_ptr<DominatorTree> DT;
3131
std::unique_ptr<BasicAAResult> BAA;
3232
std::unique_ptr<AAResults> AA;
33+
std::unique_ptr<TargetLibraryInfoImpl> TLII;
34+
std::unique_ptr<TargetLibraryInfo> TLI;
3335

3436
void parseIR(LLVMContext &C, const char *IR) {
3537
SMDiagnostic Err;
3638
M = parseAssemblyString(IR, Err, C);
37-
if (!M)
39+
if (!M) {
3840
Err.print("DependencyGraphTest", errs());
41+
return;
42+
}
43+
44+
TLII = std::make_unique<TargetLibraryInfoImpl>(M->getTargetTriple());
45+
TLI = std::make_unique<TargetLibraryInfo>(*TLII);
3946
}
4047

4148
AAResults &getAA(llvm::Function &LLVMF) {
42-
TargetLibraryInfoImpl TLII;
43-
TargetLibraryInfo TLI(TLII);
44-
AA = std::make_unique<AAResults>(TLI);
49+
AA = std::make_unique<AAResults>(*TLI);
4550
AC = std::make_unique<AssumptionCache>(LLVMF);
4651
DT = std::make_unique<DominatorTree>(LLVMF);
47-
BAA = std::make_unique<BasicAAResult>(M->getDataLayout(), LLVMF, TLI, *AC,
52+
BAA = std::make_unique<BasicAAResult>(M->getDataLayout(), LLVMF, *TLI, *AC,
4853
DT.get());
4954
AA->addAAResult(*BAA);
5055
return *AA;

llvm/unittests/Transforms/Vectorize/SandboxVectorizer/LegalityTest.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ struct LegalityTest : public testing::Test {
3838

3939
void getAnalyses(llvm::Function &LLVMF) {
4040
DT = std::make_unique<DominatorTree>(LLVMF);
41-
TLII = std::make_unique<TargetLibraryInfoImpl>();
42-
TLI = std::make_unique<TargetLibraryInfo>(*TLII);
4341
AC = std::make_unique<AssumptionCache>(LLVMF);
4442
LI = std::make_unique<LoopInfo>(*DT);
4543
SE = std::make_unique<ScalarEvolution>(LLVMF, *TLI, *AC, *DT, *LI);
@@ -52,8 +50,13 @@ struct LegalityTest : public testing::Test {
5250
void parseIR(LLVMContext &C, const char *IR) {
5351
SMDiagnostic Err;
5452
M = parseAssemblyString(IR, Err, C);
55-
if (!M)
53+
if (!M) {
5654
Err.print("LegalityTest", errs());
55+
return;
56+
}
57+
58+
TLII = std::make_unique<TargetLibraryInfoImpl>(M->getTargetTriple());
59+
TLI = std::make_unique<TargetLibraryInfo>(*TLII);
5760
}
5861
};
5962

0 commit comments

Comments
 (0)