summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/IR/DebugInfoTest.cpp
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-02-21 00:43:09 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-02-21 00:43:09 +0000
commitc22a5c2c6c519d9a5d25bc52b8b26ccebff62264 (patch)
tree5815fb10a35b7e2d5a4499c83d63b96390db8f6f /llvm/unittests/IR/DebugInfoTest.cpp
parentee1b391275d13bc1cee933af634b9bae77f439e1 (diff)
downloadbcm5719-llvm-c22a5c2c6c519d9a5d25bc52b8b26ccebff62264.tar.gz
bcm5719-llvm-c22a5c2c6c519d9a5d25bc52b8b26ccebff62264.zip
IR: Add debug info flag string conversions
Add `DIDescriptor::getFlag(StringRef)` and `DIDescriptor::getFlagString(unsigned)`. The latter only converts exact matches; I'll add separate API for breaking the flags bitfield up into parts. llvm-svn: 230107
Diffstat (limited to 'llvm/unittests/IR/DebugInfoTest.cpp')
-rw-r--r--llvm/unittests/IR/DebugInfoTest.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/llvm/unittests/IR/DebugInfoTest.cpp b/llvm/unittests/IR/DebugInfoTest.cpp
index 1fa851e39ae..fa05425e333 100644
--- a/llvm/unittests/IR/DebugInfoTest.cpp
+++ b/llvm/unittests/IR/DebugInfoTest.cpp
@@ -65,4 +65,50 @@ TEST(DebugInfoTest, DIHeaderFieldIterator) {
ASSERT_EQ("stuff", *++MAKE_FIELD_ITERATOR("\0stuff"));
}
+TEST(DIDescriptorTest, getFlag) {
+ // Some valid flags.
+ EXPECT_EQ(DIDescriptor::FlagPublic, DIDescriptor::getFlag("DIFlagPublic"));
+ EXPECT_EQ(DIDescriptor::FlagProtected,
+ DIDescriptor::getFlag("DIFlagProtected"));
+ EXPECT_EQ(DIDescriptor::FlagPrivate, DIDescriptor::getFlag("DIFlagPrivate"));
+ EXPECT_EQ(DIDescriptor::FlagVector, DIDescriptor::getFlag("DIFlagVector"));
+ EXPECT_EQ(DIDescriptor::FlagRValueReference,
+ DIDescriptor::getFlag("DIFlagRValueReference"));
+
+ // FlagAccessibility shouldn't work.
+ EXPECT_EQ(0u, DIDescriptor::getFlag("DIFlagAccessibility"));
+
+ // Some other invalid strings.
+ EXPECT_EQ(0u, DIDescriptor::getFlag("FlagVector"));
+ EXPECT_EQ(0u, DIDescriptor::getFlag("Vector"));
+ EXPECT_EQ(0u, DIDescriptor::getFlag("other things"));
+ EXPECT_EQ(0u, DIDescriptor::getFlag("DIFlagOther"));
+}
+
+TEST(DIDescriptorTest, getFlagString) {
+ // Some valid flags.
+ EXPECT_EQ(StringRef("DIFlagPublic"),
+ DIDescriptor::getFlagString(DIDescriptor::FlagPublic));
+ EXPECT_EQ(StringRef("DIFlagProtected"),
+ DIDescriptor::getFlagString(DIDescriptor::FlagProtected));
+ EXPECT_EQ(StringRef("DIFlagPrivate"),
+ DIDescriptor::getFlagString(DIDescriptor::FlagPrivate));
+ EXPECT_EQ(StringRef("DIFlagVector"),
+ DIDescriptor::getFlagString(DIDescriptor::FlagVector));
+ EXPECT_EQ(StringRef("DIFlagRValueReference"),
+ DIDescriptor::getFlagString(DIDescriptor::FlagRValueReference));
+
+ // FlagAccessibility actually equals FlagPublic.
+ EXPECT_EQ(StringRef("DIFlagPublic"),
+ DIDescriptor::getFlagString(DIDescriptor::FlagAccessibility));
+
+ // Some other invalid flags.
+ EXPECT_EQ(StringRef(), DIDescriptor::getFlagString(DIDescriptor::FlagPublic |
+ DIDescriptor::FlagVector));
+ EXPECT_EQ(StringRef(),
+ DIDescriptor::getFlagString(DIDescriptor::FlagFwdDecl |
+ DIDescriptor::FlagArtificial));
+ EXPECT_EQ(StringRef(), DIDescriptor::getFlagString(0xffff));
+}
+
} // end namespace
OpenPOWER on IntegriCloud