DebugInfo: Remove dead code for accessing fields
[oota-llvm.git] / unittests / IR / DebugInfoTest.cpp
1 //===- llvm/unittest/IR/DebugInfo.cpp - DebugInfo tests -------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #include "llvm/IR/DebugInfo.h"
11 #include "gtest/gtest.h"
12
13 using namespace llvm;
14
15 namespace {
16
17 TEST(DIDescriptorTest, getFlag) {
18   // Some valid flags.
19   EXPECT_EQ(DIDescriptor::FlagPublic, DIDescriptor::getFlag("DIFlagPublic"));
20   EXPECT_EQ(DIDescriptor::FlagProtected,
21             DIDescriptor::getFlag("DIFlagProtected"));
22   EXPECT_EQ(DIDescriptor::FlagPrivate, DIDescriptor::getFlag("DIFlagPrivate"));
23   EXPECT_EQ(DIDescriptor::FlagVector, DIDescriptor::getFlag("DIFlagVector"));
24   EXPECT_EQ(DIDescriptor::FlagRValueReference,
25             DIDescriptor::getFlag("DIFlagRValueReference"));
26
27   // FlagAccessibility shouldn't work.
28   EXPECT_EQ(0u, DIDescriptor::getFlag("DIFlagAccessibility"));
29
30   // Some other invalid strings.
31   EXPECT_EQ(0u, DIDescriptor::getFlag("FlagVector"));
32   EXPECT_EQ(0u, DIDescriptor::getFlag("Vector"));
33   EXPECT_EQ(0u, DIDescriptor::getFlag("other things"));
34   EXPECT_EQ(0u, DIDescriptor::getFlag("DIFlagOther"));
35 }
36
37 TEST(DIDescriptorTest, getFlagString) {
38   // Some valid flags.
39   EXPECT_EQ(StringRef("DIFlagPublic"),
40             DIDescriptor::getFlagString(DIDescriptor::FlagPublic));
41   EXPECT_EQ(StringRef("DIFlagProtected"),
42             DIDescriptor::getFlagString(DIDescriptor::FlagProtected));
43   EXPECT_EQ(StringRef("DIFlagPrivate"),
44             DIDescriptor::getFlagString(DIDescriptor::FlagPrivate));
45   EXPECT_EQ(StringRef("DIFlagVector"),
46             DIDescriptor::getFlagString(DIDescriptor::FlagVector));
47   EXPECT_EQ(StringRef("DIFlagRValueReference"),
48             DIDescriptor::getFlagString(DIDescriptor::FlagRValueReference));
49
50   // FlagAccessibility actually equals FlagPublic.
51   EXPECT_EQ(StringRef("DIFlagPublic"),
52             DIDescriptor::getFlagString(DIDescriptor::FlagAccessibility));
53
54   // Some other invalid flags.
55   EXPECT_EQ(StringRef(), DIDescriptor::getFlagString(DIDescriptor::FlagPublic |
56                                                      DIDescriptor::FlagVector));
57   EXPECT_EQ(StringRef(),
58             DIDescriptor::getFlagString(DIDescriptor::FlagFwdDecl |
59                                         DIDescriptor::FlagArtificial));
60   EXPECT_EQ(StringRef(), DIDescriptor::getFlagString(0xffff));
61 }
62
63 TEST(DIDescriptorTest, splitFlags) {
64   // Some valid flags.
65 #define CHECK_SPLIT(FLAGS, VECTOR, REMAINDER)                                  \
66   {                                                                            \
67     SmallVector<unsigned, 8> V;                                                \
68     EXPECT_EQ(REMAINDER, DIDescriptor::splitFlags(FLAGS, V));                  \
69     EXPECT_TRUE(makeArrayRef(V).equals(VECTOR));                                \
70   }
71   CHECK_SPLIT(DIDescriptor::FlagPublic, {DIDescriptor::FlagPublic}, 0u);
72   CHECK_SPLIT(DIDescriptor::FlagProtected, {DIDescriptor::FlagProtected}, 0u);
73   CHECK_SPLIT(DIDescriptor::FlagPrivate, {DIDescriptor::FlagPrivate}, 0u);
74   CHECK_SPLIT(DIDescriptor::FlagVector, {DIDescriptor::FlagVector}, 0u);
75   CHECK_SPLIT(DIDescriptor::FlagRValueReference, {DIDescriptor::FlagRValueReference}, 0u);
76   unsigned Flags[] = {DIDescriptor::FlagFwdDecl, DIDescriptor::FlagVector};
77   CHECK_SPLIT(DIDescriptor::FlagFwdDecl | DIDescriptor::FlagVector, Flags, 0u);
78   CHECK_SPLIT(0x100000u, {}, 0x100000u);
79   CHECK_SPLIT(0x100000u | DIDescriptor::FlagVector, {DIDescriptor::FlagVector},
80               0x100000u);
81 #undef CHECK_SPLIT
82 }
83
84 } // end namespace