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__");
397 Builder.defineMacro(
"__gnu_linux__");
399 if (Opts.POSIXThreads)
400 Builder.defineMacro(
"_REENTRANT");
402 Builder.defineMacro(
"_GNU_SOURCE");
403 if (this->HasFloat128)
404 Builder.defineMacro(
"__FLOAT128__");
405 if (Triple.isTime64ABI()) {
406 Builder.defineMacro(
"_FILE_OFFSET_BITS",
"64");
407 Builder.defineMacro(
"_TIME_BITS",
"64");
416 switch (Triple.getArch()) {
419 case llvm::Triple::mips:
420 case llvm::Triple::mipsel:
421 case llvm::Triple::mips64:
422 case llvm::Triple::mips64el:
423 case llvm::Triple::ppc:
424 case llvm::Triple::ppcle:
425 case llvm::Triple::ppc64:
426 case llvm::Triple::ppc64le:
427 this->MCountName =
"_mcount";
429 case llvm::Triple::x86:
430 case llvm::Triple::x86_64:
431 this->HasFloat128 = true;
437 return ".text.startup";
442 bool setABI(
const std::string &Name)
override {
448template <
typename Target>
454 Builder.defineMacro(
"__managarm__");
455 if (Opts.POSIXThreads)
456 Builder.defineMacro(
"_REENTRANT");
458 Builder.defineMacro(
"_GNU_SOURCE");
459 if (this->HasFloat128)
460 Builder.defineMacro(
"__FLOAT128__");
466 switch (Triple.getArch()) {
469 case llvm::Triple::x86:
470 case llvm::Triple::x86_64:
471 this->HasFloat128 = true;
478template <
typename Target>
484 Builder.defineMacro(
"__NetBSD__");
485 Builder.defineMacro(
"__unix__");
486 if (Opts.POSIXThreads)
487 Builder.defineMacro(
"_REENTRANT");
488 if (this->HasFloat128)
489 Builder.defineMacro(
"__FLOAT128__");
495 this->MCountName =
"__mcount";
496 switch (Triple.getArch()) {
499 case llvm::Triple::x86:
500 case llvm::Triple::x86_64:
501 this->HasFloat128 = true;
508template <
typename Target>
515 Builder.defineMacro(
"__OpenBSD__");
517 if (Opts.POSIXThreads)
518 Builder.defineMacro(
"_REENTRANT");
519 if (this->HasFloat128)
520 Builder.defineMacro(
"__FLOAT128__");
523 Builder.defineMacro(
"__STDC_NO_THREADS__");
529 this->WCharType = this->WIntType = this->SignedInt;
532 switch (Triple.getArch()) {
533 case llvm::Triple::x86:
534 case llvm::Triple::x86_64:
535 this->HasFloat128 = true;
538 this->MCountName =
"__mcount";
540 case llvm::Triple::mips64:
541 case llvm::Triple::mips64el:
542 case llvm::Triple::ppc:
543 case llvm::Triple::ppc64:
544 case llvm::Triple::ppc64le:
545 case llvm::Triple::sparcv9:
546 this->MCountName =
"_mcount";
548 case llvm::Triple::loongarch64:
549 case llvm::Triple::riscv64:
556template <
typename Target>
562 Builder.defineMacro(
"__PPU__");
563 Builder.defineMacro(
"__CELLOS_LV2__");
564 Builder.defineMacro(
"__LP32__");
565 Builder.defineMacro(
"_ARCH_PPC64");
566 Builder.defineMacro(
"__powerpc64__");
572 this->LongWidth = this->LongAlign = 32;
573 this->PointerWidth = this->PointerAlign = 32;
577 this->resetDataLayout();
582template <
typename Target>
587 Builder.defineMacro(
"__FreeBSD__",
"9");
588 Builder.defineMacro(
"__FreeBSD_cc_version",
"900001");
589 Builder.defineMacro(
"__KPRINTF_ATTRIBUTE__");
591 Builder.defineMacro(
"__SCE__");
592 Builder.defineMacro(
"__STDC_NO_COMPLEX__");
593 Builder.defineMacro(
"__STDC_NO_THREADS__");
603 this->MaxTLSAlign = 256;
607 this->UseExplicitBitFieldAlignment =
false;
609 this->MCountName =
".mcount";
610 this->NewAlign = 256;
611 this->SuitableAlign = 256;
625template <
typename Target>
633 Builder.defineMacro(
"__ORBIS__");
641template <
typename Target>
649 Builder.defineMacro(
"__PROSPERO__");
657template <
typename Target>
664 Builder.defineMacro(
"__rtems__");
666 Builder.defineMacro(
"_GNU_SOURCE");
672 switch (Triple.getArch()) {
674 case llvm::Triple::x86:
677 case llvm::Triple::mips:
678 case llvm::Triple::mipsel:
679 case llvm::Triple::ppc:
680 case llvm::Triple::ppc64:
681 case llvm::Triple::ppc64le:
684 case llvm::Triple::arm:
692template <
typename Target>
699 Builder.defineMacro(
"__svr4__");
700 Builder.defineMacro(
"__SVR4");
701 if (Opts.CPlusPlus) {
702 Builder.defineMacro(
"__C99FEATURES__");
703 Builder.defineMacro(
"_FILE_OFFSET_BITS",
"64");
706 Builder.defineMacro(
"_LARGEFILE_SOURCE");
707 Builder.defineMacro(
"_LARGEFILE64_SOURCE");
708 Builder.defineMacro(
"__EXTENSIONS__");
709 if (Opts.POSIXThreads)
710 Builder.defineMacro(
"_REENTRANT");
711 if (this->HasFloat128)
712 Builder.defineMacro(
"__FLOAT128__");
718 if (this->PointerWidth == 64) {
719 this->WCharType = this->WIntType = this->SignedInt;
721 this->WCharType = this->WIntType = this->SignedLong;
723 switch (Triple.getArch()) {
726 case llvm::Triple::x86:
727 case llvm::Triple::x86_64:
728 this->HasFloat128 = true;
735template <
typename Target>
741 Builder.defineMacro(
"_IBMR2");
742 Builder.defineMacro(
"_POWER");
743 Builder.defineMacro(
"__THW_BIG_ENDIAN__");
745 Builder.defineMacro(
"_AIX");
746 Builder.defineMacro(
"__TOS_AIX__");
747 Builder.defineMacro(
"__HOS_AIX__");
750 Builder.defineMacro(
"__STDC_NO_ATOMICS__");
751 Builder.defineMacro(
"__STDC_NO_THREADS__");
754 if (Opts.EnableAIXExtendedAltivecABI)
755 Builder.defineMacro(
"__EXTABI__");
757 VersionTuple OsVersion = Triple.getOSVersion();
761 if (OsVersion >= VersionTuple(3, 2))
762 Builder.defineMacro(
"_AIX32");
763 if (OsVersion >= VersionTuple(4, 1))
764 Builder.defineMacro(
"_AIX41");
765 if (OsVersion >= VersionTuple(4, 3))
766 Builder.defineMacro(
"_AIX43");
767 if (OsVersion >= VersionTuple(5, 0))
768 Builder.defineMacro(
"_AIX50");
769 if (OsVersion >= VersionTuple(5, 1))
770 Builder.defineMacro(
"_AIX51");
771 if (OsVersion >= VersionTuple(5, 2))
772 Builder.defineMacro(
"_AIX52");
773 if (OsVersion >= VersionTuple(5, 3))
774 Builder.defineMacro(
"_AIX53");
775 if (OsVersion >= VersionTuple(6, 1))
776 Builder.defineMacro(
"_AIX61");
777 if (OsVersion >= VersionTuple(7, 1))
778 Builder.defineMacro(
"_AIX71");
779 if (OsVersion >= VersionTuple(7, 2))
780 Builder.defineMacro(
"_AIX72");
781 if (OsVersion >= VersionTuple(7, 3))
782 Builder.defineMacro(
"_AIX73");
785 Builder.defineMacro(
"_LONG_LONG");
787 if (Opts.POSIXThreads) {
788 Builder.defineMacro(
"_THREAD_SAFE");
791 if (this->PointerWidth == 64) {
792 Builder.defineMacro(
"__64BIT__");
797 if (Opts.CPlusPlus && Opts.WChar) {
798 Builder.defineMacro(
"_WCHAR_T");
805 this->MCountName =
"__mcount";
806 this->TheCXXABI.set(TargetCXXABI::XL);
808 if (this->PointerWidth == 64) {
809 this->WCharType = this->UnsignedInt;
811 this->WCharType = this->UnsignedShort;
813 this->UseZeroLengthBitfieldAlignment =
true;
829template <
typename Target>
835 Builder.defineMacro(
"_LONG_LONG");
836 Builder.defineMacro(
"__370__");
837 Builder.defineMacro(
"__BFP__");
839 Builder.defineMacro(
"__BOOL__");
840 Builder.defineMacro(
"__COMPILER_VER__",
"0x50000000");
841 Builder.defineMacro(
"__LONGNAME__");
842 Builder.defineMacro(
"__MVS__");
843 Builder.defineMacro(
"__THW_370__");
844 Builder.defineMacro(
"__THW_BIG_ENDIAN__");
845 Builder.defineMacro(
"__TOS_390__");
846 Builder.defineMacro(
"__TOS_MVS__");
847 Builder.defineMacro(
"__XPLINK__");
849 if (this->PointerWidth == 64)
850 Builder.defineMacro(
"__64BIT__");
852 if (Opts.CPlusPlus && Opts.WChar) {
855 Builder.defineMacro(
"__wchar_t");
858 this->PlatformName = llvm::Triple::getOSTypeName(Triple.getOS());
865 this->MaxAlignedAttribute = 128;
866 this->UseBitFieldTypeAlignment =
false;
867 this->UseZeroLengthBitfieldAlignment =
true;
868 this->UseLeadingZeroLengthBitfield =
false;
869 this->ZeroLengthBitfieldBoundary = 32;
870 this->TheCXXABI.set(TargetCXXABI::XL);
879template <
typename Target>
884 Builder.defineMacro(
"__UEFI__");
892 this->UseMicrosoftManglingForC =
true;
896void addWindowsDefines(
const llvm::Triple &Triple,
const LangOptions &Opts,
900template <
typename Target>
913 this->UseMicrosoftManglingForC =
true;
918 const llvm::Triple &Triple);
921template <
typename Target>
927 this->PlatformName =
"fuchsia";
928 this->PlatformMinVersion = VersionTuple(Opts.FuchsiaAPILevel);
935 this->MCountName =
"__mcount";
936 this->TheCXXABI.set(TargetCXXABI::Fuchsia);
941template <
typename Target>
948 if (Opts.POSIXThreads)
949 Builder.defineMacro(
"_REENTRANT");
952 Builder.defineMacro(
"_GNU_SOURCE");
954 Builder.defineMacro(
"__FLOAT128__");
961 this->MCountName =
"__mcount";
962 this->TheCXXABI.set(TargetCXXABI::WebAssembly);
963 this->HasFloat128 =
true;
968template <
typename Target>
971 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
974 Builder.defineMacro(
"__wasi__");
975 Builder.defineMacro(
"__wasip1__");
983template <
typename Target>
986 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
989 Builder.defineMacro(
"__wasi__");
990 Builder.defineMacro(
"__wasip2__");
998template <
typename Target>
1001 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
1004 Builder.defineMacro(
"__wasi__");
1005 Builder.defineMacro(
"__wasip3__");
1013template <
typename Target>
1016 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
1022 Builder.defineMacro(
"__wali__");
1030template <
typename Target>
1033 void getOSDefines(
const LangOptions &Opts,
const llvm::Triple &Triple,
1037 Builder.defineMacro(
"__EMSCRIPTEN__");
1038 if (Opts.POSIXThreads)
1039 Builder.defineMacro(
"__EMSCRIPTEN_PTHREADS__");
1051 this->LongDoubleAlign = 64;
1052 this->Float128Align = 64;
1057template <
typename Target>
1066 if (Triple.isOHOSFamily()) {
1067 Builder.defineMacro(
"__OHOS_FAMILY__",
"1");
1069 auto Version = Triple.getEnvironmentVersion();
1070 this->PlatformName =
"ohos";
1071 this->PlatformMinVersion = Version;
1072 Builder.defineMacro(
"__OHOS_Major__", Twine(Version.getMajor()));
1073 if (
auto Minor = Version.getMinor())
1074 Builder.defineMacro(
"__OHOS_Minor__", Twine(*Minor));
1075 if (
auto Subminor = Version.getSubminor())
1076 Builder.defineMacro(
"__OHOS_Micro__", Twine(*Subminor));
1079 if (Triple.isOpenHOS())
1080 Builder.defineMacro(
"__OHOS__");
1082 if (Triple.isOSLinux()) {
1084 }
else if (Triple.isOSLiteOS()) {
1085 Builder.defineMacro(
"__LITEOS__");
1088 if (Opts.POSIXThreads)
1089 Builder.defineMacro(
"_REENTRANT");
1091 Builder.defineMacro(
"_GNU_SOURCE");
1092 if (this->HasFloat128)
1093 Builder.defineMacro(
"__FLOAT128__");
1101 switch (Triple.getArch()) {
1104 case llvm::Triple::x86:
1105 case llvm::Triple::x86_64:
1106 this->HasFloat128 = true;
1112 return ".text.startup";
1117template <
typename Target>
1122 Builder.defineMacro(
"__qurt__");
1124 Builder.defineMacro(
"_GNU_SOURCE");
1132template <
typename Target>
1137 Builder.defineMacro(
"__h2__");
1139 Builder.defineMacro(
"_GNU_SOURCE");
1147template <
typename Target>
1152 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 ----------------------------—===//