Skip to content

Commit b6db784

Browse files
committed
Basic: convert cascading ifs to switch (NFC)
Switch over `Triple::getOS` instead of a series of cascading `if`s. This simplifies the handling of adding new entries. It also makes the precedence ordering more explicit.
1 parent 5a862e4 commit b6db784

File tree

1 file changed

+34
-17
lines changed

1 file changed

+34
-17
lines changed

lib/Basic/LangOptions.cpp

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -208,30 +208,47 @@ std::pair<bool, bool> LangOptions::setTarget(llvm::Triple triple) {
208208
bool UnsupportedOS = false;
209209

210210
// Set the "os" platform condition.
211-
if (Target.isMacOSX())
211+
switch (Target.getOS()) {
212+
case llvm::Triple::MacOSX:
212213
addPlatformConditionValue(PlatformConditionKind::OS, "OSX");
213-
else if (Target.isTvOS())
214+
break;
215+
case llvm::Triple::TvOS:
214216
addPlatformConditionValue(PlatformConditionKind::OS, "tvOS");
215-
else if (Target.isWatchOS())
217+
break;
218+
case llvm::Triple::WatchOS:
216219
addPlatformConditionValue(PlatformConditionKind::OS, "watchOS");
217-
else if (Target.isiOS())
220+
break;
221+
case llvm::Triple::IOS:
218222
addPlatformConditionValue(PlatformConditionKind::OS, "iOS");
219-
else if (Target.isAndroid())
220-
addPlatformConditionValue(PlatformConditionKind::OS, "Android");
221-
else if (Target.isOSLinux())
222-
addPlatformConditionValue(PlatformConditionKind::OS, "Linux");
223-
else if (Target.isOSFreeBSD())
223+
break;
224+
case llvm::Triple::Linux:
225+
if (Target.getEnvironment() == llvm::Triple::Android)
226+
addPlatformConditionValue(PlatformConditionKind::OS, "Android");
227+
else
228+
addPlatformConditionValue(PlatformConditionKind::OS, "Linux");
229+
break;
230+
case llvm::Triple::FreeBSD:
224231
addPlatformConditionValue(PlatformConditionKind::OS, "FreeBSD");
225-
else if (Target.isWindowsCygwinEnvironment())
226-
addPlatformConditionValue(PlatformConditionKind::OS, "Cygwin");
227-
else if (Target.isOSWindows())
228-
addPlatformConditionValue(PlatformConditionKind::OS, "Windows");
229-
else if (Target.isPS4())
230-
addPlatformConditionValue(PlatformConditionKind::OS, "PS4");
231-
else if (Target.isOSHaiku())
232+
break;
233+
case llvm::Triple::Win32:
234+
if (Target.getEnvironment() == llvm::Triple::Cygnus)
235+
addPlatformConditionValue(PlatformConditionKind::OS, "Cygwin");
236+
else
237+
addPlatformConditionValue(PlatformConditionKind::OS, "Windows");
238+
break;
239+
case llvm::Triple::PS4:
240+
if (Target.getVendor() == llvm::Triple::SCEI)
241+
addPlatformConditionValue(PlatformConditionKind::OS, "PS4");
242+
else
243+
UnsupportedOS = false;
244+
break;
245+
case llvm::Triple::Haiku:
232246
addPlatformConditionValue(PlatformConditionKind::OS, "Haiku");
233-
else
247+
break;
248+
default:
234249
UnsupportedOS = true;
250+
break;
251+
}
235252

236253
bool UnsupportedArch = false;
237254

0 commit comments

Comments
 (0)