12#ifndef LLVM_CLANG_LIB_BASIC_TARGETS_OSTARGETS_H
13#define LLVM_CLANG_LIB_BASIC_TARGETS_OSTARGETS_H
20template <
typename TgtInfo>
32 TgtInfo::getTargetDefines(Opts, Builder);
38 const llvm::Triple &Triple);
41 const llvm::Triple &Triple, StringRef &PlatformName,
42 VersionTuple &PlatformMinVersion);
44template <
typename Target>
58 return "__TEXT,__StaticInit,regular,pure_instructions";
74template <
typename Target>
81 this->PlatformMinVersion);
89 this->TLSSupported =
false;
91 if (Triple.isMacOSX())
92 this->TLSSupported = !Triple.isMacOSXVersionLT(10, 7);
93 else if (Triple.isiOS()) {
96 if (Triple.isArch64Bit())
97 this->TLSSupported = !Triple.isOSVersionLT(8);
98 else if (Triple.isArch32Bit()) {
99 if (!Triple.isSimulatorEnvironment())
100 this->TLSSupported = !Triple.isOSVersionLT(9);
102 this->TLSSupported = !Triple.isOSVersionLT(10);
104 }
else if (Triple.isWatchOS()) {
105 if (!Triple.isSimulatorEnvironment())
106 this->TLSSupported = !Triple.isOSVersionLT(2);
108 this->TLSSupported = !Triple.isOSVersionLT(3);
109 }
else if (Triple.isDriverKit()) {
111 }
else if (Triple.isXROS())
112 this->TLSSupported =
true;
113 else if (Triple.isAppleFirmware()) {
114 if (Triple.isAArch64() || Triple.isARM())
115 this->TLSSupported = true;
116 else if (Triple.isThumb()) {
117 switch (Triple.getSubArch()) {
118 case llvm::Triple::NoSubArch:
119 case llvm::Triple::ARMSubArch_v4t:
120 case llvm::Triple::ARMSubArch_v5:
121 case llvm::Triple::ARMSubArch_v5te:
122 case llvm::Triple::ARMSubArch_v6:
123 case llvm::Triple::ARMSubArch_v6k:
124 case llvm::Triple::ARMSubArch_v6m:
129 this->TLSSupported = true;
135 this->MCountName =
"\01mcount";
147 llvm::VersionTuple MinVersion;
152 case llvm::Triple::Darwin:
153 case llvm::Triple::MacOSX:
154 MinVersion = llvm::VersionTuple(10U, 14U);
156 case llvm::Triple::IOS:
157 case llvm::Triple::TvOS:
158 MinVersion = llvm::VersionTuple(12U);
160 case llvm::Triple::WatchOS:
161 MinVersion = llvm::VersionTuple(5U);
163 case llvm::Triple::XROS:
164 MinVersion = llvm::VersionTuple(0);
171 if (
T.getOSVersion() < MinVersion)
177 bool IsSigned)
const final {
179 return BitWidth == 64
191template <
typename Target>
198 Builder.defineMacro(
"__DragonFly__");
199 Builder.defineMacro(
"__DragonFly_cc_version",
"100001");
200 Builder.defineMacro(
"__KPRINTF_ATTRIBUTE__");
201 Builder.defineMacro(
"__tune_i386__");
203 if (this->HasFloat128)
204 Builder.defineMacro(
"__FLOAT128__");
207 Builder.defineMacro(
"__STDC_NO_THREADS__");
213 switch (Triple.getArch()) {
215 case llvm::Triple::x86:
216 case llvm::Triple::x86_64:
217 this->HasFloat128 = true;
218 this->MCountName =
".mcount";
224#ifndef FREEBSD_CC_VERSION
225#define FREEBSD_CC_VERSION 0U
229template <
typename Target>
236 unsigned Release = Triple.getOSMajorVersion();
241 CCVersion = Release * 100000U + 1U;
243 Builder.defineMacro(
"__FreeBSD__", Twine(Release));
244 Builder.defineMacro(
"__FreeBSD_cc_version", Twine(CCVersion));
245 Builder.defineMacro(
"__KPRINTF_ATTRIBUTE__");
247 if (this->HasFloat128)
248 Builder.defineMacro(
"__FLOAT128__");
259 Builder.defineMacro(
"__STDC_MB_MIGHT_NEQ_WC__",
"1");
265 switch (Triple.getArch()) {
266 case llvm::Triple::x86:
267 case llvm::Triple::x86_64:
268 this->HasFloat128 = true;
271 this->MCountName =
".mcount";
273 case llvm::Triple::mips:
274 case llvm::Triple::mipsel:
275 case llvm::Triple::ppc:
276 case llvm::Triple::ppcle:
277 case llvm::Triple::ppc64:
278 case llvm::Triple::ppc64le:
279 this->MCountName =
"_mcount";
281 case llvm::Triple::arm:
282 this->MCountName =
"__mcount";
284 case llvm::Triple::loongarch64:
285 case llvm::Triple::riscv64:
292template <
typename Target>
300 Builder.defineMacro(
"__FreeBSD_kernel__");
301 Builder.defineMacro(
"__GLIBC__");
302 if (Opts.POSIXThreads)
303 Builder.defineMacro(
"_REENTRANT");
305 Builder.defineMacro(
"_GNU_SOURCE");
313template <
typename Target>
319 Builder.defineMacro(
"__HAIKU__");
321 if (this->HasFloat128)
322 Builder.defineMacro(
"__FLOAT128__");
332 switch (Triple.getArch()) {
335 case llvm::Triple::x86:
336 case llvm::Triple::x86_64:
337 this->HasFloat128 = true;
344template <
typename Target>
351 Builder.defineMacro(
"__GNU__");
352 Builder.defineMacro(
"__gnu_hurd__");
353 Builder.defineMacro(
"__MACH__");
354 Builder.defineMacro(
"__GLIBC__");
355 if (Opts.POSIXThreads)
356 Builder.defineMacro(
"_REENTRANT");
358 Builder.defineMacro(
"_GNU_SOURCE");
359 if (this->HasFloat128)
360 Builder.defineMacro(
"__FLOAT128__");
365 switch (Triple.getArch()) {
368 case llvm::Triple::x86:
369 case llvm::Triple::x86_64:
370 this->HasFloat128 = true;
377template <
typename Target>
385 if (Triple.isAndroid()) {
386 Builder.defineMacro(
"__ANDROID__",
"1");
387 this->PlatformName =
"android";
388 this->PlatformMinVersion = Triple.getEnvironmentVersion();
389 const unsigned Maj = this->PlatformMinVersion.getMajor();
391 Builder.defineMacro(
"__ANDROID_MIN_SDK_VERSION__", Twine(Maj));
394 Builder.defineMacro(
"__ANDROID_API__",
"__ANDROID_MIN_SDK_VERSION__");
396 }
else if (Triple.isMlibc()) {
397 Builder.defineMacro(
"__mlibc__");
399 Builder.defineMacro(
"__gnu_linux__");
401 if (Opts.POSIXThreads)
402 Builder.defineMacro(
"_REENTRANT");
404 Builder.defineMacro(
"_GNU_SOURCE");
405 if (this->HasFloat128)
406 Builder.defineMacro(
"__FLOAT128__");
407 if (Triple.isTime64ABI()) {
408 Builder.defineMacro(
"_FILE_OFFSET_BITS",
"64");
409 Builder.defineMacro(
"_TIME_BITS",
"64");
418 switch (Triple.getArch()) {
421 case llvm::Triple::mips:
422 case llvm::Triple::mipsel:
423 case llvm::Triple::mips64:
424 case llvm::Triple::mips64el:
425 case llvm::Triple::ppc:
426 case llvm::Triple::ppcle:
427 case llvm::Triple::ppc64:
428 case llvm::Triple::ppc64le:
429 this->MCountName =
"_mcount";
431 case llvm::Triple::x86:
432 case llvm::Triple::x86_64:
433 this->HasFloat128 = true;
439 return ".text.startup";
444 bool setABI(
const std::string &Name)
override {
450template <
typename Target>
456 Builder.defineMacro(
"__managarm__");
457 if (Triple.getEnvironmentName() ==
"mlibc")
458 Builder.defineMacro(
"__mlibc__");
459 if (Opts.POSIXThreads)
460 Builder.defineMacro(
"_REENTRANT");
462 Builder.defineMacro(
"_GNU_SOURCE");
463 if (this->HasFloat128)
464 Builder.defineMacro(
"__FLOAT128__");
470 switch (Triple.getArch()) {
473 case llvm::Triple::x86:
474 case llvm::Triple::x86_64:
475 this->HasFloat128 = true;
482template <
typename Target>
488 Builder.defineMacro(
"__NetBSD__");
489 Builder.defineMacro(
"__unix__");
490 if (Opts.POSIXThreads)
491 Builder.defineMacro(
"_REENTRANT");
492 if (this->HasFloat128)
493 Builder.defineMacro(
"__FLOAT128__");
499 this->MCountName =
"__mcount";
500 switch (Triple.getArch()) {
503 case llvm::Triple::x86:
504 case llvm::Triple::x86_64:
505 this->HasFloat128 = true;
512template <
typename Target>
519 Builder.defineMacro(
"__OpenBSD__");
521 if (Opts.POSIXThreads)
522 Builder.defineMacro(
"_REENTRANT");
523 if (this->HasFloat128)
524 Builder.defineMacro(
"__FLOAT128__");
527 Builder.defineMacro(
"__STDC_NO_THREADS__");
533 this->WCharType = this->WIntType = this->SignedInt;
536 switch (Triple.getArch()) {
537 case llvm::Triple::x86:
538 case llvm::Triple::x86_64:
539 this->HasFloat128 = true;
542 this->MCountName =
"__mcount";
544 case llvm::Triple::mips64:
545 case llvm::Triple::mips64el:
546 case llvm::Triple::ppc:
547 case llvm::Triple::ppc64:
548 case llvm::Triple::ppc64le:
549 case llvm::Triple::sparcv9:
550 this->MCountName =
"_mcount";
552 case llvm::Triple::loongarch64:
553 case llvm::Triple::riscv64:
560template <
typename Target>
566 Builder.defineMacro(
"__PPU__");
567 Builder.defineMacro(
"__CELLOS_LV2__");
568 Builder.defineMacro(
"__LP32__");
569 Builder.defineMacro(
"_ARCH_PPC64");
570 Builder.defineMacro(
"__powerpc64__");
576 this->LongWidth = this->LongAlign = 32;
577 this->PointerWidth = this->PointerAlign = 32;
581 this->resetDataLayout();
586template <
typename Target>
591 Builder.defineMacro(
"__FreeBSD__",
"9");
592 Builder.defineMacro(
"__FreeBSD_cc_version",
"900001");
593 Builder.defineMacro(
"__KPRINTF_ATTRIBUTE__");
595 Builder.defineMacro(
"__SCE__");
596 Builder.defineMacro(
"__STDC_NO_COMPLEX__");
597 Builder.defineMacro(
"__STDC_NO_THREADS__");
607 this->MaxTLSAlign = 256;
611 this->UseExplicitBitFieldAlignment =
false;
613 this->MCountName =
".mcount";
614 this->NewAlign = 256;
615 this->SuitableAlign = 256;
629template <
typename Target>
637 Builder.defineMacro(
"__ORBIS__");
645template <
typename Target>
653 Builder.defineMacro(
"__PROSPERO__");
661template <
typename Target>
668 Builder.defineMacro(
"__rtems__");
670 Builder.defineMacro(
"_GNU_SOURCE");
676 switch (Triple.getArch()) {
678 case llvm::Triple::x86:
681 case llvm::Triple::mips:
682 case llvm::Triple::mipsel:
683 case llvm::Triple::ppc:
684 case llvm::Triple::ppc64:
685 case llvm::Triple::ppc64le:
688 case llvm::Triple::arm:
696template <
typename Target>
703 Builder.defineMacro(
"__svr4__");
704 Builder.defineMacro(
"__SVR4");
705 if (Opts.CPlusPlus) {
706 Builder.defineMacro(
"__C99FEATURES__");
707 Builder.defineMacro(
"_FILE_OFFSET_BITS",
"64");
710 Builder.defineMacro(
"_LARGEFILE_SOURCE");
711 Builder.defineMacro(
"_LARGEFILE64_SOURCE");
712 Builder.defineMacro(
"__EXTENSIONS__");
713 if (Opts.POSIXThreads)
714 Builder.defineMacro(
"_REENTRANT");
715 if (this->HasFloat128)
716 Builder.defineMacro(
"__FLOAT128__");
722 if (this->PointerWidth == 64) {
723 this->WCharType = this->WIntType = this->SignedInt;
725 this->WCharType = this->WIntType = this->SignedLong;
727 switch (Triple.getArch()) {
730 case llvm::Triple::x86:
731 case llvm::Triple::x86_64:
732 this->HasFloat128 = true;
739template <
typename Target>
745 Builder.defineMacro(
"_IBMR2");
746 Builder.defineMacro(
"_POWER");
747 Builder.defineMacro(
"__THW_BIG_ENDIAN__");
749 Builder.defineMacro(
"_AIX");
750 Builder.defineMacro(
"__TOS_AIX__");
751 Builder.defineMacro(
"__HOS_AIX__");
754 Builder.defineMacro(
"__STDC_NO_ATOMICS__");
755 Builder.defineMacro(
"__STDC_NO_THREADS__");
758 if (Opts.EnableAIXExtendedAltivecABI)
759 Builder.defineMacro(
"__EXTABI__");
761 VersionTuple OsVersion = Triple.getOSVersion();
765 if (OsVersion >= VersionTuple(3, 2))
766 Builder.defineMacro(
"_AIX32");
767 if (OsVersion >= VersionTuple(4, 1))
768 Builder.defineMacro(
"_AIX41");
769 if (OsVersion >= VersionTuple(4, 3))
770 Builder.defineMacro(
"_AIX43");
771 if (OsVersion >= VersionTuple(5, 0))
772 Builder.defineMacro(
"_AIX50");
773 if (OsVersion >= VersionTuple(5, 1))
774 Builder.defineMacro(
"_AIX51");
775 if (OsVersion >= VersionTuple(5, 2))
776 Builder.defineMacro(
"_AIX52");
777 if (OsVersion >= VersionTuple(5, 3))
778 Builder.defineMacro(
"_AIX53");
779 if (OsVersion >= VersionTuple(6, 1))
780 Builder.defineMacro(
"_AIX61");
781 if (OsVersion >= VersionTuple(7, 1))
782 Builder.defineMacro(
"_AIX71");
783 if (OsVersion >= VersionTuple(7, 2))
784 Builder.defineMacro(
"_AIX72");
785 if (OsVersion >= VersionTuple(7, 3))
786 Builder.defineMacro(
"_AIX73");
789 Builder.defineMacro(
"_LONG_LONG");
791 if (Opts.POSIXThreads) {
792 Builder.defineMacro(
"_THREAD_SAFE");
795 if (this->PointerWidth == 64) {
796 Builder.defineMacro(
"__64BIT__");
801 if (Opts.CPlusPlus && Opts.WChar) {
802 Builder.defineMacro(
"_WCHAR_T");
809 this->MCountName =
"__mcount";
810 this->TheCXXABI.set(TargetCXXABI::XL);
812 if (this->PointerWidth == 64) {
813 this->WCharType = this->UnsignedInt;
815 this->WCharType = this->UnsignedShort;
817 this->UseZeroLengthBitfieldAlignment =
true;
833template <
typename Target>
839 Builder.defineMacro(
"_LONG_LONG");
840 Builder.defineMacro(
"__370__");
841 Builder.defineMacro(
"__BFP__");
843 Builder.defineMacro(
"__BOOL__");
844 Builder.defineMacro(
"__COMPILER_VER__",
"0x50000000");
845 Builder.defineMacro(
"__LONGNAME__");
846 Builder.defineMacro(
"__MVS__");
847 Builder.defineMacro(
"__THW_370__");
848 Builder.defineMacro(
"__THW_BIG_ENDIAN__");
849 Builder.defineMacro(
"__TOS_390__");
850 Builder.defineMacro(
"__TOS_MVS__");
851 Builder.defineMacro(
"__XPLINK__");
853 if (this->PointerWidth == 64)
854 Builder.defineMacro(
"__64BIT__");
856 if (Opts.CPlusPlus && Opts.WChar) {
859 Builder.defineMacro(
"__wchar_t");
862 this->PlatformName = llvm::Triple::getOSTypeName(Triple.getOS());
869 this->MaxAlignedAttribute = 128;
870 this->UseBitFieldTypeAlignment =
false;
871 this->UseZeroLengthBitfieldAlignment =
true;
872 this->UseLeadingZeroLengthBitfield =
false;
873 this->ZeroLengthBitfieldBoundary = 32;
874 this->TheCXXABI.set(TargetCXXABI::XL);
883template <
typename Target>
888 Builder.defineMacro(
"__UEFI__");
896 this->UseMicrosoftManglingForC =
true;
900void addWindowsDefines(
const llvm::Triple &Triple,
const LangOptions &Opts,
904template <
typename Target>
917 this->UseMicrosoftManglingForC =
true;
922 const llvm::Triple &Triple);
925template <
typename Target>
931 this->PlatformName =
"fuchsia";
932 this->PlatformMinVersion = VersionTuple(Opts.FuchsiaAPILevel);
939 this->MCountName =
"__mcount";
940 this->TheCXXABI.set(TargetCXXABI::Fuchsia);
945template <
typename Target>
952 if (Opts.POSIXThreads)
953 Builder.defineMacro(
"_REENTRANT");
956 Builder.defineMacro(
"_GNU_SOURCE");
958 Builder.defineMacro(
"__FLOAT128__");
965 this->MCountName =
"__mcount";
966 this->TheCXXABI.set(TargetCXXABI::WebAssembly);
967 this->HasFloat128 =
true;
972template <
typename Target>
975 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
978 Builder.defineMacro(
"__wasi__");
979 Builder.defineMacro(
"__wasip1__");
987template <
typename Target>
990 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
993 Builder.defineMacro(
"__wasi__");
994 Builder.defineMacro(
"__wasip2__");
1002template <
typename Target>
1005 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
1008 Builder.defineMacro(
"__wasi__");
1009 Builder.defineMacro(
"__wasip3__");
1017template <
typename Target>
1020 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
1026 Builder.defineMacro(
"__wali__");
1034template <
typename Target>
1037 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
1041 Builder.defineMacro(
"__EMSCRIPTEN__");
1042 if (Opts.POSIXThreads)
1043 Builder.defineMacro(
"__EMSCRIPTEN_PTHREADS__");
1055 this->LongDoubleAlign = 64;
1056 this->Float128Align = 64;
1061template <
typename Target>
1070 if (Triple.isOHOSFamily()) {
1071 Builder.defineMacro(
"__OHOS_FAMILY__",
"1");
1073 auto Version = Triple.getEnvironmentVersion();
1074 this->PlatformName =
"ohos";
1075 this->PlatformMinVersion = Version;
1076 Builder.defineMacro(
"__OHOS_Major__", Twine(Version.getMajor()));
1077 if (
auto Minor = Version.getMinor())
1078 Builder.defineMacro(
"__OHOS_Minor__", Twine(*Minor));
1079 if (
auto Subminor = Version.getSubminor())
1080 Builder.defineMacro(
"__OHOS_Micro__", Twine(*Subminor));
1083 if (Triple.isOpenHOS())
1084 Builder.defineMacro(
"__OHOS__");
1086 if (Triple.isOSLinux()) {
1088 }
else if (Triple.isOSLiteOS()) {
1089 Builder.defineMacro(
"__LITEOS__");
1092 if (Opts.POSIXThreads)
1093 Builder.defineMacro(
"_REENTRANT");
1095 Builder.defineMacro(
"_GNU_SOURCE");
1096 if (this->HasFloat128)
1097 Builder.defineMacro(
"__FLOAT128__");
1105 switch (Triple.getArch()) {
1108 case llvm::Triple::x86:
1109 case llvm::Triple::x86_64:
1110 this->HasFloat128 = true;
1116 return ".text.startup";
1121template <
typename Target>
1126 Builder.defineMacro(
"__qurt__");
1128 Builder.defineMacro(
"_GNU_SOURCE");
1136template <
typename Target>
1141 Builder.defineMacro(
"__h2__");
1143 Builder.defineMacro(
"_GNU_SOURCE");
1151template <
typename Target>
1156 Builder.defineMacro(
"__serenity__");
static StringRef getTriple(const Command &Job)
#define FREEBSD_CC_VERSION
FPEvalMethodKind
Possible float expression evaluation method choices.
@ FEM_Double
Use the type double for fp arithmetic.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
virtual IntType getLeastIntTypeByWidth(unsigned BitWidth, bool IsSigned) const
Return the smallest integer type with at least the specified width.
Options for controlling the target.
AIXTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
bool defaultsToAIXPowerAlignment() const override
LangOptions::FPEvalMethodKind getFPEvalMethod() const override
bool areDefaultedSMFStillPOD(const LangOptions &) const override
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
const char * getStaticInitSectionSpecifier() const override
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
AppleMachOTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
bool hasProtectedVisibility() const override
Apple Mach-O does not support protected visibility.
VTableUniquenessKind getVTableUniqueness() const override
Apple Mach-O can autohide a vague-linkage vtable so that each image gets its own copy,...
bool areDefaultedSMFStillPOD(const LangOptions &) const override
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
unsigned getExnObjectAlignment() const override
TargetInfo::IntType getLeastIntTypeByWidth(unsigned BitWidth, bool IsSigned) const final
DarwinTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
const char * getStaticInitSectionSpecifier() const override
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
DragonFlyBSDTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
EmscriptenTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
FreeBSDTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
FuchsiaTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
HaikuTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
HurdTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
LinuxTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
bool setABI(const std::string &Name) override
const char * getStaticInitSectionSpecifier() const override
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
ManagarmTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
NetBSDTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
const char * getStaticInitSectionSpecifier() const override
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
OHOSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
virtual void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const =0
void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override
OSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
OpenBSDTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
PS3PPUTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
bool areDefaultedSMFStillPOD(const LangOptions &) const override
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
TargetInfo::CallingConvCheckResult checkCallingConvention(CallingConv CC) const override
PSOSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
RTEMSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
SerenityTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
SolarisTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
UEFITargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
WebAssemblyOSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
WindowsTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
bool areDefaultedSMFStillPOD(const LangOptions &) const override
void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override
ZOSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
void addWindowsDefines(const llvm::Triple &Triple, const LangOptions &Opts, MacroBuilder &Builder)
void getFuchsiaDefines(MacroBuilder &Builder, const LangOptions &Opts, const llvm::Triple &Triple)
void getAppleMachODefines(MacroBuilder &Builder, const LangOptions &Opts, const llvm::Triple &Triple)
LLVM_LIBRARY_VISIBILITY void DefineStd(clang::MacroBuilder &Builder, llvm::StringRef MacroName, const clang::LangOptions &Opts)
Define a macro name and standard variants.
void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts, const llvm::Triple &Triple, StringRef &PlatformName, VersionTuple &PlatformMinVersion)
Top level wrappers for InstallAPI frontend operations.
VTableUniquenessKind
A target's ABI policy for whether a class's vtable can be assumed to have a unique address program-wi...
@ UniqueIfStrongLinkage
A vtable with strong linkage (e.g., a class with a key function) is unique, but a vague-linkage (weak...
if(T->getSizeExpr()) TRY_TO(TraverseStmt(const_cast< Expr * >(T -> getSizeExpr())))
const FunctionProtoType * T
CallingConv
CallingConv - Specifies the calling convention that a function uses.
IntType
===-— Target Data Type Query Methods ----------------------------—===//