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);
33 getOSDefines(Opts, TgtInfo::getTriple(), 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";
67template <
typename Target>
74 this->PlatformMinVersion);
82 this->TLSSupported =
false;
84 if (Triple.isMacOSX())
85 this->TLSSupported = !Triple.isMacOSXVersionLT(10, 7);
86 else if (Triple.isiOS()) {
89 if (Triple.isArch64Bit())
90 this->TLSSupported = !Triple.isOSVersionLT(8);
91 else if (Triple.isArch32Bit()) {
92 if (!Triple.isSimulatorEnvironment())
93 this->TLSSupported = !Triple.isOSVersionLT(9);
95 this->TLSSupported = !Triple.isOSVersionLT(10);
97 }
else if (Triple.isWatchOS()) {
98 if (!Triple.isSimulatorEnvironment())
99 this->TLSSupported = !Triple.isOSVersionLT(2);
101 this->TLSSupported = !Triple.isOSVersionLT(3);
102 }
else if (Triple.isDriverKit()) {
104 }
else if (Triple.isXROS())
105 this->TLSSupported =
true;
107 this->MCountName =
"\01mcount";
119 llvm::VersionTuple MinVersion;
120 const llvm::Triple &
T = this->getTriple();
124 case llvm::Triple::Darwin:
125 case llvm::Triple::MacOSX:
126 MinVersion = llvm::VersionTuple(10U, 14U);
128 case llvm::Triple::IOS:
129 case llvm::Triple::TvOS:
130 MinVersion = llvm::VersionTuple(12U);
132 case llvm::Triple::WatchOS:
133 MinVersion = llvm::VersionTuple(5U);
135 case llvm::Triple::XROS:
136 MinVersion = llvm::VersionTuple(0);
143 if (
T.getOSVersion() < MinVersion)
149 bool IsSigned)
const final {
151 return BitWidth == 64
152 ? (IsSigned ? TargetInfo::SignedLongLong
153 : TargetInfo::UnsignedLongLong)
154 : TargetInfo::getLeastIntTypeByWidth(BitWidth, IsSigned);
163template <
typename Target>
170 Builder.defineMacro(
"__DragonFly__");
171 Builder.defineMacro(
"__DragonFly_cc_version",
"100001");
172 Builder.defineMacro(
"__KPRINTF_ATTRIBUTE__");
173 Builder.defineMacro(
"__tune_i386__");
175 if (this->HasFloat128)
176 Builder.defineMacro(
"__FLOAT128__");
182 switch (Triple.getArch()) {
184 case llvm::Triple::x86:
185 case llvm::Triple::x86_64:
186 this->HasFloat128 =
true;
187 this->MCountName =
".mcount";
193#ifndef FREEBSD_CC_VERSION
194#define FREEBSD_CC_VERSION 0U
198template <
typename Target>
205 unsigned Release = Triple.getOSMajorVersion();
210 CCVersion = Release * 100000U + 1U;
212 Builder.defineMacro(
"__FreeBSD__", Twine(Release));
213 Builder.defineMacro(
"__FreeBSD_cc_version", Twine(CCVersion));
214 Builder.defineMacro(
"__KPRINTF_ATTRIBUTE__");
216 if (this->HasFloat128)
217 Builder.defineMacro(
"__FLOAT128__");
228 Builder.defineMacro(
"__STDC_MB_MIGHT_NEQ_WC__",
"1");
234 switch (Triple.getArch()) {
235 case llvm::Triple::x86:
236 case llvm::Triple::x86_64:
237 this->HasFloat128 =
true;
240 this->MCountName =
".mcount";
242 case llvm::Triple::mips:
243 case llvm::Triple::mipsel:
244 case llvm::Triple::ppc:
245 case llvm::Triple::ppcle:
246 case llvm::Triple::ppc64:
247 case llvm::Triple::ppc64le:
248 this->MCountName =
"_mcount";
250 case llvm::Triple::arm:
251 this->MCountName =
"__mcount";
253 case llvm::Triple::loongarch64:
254 case llvm::Triple::riscv64:
261template <
typename Target>
269 Builder.defineMacro(
"__FreeBSD_kernel__");
270 Builder.defineMacro(
"__GLIBC__");
271 if (Opts.POSIXThreads)
272 Builder.defineMacro(
"_REENTRANT");
274 Builder.defineMacro(
"_GNU_SOURCE");
282template <
typename Target>
288 Builder.defineMacro(
"__HAIKU__");
290 if (this->HasFloat128)
291 Builder.defineMacro(
"__FLOAT128__");
297 this->SizeType = TargetInfo::UnsignedLong;
298 this->IntPtrType = TargetInfo::SignedLong;
299 this->PtrDiffType = TargetInfo::SignedLong;
300 this->ProcessIDType = TargetInfo::SignedLong;
301 switch (Triple.getArch()) {
304 case llvm::Triple::x86:
305 case llvm::Triple::x86_64:
306 this->HasFloat128 =
true;
313template <
typename Target>
320 Builder.defineMacro(
"__GNU__");
321 Builder.defineMacro(
"__gnu_hurd__");
322 Builder.defineMacro(
"__MACH__");
323 Builder.defineMacro(
"__GLIBC__");
324 if (Opts.POSIXThreads)
325 Builder.defineMacro(
"_REENTRANT");
327 Builder.defineMacro(
"_GNU_SOURCE");
334template <
typename Target>
342 if (Triple.isAndroid()) {
343 Builder.defineMacro(
"__ANDROID__",
"1");
344 this->PlatformName =
"android";
345 this->PlatformMinVersion = Triple.getEnvironmentVersion();
346 const unsigned Maj = this->PlatformMinVersion.getMajor();
348 Builder.defineMacro(
"__ANDROID_MIN_SDK_VERSION__", Twine(Maj));
351 Builder.defineMacro(
"__ANDROID_API__",
"__ANDROID_MIN_SDK_VERSION__");
354 Builder.defineMacro(
"__gnu_linux__");
356 if (Opts.POSIXThreads)
357 Builder.defineMacro(
"_REENTRANT");
359 Builder.defineMacro(
"_GNU_SOURCE");
360 if (this->HasFloat128)
361 Builder.defineMacro(
"__FLOAT128__");
362 if (Triple.isTime64ABI()) {
363 Builder.defineMacro(
"_FILE_OFFSET_BITS",
"64");
364 Builder.defineMacro(
"_TIME_BITS",
"64");
371 this->WIntType = TargetInfo::UnsignedInt;
373 switch (Triple.getArch()) {
376 case llvm::Triple::mips:
377 case llvm::Triple::mipsel:
378 case llvm::Triple::mips64:
379 case llvm::Triple::mips64el:
380 case llvm::Triple::ppc:
381 case llvm::Triple::ppcle:
382 case llvm::Triple::ppc64:
383 case llvm::Triple::ppc64le:
384 this->MCountName =
"_mcount";
386 case llvm::Triple::x86:
387 case llvm::Triple::x86_64:
388 this->HasFloat128 =
true;
394 return ".text.startup";
399template <
typename Target>
405 Builder.defineMacro(
"__NetBSD__");
406 Builder.defineMacro(
"__unix__");
407 if (Opts.POSIXThreads)
408 Builder.defineMacro(
"_REENTRANT");
409 if (this->HasFloat128)
410 Builder.defineMacro(
"__FLOAT128__");
416 this->MCountName =
"__mcount";
417 switch (Triple.getArch()) {
420 case llvm::Triple::x86:
421 case llvm::Triple::x86_64:
422 this->HasFloat128 =
true;
429template <
typename Target>
436 Builder.defineMacro(
"__OpenBSD__");
438 if (Opts.POSIXThreads)
439 Builder.defineMacro(
"_REENTRANT");
440 if (this->HasFloat128)
441 Builder.defineMacro(
"__FLOAT128__");
444 Builder.defineMacro(
"__STDC_NO_THREADS__");
450 this->WCharType = this->WIntType = this->SignedInt;
451 this->IntMaxType = TargetInfo::SignedLongLong;
452 this->Int64Type = TargetInfo::SignedLongLong;
453 switch (Triple.getArch()) {
454 case llvm::Triple::x86:
455 case llvm::Triple::x86_64:
456 this->HasFloat128 =
true;
459 this->MCountName =
"__mcount";
461 case llvm::Triple::mips64:
462 case llvm::Triple::mips64el:
463 case llvm::Triple::ppc:
464 case llvm::Triple::ppc64:
465 case llvm::Triple::ppc64le:
466 case llvm::Triple::sparcv9:
467 this->MCountName =
"_mcount";
469 case llvm::Triple::riscv64:
476template <
typename Target>
482 Builder.defineMacro(
"__PPU__");
483 Builder.defineMacro(
"__CELLOS_LV2__");
484 Builder.defineMacro(
"__LP32__");
485 Builder.defineMacro(
"_ARCH_PPC64");
486 Builder.defineMacro(
"__powerpc64__");
492 this->LongWidth = this->LongAlign = 32;
493 this->PointerWidth = this->PointerAlign = 32;
494 this->IntMaxType = TargetInfo::SignedLongLong;
495 this->Int64Type = TargetInfo::SignedLongLong;
496 this->SizeType = TargetInfo::UnsignedInt;
497 this->resetDataLayout(
"E-m:e-p:32:32-Fi64-i64:64-i128:128-n32:64");
502template <
typename Target>
507 Builder.defineMacro(
"__FreeBSD__",
"9");
508 Builder.defineMacro(
"__FreeBSD_cc_version",
"900001");
509 Builder.defineMacro(
"__KPRINTF_ATTRIBUTE__");
511 Builder.defineMacro(
"__SCE__");
512 Builder.defineMacro(
"__STDC_NO_COMPLEX__");
513 Builder.defineMacro(
"__STDC_NO_THREADS__");
519 this->WCharType = TargetInfo::UnsignedShort;
523 this->MaxTLSAlign = 256;
527 this->UseExplicitBitFieldAlignment =
false;
529 this->MCountName =
".mcount";
530 this->NewAlign = 256;
531 this->SuitableAlign = 256;
536 return (CC ==
CC_C) ? TargetInfo::CCCR_OK : TargetInfo::CCCR_Error;
545template <
typename Target>
553 Builder.defineMacro(
"__ORBIS__");
561template <
typename Target>
569 Builder.defineMacro(
"__PROSPERO__");
577template <
typename Target>
584 Builder.defineMacro(
"__rtems__");
586 Builder.defineMacro(
"_GNU_SOURCE");
592 switch (Triple.getArch()) {
594 case llvm::Triple::x86:
597 case llvm::Triple::mips:
598 case llvm::Triple::mipsel:
599 case llvm::Triple::ppc:
600 case llvm::Triple::ppc64:
601 case llvm::Triple::ppc64le:
604 case llvm::Triple::arm:
612template <
typename Target>
619 Builder.defineMacro(
"__svr4__");
620 Builder.defineMacro(
"__SVR4");
626 Builder.defineMacro(
"_XOPEN_SOURCE",
"600");
628 Builder.defineMacro(
"_XOPEN_SOURCE",
"500");
629 if (Opts.CPlusPlus) {
630 Builder.defineMacro(
"__C99FEATURES__");
631 Builder.defineMacro(
"_FILE_OFFSET_BITS",
"64");
634 Builder.defineMacro(
"_LARGEFILE_SOURCE");
635 Builder.defineMacro(
"_LARGEFILE64_SOURCE");
636 Builder.defineMacro(
"__EXTENSIONS__");
637 if (Opts.POSIXThreads)
638 Builder.defineMacro(
"_REENTRANT");
639 if (this->HasFloat128)
640 Builder.defineMacro(
"__FLOAT128__");
646 if (this->PointerWidth == 64) {
647 this->WCharType = this->WIntType = this->SignedInt;
649 this->WCharType = this->WIntType = this->SignedLong;
651 switch (Triple.getArch()) {
654 case llvm::Triple::x86:
655 case llvm::Triple::x86_64:
656 this->HasFloat128 =
true;
663template <
typename Target>
669 Builder.defineMacro(
"_IBMR2");
670 Builder.defineMacro(
"_POWER");
671 Builder.defineMacro(
"__THW_BIG_ENDIAN__");
673 Builder.defineMacro(
"_AIX");
674 Builder.defineMacro(
"__TOS_AIX__");
675 Builder.defineMacro(
"__HOS_AIX__");
678 Builder.defineMacro(
"__STDC_NO_ATOMICS__");
679 Builder.defineMacro(
"__STDC_NO_THREADS__");
682 if (Opts.EnableAIXExtendedAltivecABI)
683 Builder.defineMacro(
"__EXTABI__");
685 VersionTuple OsVersion = Triple.getOSVersion();
689 if (OsVersion >= VersionTuple(3, 2))
690 Builder.defineMacro(
"_AIX32");
691 if (OsVersion >= VersionTuple(4, 1))
692 Builder.defineMacro(
"_AIX41");
693 if (OsVersion >= VersionTuple(4, 3))
694 Builder.defineMacro(
"_AIX43");
695 if (OsVersion >= VersionTuple(5, 0))
696 Builder.defineMacro(
"_AIX50");
697 if (OsVersion >= VersionTuple(5, 1))
698 Builder.defineMacro(
"_AIX51");
699 if (OsVersion >= VersionTuple(5, 2))
700 Builder.defineMacro(
"_AIX52");
701 if (OsVersion >= VersionTuple(5, 3))
702 Builder.defineMacro(
"_AIX53");
703 if (OsVersion >= VersionTuple(6, 1))
704 Builder.defineMacro(
"_AIX61");
705 if (OsVersion >= VersionTuple(7, 1))
706 Builder.defineMacro(
"_AIX71");
707 if (OsVersion >= VersionTuple(7, 2))
708 Builder.defineMacro(
"_AIX72");
709 if (OsVersion >= VersionTuple(7, 3))
710 Builder.defineMacro(
"_AIX73");
713 Builder.defineMacro(
"_LONG_LONG");
715 if (Opts.POSIXThreads) {
716 Builder.defineMacro(
"_THREAD_SAFE");
719 if (this->PointerWidth == 64) {
720 Builder.defineMacro(
"__64BIT__");
725 if (Opts.CPlusPlus && Opts.WChar) {
726 Builder.defineMacro(
"_WCHAR_T");
733 this->MCountName =
"__mcount";
734 this->TheCXXABI.set(TargetCXXABI::XL);
736 if (this->PointerWidth == 64) {
737 this->WCharType = this->UnsignedInt;
739 this->WCharType = this->UnsignedShort;
741 this->UseZeroLengthBitfieldAlignment =
true;
757template <
typename Target>
763 Builder.defineMacro(
"_LONG_LONG");
764 Builder.defineMacro(
"__370__");
765 Builder.defineMacro(
"__BFP__");
767 Builder.defineMacro(
"__BOOL__");
768 Builder.defineMacro(
"__COMPILER_VER__",
"0x50000000");
769 Builder.defineMacro(
"__LONGNAME__");
770 Builder.defineMacro(
"__MVS__");
771 Builder.defineMacro(
"__THW_370__");
772 Builder.defineMacro(
"__THW_BIG_ENDIAN__");
773 Builder.defineMacro(
"__TOS_390__");
774 Builder.defineMacro(
"__TOS_MVS__");
775 Builder.defineMacro(
"__XPLINK__");
777 if (this->PointerWidth == 64)
778 Builder.defineMacro(
"__64BIT__");
780 if (Opts.CPlusPlus && Opts.WChar) {
783 Builder.defineMacro(
"__wchar_t");
786 this->PlatformName = llvm::Triple::getOSTypeName(Triple.getOS());
792 this->WCharType = TargetInfo::UnsignedInt;
793 this->MaxAlignedAttribute = 128;
794 this->UseBitFieldTypeAlignment =
false;
795 this->UseZeroLengthBitfieldAlignment =
true;
796 this->UseLeadingZeroLengthBitfield =
false;
797 this->ZeroLengthBitfieldBoundary = 32;
798 this->TheCXXABI.set(TargetCXXABI::XL);
807template <
typename Target>
812 Builder.defineMacro(
"__UEFI__");
818 this->WCharType = TargetInfo::UnsignedShort;
819 this->WIntType = TargetInfo::UnsignedShort;
827template <
typename Target>
838 this->WCharType = TargetInfo::UnsignedShort;
839 this->WIntType = TargetInfo::UnsignedShort;
843template <
typename Target>
848 if (Opts.POSIXThreads)
849 Builder.defineMacro(
"_REENTRANT");
851 Builder.defineMacro(
"_GNU_SOURCE");
854 Builder.defineMacro(
"__native_client__");
860 this->LongAlign = 32;
861 this->LongWidth = 32;
862 this->PointerAlign = 32;
863 this->PointerWidth = 32;
864 this->IntMaxType = TargetInfo::SignedLongLong;
865 this->Int64Type = TargetInfo::SignedLongLong;
866 this->DoubleAlign = 64;
867 this->LongDoubleWidth = 64;
868 this->LongDoubleAlign = 64;
869 this->LongLongWidth = 64;
870 this->LongLongAlign = 64;
871 this->SizeType = TargetInfo::UnsignedInt;
872 this->PtrDiffType = TargetInfo::SignedInt;
873 this->IntPtrType = TargetInfo::SignedInt;
875 this->LongDoubleFormat = &llvm::APFloat::IEEEdouble();
876 if (Triple.getArch() == llvm::Triple::arm) {
878 }
else if (Triple.getArch() == llvm::Triple::x86) {
879 this->resetDataLayout(
"e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-"
880 "i64:64-i128:128-n8:16:32-S128");
881 }
else if (Triple.getArch() == llvm::Triple::x86_64) {
882 this->resetDataLayout(
"e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-"
883 "i64:64-i128:128-n8:16:32:64-S128");
884 }
else if (Triple.getArch() == llvm::Triple::mipsel) {
891template <
typename Target>
896 Builder.defineMacro(
"__Fuchsia__");
897 if (Opts.POSIXThreads)
898 Builder.defineMacro(
"_REENTRANT");
901 Builder.defineMacro(
"_GNU_SOURCE");
902 Builder.defineMacro(
"__Fuchsia_API_level__", Twine(Opts.FuchsiaAPILevel));
903 this->PlatformName =
"fuchsia";
904 this->PlatformMinVersion = VersionTuple(Opts.FuchsiaAPILevel);
910 this->WIntType = TargetInfo::UnsignedInt;
911 this->MCountName =
"__mcount";
912 this->TheCXXABI.set(TargetCXXABI::Fuchsia);
917template <
typename Target>
924 if (Opts.POSIXThreads)
925 Builder.defineMacro(
"_REENTRANT");
928 Builder.defineMacro(
"_GNU_SOURCE");
930 Builder.defineMacro(
"__FLOAT128__");
937 this->MCountName =
"__mcount";
938 this->TheCXXABI.set(TargetCXXABI::WebAssembly);
939 this->HasFloat128 =
true;
944template <
typename Target>
947 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
950 Builder.defineMacro(
"__wasi__");
958template <
typename Target>
961 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
965 Builder.defineMacro(
"__EMSCRIPTEN__");
966 if (Opts.POSIXThreads)
967 Builder.defineMacro(
"__EMSCRIPTEN_PTHREADS__");
979 this->LongDoubleAlign = 64;
984template <
typename Target>
993 if (Triple.isOHOSFamily()) {
994 Builder.defineMacro(
"__OHOS_FAMILY__",
"1");
996 auto Version = Triple.getEnvironmentVersion();
997 this->PlatformName =
"ohos";
998 this->PlatformMinVersion = Version;
999 Builder.defineMacro(
"__OHOS_Major__", Twine(Version.getMajor()));
1000 if (
auto Minor = Version.getMinor())
1001 Builder.defineMacro(
"__OHOS_Minor__", Twine(*Minor));
1002 if (
auto Subminor = Version.getSubminor())
1003 Builder.defineMacro(
"__OHOS_Micro__", Twine(*Subminor));
1006 if (Triple.isOpenHOS())
1007 Builder.defineMacro(
"__OHOS__");
1009 if (Triple.isOSLinux()) {
1011 }
else if (Triple.isOSLiteOS()) {
1012 Builder.defineMacro(
"__LITEOS__");
1015 if (Opts.POSIXThreads)
1016 Builder.defineMacro(
"_REENTRANT");
1018 Builder.defineMacro(
"_GNU_SOURCE");
1019 if (this->HasFloat128)
1020 Builder.defineMacro(
"__FLOAT128__");
1026 this->WIntType = TargetInfo::UnsignedInt;
1028 switch (Triple.getArch()) {
1031 case llvm::Triple::x86:
1032 case llvm::Triple::x86_64:
1033 this->HasFloat128 =
true;
1039 return ".text.startup";
llvm::MachO::Target Target
#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...
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.
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
HaikuTargetInfo(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
const char * getStaticInitSectionSpecifier() const override
NaClTargetInfo(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
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
RTEMSTargetInfo(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 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.
const FunctionProtoType * T
CallingConv
CallingConv - Specifies the calling convention that a function uses.
IntType
===-— Target Data Type Query Methods ----------------------------—===//