@@ -208,30 +208,48 @@ std::pair<bool, bool> LangOptions::setTarget(llvm::Triple triple) {
208
208
bool UnsupportedOS = false ;
209
209
210
210
// Set the "os" platform condition.
211
- if (Target.isMacOSX ())
211
+ switch (Target.getOS ()) {
212
+ case llvm::Triple::Darwin:
213
+ case llvm::Triple::MacOSX:
212
214
addPlatformConditionValue (PlatformConditionKind::OS, " OSX" );
213
- else if (Target.isTvOS ())
215
+ break ;
216
+ case llvm::Triple::TvOS:
214
217
addPlatformConditionValue (PlatformConditionKind::OS, " tvOS" );
215
- else if (Target.isWatchOS ())
218
+ break ;
219
+ case llvm::Triple::WatchOS:
216
220
addPlatformConditionValue (PlatformConditionKind::OS, " watchOS" );
217
- else if (Target.isiOS ())
221
+ break ;
222
+ case llvm::Triple::IOS:
218
223
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:
224
232
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:
232
247
addPlatformConditionValue (PlatformConditionKind::OS, " Haiku" );
233
- else
248
+ break ;
249
+ default :
234
250
UnsupportedOS = true ;
251
+ break ;
252
+ }
235
253
236
254
bool UnsupportedArch = false ;
237
255
@@ -268,37 +286,24 @@ std::pair<bool, bool> LangOptions::setTarget(llvm::Triple triple) {
268
286
269
287
// Set the "_endian" platform condition.
270
288
switch (Target.getArch ()) {
289
+ default : llvm_unreachable (" undefined architecture endianness" );
271
290
case llvm::Triple::ArchType::arm:
272
291
case llvm::Triple::ArchType::thumb:
273
- addPlatformConditionValue (PlatformConditionKind::Endianness, " little" );
274
- break ;
275
292
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 ;
281
293
case llvm::Triple::ArchType::ppc64le:
282
- addPlatformConditionValue (PlatformConditionKind::Endianness, " little" );
283
- break ;
284
294
case llvm::Triple::ArchType::x86:
285
- addPlatformConditionValue (PlatformConditionKind::Endianness, " little" );
286
- break ;
287
295
case llvm::Triple::ArchType::x86_64:
288
296
addPlatformConditionValue (PlatformConditionKind::Endianness, " little" );
289
297
break ;
298
+ case llvm::Triple::ArchType::ppc64:
290
299
case llvm::Triple::ArchType::systemz:
291
300
addPlatformConditionValue (PlatformConditionKind::Endianness, " big" );
292
301
break ;
293
- default :
294
- llvm_unreachable (" undefined architecture endianness" );
295
302
}
296
303
297
304
// 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" );
302
307
303
308
// Set the "targetEnvironment" platform condition if targeting a simulator
304
309
// environment. Otherwise _no_ value is present for targetEnvironment; it's
0 commit comments