Skip to content

Commit e67c0c3

Browse files
Merge pull request swiftlang#9819 from ian-twilightcoder/apple-target-info
[stable/20240723][Darwin][Driver][clang] arm64-apple-none-macho is missing the Apple macros from arm-apple-none-macho
2 parents e86bfab + 777ce1e commit e67c0c3

File tree

11 files changed

+227
-25
lines changed

11 files changed

+227
-25
lines changed

clang/lib/Basic/Targets.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,15 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple,
135135
case llvm::Triple::aarch64_32:
136136
if (Triple.isOSDarwin())
137137
return std::make_unique<DarwinAArch64TargetInfo>(Triple, Opts);
138+
else if (Triple.isAppleMachO())
139+
return std::make_unique<AppleMachOAArch64TargetInfo>(Triple, Opts);
138140

139141
return nullptr;
140142
case llvm::Triple::aarch64:
141143
if (Triple.isOSDarwin())
142144
return std::make_unique<DarwinAArch64TargetInfo>(Triple, Opts);
145+
else if (Triple.isAppleMachO())
146+
return std::make_unique<AppleMachOAArch64TargetInfo>(Triple, Opts);
143147

144148
switch (os) {
145149
case llvm::Triple::FreeBSD:
@@ -243,6 +247,8 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple,
243247
case llvm::Triple::thumbeb:
244248
if (Triple.isOSDarwin())
245249
return std::make_unique<DarwinARMTargetInfo>(Triple, Opts);
250+
else if (Triple.isAppleMachO())
251+
return std::make_unique<AppleMachOARMTargetInfo>(Triple, Opts);
246252

247253
switch (os) {
248254
case llvm::Triple::Linux:
@@ -534,6 +540,8 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple,
534540
case llvm::Triple::x86:
535541
if (Triple.isOSDarwin())
536542
return std::make_unique<DarwinI386TargetInfo>(Triple, Opts);
543+
else if (Triple.isAppleMachO())
544+
return std::make_unique<AppleMachOI386TargetInfo>(Triple, Opts);
537545

538546
switch (os) {
539547
case llvm::Triple::Linux: {

clang/lib/Basic/Targets/AArch64.cpp

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1652,6 +1652,10 @@ MinGWARM64TargetInfo::MinGWARM64TargetInfo(const llvm::Triple &Triple,
16521652
TheCXXABI.set(TargetCXXABI::GenericAArch64);
16531653
}
16541654

1655+
AppleMachOAArch64TargetInfo::AppleMachOAArch64TargetInfo(
1656+
const llvm::Triple &Triple, const TargetOptions &Opts)
1657+
: AppleMachOTargetInfo<AArch64leTargetInfo>(Triple, Opts) {}
1658+
16551659
DarwinAArch64TargetInfo::DarwinAArch64TargetInfo(const llvm::Triple &Triple,
16561660
const TargetOptions &Opts)
16571661
: DarwinTargetInfo<AArch64leTargetInfo>(Triple, Opts) {
@@ -1676,9 +1680,9 @@ DarwinAArch64TargetInfo::DarwinAArch64TargetInfo(const llvm::Triple &Triple,
16761680
TheCXXABI.set(TargetCXXABI::AppleARM64);
16771681
}
16781682

1679-
void DarwinAArch64TargetInfo::getOSDefines(const LangOptions &Opts,
1680-
const llvm::Triple &Triple,
1681-
MacroBuilder &Builder) const {
1683+
void clang::targets::getAppleMachOAArch64Defines(MacroBuilder &Builder,
1684+
const LangOptions &Opts,
1685+
const llvm::Triple &Triple) {
16821686
Builder.defineMacro("__AARCH64_SIMD__");
16831687
if (Triple.isArch32Bit())
16841688
Builder.defineMacro("__ARM64_ARCH_8_32__");
@@ -1691,7 +1695,20 @@ void DarwinAArch64TargetInfo::getOSDefines(const LangOptions &Opts,
16911695

16921696
if (Triple.isArm64e())
16931697
Builder.defineMacro("__arm64e__", "1");
1698+
}
16941699

1700+
void AppleMachOAArch64TargetInfo::getOSDefines(const LangOptions &Opts,
1701+
const llvm::Triple &Triple,
1702+
MacroBuilder &Builder) const {
1703+
getAppleMachOAArch64Defines(Builder, Opts, Triple);
1704+
AppleMachOTargetInfo<AArch64leTargetInfo>::getOSDefines(Opts, Triple,
1705+
Builder);
1706+
}
1707+
1708+
void DarwinAArch64TargetInfo::getOSDefines(const LangOptions &Opts,
1709+
const llvm::Triple &Triple,
1710+
MacroBuilder &Builder) const {
1711+
getAppleMachOAArch64Defines(Builder, Opts, Triple);
16951712
DarwinTargetInfo<AArch64leTargetInfo>::getOSDefines(Opts, Triple, Builder);
16961713
}
16971714

clang/lib/Basic/Targets/AArch64.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,20 @@ class LLVM_LIBRARY_VISIBILITY AArch64beTargetInfo : public AArch64TargetInfo {
265265
void setDataLayout() override;
266266
};
267267

268+
void getAppleMachOAArch64Defines(MacroBuilder &Builder, const LangOptions &Opts,
269+
const llvm::Triple &Triple);
270+
271+
class LLVM_LIBRARY_VISIBILITY AppleMachOAArch64TargetInfo
272+
: public AppleMachOTargetInfo<AArch64leTargetInfo> {
273+
public:
274+
AppleMachOAArch64TargetInfo(const llvm::Triple &Triple,
275+
const TargetOptions &Opts);
276+
277+
protected:
278+
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple,
279+
MacroBuilder &Builder) const override;
280+
};
281+
268282
class LLVM_LIBRARY_VISIBILITY DarwinAArch64TargetInfo
269283
: public DarwinTargetInfo<AArch64leTargetInfo> {
270284
public:

clang/lib/Basic/Targets/ARM.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1475,6 +1475,16 @@ void CygwinARMTargetInfo::getTargetDefines(const LangOptions &Opts,
14751475
Builder.defineMacro("_GNU_SOURCE");
14761476
}
14771477

1478+
AppleMachOARMTargetInfo::AppleMachOARMTargetInfo(const llvm::Triple &Triple,
1479+
const TargetOptions &Opts)
1480+
: AppleMachOTargetInfo<ARMleTargetInfo>(Triple, Opts) {}
1481+
1482+
void AppleMachOARMTargetInfo::getOSDefines(const LangOptions &Opts,
1483+
const llvm::Triple &Triple,
1484+
MacroBuilder &Builder) const {
1485+
getAppleMachODefines(Builder, Opts, Triple);
1486+
}
1487+
14781488
DarwinARMTargetInfo::DarwinARMTargetInfo(const llvm::Triple &Triple,
14791489
const TargetOptions &Opts)
14801490
: DarwinTargetInfo<ARMleTargetInfo>(Triple, Opts) {

clang/lib/Basic/Targets/ARM.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,17 @@ class LLVM_LIBRARY_VISIBILITY CygwinARMTargetInfo : public ARMleTargetInfo {
300300
MacroBuilder &Builder) const override;
301301
};
302302

303+
class LLVM_LIBRARY_VISIBILITY AppleMachOARMTargetInfo
304+
: public AppleMachOTargetInfo<ARMleTargetInfo> {
305+
protected:
306+
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple,
307+
MacroBuilder &Builder) const override;
308+
309+
public:
310+
AppleMachOARMTargetInfo(const llvm::Triple &Triple,
311+
const TargetOptions &Opts);
312+
};
313+
303314
class LLVM_LIBRARY_VISIBILITY DarwinARMTargetInfo
304315
: public DarwinTargetInfo<ARMleTargetInfo> {
305316
protected:

clang/lib/Basic/Targets/OSTargets.cpp

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,13 @@ using namespace clang::targets;
2020
namespace clang {
2121
namespace targets {
2222

23-
void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts,
24-
const llvm::Triple &Triple, StringRef &PlatformName,
25-
VersionTuple &PlatformMinVersion) {
23+
void getAppleMachODefines(MacroBuilder &Builder, const LangOptions &Opts,
24+
const llvm::Triple &Triple) {
2625
Builder.defineMacro("__APPLE_CC__", "6000");
2726
Builder.defineMacro("__APPLE__");
28-
Builder.defineMacro("__STDC_NO_THREADS__");
2927

3028
// AddressSanitizer doesn't play well with source fortification, which is on
31-
// by default on Darwin.
29+
// by default on Apple platforms.
3230
if (Opts.Sanitize.has(SanitizerKind::Address))
3331
Builder.defineMacro("_FORTIFY_SOURCE", "0");
3432

@@ -39,7 +37,7 @@ void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts,
3937
Builder.defineMacro("__ptrauth_abi_version__",
4038
llvm::utostr(Opts.PointerAuthABIVersion));
4139

42-
// Darwin defines __weak, __strong, and __unsafe_unretained even in C mode.
40+
// Apple defines __weak, __strong, and __unsafe_unretained even in C mode.
4341
if (!Opts.ObjC) {
4442
// __weak is always defined, for use in blocks and with objc pointers.
4543
Builder.defineMacro("__weak", "__attribute__((objc_gc(weak)))");
@@ -55,6 +53,22 @@ void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts,
5553
if (Opts.POSIXThreads)
5654
Builder.defineMacro("_REENTRANT");
5755

56+
// __MACH__ originally meant "will run in a Mach kernel based OS", but it has
57+
// come to also mean "uses Apple Mach-O linking/symbol visibility semantics".
58+
// Notably libc++'s __configuration/platform.h and Swift's shims/Visibility.h
59+
// take __MACH__ for the more general meaning.
60+
if (Triple.isAppleMachO() || Triple.isOSDarwin())
61+
Builder.defineMacro("__MACH__");
62+
}
63+
64+
void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts,
65+
const llvm::Triple &Triple, StringRef &PlatformName,
66+
VersionTuple &PlatformMinVersion) {
67+
getAppleMachODefines(Builder, Opts, Triple);
68+
69+
// Darwin's libc doesn't have threads.h
70+
Builder.defineMacro("__STDC_NO_THREADS__");
71+
5872
// Get the platform type and version number from the triple.
5973
VersionTuple OsVersion;
6074
if (Triple.isMacOSX()) {
@@ -122,9 +136,6 @@ void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts,
122136
assert(OsVersion.getMinor().value_or(0) < 100 &&
123137
OsVersion.getSubminor().value_or(0) < 100 && "Invalid version!");
124138
Builder.defineMacro("__ENVIRONMENT_OS_VERSION_MIN_REQUIRED__", Str);
125-
126-
// Tell users about the kernel if there is one.
127-
Builder.defineMacro("__MACH__");
128139
}
129140

130141
PlatformMinVersion = OsVersion;

clang/lib/Basic/Targets/OSTargets.h

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,39 @@ class LLVM_LIBRARY_VISIBILITY OSTargetInfo : public TgtInfo {
3434
}
3535
};
3636

37+
void getAppleMachODefines(MacroBuilder &Builder, const LangOptions &Opts,
38+
const llvm::Triple &Triple);
39+
3740
void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts,
3841
const llvm::Triple &Triple, StringRef &PlatformName,
3942
VersionTuple &PlatformMinVersion);
4043

4144
template <typename Target>
42-
class LLVM_LIBRARY_VISIBILITY DarwinTargetInfo : public OSTargetInfo<Target> {
45+
class LLVM_LIBRARY_VISIBILITY AppleMachOTargetInfo
46+
: public OSTargetInfo<Target> {
47+
protected:
48+
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple,
49+
MacroBuilder &Builder) const override {
50+
getAppleMachODefines(Builder, Opts, Triple);
51+
}
52+
53+
public:
54+
AppleMachOTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
55+
: OSTargetInfo<Target>(Triple, Opts) {}
56+
57+
const char *getStaticInitSectionSpecifier() const override {
58+
return "__TEXT,__StaticInit,regular,pure_instructions";
59+
}
60+
61+
/// Apple Mach-O does not support protected visibility. Its "default" is very
62+
/// similar to ELF's "protected"; Apple Mach-O requires a "weak" attribute on
63+
/// declarations that can be dynamically replaced.
64+
bool hasProtectedVisibility() const override { return false; }
65+
};
66+
67+
template <typename Target>
68+
class LLVM_LIBRARY_VISIBILITY DarwinTargetInfo
69+
: public AppleMachOTargetInfo<Target> {
4370
protected:
4471
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple,
4572
MacroBuilder &Builder) const override {
@@ -49,7 +76,7 @@ class LLVM_LIBRARY_VISIBILITY DarwinTargetInfo : public OSTargetInfo<Target> {
4976

5077
public:
5178
DarwinTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
52-
: OSTargetInfo<Target>(Triple, Opts) {
79+
: AppleMachOTargetInfo<Target>(Triple, Opts) {
5380
// By default, no TLS, and we list permitted architecture/OS
5481
// combinations.
5582
this->TLSSupported = false;
@@ -82,14 +109,9 @@ class LLVM_LIBRARY_VISIBILITY DarwinTargetInfo : public OSTargetInfo<Target> {
82109

83110
const char *getStaticInitSectionSpecifier() const override {
84111
// FIXME: We should return 0 when building kexts.
85-
return "__TEXT,__StaticInit,regular,pure_instructions";
112+
return AppleMachOTargetInfo<Target>::getStaticInitSectionSpecifier();
86113
}
87114

88-
/// Darwin does not support protected visibility. Darwin's "default"
89-
/// is very similar to ELF's "protected"; Darwin requires a "weak"
90-
/// attribute on declarations that can be dynamically replaced.
91-
bool hasProtectedVisibility() const override { return false; }
92-
93115
unsigned getExnObjectAlignment() const override {
94116
// Older versions of libc++abi guarantee an alignment of only 8-bytes for
95117
// exception objects because of a bug in __cxa_exception that was

clang/lib/Basic/Targets/X86.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,14 @@ class LLVM_LIBRARY_VISIBILITY OpenBSDI386TargetInfo
525525
}
526526
};
527527

528+
class LLVM_LIBRARY_VISIBILITY AppleMachOI386TargetInfo
529+
: public AppleMachOTargetInfo<X86_32TargetInfo> {
530+
public:
531+
AppleMachOI386TargetInfo(const llvm::Triple &Triple,
532+
const TargetOptions &Opts)
533+
: AppleMachOTargetInfo<X86_32TargetInfo>(Triple, Opts) {}
534+
};
535+
528536
class LLVM_LIBRARY_VISIBILITY DarwinI386TargetInfo
529537
: public DarwinTargetInfo<X86_32TargetInfo> {
530538
public:

clang/lib/Frontend/InitPreprocessor.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1498,11 +1498,6 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
14981498
// ELF targets define __ELF__
14991499
if (TI.getTriple().isOSBinFormatELF())
15001500
Builder.defineMacro("__ELF__");
1501-
else if (TI.getTriple().isAppleMachO())
1502-
// Apple MachO targets define __MACH__ even when not using DarwinTargetInfo.
1503-
// Hurd will also define this in some circumstances, but that's done in
1504-
// HurdTargetInfo. Windows targets don't define this.
1505-
Builder.defineMacro("__MACH__");
15061501

15071502
// Target OS macro definitions.
15081503
if (PPOpts.DefineTargetOSMacros) {
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
// RUN: %clang_cc1 -E -dM -triple arm64-apple-macosx15.0.0 -target-cpu apple-m1 %s | FileCheck %s -check-prefix CHECK-MACOSX
2+
3+
// CHECK-MACOSX: #define __APPLE_CC__
4+
// CHECK-MACOSX: #define __APPLE__
5+
// CHECK-MACOSX: #define __ARM_64BIT_STATE 1
6+
// CHECK-MACOSX-NOT: #define __ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__
7+
// CHECK-MACOSX-NOT: #define __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__
8+
// CHECK-MACOSX: #define __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ 150000
9+
// CHECK-MACOSX: #define __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__ 150000
10+
// CHECK-MACOSX-NOT: #define __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__
11+
// CHECK-MACOSX-NOT: #define __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__
12+
// CHECK-MACOSX: #define __MACH__
13+
// CHECK-MACOSX: #define __STDC_NO_THREADS__
14+
15+
// RUN: %clang_cc1 -E -dM -triple arm64-apple-ios18.0.0 -target-cpu apple-a7 %s | FileCheck %s -check-prefix CHECK-IOS
16+
17+
// CHECK-IOS: #define __APPLE_CC__
18+
// CHECK-IOS: #define __APPLE__
19+
// CHECK-IOS: #define __ARM_64BIT_STATE 1
20+
// CHECK-IOS-NOT: #define __ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__
21+
// CHECK-IOS: #define __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ 180000
22+
// CHECK-IOS-NOT: #define __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
23+
// CHECK-IOS: #define __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__ 180000
24+
// CHECK-IOS-NOT: #define __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__
25+
// CHECK-IOS-NOT: #define __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__
26+
// CHECK-IOS: #define __MACH__
27+
// CHECK-IOS: #define __STDC_NO_THREADS__
28+
29+
// RUN: %clang_cc1 -E -dM -triple arm64-apple-watchos11.0.0 -target-cpu apple-s4 %s | FileCheck %s -check-prefix CHECK-WATCHOS
30+
31+
// CHECK-WATCHOS: #define __APPLE_CC__
32+
// CHECK-WATCHOS: #define __APPLE__
33+
// CHECK-WATCHOS: #define __ARM_64BIT_STATE 1
34+
// CHECK-WATCHOS-NOT: #define __ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__
35+
// CHECK-WATCHOS-NOT: #define __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__
36+
// CHECK-WATCHOS-NOT: #define __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
37+
// CHECK-WATCHOS: #define __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__ 110000
38+
// CHECK-WATCHOS-NOT: #define __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__
39+
// CHECK-WATCHOS: #define __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ 110000
40+
// CHECK-WATCHOS: #define __MACH__
41+
// CHECK-WATCHOS: #define __STDC_NO_THREADS__
42+
43+
// RUN: %clang_cc1 -E -dM -triple arm64-apple-tvos18.0.0 -target-cpu apple-a7 %s | FileCheck %s -check-prefix CHECK-TVOS
44+
45+
// CHECK-TVOS: #define __APPLE_CC__
46+
// CHECK-TVOS: #define __APPLE__
47+
// CHECK-TVOS: #define __ARM_64BIT_STATE 1
48+
// CHECK-TVOS-NOT: #define __ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__
49+
// CHECK-TVOS-NOT: #define __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__
50+
// CHECK-TVOS-NOT: #define __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
51+
// CHECK-TVOS: #define __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__ 180000
52+
// CHECK-TVOS: #define __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ 180000
53+
// CHECK-TVOS-NOT: #define __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__
54+
// CHECK-TVOS: #define __MACH__
55+
// CHECK-TVOS: #define __STDC_NO_THREADS__
56+
57+
// RUN: %clang_cc1 -E -dM -triple arm64-apple-driverkit24.0.0 -target-cpu apple-a7 %s | FileCheck %s -check-prefix CHECK-DRIVERKIT
58+
59+
// CHECK-DRIVERKIT: #define __APPLE_CC__
60+
// CHECK-DRIVERKIT: #define __APPLE__
61+
// CHECK-DRIVERKIT: #define __ARM_64BIT_STATE 1
62+
// CHECK-DRIVERKIT: #define __ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__ 240000
63+
// CHECK-DRIVERKIT-NOT: #define __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__
64+
// CHECK-DRIVERKIT-NOT: #define __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
65+
// CHECK-DRIVERKIT: #define __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__ 240000
66+
// CHECK-DRIVERKIT-NOT: #define __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__
67+
// CHECK-DRIVERKIT-NOT: #define __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__
68+
// CHECK-DRIVERKIT: #define __MACH__
69+
// CHECK-DRIVERKIT: #define __STDC_NO_THREADS__
70+
71+
// RUN: %clang_cc1 -E -dM -triple arm64-apple-xros2.0.0 -target-cpu apple-a12 %s | FileCheck %s -check-prefix CHECK-XROS
72+
73+
// CHECK-XROS: #define __APPLE_CC__
74+
// CHECK-XROS: #define __APPLE__
75+
// CHECK-XROS: #define __ARM_64BIT_STATE 1
76+
// CHECK-XROS-NOT: #define __ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__
77+
// CHECK-XROS-NOT: #define __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__
78+
// CHECK-XROS-NOT: #define __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
79+
// CHECK-XROS: #define __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__ 20000
80+
// CHECK-XROS-NOT: #define __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__
81+
// CHECK-XROS-NOT: #define __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__
82+
// CHECK-XROS: #define __MACH__
83+
// CHECK-XROS: #define __STDC_NO_THREADS__

0 commit comments

Comments
 (0)