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 this->TLSSupported =
true;
116 this->MCountName =
"\01mcount";
128 llvm::VersionTuple MinVersion;
133 case llvm::Triple::Darwin:
134 case llvm::Triple::MacOSX:
135 MinVersion = llvm::VersionTuple(10U, 14U);
137 case llvm::Triple::IOS:
138 case llvm::Triple::TvOS:
139 MinVersion = llvm::VersionTuple(12U);
141 case llvm::Triple::WatchOS:
142 MinVersion = llvm::VersionTuple(5U);
144 case llvm::Triple::XROS:
145 MinVersion = llvm::VersionTuple(0);
152 if (
T.getOSVersion() < MinVersion)
158 bool IsSigned)
const final {
160 return BitWidth == 64
172template <
typename Target>
179 Builder.defineMacro(
"__DragonFly__");
180 Builder.defineMacro(
"__DragonFly_cc_version",
"100001");
181 Builder.defineMacro(
"__KPRINTF_ATTRIBUTE__");
182 Builder.defineMacro(
"__tune_i386__");
184 if (this->HasFloat128)
185 Builder.defineMacro(
"__FLOAT128__");
188 Builder.defineMacro(
"__STDC_NO_THREADS__");
194 switch (Triple.getArch()) {
196 case llvm::Triple::x86:
197 case llvm::Triple::x86_64:
198 this->HasFloat128 = true;
199 this->MCountName =
".mcount";
205#ifndef FREEBSD_CC_VERSION
206#define FREEBSD_CC_VERSION 0U
210template <
typename Target>
217 unsigned Release = Triple.getOSMajorVersion();
222 CCVersion = Release * 100000U + 1U;
224 Builder.defineMacro(
"__FreeBSD__", Twine(Release));
225 Builder.defineMacro(
"__FreeBSD_cc_version", Twine(CCVersion));
226 Builder.defineMacro(
"__KPRINTF_ATTRIBUTE__");
228 if (this->HasFloat128)
229 Builder.defineMacro(
"__FLOAT128__");
240 Builder.defineMacro(
"__STDC_MB_MIGHT_NEQ_WC__",
"1");
246 switch (Triple.getArch()) {
247 case llvm::Triple::x86:
248 case llvm::Triple::x86_64:
249 this->HasFloat128 = true;
252 this->MCountName =
".mcount";
254 case llvm::Triple::mips:
255 case llvm::Triple::mipsel:
256 case llvm::Triple::ppc:
257 case llvm::Triple::ppcle:
258 case llvm::Triple::ppc64:
259 case llvm::Triple::ppc64le:
260 this->MCountName =
"_mcount";
262 case llvm::Triple::arm:
263 this->MCountName =
"__mcount";
265 case llvm::Triple::loongarch64:
266 case llvm::Triple::riscv64:
273template <
typename Target>
281 Builder.defineMacro(
"__FreeBSD_kernel__");
282 Builder.defineMacro(
"__GLIBC__");
283 if (Opts.POSIXThreads)
284 Builder.defineMacro(
"_REENTRANT");
286 Builder.defineMacro(
"_GNU_SOURCE");
294template <
typename Target>
300 Builder.defineMacro(
"__HAIKU__");
302 if (this->HasFloat128)
303 Builder.defineMacro(
"__FLOAT128__");
313 switch (Triple.getArch()) {
316 case llvm::Triple::x86:
317 case llvm::Triple::x86_64:
318 this->HasFloat128 = true;
325template <
typename Target>
332 Builder.defineMacro(
"__GNU__");
333 Builder.defineMacro(
"__gnu_hurd__");
334 Builder.defineMacro(
"__MACH__");
335 Builder.defineMacro(
"__GLIBC__");
336 if (Opts.POSIXThreads)
337 Builder.defineMacro(
"_REENTRANT");
339 Builder.defineMacro(
"_GNU_SOURCE");
340 if (this->HasFloat128)
341 Builder.defineMacro(
"__FLOAT128__");
346 switch (Triple.getArch()) {
349 case llvm::Triple::x86:
350 case llvm::Triple::x86_64:
351 this->HasFloat128 = true;
358template <
typename Target>
366 if (Triple.isAndroid()) {
367 Builder.defineMacro(
"__ANDROID__",
"1");
368 this->PlatformName =
"android";
369 this->PlatformMinVersion = Triple.getEnvironmentVersion();
370 const unsigned Maj = this->PlatformMinVersion.getMajor();
372 Builder.defineMacro(
"__ANDROID_MIN_SDK_VERSION__", Twine(Maj));
375 Builder.defineMacro(
"__ANDROID_API__",
"__ANDROID_MIN_SDK_VERSION__");
378 Builder.defineMacro(
"__gnu_linux__");
380 if (Opts.POSIXThreads)
381 Builder.defineMacro(
"_REENTRANT");
383 Builder.defineMacro(
"_GNU_SOURCE");
384 if (this->HasFloat128)
385 Builder.defineMacro(
"__FLOAT128__");
386 if (Triple.isTime64ABI()) {
387 Builder.defineMacro(
"_FILE_OFFSET_BITS",
"64");
388 Builder.defineMacro(
"_TIME_BITS",
"64");
397 switch (Triple.getArch()) {
400 case llvm::Triple::mips:
401 case llvm::Triple::mipsel:
402 case llvm::Triple::mips64:
403 case llvm::Triple::mips64el:
404 case llvm::Triple::ppc:
405 case llvm::Triple::ppcle:
406 case llvm::Triple::ppc64:
407 case llvm::Triple::ppc64le:
408 this->MCountName =
"_mcount";
410 case llvm::Triple::x86:
411 case llvm::Triple::x86_64:
412 this->HasFloat128 = true;
418 return ".text.startup";
423 bool setABI(
const std::string &Name)
override {
429template <
typename Target>
435 Builder.defineMacro(
"__managarm__");
436 if (Opts.POSIXThreads)
437 Builder.defineMacro(
"_REENTRANT");
439 Builder.defineMacro(
"_GNU_SOURCE");
440 if (this->HasFloat128)
441 Builder.defineMacro(
"__FLOAT128__");
447 switch (Triple.getArch()) {
450 case llvm::Triple::x86:
451 case llvm::Triple::x86_64:
452 this->HasFloat128 = true;
459template <
typename Target>
465 Builder.defineMacro(
"__NetBSD__");
466 Builder.defineMacro(
"__unix__");
467 if (Opts.POSIXThreads)
468 Builder.defineMacro(
"_REENTRANT");
469 if (this->HasFloat128)
470 Builder.defineMacro(
"__FLOAT128__");
476 this->MCountName =
"__mcount";
477 switch (Triple.getArch()) {
480 case llvm::Triple::x86:
481 case llvm::Triple::x86_64:
482 this->HasFloat128 = true;
489template <
typename Target>
496 Builder.defineMacro(
"__OpenBSD__");
498 if (Opts.POSIXThreads)
499 Builder.defineMacro(
"_REENTRANT");
500 if (this->HasFloat128)
501 Builder.defineMacro(
"__FLOAT128__");
504 Builder.defineMacro(
"__STDC_NO_THREADS__");
510 this->WCharType = this->WIntType = this->SignedInt;
513 switch (Triple.getArch()) {
514 case llvm::Triple::x86:
515 case llvm::Triple::x86_64:
516 this->HasFloat128 = true;
519 this->MCountName =
"__mcount";
521 case llvm::Triple::mips64:
522 case llvm::Triple::mips64el:
523 case llvm::Triple::ppc:
524 case llvm::Triple::ppc64:
525 case llvm::Triple::ppc64le:
526 case llvm::Triple::sparcv9:
527 this->MCountName =
"_mcount";
529 case llvm::Triple::loongarch64:
530 case llvm::Triple::riscv64:
537template <
typename Target>
543 Builder.defineMacro(
"__PPU__");
544 Builder.defineMacro(
"__CELLOS_LV2__");
545 Builder.defineMacro(
"__LP32__");
546 Builder.defineMacro(
"_ARCH_PPC64");
547 Builder.defineMacro(
"__powerpc64__");
553 this->LongWidth = this->LongAlign = 32;
554 this->PointerWidth = this->PointerAlign = 32;
558 this->resetDataLayout();
563template <
typename Target>
568 Builder.defineMacro(
"__FreeBSD__",
"9");
569 Builder.defineMacro(
"__FreeBSD_cc_version",
"900001");
570 Builder.defineMacro(
"__KPRINTF_ATTRIBUTE__");
572 Builder.defineMacro(
"__SCE__");
573 Builder.defineMacro(
"__STDC_NO_COMPLEX__");
574 Builder.defineMacro(
"__STDC_NO_THREADS__");
584 this->MaxTLSAlign = 256;
588 this->UseExplicitBitFieldAlignment =
false;
590 this->MCountName =
".mcount";
591 this->NewAlign = 256;
592 this->SuitableAlign = 256;
606template <
typename Target>
614 Builder.defineMacro(
"__ORBIS__");
622template <
typename Target>
630 Builder.defineMacro(
"__PROSPERO__");
638template <
typename Target>
645 Builder.defineMacro(
"__rtems__");
647 Builder.defineMacro(
"_GNU_SOURCE");
653 switch (Triple.getArch()) {
655 case llvm::Triple::x86:
658 case llvm::Triple::mips:
659 case llvm::Triple::mipsel:
660 case llvm::Triple::ppc:
661 case llvm::Triple::ppc64:
662 case llvm::Triple::ppc64le:
665 case llvm::Triple::arm:
673template <
typename Target>
680 Builder.defineMacro(
"__svr4__");
681 Builder.defineMacro(
"__SVR4");
682 if (Opts.CPlusPlus) {
683 Builder.defineMacro(
"__C99FEATURES__");
684 Builder.defineMacro(
"_FILE_OFFSET_BITS",
"64");
687 Builder.defineMacro(
"_LARGEFILE_SOURCE");
688 Builder.defineMacro(
"_LARGEFILE64_SOURCE");
689 Builder.defineMacro(
"__EXTENSIONS__");
690 if (Opts.POSIXThreads)
691 Builder.defineMacro(
"_REENTRANT");
692 if (this->HasFloat128)
693 Builder.defineMacro(
"__FLOAT128__");
699 if (this->PointerWidth == 64) {
700 this->WCharType = this->WIntType = this->SignedInt;
702 this->WCharType = this->WIntType = this->SignedLong;
704 switch (Triple.getArch()) {
707 case llvm::Triple::x86:
708 case llvm::Triple::x86_64:
709 this->HasFloat128 = true;
716template <
typename Target>
722 Builder.defineMacro(
"_IBMR2");
723 Builder.defineMacro(
"_POWER");
724 Builder.defineMacro(
"__THW_BIG_ENDIAN__");
726 Builder.defineMacro(
"_AIX");
727 Builder.defineMacro(
"__TOS_AIX__");
728 Builder.defineMacro(
"__HOS_AIX__");
731 Builder.defineMacro(
"__STDC_NO_ATOMICS__");
732 Builder.defineMacro(
"__STDC_NO_THREADS__");
735 if (Opts.EnableAIXExtendedAltivecABI)
736 Builder.defineMacro(
"__EXTABI__");
738 VersionTuple OsVersion = Triple.getOSVersion();
742 if (OsVersion >= VersionTuple(3, 2))
743 Builder.defineMacro(
"_AIX32");
744 if (OsVersion >= VersionTuple(4, 1))
745 Builder.defineMacro(
"_AIX41");
746 if (OsVersion >= VersionTuple(4, 3))
747 Builder.defineMacro(
"_AIX43");
748 if (OsVersion >= VersionTuple(5, 0))
749 Builder.defineMacro(
"_AIX50");
750 if (OsVersion >= VersionTuple(5, 1))
751 Builder.defineMacro(
"_AIX51");
752 if (OsVersion >= VersionTuple(5, 2))
753 Builder.defineMacro(
"_AIX52");
754 if (OsVersion >= VersionTuple(5, 3))
755 Builder.defineMacro(
"_AIX53");
756 if (OsVersion >= VersionTuple(6, 1))
757 Builder.defineMacro(
"_AIX61");
758 if (OsVersion >= VersionTuple(7, 1))
759 Builder.defineMacro(
"_AIX71");
760 if (OsVersion >= VersionTuple(7, 2))
761 Builder.defineMacro(
"_AIX72");
762 if (OsVersion >= VersionTuple(7, 3))
763 Builder.defineMacro(
"_AIX73");
766 Builder.defineMacro(
"_LONG_LONG");
768 if (Opts.POSIXThreads) {
769 Builder.defineMacro(
"_THREAD_SAFE");
772 if (this->PointerWidth == 64) {
773 Builder.defineMacro(
"__64BIT__");
778 if (Opts.CPlusPlus && Opts.WChar) {
779 Builder.defineMacro(
"_WCHAR_T");
786 this->MCountName =
"__mcount";
787 this->TheCXXABI.set(TargetCXXABI::XL);
789 if (this->PointerWidth == 64) {
790 this->WCharType = this->UnsignedInt;
792 this->WCharType = this->UnsignedShort;
794 this->UseZeroLengthBitfieldAlignment =
true;
810template <
typename Target>
816 Builder.defineMacro(
"_LONG_LONG");
817 Builder.defineMacro(
"__370__");
818 Builder.defineMacro(
"__BFP__");
820 Builder.defineMacro(
"__BOOL__");
821 Builder.defineMacro(
"__COMPILER_VER__",
"0x50000000");
822 Builder.defineMacro(
"__LONGNAME__");
823 Builder.defineMacro(
"__MVS__");
824 Builder.defineMacro(
"__THW_370__");
825 Builder.defineMacro(
"__THW_BIG_ENDIAN__");
826 Builder.defineMacro(
"__TOS_390__");
827 Builder.defineMacro(
"__TOS_MVS__");
828 Builder.defineMacro(
"__XPLINK__");
830 if (this->PointerWidth == 64)
831 Builder.defineMacro(
"__64BIT__");
833 if (Opts.CPlusPlus && Opts.WChar) {
836 Builder.defineMacro(
"__wchar_t");
839 this->PlatformName = llvm::Triple::getOSTypeName(Triple.getOS());
846 this->MaxAlignedAttribute = 128;
847 this->UseBitFieldTypeAlignment =
false;
848 this->UseZeroLengthBitfieldAlignment =
true;
849 this->UseLeadingZeroLengthBitfield =
false;
850 this->ZeroLengthBitfieldBoundary = 32;
851 this->TheCXXABI.set(TargetCXXABI::XL);
860template <
typename Target>
865 Builder.defineMacro(
"__UEFI__");
873 this->UseMicrosoftManglingForC =
true;
877void addWindowsDefines(
const llvm::Triple &Triple,
const LangOptions &Opts,
881template <
typename Target>
894 this->UseMicrosoftManglingForC =
true;
899 const llvm::Triple &Triple);
902template <
typename Target>
908 this->PlatformName =
"fuchsia";
909 this->PlatformMinVersion = VersionTuple(Opts.FuchsiaAPILevel);
916 this->MCountName =
"__mcount";
917 this->TheCXXABI.set(TargetCXXABI::Fuchsia);
922template <
typename Target>
929 if (Opts.POSIXThreads)
930 Builder.defineMacro(
"_REENTRANT");
933 Builder.defineMacro(
"_GNU_SOURCE");
935 Builder.defineMacro(
"__FLOAT128__");
942 this->MCountName =
"__mcount";
943 this->TheCXXABI.set(TargetCXXABI::WebAssembly);
944 this->HasFloat128 =
true;
949template <
typename Target>
952 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
955 Builder.defineMacro(
"__wasi__");
956 Builder.defineMacro(
"__wasip1__");
964template <
typename Target>
967 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
970 Builder.defineMacro(
"__wasi__");
971 Builder.defineMacro(
"__wasip2__");
979template <
typename Target>
982 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
985 Builder.defineMacro(
"__wasi__");
986 Builder.defineMacro(
"__wasip3__");
994template <
typename Target>
997 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
1003 Builder.defineMacro(
"__wali__");
1011template <
typename Target>
1014 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
1018 Builder.defineMacro(
"__EMSCRIPTEN__");
1019 if (Opts.POSIXThreads)
1020 Builder.defineMacro(
"__EMSCRIPTEN_PTHREADS__");
1032 this->LongDoubleAlign = 64;
1033 this->Float128Align = 64;
1038template <
typename Target>
1047 if (Triple.isOHOSFamily()) {
1048 Builder.defineMacro(
"__OHOS_FAMILY__",
"1");
1050 auto Version = Triple.getEnvironmentVersion();
1051 this->PlatformName =
"ohos";
1052 this->PlatformMinVersion = Version;
1053 Builder.defineMacro(
"__OHOS_Major__", Twine(Version.getMajor()));
1054 if (
auto Minor = Version.getMinor())
1055 Builder.defineMacro(
"__OHOS_Minor__", Twine(*Minor));
1056 if (
auto Subminor = Version.getSubminor())
1057 Builder.defineMacro(
"__OHOS_Micro__", Twine(*Subminor));
1060 if (Triple.isOpenHOS())
1061 Builder.defineMacro(
"__OHOS__");
1063 if (Triple.isOSLinux()) {
1065 }
else if (Triple.isOSLiteOS()) {
1066 Builder.defineMacro(
"__LITEOS__");
1069 if (Opts.POSIXThreads)
1070 Builder.defineMacro(
"_REENTRANT");
1072 Builder.defineMacro(
"_GNU_SOURCE");
1073 if (this->HasFloat128)
1074 Builder.defineMacro(
"__FLOAT128__");
1082 switch (Triple.getArch()) {
1085 case llvm::Triple::x86:
1086 case llvm::Triple::x86_64:
1087 this->HasFloat128 = true;
1093 return ".text.startup";
1098template <
typename Target>
1103 Builder.defineMacro(
"__qurt__");
1105 Builder.defineMacro(
"_GNU_SOURCE");
1113template <
typename Target>
1118 Builder.defineMacro(
"__h2__");
1120 Builder.defineMacro(
"_GNU_SOURCE");
1128template <
typename Target>
1133 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)
The JSON file list parser is used to communicate input to InstallAPI.
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 ----------------------------—===//