[AMDGPU] Test codegen'ing True16 additions.
[llvm-project.git] / llvm / unittests / DebugInfo / LogicalView / CommandLineOptionsTest.cpp
blob1d4b48d215cdfcc582f1949647bbe74a7b2f6602
1 //===- llvm/unittest/DebugInfo/LogicalView/CommandLineOptionsTest.cpp -----===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
9 #include "llvm/DebugInfo/LogicalView/Core/LVOptions.h"
11 #include "gtest/gtest.h"
13 using namespace llvm;
14 using namespace llvm::logicalview;
16 namespace {
18 // '--attribute' options.
19 TEST(CommandLineOptionsTest, attributeOptions) {
20 auto CheckStandardAttributes = [&](LVOptions &Options, bool Value) {
21 EXPECT_EQ(Options.getAttributeBase(), 1);
22 EXPECT_EQ(Options.getAttributeCoverage(), Value);
23 EXPECT_EQ(Options.getAttributeDirectories(), 1);
24 EXPECT_EQ(Options.getAttributeDiscriminator(), 1);
25 EXPECT_EQ(Options.getAttributeFilename(), 0);
26 EXPECT_EQ(Options.getAttributeFiles(), 1);
27 EXPECT_EQ(Options.getAttributeFormat(), 1);
28 EXPECT_EQ(Options.getAttributeLevel(), 1);
29 EXPECT_EQ(Options.getAttributeProducer(), 1);
30 EXPECT_EQ(Options.getAttributePublics(), 1);
31 EXPECT_EQ(Options.getAttributeRange(), 1);
32 EXPECT_EQ(Options.getAttributeReference(), 1);
33 EXPECT_EQ(Options.getAttributeZero(), 1);
36 auto CheckExtendedAttributes = [&](LVOptions &Options, bool Value) {
37 EXPECT_EQ(Options.getAttributeArgument(), 1);
38 EXPECT_EQ(Options.getAttributeDiscarded(), 1);
39 EXPECT_EQ(Options.getAttributeEncoded(), 1);
40 EXPECT_EQ(Options.getAttributeGaps(), Value);
41 EXPECT_EQ(Options.getAttributeGenerated(), 1);
42 EXPECT_EQ(Options.getAttributeGlobal(), 1);
43 EXPECT_EQ(Options.getAttributeInserted(), 1);
44 EXPECT_EQ(Options.getAttributeLinkage(), 1);
45 EXPECT_EQ(Options.getAttributeLocal(), 1);
46 EXPECT_EQ(Options.getAttributeLocation(), Value);
47 EXPECT_EQ(Options.getAttributeOffset(), 1);
48 EXPECT_EQ(Options.getAttributePathname(), 1);
49 EXPECT_EQ(Options.getAttributeQualified(), 1);
50 EXPECT_EQ(Options.getAttributeQualifier(), 1);
51 EXPECT_EQ(Options.getAttributeRegister(), Value);
52 EXPECT_EQ(Options.getAttributeSubrange(), 1);
53 EXPECT_EQ(Options.getAttributeSystem(), 1);
54 EXPECT_EQ(Options.getAttributeTypename(), 1);
57 // Location information is only relevant when printing symbols.
58 // It means the following attributes are dependent on --print=symbols:
59 // Coverage, gaps, location and register attributes.
60 // '--attribute=pathname' supersedes '--attribute=filename'.
62 // Set standard and extended attributes.
63 LVOptions OptionsOne;
64 OptionsOne.setAttributeStandard();
65 OptionsOne.setAttributeExtended();
66 OptionsOne.resolveDependencies();
67 CheckStandardAttributes(OptionsOne, false);
68 CheckExtendedAttributes(OptionsOne, false);
70 // Set standard and extended attributes; enable location attributes.
71 LVOptions OptionsTwo;
72 OptionsTwo.setAttributeStandard();
73 OptionsTwo.setAttributeExtended();
74 OptionsTwo.setPrintSymbols();
75 OptionsTwo.resolveDependencies();
76 CheckStandardAttributes(OptionsTwo, true);
77 CheckExtendedAttributes(OptionsTwo, true);
79 // Set all attributes.
80 LVOptions OptionsThree;
81 OptionsThree.setAttributeAll();
82 OptionsThree.resolveDependencies();
83 EXPECT_EQ(OptionsThree.getAttributeExtended(), 1);
84 EXPECT_EQ(OptionsThree.getAttributeStandard(), 1);
86 // Set filename attribute.
87 LVOptions OptionsFour;
88 OptionsFour.setAttributeFilename();
89 OptionsFour.resolveDependencies();
90 EXPECT_EQ(OptionsFour.getAttributeFilename(), 1);
91 EXPECT_EQ(OptionsFour.getAttributePathname(), 0);
93 // Set pathname attribute.
94 OptionsFour.setAttributePathname();
95 OptionsFour.resolveDependencies();
96 EXPECT_EQ(OptionsFour.getAttributeFilename(), 0);
97 EXPECT_EQ(OptionsFour.getAttributePathname(), 1);
99 // The location attribute depends on: coverage, gaps or register.
100 LVOptions OptionsFive;
101 OptionsFive.setPrintSymbols();
102 OptionsFive.resetAttributeLocation();
103 OptionsFive.resolveDependencies();
104 EXPECT_EQ(OptionsFive.getAttributeLocation(), 0);
106 OptionsFive.resetAttributeLocation();
107 OptionsFive.setAttributeCoverage();
108 OptionsFive.resolveDependencies();
109 EXPECT_EQ(OptionsFive.getAttributeLocation(), 1);
111 OptionsFive.resetAttributeLocation();
112 OptionsFive.setAttributeGaps();
113 OptionsFive.resolveDependencies();
114 EXPECT_EQ(OptionsFive.getAttributeLocation(), 1);
116 OptionsFive.resetAttributeLocation();
117 OptionsFive.setAttributeRegister();
118 OptionsFive.resolveDependencies();
119 EXPECT_EQ(OptionsFive.getAttributeLocation(), 1);
122 // '--compare' options.
123 TEST(CommandLineOptionsTest, compareOptions) {
124 LVOptions OptionsOne;
125 OptionsOne.setCompareAll();
126 OptionsOne.resolveDependencies();
127 EXPECT_EQ(OptionsOne.getCompareLines(), 1);
128 EXPECT_EQ(OptionsOne.getCompareScopes(), 1);
129 EXPECT_EQ(OptionsOne.getCompareSymbols(), 1);
130 EXPECT_EQ(OptionsOne.getCompareTypes(), 1);
132 // The compare scopes attribute depends on: symbols, types or lines.
133 LVOptions OptionsTwo;
134 OptionsTwo.resetCompareScopes();
135 OptionsTwo.resolveDependencies();
136 EXPECT_EQ(OptionsTwo.getCompareScopes(), 0);
138 OptionsTwo.resetCompareScopes();
139 OptionsTwo.setCompareLines();
140 OptionsTwo.resolveDependencies();
141 EXPECT_EQ(OptionsTwo.getCompareScopes(), 1);
143 OptionsTwo.resetCompareScopes();
144 OptionsTwo.setCompareSymbols();
145 OptionsTwo.resolveDependencies();
146 EXPECT_EQ(OptionsTwo.getCompareScopes(), 1);
148 OptionsTwo.resetCompareScopes();
149 OptionsTwo.setCompareTypes();
150 OptionsTwo.resolveDependencies();
151 EXPECT_EQ(OptionsTwo.getCompareScopes(), 1);
153 // The compare option, set/reset other attributes.
154 LVOptions OptionsThree;
155 OptionsThree.setCompareAll();
156 OptionsThree.resolveDependencies();
157 EXPECT_EQ(OptionsThree.getAttributeArgument(), 1);
158 EXPECT_EQ(OptionsThree.getAttributeEncoded(), 1);
159 EXPECT_EQ(OptionsThree.getAttributeInserted(), 1);
160 EXPECT_EQ(OptionsThree.getAttributeMissing(), 1);
161 EXPECT_EQ(OptionsThree.getAttributeQualified(), 1);
164 // '--internal' options.
165 TEST(CommandLineOptionsTest, internalOptions) {
166 LVOptions OptionsOne;
167 OptionsOne.setInternalAll();
168 OptionsOne.resolveDependencies();
169 EXPECT_EQ(OptionsOne.getInternalCmdline(), 1);
170 EXPECT_EQ(OptionsOne.getInternalID(), 1);
171 EXPECT_EQ(OptionsOne.getInternalIntegrity(), 1);
172 EXPECT_EQ(OptionsOne.getInternalNone(), 1);
173 EXPECT_EQ(OptionsOne.getInternalTag(), 1);
176 // '--output' options.
177 TEST(CommandLineOptionsTest, outputOptions) {
178 LVOptions OptionsOne;
179 OptionsOne.setOutputAll();
180 OptionsOne.resolveDependencies();
181 EXPECT_EQ(OptionsOne.getOutputJson(), 1);
182 EXPECT_EQ(OptionsOne.getOutputSplit(), 1);
183 EXPECT_EQ(OptionsOne.getOutputText(), 1);
185 // The pathname attribute is set with split output.
186 LVOptions OptionsTwo;
187 OptionsTwo.resetAttributePathname();
188 OptionsTwo.setOutputSplit();
189 OptionsTwo.resolveDependencies();
190 EXPECT_EQ(OptionsTwo.getAttributePathname(), 1);
192 // Setting an output folder, it sets split option.
193 LVOptions OptionsThree;
194 OptionsThree.resolveDependencies();
195 EXPECT_EQ(OptionsThree.getOutputSplit(), 0);
197 OptionsThree.setOutputFolder("folder-name");
198 OptionsThree.resolveDependencies();
199 EXPECT_EQ(OptionsThree.getOutputSplit(), 1);
200 EXPECT_STREQ(OptionsThree.getOutputFolder().c_str(), "folder-name");
202 // Assume '--output=text' as default.
203 LVOptions OptionsFour;
204 OptionsFour.resolveDependencies();
205 EXPECT_EQ(OptionsFour.getOutputText(), 1);
208 // '--print' options.
209 TEST(CommandLineOptionsTest, printOptions) {
210 LVOptions OptionsOne;
211 OptionsOne.setPrintAll();
212 OptionsOne.resolveDependencies();
213 EXPECT_EQ(OptionsOne.getPrintInstructions(), 1);
214 EXPECT_EQ(OptionsOne.getPrintLines(), 1);
215 EXPECT_EQ(OptionsOne.getPrintScopes(), 1);
216 EXPECT_EQ(OptionsOne.getPrintSizes(), 1);
217 EXPECT_EQ(OptionsOne.getPrintSymbols(), 1);
218 EXPECT_EQ(OptionsOne.getPrintSummary(), 1);
219 EXPECT_EQ(OptionsOne.getPrintTypes(), 1);
220 EXPECT_EQ(OptionsOne.getPrintWarnings(), 1);
222 // '--print=elements' is a shortcut for:
223 // '--print=instructions,lines,scopes,symbols,types'.
224 LVOptions OptionsTwo;
225 OptionsTwo.setPrintElements();
226 OptionsTwo.resolveDependencies();
227 EXPECT_EQ(OptionsTwo.getPrintInstructions(), 1);
228 EXPECT_EQ(OptionsTwo.getPrintLines(), 1);
229 EXPECT_EQ(OptionsTwo.getPrintScopes(), 1);
230 EXPECT_EQ(OptionsTwo.getPrintSizes(), 0);
231 EXPECT_EQ(OptionsTwo.getPrintSymbols(), 1);
232 EXPECT_EQ(OptionsTwo.getPrintSummary(), 0);
233 EXPECT_EQ(OptionsTwo.getPrintTypes(), 1);
234 EXPECT_EQ(OptionsTwo.getPrintWarnings(), 0);
237 // '--report' options.
238 TEST(CommandLineOptionsTest, reportOptions) {
239 LVOptions OptionsOne;
240 OptionsOne.setReportAll();
241 OptionsOne.resolveDependencies();
242 EXPECT_EQ(OptionsOne.getReportChildren(), 1);
243 EXPECT_EQ(OptionsOne.getReportList(), 1);
244 EXPECT_EQ(OptionsOne.getReportParents(), 1);
245 EXPECT_EQ(OptionsOne.getReportView(), 1);
247 // '--report=view' is a shortcut for '--report=parents,children'.
248 LVOptions OptionsTwo;
249 OptionsTwo.setReportView();
250 OptionsTwo.resolveDependencies();
251 EXPECT_EQ(OptionsTwo.getReportChildren(), 1);
252 EXPECT_EQ(OptionsTwo.getReportParents(), 1);
255 // '--select' options.
256 TEST(CommandLineOptionsTest, selectOptions) {
257 LVOptions OptionsOne;
258 OptionsOne.setSelectIgnoreCase();
259 OptionsOne.setSelectUseRegex();
260 OptionsOne.resolveDependencies();
261 EXPECT_EQ(OptionsOne.getSelectIgnoreCase(), 1);
262 EXPECT_EQ(OptionsOne.getSelectUseRegex(), 1);
265 // '--warning' options.
266 TEST(CommandLineOptionsTest, warningOptions) {
267 LVOptions OptionsOne;
268 OptionsOne.setWarningAll();
269 OptionsOne.resolveDependencies();
270 EXPECT_EQ(OptionsOne.getWarningCoverages(), 1);
271 EXPECT_EQ(OptionsOne.getWarningLines(), 1);
272 EXPECT_EQ(OptionsOne.getWarningLocations(), 1);
273 EXPECT_EQ(OptionsOne.getWarningRanges(), 1);
276 } // namespace