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;
114 this->MCountName =
"\01mcount";
126 llvm::VersionTuple MinVersion;
127 const llvm::Triple &T = this->
getTriple();
131 case llvm::Triple::Darwin:
132 case llvm::Triple::MacOSX:
133 MinVersion = llvm::VersionTuple(10U, 14U);
135 case llvm::Triple::IOS:
136 case llvm::Triple::TvOS:
137 MinVersion = llvm::VersionTuple(12U);
139 case llvm::Triple::WatchOS:
140 MinVersion = llvm::VersionTuple(5U);
142 case llvm::Triple::XROS:
143 MinVersion = llvm::VersionTuple(0);
150 if (T.getOSVersion() < MinVersion)
156 bool IsSigned)
const final {
158 return BitWidth == 64
170template <
typename Target>
177 Builder.defineMacro(
"__DragonFly__");
178 Builder.defineMacro(
"__DragonFly_cc_version",
"100001");
179 Builder.defineMacro(
"__KPRINTF_ATTRIBUTE__");
180 Builder.defineMacro(
"__tune_i386__");
182 if (this->HasFloat128)
183 Builder.defineMacro(
"__FLOAT128__");
186 Builder.defineMacro(
"__STDC_NO_THREADS__");
192 switch (Triple.getArch()) {
194 case llvm::Triple::x86:
195 case llvm::Triple::x86_64:
196 this->HasFloat128 = true;
197 this->MCountName =
".mcount";
203#ifndef FREEBSD_CC_VERSION
204#define FREEBSD_CC_VERSION 0U
208template <
typename Target>
215 unsigned Release = Triple.getOSMajorVersion();
220 CCVersion = Release * 100000U + 1U;
222 Builder.defineMacro(
"__FreeBSD__", Twine(Release));
223 Builder.defineMacro(
"__FreeBSD_cc_version", Twine(CCVersion));
224 Builder.defineMacro(
"__KPRINTF_ATTRIBUTE__");
226 if (this->HasFloat128)
227 Builder.defineMacro(
"__FLOAT128__");
238 Builder.defineMacro(
"__STDC_MB_MIGHT_NEQ_WC__",
"1");
244 switch (Triple.getArch()) {
245 case llvm::Triple::x86:
246 case llvm::Triple::x86_64:
247 this->HasFloat128 = true;
250 this->MCountName =
".mcount";
252 case llvm::Triple::mips:
253 case llvm::Triple::mipsel:
254 case llvm::Triple::ppc:
255 case llvm::Triple::ppcle:
256 case llvm::Triple::ppc64:
257 case llvm::Triple::ppc64le:
258 this->MCountName =
"_mcount";
260 case llvm::Triple::arm:
261 this->MCountName =
"__mcount";
263 case llvm::Triple::loongarch64:
264 case llvm::Triple::riscv64:
271template <
typename Target>
279 Builder.defineMacro(
"__FreeBSD_kernel__");
280 Builder.defineMacro(
"__GLIBC__");
281 if (Opts.POSIXThreads)
282 Builder.defineMacro(
"_REENTRANT");
284 Builder.defineMacro(
"_GNU_SOURCE");
292template <
typename Target>
298 Builder.defineMacro(
"__HAIKU__");
300 if (this->HasFloat128)
301 Builder.defineMacro(
"__FLOAT128__");
311 switch (Triple.getArch()) {
314 case llvm::Triple::x86:
315 case llvm::Triple::x86_64:
316 this->HasFloat128 = true;
323template <
typename Target>
330 Builder.defineMacro(
"__GNU__");
331 Builder.defineMacro(
"__gnu_hurd__");
332 Builder.defineMacro(
"__MACH__");
333 Builder.defineMacro(
"__GLIBC__");
334 if (Opts.POSIXThreads)
335 Builder.defineMacro(
"_REENTRANT");
337 Builder.defineMacro(
"_GNU_SOURCE");
338 if (this->HasFloat128)
339 Builder.defineMacro(
"__FLOAT128__");
344 switch (Triple.getArch()) {
347 case llvm::Triple::x86:
348 case llvm::Triple::x86_64:
349 this->HasFloat128 = true;
356template <
typename Target>
364 if (Triple.isAndroid()) {
365 Builder.defineMacro(
"__ANDROID__",
"1");
366 this->PlatformName =
"android";
367 this->PlatformMinVersion = Triple.getEnvironmentVersion();
368 const unsigned Maj = this->PlatformMinVersion.getMajor();
370 Builder.defineMacro(
"__ANDROID_MIN_SDK_VERSION__", Twine(Maj));
373 Builder.defineMacro(
"__ANDROID_API__",
"__ANDROID_MIN_SDK_VERSION__");
376 Builder.defineMacro(
"__gnu_linux__");
378 if (Opts.POSIXThreads)
379 Builder.defineMacro(
"_REENTRANT");
381 Builder.defineMacro(
"_GNU_SOURCE");
382 if (this->HasFloat128)
383 Builder.defineMacro(
"__FLOAT128__");
384 if (Triple.isTime64ABI()) {
385 Builder.defineMacro(
"_FILE_OFFSET_BITS",
"64");
386 Builder.defineMacro(
"_TIME_BITS",
"64");
395 switch (Triple.getArch()) {
398 case llvm::Triple::mips:
399 case llvm::Triple::mipsel:
400 case llvm::Triple::mips64:
401 case llvm::Triple::mips64el:
402 case llvm::Triple::ppc:
403 case llvm::Triple::ppcle:
404 case llvm::Triple::ppc64:
405 case llvm::Triple::ppc64le:
406 this->MCountName =
"_mcount";
408 case llvm::Triple::x86:
409 case llvm::Triple::x86_64:
410 this->HasFloat128 = true;
416 return ".text.startup";
421 bool setABI(
const std::string &Name)
override {
427template <
typename Target>
433 Builder.defineMacro(
"__managarm__");
434 if (Opts.POSIXThreads)
435 Builder.defineMacro(
"_REENTRANT");
437 Builder.defineMacro(
"_GNU_SOURCE");
438 if (this->HasFloat128)
439 Builder.defineMacro(
"__FLOAT128__");
445 switch (Triple.getArch()) {
448 case llvm::Triple::x86:
449 case llvm::Triple::x86_64:
450 this->HasFloat128 = true;
457template <
typename Target>
463 Builder.defineMacro(
"__NetBSD__");
464 Builder.defineMacro(
"__unix__");
465 if (Opts.POSIXThreads)
466 Builder.defineMacro(
"_REENTRANT");
467 if (this->HasFloat128)
468 Builder.defineMacro(
"__FLOAT128__");
474 this->MCountName =
"__mcount";
475 switch (Triple.getArch()) {
478 case llvm::Triple::x86:
479 case llvm::Triple::x86_64:
480 this->HasFloat128 = true;
487template <
typename Target>
494 Builder.defineMacro(
"__OpenBSD__");
496 if (Opts.POSIXThreads)
497 Builder.defineMacro(
"_REENTRANT");
498 if (this->HasFloat128)
499 Builder.defineMacro(
"__FLOAT128__");
502 Builder.defineMacro(
"__STDC_NO_THREADS__");
508 this->WCharType = this->WIntType = this->SignedInt;
511 switch (Triple.getArch()) {
512 case llvm::Triple::x86:
513 case llvm::Triple::x86_64:
514 this->HasFloat128 = true;
517 this->MCountName =
"__mcount";
519 case llvm::Triple::mips64:
520 case llvm::Triple::mips64el:
521 case llvm::Triple::ppc:
522 case llvm::Triple::ppc64:
523 case llvm::Triple::ppc64le:
524 case llvm::Triple::sparcv9:
525 this->MCountName =
"_mcount";
527 case llvm::Triple::loongarch64:
528 case llvm::Triple::riscv64:
535template <
typename Target>
541 Builder.defineMacro(
"__PPU__");
542 Builder.defineMacro(
"__CELLOS_LV2__");
543 Builder.defineMacro(
"__LP32__");
544 Builder.defineMacro(
"_ARCH_PPC64");
545 Builder.defineMacro(
"__powerpc64__");
551 this->LongWidth = this->LongAlign = 32;
552 this->PointerWidth = this->PointerAlign = 32;
556 this->resetDataLayout();
561template <
typename Target>
566 Builder.defineMacro(
"__FreeBSD__",
"9");
567 Builder.defineMacro(
"__FreeBSD_cc_version",
"900001");
568 Builder.defineMacro(
"__KPRINTF_ATTRIBUTE__");
570 Builder.defineMacro(
"__SCE__");
571 Builder.defineMacro(
"__STDC_NO_COMPLEX__");
572 Builder.defineMacro(
"__STDC_NO_THREADS__");
582 this->MaxTLSAlign = 256;
586 this->UseExplicitBitFieldAlignment =
false;
588 this->MCountName =
".mcount";
589 this->NewAlign = 256;
590 this->SuitableAlign = 256;
604template <
typename Target>
612 Builder.defineMacro(
"__ORBIS__");
620template <
typename Target>
628 Builder.defineMacro(
"__PROSPERO__");
636template <
typename Target>
643 Builder.defineMacro(
"__rtems__");
645 Builder.defineMacro(
"_GNU_SOURCE");
651 switch (Triple.getArch()) {
653 case llvm::Triple::x86:
656 case llvm::Triple::mips:
657 case llvm::Triple::mipsel:
658 case llvm::Triple::ppc:
659 case llvm::Triple::ppc64:
660 case llvm::Triple::ppc64le:
663 case llvm::Triple::arm:
671template <
typename Target>
678 Builder.defineMacro(
"__svr4__");
679 Builder.defineMacro(
"__SVR4");
680 if (Opts.CPlusPlus) {
681 Builder.defineMacro(
"__C99FEATURES__");
682 Builder.defineMacro(
"_FILE_OFFSET_BITS",
"64");
685 Builder.defineMacro(
"_LARGEFILE_SOURCE");
686 Builder.defineMacro(
"_LARGEFILE64_SOURCE");
687 Builder.defineMacro(
"__EXTENSIONS__");
688 if (Opts.POSIXThreads)
689 Builder.defineMacro(
"_REENTRANT");
690 if (this->HasFloat128)
691 Builder.defineMacro(
"__FLOAT128__");
697 if (this->PointerWidth == 64) {
698 this->WCharType = this->WIntType = this->SignedInt;
700 this->WCharType = this->WIntType = this->SignedLong;
702 switch (Triple.getArch()) {
705 case llvm::Triple::x86:
706 case llvm::Triple::x86_64:
707 this->HasFloat128 = true;
714template <
typename Target>
720 Builder.defineMacro(
"_IBMR2");
721 Builder.defineMacro(
"_POWER");
722 Builder.defineMacro(
"__THW_BIG_ENDIAN__");
724 Builder.defineMacro(
"_AIX");
725 Builder.defineMacro(
"__TOS_AIX__");
726 Builder.defineMacro(
"__HOS_AIX__");
729 Builder.defineMacro(
"__STDC_NO_ATOMICS__");
730 Builder.defineMacro(
"__STDC_NO_THREADS__");
733 if (Opts.EnableAIXExtendedAltivecABI)
734 Builder.defineMacro(
"__EXTABI__");
736 VersionTuple OsVersion = Triple.getOSVersion();
740 if (OsVersion >= VersionTuple(3, 2))
741 Builder.defineMacro(
"_AIX32");
742 if (OsVersion >= VersionTuple(4, 1))
743 Builder.defineMacro(
"_AIX41");
744 if (OsVersion >= VersionTuple(4, 3))
745 Builder.defineMacro(
"_AIX43");
746 if (OsVersion >= VersionTuple(5, 0))
747 Builder.defineMacro(
"_AIX50");
748 if (OsVersion >= VersionTuple(5, 1))
749 Builder.defineMacro(
"_AIX51");
750 if (OsVersion >= VersionTuple(5, 2))
751 Builder.defineMacro(
"_AIX52");
752 if (OsVersion >= VersionTuple(5, 3))
753 Builder.defineMacro(
"_AIX53");
754 if (OsVersion >= VersionTuple(6, 1))
755 Builder.defineMacro(
"_AIX61");
756 if (OsVersion >= VersionTuple(7, 1))
757 Builder.defineMacro(
"_AIX71");
758 if (OsVersion >= VersionTuple(7, 2))
759 Builder.defineMacro(
"_AIX72");
760 if (OsVersion >= VersionTuple(7, 3))
761 Builder.defineMacro(
"_AIX73");
764 Builder.defineMacro(
"_LONG_LONG");
766 if (Opts.POSIXThreads) {
767 Builder.defineMacro(
"_THREAD_SAFE");
770 if (this->PointerWidth == 64) {
771 Builder.defineMacro(
"__64BIT__");
776 if (Opts.CPlusPlus && Opts.WChar) {
777 Builder.defineMacro(
"_WCHAR_T");
784 this->MCountName =
"__mcount";
785 this->TheCXXABI.set(TargetCXXABI::XL);
787 if (this->PointerWidth == 64) {
788 this->WCharType = this->UnsignedInt;
790 this->WCharType = this->UnsignedShort;
792 this->UseZeroLengthBitfieldAlignment =
true;
808template <
typename Target>
814 Builder.defineMacro(
"_LONG_LONG");
815 Builder.defineMacro(
"__370__");
816 Builder.defineMacro(
"__BFP__");
818 Builder.defineMacro(
"__BOOL__");
819 Builder.defineMacro(
"__COMPILER_VER__",
"0x50000000");
820 Builder.defineMacro(
"__LONGNAME__");
821 Builder.defineMacro(
"__MVS__");
822 Builder.defineMacro(
"__THW_370__");
823 Builder.defineMacro(
"__THW_BIG_ENDIAN__");
824 Builder.defineMacro(
"__TOS_390__");
825 Builder.defineMacro(
"__TOS_MVS__");
826 Builder.defineMacro(
"__XPLINK__");
828 if (this->PointerWidth == 64)
829 Builder.defineMacro(
"__64BIT__");
831 if (Opts.CPlusPlus && Opts.WChar) {
834 Builder.defineMacro(
"__wchar_t");
837 this->PlatformName = llvm::Triple::getOSTypeName(Triple.getOS());
844 this->MaxAlignedAttribute = 128;
845 this->UseBitFieldTypeAlignment =
false;
846 this->UseZeroLengthBitfieldAlignment =
true;
847 this->UseLeadingZeroLengthBitfield =
false;
848 this->ZeroLengthBitfieldBoundary = 32;
849 this->TheCXXABI.set(TargetCXXABI::XL);
858template <
typename Target>
863 Builder.defineMacro(
"__UEFI__");
871 this->UseMicrosoftManglingForC =
true;
875void addWindowsDefines(
const llvm::Triple &Triple,
const LangOptions &Opts,
879template <
typename Target>
892 this->UseMicrosoftManglingForC =
true;
897 const llvm::Triple &Triple);
900template <
typename Target>
906 this->PlatformName =
"fuchsia";
907 this->PlatformMinVersion = VersionTuple(Opts.FuchsiaAPILevel);
914 this->MCountName =
"__mcount";
915 this->TheCXXABI.set(TargetCXXABI::Fuchsia);
920template <
typename Target>
927 if (Opts.POSIXThreads)
928 Builder.defineMacro(
"_REENTRANT");
931 Builder.defineMacro(
"_GNU_SOURCE");
933 Builder.defineMacro(
"__FLOAT128__");
940 this->MCountName =
"__mcount";
941 this->TheCXXABI.set(TargetCXXABI::WebAssembly);
942 this->HasFloat128 =
true;
947template <
typename Target>
950 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
953 Builder.defineMacro(
"__wasi__");
954 Builder.defineMacro(
"__wasip1__");
962template <
typename Target>
965 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
968 Builder.defineMacro(
"__wasi__");
969 Builder.defineMacro(
"__wasip2__");
977template <
typename Target>
980 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
983 Builder.defineMacro(
"__wasi__");
984 Builder.defineMacro(
"__wasip3__");
992template <
typename Target>
995 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
1001 Builder.defineMacro(
"__wali__");
1009template <
typename Target>
1012 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
1016 Builder.defineMacro(
"__EMSCRIPTEN__");
1017 if (Opts.POSIXThreads)
1018 Builder.defineMacro(
"__EMSCRIPTEN_PTHREADS__");
1030 this->LongDoubleAlign = 64;
1031 this->Float128Align = 64;
1036template <
typename Target>
1045 if (Triple.isOHOSFamily()) {
1046 Builder.defineMacro(
"__OHOS_FAMILY__",
"1");
1048 auto Version = Triple.getEnvironmentVersion();
1049 this->PlatformName =
"ohos";
1050 this->PlatformMinVersion = Version;
1051 Builder.defineMacro(
"__OHOS_Major__", Twine(Version.getMajor()));
1052 if (
auto Minor = Version.getMinor())
1053 Builder.defineMacro(
"__OHOS_Minor__", Twine(*Minor));
1054 if (
auto Subminor = Version.getSubminor())
1055 Builder.defineMacro(
"__OHOS_Micro__", Twine(*Subminor));
1058 if (Triple.isOpenHOS())
1059 Builder.defineMacro(
"__OHOS__");
1061 if (Triple.isOSLinux()) {
1063 }
else if (Triple.isOSLiteOS()) {
1064 Builder.defineMacro(
"__LITEOS__");
1067 if (Opts.POSIXThreads)
1068 Builder.defineMacro(
"_REENTRANT");
1070 Builder.defineMacro(
"_GNU_SOURCE");
1071 if (this->HasFloat128)
1072 Builder.defineMacro(
"__FLOAT128__");
1080 switch (Triple.getArch()) {
1083 case llvm::Triple::x86:
1084 case llvm::Triple::x86_64:
1085 this->HasFloat128 = true;
1091 return ".text.startup";
1096template <
typename Target>
1101 Builder.defineMacro(
"__qurt__");
1103 Builder.defineMacro(
"_GNU_SOURCE");
1111template <
typename Target>
1116 Builder.defineMacro(
"__h2__");
1118 Builder.defineMacro(
"_GNU_SOURCE");
1126template <
typename Target>
1131 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())))
CallingConv
CallingConv - Specifies the calling convention that a function uses.
IntType
===-— Target Data Type Query Methods ----------------------------—===//