Skip to content

Commit dd2c98b

Browse files
Apply suggestions
1 parent d46aa35 commit dd2c98b

File tree

3 files changed

+18
-17
lines changed

3 files changed

+18
-17
lines changed

clang/include/clang/Analysis/CFG.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1251,7 +1251,7 @@ class CFG {
12511251
bool MarkElidedCXXConstructors = false;
12521252
bool AddVirtualBaseBranches = false;
12531253
bool OmitImplicitValueInitializers = false;
1254-
bool SwitchKeepDefaultCoveredEnum = false;
1254+
bool AssumeReachableDefaultInSwitchStatements = false;
12551255

12561256
BuildOptions() = default;
12571257

clang/lib/Analysis/CFG.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4520,9 +4520,9 @@ CFGBlock *CFGBuilder::VisitSwitchStmt(SwitchStmt *Terminator) {
45204520
// BuildOpts.SwitchReqDefaultCoveredEnum is true.
45214521
bool SwitchAlwaysHasSuccessor = false;
45224522
SwitchAlwaysHasSuccessor |= switchExclusivelyCovered;
4523-
SwitchAlwaysHasSuccessor |= !BuildOpts.SwitchKeepDefaultCoveredEnum &&
4524-
Terminator->isAllEnumCasesCovered() &&
4525-
Terminator->getSwitchCaseList();
4523+
SwitchAlwaysHasSuccessor |=
4524+
!BuildOpts.AssumeReachableDefaultInSwitchStatements &&
4525+
Terminator->isAllEnumCasesCovered() && Terminator->getSwitchCaseList();
45264526
addSuccessor(SwitchTerminatedBlock, DefaultCaseBlock,
45274527
!SwitchAlwaysHasSuccessor);
45284528

clang/unittests/Analysis/CFGTest.cpp

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ TEST(CFG, SwitchCoveredEnumNoDefault) {
107107
}
108108
)";
109109
CFG::BuildOptions Options;
110-
Options.SwitchKeepDefaultCoveredEnum = true;
110+
Options.AssumeReachableDefaultInSwitchStatements = true;
111111
BuildResult B = BuildCFG(Code, Options);
112112
EXPECT_EQ(BuildResult::BuiltCFG, B.getStatus());
113113

@@ -143,24 +143,25 @@ TEST(CFG, SwitchCoveredEnumNoDefault) {
143143
// [B0 (EXIT)]
144144
// Preds (3): B1 B3 B4
145145

146-
const auto &Entry = B.getCFG()->getEntry();
147-
EXPECT_EQ(1u, Entry.succ_size());
146+
auto *CFG = B.getCFG();
147+
const auto &Entry = CFG->getEntry();
148+
ASSERT_EQ(1u, Entry.succ_size());
148149
// First successor of Entry is the switch
149150
CFGBlock *SwitchBlock = *Entry.succ_begin();
150-
EXPECT_EQ(3u, SwitchBlock->succ_size());
151+
ASSERT_EQ(3u, SwitchBlock->succ_size());
151152
// Last successor of the switch is after the switch
152153
auto NoCaseSucc = SwitchBlock->succ_rbegin();
153154
EXPECT_TRUE(NoCaseSucc->isReachable());
154155

155156
// Checking that the same node is Unreachable without this setting
156-
Options.SwitchKeepDefaultCoveredEnum = false;
157+
Options.AssumeReachableDefaultInSwitchStatements = false;
157158
B = BuildCFG(Code, Options);
158159
EXPECT_EQ(BuildResult::BuiltCFG, B.getStatus());
159160

160161
const auto &Entry2 = B.getCFG()->getEntry();
161-
EXPECT_EQ(1u, Entry2.succ_size());
162+
ASSERT_EQ(1u, Entry2.succ_size());
162163
CFGBlock *SwitchBlock2 = *Entry2.succ_begin();
163-
EXPECT_EQ(3u, SwitchBlock2->succ_size());
164+
ASSERT_EQ(3u, SwitchBlock2->succ_size());
164165
auto NoCaseSucc2 = SwitchBlock2->succ_rbegin();
165166
EXPECT_FALSE(NoCaseSucc2->isReachable());
166167
}
@@ -181,7 +182,7 @@ TEST(CFG, SwitchCoveredEnumWithDefault) {
181182
}
182183
)";
183184
CFG::BuildOptions Options;
184-
Options.SwitchKeepDefaultCoveredEnum = true;
185+
Options.AssumeReachableDefaultInSwitchStatements = true;
185186
BuildResult B = BuildCFG(Code, Options);
186187
EXPECT_EQ(BuildResult::BuiltCFG, B.getStatus());
187188

@@ -224,23 +225,23 @@ TEST(CFG, SwitchCoveredEnumWithDefault) {
224225
// Preds (4): B1 B3 B4 B5
225226

226227
const auto &Entry = B.getCFG()->getEntry();
227-
EXPECT_EQ(1u, Entry.succ_size());
228+
ASSERT_EQ(1u, Entry.succ_size());
228229
// First successor of Entry is the switch
229230
CFGBlock *SwitchBlock = *Entry.succ_begin();
230-
EXPECT_EQ(3u, SwitchBlock->succ_size());
231+
ASSERT_EQ(3u, SwitchBlock->succ_size());
231232
// Last successor of the switch is the default branch
232233
auto defaultBlock = SwitchBlock->succ_rbegin();
233234
EXPECT_TRUE(defaultBlock->isReachable());
234235

235236
// Checking that the same node is Unreachable without this setting
236-
Options.SwitchKeepDefaultCoveredEnum = false;
237+
Options.AssumeReachableDefaultInSwitchStatements = false;
237238
B = BuildCFG(Code, Options);
238239
EXPECT_EQ(BuildResult::BuiltCFG, B.getStatus());
239240

240241
const auto &Entry2 = B.getCFG()->getEntry();
241-
EXPECT_EQ(1u, Entry2.succ_size());
242+
ASSERT_EQ(1u, Entry2.succ_size());
242243
CFGBlock *SwitchBlock2 = *Entry2.succ_begin();
243-
EXPECT_EQ(3u, SwitchBlock2->succ_size());
244+
ASSERT_EQ(3u, SwitchBlock2->succ_size());
244245
auto defaultBlock2 = SwitchBlock2->succ_rbegin();
245246
EXPECT_FALSE(defaultBlock2->isReachable());
246247
}

0 commit comments

Comments
 (0)