Skip to content

Commit 98dcc5e

Browse files
authored
Merge pull request #28457 from compnerd/basic-cleanup
cleanup LangOptions
2 parents 1390576 + 851f877 commit 98dcc5e

File tree

2 files changed

+40
-42
lines changed

2 files changed

+40
-42
lines changed

include/swift/Basic/LangOptions.h

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -296,20 +296,13 @@ namespace swift {
296296
/// This is only implemented on certain OSs. If no target has been
297297
/// configured, returns v0.0.0.
298298
llvm::VersionTuple getMinPlatformVersion() const {
299-
unsigned major, minor, revision;
299+
unsigned major = 0, minor = 0, revision = 0;
300300
if (Target.isMacOSX()) {
301301
Target.getMacOSXVersion(major, minor, revision);
302302
} else if (Target.isiOS()) {
303303
Target.getiOSVersion(major, minor, revision);
304304
} else if (Target.isWatchOS()) {
305305
Target.getOSVersion(major, minor, revision);
306-
} else if (Target.isOSLinux() || Target.isOSFreeBSD() ||
307-
Target.isAndroid() || Target.isOSWindows() ||
308-
Target.isPS4() || Target.isOSHaiku() ||
309-
Target.getTriple().empty()) {
310-
major = minor = revision = 0;
311-
} else {
312-
llvm_unreachable("Unsupported target OS");
313306
}
314307
return llvm::VersionTuple(major, minor, revision);
315308
}

lib/Basic/LangOptions.cpp

Lines changed: 39 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -208,30 +208,48 @@ 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::Darwin:
213+
case llvm::Triple::MacOSX:
212214
addPlatformConditionValue(PlatformConditionKind::OS, "OSX");
213-
else if (Target.isTvOS())
215+
break;
216+
case llvm::Triple::TvOS:
214217
addPlatformConditionValue(PlatformConditionKind::OS, "tvOS");
215-
else if (Target.isWatchOS())
218+
break;
219+
case llvm::Triple::WatchOS:
216220
addPlatformConditionValue(PlatformConditionKind::OS, "watchOS");
217-
else if (Target.isiOS())
221+
break;
222+
case llvm::Triple::IOS:
218223
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())
224+
break;
225+
case llvm::Triple::Linux:
226+
if (Target.getEnvironment() == llvm::Triple::Android)
227+
addPlatformConditionValue(PlatformConditionKind::OS, "Android");
228+
else
229+
addPlatformConditionValue(PlatformConditionKind::OS, "Linux");
230+
break;
231+
case llvm::Triple::FreeBSD:
224232
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())
233+
break;
234+
case llvm::Triple::Win32:
235+
if (Target.getEnvironment() == llvm::Triple::Cygnus)
236+
addPlatformConditionValue(PlatformConditionKind::OS, "Cygwin");
237+
else
238+
addPlatformConditionValue(PlatformConditionKind::OS, "Windows");
239+
break;
240+
case llvm::Triple::PS4:
241+
if (Target.getVendor() == llvm::Triple::SCEI)
242+
addPlatformConditionValue(PlatformConditionKind::OS, "PS4");
243+
else
244+
UnsupportedOS = false;
245+
break;
246+
case llvm::Triple::Haiku:
232247
addPlatformConditionValue(PlatformConditionKind::OS, "Haiku");
233-
else
248+
break;
249+
default:
234250
UnsupportedOS = true;
251+
break;
252+
}
235253

236254
bool UnsupportedArch = false;
237255

@@ -268,37 +286,24 @@ std::pair<bool, bool> LangOptions::setTarget(llvm::Triple triple) {
268286

269287
// Set the "_endian" platform condition.
270288
switch (Target.getArch()) {
289+
default: llvm_unreachable("undefined architecture endianness");
271290
case llvm::Triple::ArchType::arm:
272291
case llvm::Triple::ArchType::thumb:
273-
addPlatformConditionValue(PlatformConditionKind::Endianness, "little");
274-
break;
275292
case llvm::Triple::ArchType::aarch64:
276-
addPlatformConditionValue(PlatformConditionKind::Endianness, "little");
277-
break;
278-
case llvm::Triple::ArchType::ppc64:
279-
addPlatformConditionValue(PlatformConditionKind::Endianness, "big");
280-
break;
281293
case llvm::Triple::ArchType::ppc64le:
282-
addPlatformConditionValue(PlatformConditionKind::Endianness, "little");
283-
break;
284294
case llvm::Triple::ArchType::x86:
285-
addPlatformConditionValue(PlatformConditionKind::Endianness, "little");
286-
break;
287295
case llvm::Triple::ArchType::x86_64:
288296
addPlatformConditionValue(PlatformConditionKind::Endianness, "little");
289297
break;
298+
case llvm::Triple::ArchType::ppc64:
290299
case llvm::Triple::ArchType::systemz:
291300
addPlatformConditionValue(PlatformConditionKind::Endianness, "big");
292301
break;
293-
default:
294-
llvm_unreachable("undefined architecture endianness");
295302
}
296303

297304
// Set the "runtime" platform condition.
298-
if (EnableObjCInterop)
299-
addPlatformConditionValue(PlatformConditionKind::Runtime, "_ObjC");
300-
else
301-
addPlatformConditionValue(PlatformConditionKind::Runtime, "_Native");
305+
addPlatformConditionValue(PlatformConditionKind::Runtime,
306+
EnableObjCInterop ? "_ObjC" : "_Native");
302307

303308
// Set the "targetEnvironment" platform condition if targeting a simulator
304309
// environment. Otherwise _no_ value is present for targetEnvironment; it's

0 commit comments

Comments
 (0)