[PATCH] D115631: [Flang][Unit Test] Move the declaration of kindMap to the class
Kiran Chandramohan via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 13 05:52:20 PST 2021
kiranchandramohan created this revision.
kiranchandramohan added reviewers: clementval, jeanPerier, awarzynski.
Herald added a project: Flang.
kiranchandramohan requested review of this revision.
Herald added subscribers: llvm-commits, jdoerfert.
Herald added a project: LLVM.
kindMap variable is declared in the Setup function but passed as
a reference to the firBuilder class. The firBuilder is declared in
the class and hence its lifetime exceeds that of kindMap. This can
lead to undefined behaviour. Move the kindMap variable into the class
to avoid this.
This is part of the upstreaming effort from the fir-dev branch in [1].
[1] https://github.com/flang-compiler/f18-llvm-project
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D115631
Files:
flang/unittests/Optimizer/Builder/CharacterTest.cpp
flang/unittests/Optimizer/Builder/DoLoopHelperTest.cpp
Index: flang/unittests/Optimizer/Builder/DoLoopHelperTest.cpp
===================================================================
--- flang/unittests/Optimizer/Builder/DoLoopHelperTest.cpp
+++ flang/unittests/Optimizer/Builder/DoLoopHelperTest.cpp
@@ -15,9 +15,9 @@
struct DoLoopHelperTest : public testing::Test {
public:
void SetUp() {
- fir::KindMapping kindMap(&context);
+ kindMap = std::make_unique<fir::KindMapping>(&context);
mlir::OpBuilder builder(&context);
- firBuilder = new fir::FirOpBuilder(builder, kindMap);
+ firBuilder = new fir::FirOpBuilder(builder, *kindMap);
fir::support::loadDialects(context);
}
void TearDown() { delete firBuilder; }
@@ -25,6 +25,7 @@
fir::FirOpBuilder &getBuilder() { return *firBuilder; }
mlir::MLIRContext context;
+ std::unique_ptr<fir::KindMapping> kindMap;
fir::FirOpBuilder *firBuilder;
};
Index: flang/unittests/Optimizer/Builder/CharacterTest.cpp
===================================================================
--- flang/unittests/Optimizer/Builder/CharacterTest.cpp
+++ flang/unittests/Optimizer/Builder/CharacterTest.cpp
@@ -16,7 +16,7 @@
struct CharacterTest : public testing::Test {
public:
void SetUp() override {
- fir::KindMapping kindMap(&context,
+ kindMap = std::make_unique<fir::KindMapping>(&context,
"i10:80,l3:24,a1:8,r54:Double,c20:X86_FP80,r11:PPC_FP128,"
"r12:FP128,r13:X86_FP80,r14:Double,r15:Float,r16:Half,r23:BFloat");
mlir::OpBuilder builder(&context);
@@ -32,12 +32,13 @@
builder.setInsertionPointToStart(entryBlock);
fir::support::loadDialects(context);
- firBuilder = std::make_unique<fir::FirOpBuilder>(mod, kindMap);
+ firBuilder = std::make_unique<fir::FirOpBuilder>(mod, *kindMap);
}
fir::FirOpBuilder &getBuilder() { return *firBuilder; }
mlir::MLIRContext context;
+ std::unique_ptr<fir::KindMapping> kindMap;
std::unique_ptr<fir::FirOpBuilder> firBuilder;
};
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D115631.393862.patch
Type: text/x-patch
Size: 1967 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211213/17ff889d/attachment.bin>
More information about the llvm-commits
mailing list