/src/llvm-project/clang/lib/Basic/Targets/OSTargets.h
Line | Count | Source (jump to first uncovered line) |
1 | | //===--- OSTargets.h - Declare OS target feature support --------*- C++ -*-===// |
2 | | // |
3 | | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | | // See https://llvm.org/LICENSE.txt for license information. |
5 | | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | | // |
7 | | //===----------------------------------------------------------------------===// |
8 | | // |
9 | | // This file declares OS specific TargetInfo types. |
10 | | //===----------------------------------------------------------------------===// |
11 | | |
12 | | #ifndef LLVM_CLANG_LIB_BASIC_TARGETS_OSTARGETS_H |
13 | | #define LLVM_CLANG_LIB_BASIC_TARGETS_OSTARGETS_H |
14 | | |
15 | | #include "Targets.h" |
16 | | |
17 | | namespace clang { |
18 | | namespace targets { |
19 | | |
20 | | template <typename TgtInfo> |
21 | | class LLVM_LIBRARY_VISIBILITY OSTargetInfo : public TgtInfo { |
22 | | protected: |
23 | | virtual void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
24 | | MacroBuilder &Builder) const = 0; |
25 | | |
26 | | public: |
27 | | OSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
28 | 46 | : TgtInfo(Triple, Opts) {} Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::HexagonTargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::AArch64leTargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::AArch64beTargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::ARMleTargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::ARMbeTargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::MipsTargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::NaClMips32TargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::M68kTargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::PNaClTargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::PPC32TargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::PPC64TargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::RISCV32TargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::RISCV64TargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::SparcV8TargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::SparcV8elTargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::SparcV9TargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::SystemZTargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::X86_32TargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) clang::targets::OSTargetInfo<clang::targets::X86_64TargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Line | Count | Source | 28 | 46 | : TgtInfo(Triple, Opts) {} |
Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::WebAssembly32TargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::WebAssembly64TargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::RenderScript32TargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::RenderScript64TargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::VETargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::CSKYTargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::LoongArch32TargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::LoongArch64TargetInfo>::OSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
29 | | |
30 | | void getTargetDefines(const LangOptions &Opts, |
31 | 46 | MacroBuilder &Builder) const override { |
32 | 46 | TgtInfo::getTargetDefines(Opts, Builder); |
33 | 46 | getOSDefines(Opts, TgtInfo::getTriple(), Builder); |
34 | 46 | } Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::HexagonTargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::AArch64leTargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::AArch64beTargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::ARMleTargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::ARMbeTargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::MipsTargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::NaClMips32TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::M68kTargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::PNaClTargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::PPC32TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::PPC64TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::RISCV32TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::RISCV64TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::SparcV8TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::SparcV8elTargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::SparcV9TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::SystemZTargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::X86_32TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const clang::targets::OSTargetInfo<clang::targets::X86_64TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Line | Count | Source | 31 | 46 | MacroBuilder &Builder) const override { | 32 | 46 | TgtInfo::getTargetDefines(Opts, Builder); | 33 | 46 | getOSDefines(Opts, TgtInfo::getTriple(), Builder); | 34 | 46 | } |
Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::WebAssembly32TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::WebAssembly64TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::RenderScript32TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::RenderScript64TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::VETargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::CSKYTargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::LoongArch32TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OSTargetInfo<clang::targets::LoongArch64TargetInfo>::getTargetDefines(clang::LangOptions const&, clang::MacroBuilder&) const |
35 | | }; |
36 | | |
37 | | void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts, |
38 | | const llvm::Triple &Triple, StringRef &PlatformName, |
39 | | VersionTuple &PlatformMinVersion); |
40 | | |
41 | | template <typename Target> |
42 | | class LLVM_LIBRARY_VISIBILITY DarwinTargetInfo : public OSTargetInfo<Target> { |
43 | | protected: |
44 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
45 | 0 | MacroBuilder &Builder) const override { |
46 | 0 | getDarwinDefines(Builder, Opts, Triple, this->PlatformName, |
47 | 0 | this->PlatformMinVersion); |
48 | 0 | } Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::AArch64leTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::ARMleTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
49 | | |
50 | | public: |
51 | | DarwinTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
52 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
53 | | // By default, no TLS, and we list permitted architecture/OS |
54 | | // combinations. |
55 | 0 | this->TLSSupported = false; |
56 | |
|
57 | 0 | if (Triple.isMacOSX()) |
58 | 0 | this->TLSSupported = !Triple.isMacOSXVersionLT(10, 7); |
59 | 0 | else if (Triple.isiOS()) { |
60 | | // 64-bit iOS supported it from 8 onwards, 32-bit device from 9 onwards, |
61 | | // 32-bit simulator from 10 onwards. |
62 | 0 | if (Triple.isArch64Bit()) |
63 | 0 | this->TLSSupported = !Triple.isOSVersionLT(8); |
64 | 0 | else if (Triple.isArch32Bit()) { |
65 | 0 | if (!Triple.isSimulatorEnvironment()) |
66 | 0 | this->TLSSupported = !Triple.isOSVersionLT(9); |
67 | 0 | else |
68 | 0 | this->TLSSupported = !Triple.isOSVersionLT(10); |
69 | 0 | } |
70 | 0 | } else if (Triple.isWatchOS()) { |
71 | 0 | if (!Triple.isSimulatorEnvironment()) |
72 | 0 | this->TLSSupported = !Triple.isOSVersionLT(2); |
73 | 0 | else |
74 | 0 | this->TLSSupported = !Triple.isOSVersionLT(3); |
75 | 0 | } else if (Triple.isDriverKit()) { |
76 | | // No TLS on DriverKit. |
77 | 0 | } |
78 | |
|
79 | 0 | this->MCountName = "\01mcount"; |
80 | 0 | } Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::X86_32TargetInfo>::DarwinTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::X86_64TargetInfo>::DarwinTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::AArch64leTargetInfo>::DarwinTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::ARMleTargetInfo>::DarwinTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
81 | | |
82 | 0 | const char *getStaticInitSectionSpecifier() const override { |
83 | | // FIXME: We should return 0 when building kexts. |
84 | 0 | return "__TEXT,__StaticInit,regular,pure_instructions"; |
85 | 0 | } Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::X86_32TargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::X86_64TargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::AArch64leTargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::ARMleTargetInfo>::getStaticInitSectionSpecifier() const |
86 | | |
87 | | /// Darwin does not support protected visibility. Darwin's "default" |
88 | | /// is very similar to ELF's "protected"; Darwin requires a "weak" |
89 | | /// attribute on declarations that can be dynamically replaced. |
90 | 0 | bool hasProtectedVisibility() const override { return false; } Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::X86_32TargetInfo>::hasProtectedVisibility() const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::X86_64TargetInfo>::hasProtectedVisibility() const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::AArch64leTargetInfo>::hasProtectedVisibility() const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::ARMleTargetInfo>::hasProtectedVisibility() const |
91 | | |
92 | 0 | unsigned getExnObjectAlignment() const override { |
93 | | // Older versions of libc++abi guarantee an alignment of only 8-bytes for |
94 | | // exception objects because of a bug in __cxa_exception that was |
95 | | // eventually fixed in r319123. |
96 | 0 | llvm::VersionTuple MinVersion; |
97 | 0 | const llvm::Triple &T = this->getTriple(); |
98 | | |
99 | | // Compute the earliest OS versions that have the fix to libc++abi. |
100 | 0 | switch (T.getOS()) { |
101 | 0 | case llvm::Triple::Darwin: |
102 | 0 | case llvm::Triple::MacOSX: // Earliest supporting version is 10.14. |
103 | 0 | MinVersion = llvm::VersionTuple(10U, 14U); |
104 | 0 | break; |
105 | 0 | case llvm::Triple::IOS: |
106 | 0 | case llvm::Triple::TvOS: // Earliest supporting version is 12.0.0. |
107 | 0 | MinVersion = llvm::VersionTuple(12U); |
108 | 0 | break; |
109 | 0 | case llvm::Triple::WatchOS: // Earliest supporting version is 5.0.0. |
110 | 0 | MinVersion = llvm::VersionTuple(5U); |
111 | 0 | break; |
112 | 0 | default: |
113 | | // Conservatively return 8 bytes if OS is unknown. |
114 | 0 | return 64; |
115 | 0 | } |
116 | | |
117 | 0 | if (T.getOSVersion() < MinVersion) |
118 | 0 | return 64; |
119 | 0 | return OSTargetInfo<Target>::getExnObjectAlignment(); |
120 | 0 | } Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::X86_32TargetInfo>::getExnObjectAlignment() const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::X86_64TargetInfo>::getExnObjectAlignment() const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::AArch64leTargetInfo>::getExnObjectAlignment() const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::ARMleTargetInfo>::getExnObjectAlignment() const |
121 | | |
122 | | TargetInfo::IntType getLeastIntTypeByWidth(unsigned BitWidth, |
123 | 0 | bool IsSigned) const final { |
124 | | // Darwin uses `long long` for `int_least64_t` and `int_fast64_t`. |
125 | 0 | return BitWidth == 64 |
126 | 0 | ? (IsSigned ? TargetInfo::SignedLongLong |
127 | 0 | : TargetInfo::UnsignedLongLong) |
128 | 0 | : TargetInfo::getLeastIntTypeByWidth(BitWidth, IsSigned); |
129 | 0 | } Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::X86_32TargetInfo>::getLeastIntTypeByWidth(unsigned int, bool) const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::X86_64TargetInfo>::getLeastIntTypeByWidth(unsigned int, bool) const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::AArch64leTargetInfo>::getLeastIntTypeByWidth(unsigned int, bool) const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::ARMleTargetInfo>::getLeastIntTypeByWidth(unsigned int, bool) const |
130 | | |
131 | 0 | bool areDefaultedSMFStillPOD(const LangOptions &) const override { |
132 | 0 | return false; |
133 | 0 | } Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::X86_32TargetInfo>::areDefaultedSMFStillPOD(clang::LangOptions const&) const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::X86_64TargetInfo>::areDefaultedSMFStillPOD(clang::LangOptions const&) const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::AArch64leTargetInfo>::areDefaultedSMFStillPOD(clang::LangOptions const&) const Unexecuted instantiation: clang::targets::DarwinTargetInfo<clang::targets::ARMleTargetInfo>::areDefaultedSMFStillPOD(clang::LangOptions const&) const |
134 | | }; |
135 | | |
136 | | // DragonFlyBSD Target |
137 | | template <typename Target> |
138 | | class LLVM_LIBRARY_VISIBILITY DragonFlyBSDTargetInfo |
139 | | : public OSTargetInfo<Target> { |
140 | | protected: |
141 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
142 | 0 | MacroBuilder &Builder) const override { |
143 | | // DragonFly defines; list based off of gcc output |
144 | 0 | Builder.defineMacro("__DragonFly__"); |
145 | 0 | Builder.defineMacro("__DragonFly_cc_version", "100001"); |
146 | 0 | Builder.defineMacro("__KPRINTF_ATTRIBUTE__"); |
147 | 0 | Builder.defineMacro("__tune_i386__"); |
148 | 0 | DefineStd(Builder, "unix", Opts); |
149 | 0 | if (this->HasFloat128) |
150 | 0 | Builder.defineMacro("__FLOAT128__"); |
151 | 0 | } Unexecuted instantiation: clang::targets::DragonFlyBSDTargetInfo<clang::targets::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::DragonFlyBSDTargetInfo<clang::targets::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
152 | | |
153 | | public: |
154 | | DragonFlyBSDTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
155 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
156 | 0 | switch (Triple.getArch()) { |
157 | 0 | default: |
158 | 0 | case llvm::Triple::x86: |
159 | 0 | case llvm::Triple::x86_64: |
160 | 0 | this->HasFloat128 = true; |
161 | 0 | this->MCountName = ".mcount"; |
162 | 0 | break; |
163 | 0 | } |
164 | 0 | } Unexecuted instantiation: clang::targets::DragonFlyBSDTargetInfo<clang::targets::X86_32TargetInfo>::DragonFlyBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::DragonFlyBSDTargetInfo<clang::targets::X86_64TargetInfo>::DragonFlyBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
165 | | }; |
166 | | |
167 | | #ifndef FREEBSD_CC_VERSION |
168 | 0 | #define FREEBSD_CC_VERSION 0U |
169 | | #endif |
170 | | |
171 | | // FreeBSD Target |
172 | | template <typename Target> |
173 | | class LLVM_LIBRARY_VISIBILITY FreeBSDTargetInfo : public OSTargetInfo<Target> { |
174 | | protected: |
175 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
176 | 0 | MacroBuilder &Builder) const override { |
177 | | // FreeBSD defines; list based off of gcc output |
178 | |
|
179 | 0 | unsigned Release = Triple.getOSMajorVersion(); |
180 | 0 | if (Release == 0U) |
181 | 0 | Release = 8U; |
182 | 0 | unsigned CCVersion = FREEBSD_CC_VERSION; |
183 | 0 | if (CCVersion == 0U) |
184 | 0 | CCVersion = Release * 100000U + 1U; |
185 | |
|
186 | 0 | Builder.defineMacro("__FreeBSD__", Twine(Release)); |
187 | 0 | Builder.defineMacro("__FreeBSD_cc_version", Twine(CCVersion)); |
188 | 0 | Builder.defineMacro("__KPRINTF_ATTRIBUTE__"); |
189 | 0 | DefineStd(Builder, "unix", Opts); |
190 | 0 | if (this->HasFloat128) |
191 | 0 | Builder.defineMacro("__FLOAT128__"); |
192 | | |
193 | | // On FreeBSD, wchar_t contains the number of the code point as |
194 | | // used by the character set of the locale. These character sets are |
195 | | // not necessarily a superset of ASCII. |
196 | | // |
197 | | // FIXME: This is wrong; the macro refers to the numerical values |
198 | | // of wchar_t *literals*, which are not locale-dependent. However, |
199 | | // FreeBSD systems apparently depend on us getting this wrong, and |
200 | | // setting this to 1 is conforming even if all the basic source |
201 | | // character literals have the same encoding as char and wchar_t. |
202 | 0 | Builder.defineMacro("__STDC_MB_MIGHT_NEQ_WC__", "1"); |
203 | 0 | } Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::AArch64leTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::AArch64beTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::ARMleTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::MipsTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::PPC32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::PPC64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::RISCV64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::SparcV9TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
204 | | |
205 | | public: |
206 | | FreeBSDTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
207 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
208 | 0 | switch (Triple.getArch()) { |
209 | 0 | case llvm::Triple::x86: |
210 | 0 | case llvm::Triple::x86_64: |
211 | 0 | this->HasFloat128 = true; |
212 | 0 | [[fallthrough]]; |
213 | 0 | default: |
214 | 0 | this->MCountName = ".mcount"; |
215 | 0 | break; |
216 | 0 | case llvm::Triple::mips: |
217 | 0 | case llvm::Triple::mipsel: |
218 | 0 | case llvm::Triple::ppc: |
219 | 0 | case llvm::Triple::ppcle: |
220 | 0 | case llvm::Triple::ppc64: |
221 | 0 | case llvm::Triple::ppc64le: |
222 | 0 | this->MCountName = "_mcount"; |
223 | 0 | break; |
224 | 0 | case llvm::Triple::arm: |
225 | 0 | this->MCountName = "__mcount"; |
226 | 0 | break; |
227 | 0 | case llvm::Triple::riscv32: |
228 | 0 | case llvm::Triple::riscv64: |
229 | 0 | break; |
230 | 0 | } |
231 | 0 | } Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::AArch64leTargetInfo>::FreeBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::AArch64beTargetInfo>::FreeBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::ARMleTargetInfo>::FreeBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::MipsTargetInfo>::FreeBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::PPC32TargetInfo>::FreeBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::PPC64TargetInfo>::FreeBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::RISCV64TargetInfo>::FreeBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::SparcV9TargetInfo>::FreeBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::X86_32TargetInfo>::FreeBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::FreeBSDTargetInfo<clang::targets::X86_64TargetInfo>::FreeBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
232 | | }; |
233 | | |
234 | | // GNU/kFreeBSD Target |
235 | | template <typename Target> |
236 | | class LLVM_LIBRARY_VISIBILITY KFreeBSDTargetInfo : public OSTargetInfo<Target> { |
237 | | protected: |
238 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
239 | 0 | MacroBuilder &Builder) const override { |
240 | | // GNU/kFreeBSD defines; list based off of gcc output |
241 | |
|
242 | 0 | DefineStd(Builder, "unix", Opts); |
243 | 0 | Builder.defineMacro("__FreeBSD_kernel__"); |
244 | 0 | Builder.defineMacro("__GLIBC__"); |
245 | 0 | if (Opts.POSIXThreads) |
246 | 0 | Builder.defineMacro("_REENTRANT"); |
247 | 0 | if (Opts.CPlusPlus) |
248 | 0 | Builder.defineMacro("_GNU_SOURCE"); |
249 | 0 | } Unexecuted instantiation: clang::targets::KFreeBSDTargetInfo<clang::targets::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::KFreeBSDTargetInfo<clang::targets::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
250 | | |
251 | | public: |
252 | | using OSTargetInfo<Target>::OSTargetInfo; |
253 | | }; |
254 | | |
255 | | // Haiku Target |
256 | | template <typename Target> |
257 | | class LLVM_LIBRARY_VISIBILITY HaikuTargetInfo : public OSTargetInfo<Target> { |
258 | | protected: |
259 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
260 | 0 | MacroBuilder &Builder) const override { |
261 | | // Haiku defines; list based off of gcc output |
262 | 0 | Builder.defineMacro("__HAIKU__"); |
263 | 0 | DefineStd(Builder, "unix", Opts); |
264 | 0 | if (this->HasFloat128) |
265 | 0 | Builder.defineMacro("__FLOAT128__"); |
266 | 0 | } Unexecuted instantiation: clang::targets::HaikuTargetInfo<clang::targets::AArch64leTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::HaikuTargetInfo<clang::targets::ARMleTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::HaikuTargetInfo<clang::targets::RISCV64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::HaikuTargetInfo<clang::targets::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::HaikuTargetInfo<clang::targets::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
267 | | |
268 | | public: |
269 | | HaikuTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
270 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
271 | 0 | this->SizeType = TargetInfo::UnsignedLong; |
272 | 0 | this->IntPtrType = TargetInfo::SignedLong; |
273 | 0 | this->PtrDiffType = TargetInfo::SignedLong; |
274 | 0 | this->ProcessIDType = TargetInfo::SignedLong; |
275 | 0 | switch (Triple.getArch()) { |
276 | 0 | default: |
277 | 0 | break; |
278 | 0 | case llvm::Triple::x86: |
279 | 0 | case llvm::Triple::x86_64: |
280 | 0 | this->HasFloat128 = true; |
281 | 0 | break; |
282 | 0 | } |
283 | 0 | } Unexecuted instantiation: clang::targets::HaikuTargetInfo<clang::targets::AArch64leTargetInfo>::HaikuTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::HaikuTargetInfo<clang::targets::ARMleTargetInfo>::HaikuTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::HaikuTargetInfo<clang::targets::RISCV64TargetInfo>::HaikuTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::HaikuTargetInfo<clang::targets::X86_32TargetInfo>::HaikuTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::HaikuTargetInfo<clang::targets::X86_64TargetInfo>::HaikuTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
284 | | }; |
285 | | |
286 | | // Hurd target |
287 | | template <typename Target> |
288 | | class LLVM_LIBRARY_VISIBILITY HurdTargetInfo : public OSTargetInfo<Target> { |
289 | | protected: |
290 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
291 | 0 | MacroBuilder &Builder) const override { |
292 | | // Hurd defines; list based off of gcc output. |
293 | 0 | DefineStd(Builder, "unix", Opts); |
294 | 0 | Builder.defineMacro("__GNU__"); |
295 | 0 | Builder.defineMacro("__gnu_hurd__"); |
296 | 0 | Builder.defineMacro("__MACH__"); |
297 | 0 | Builder.defineMacro("__GLIBC__"); |
298 | 0 | if (Opts.POSIXThreads) |
299 | 0 | Builder.defineMacro("_REENTRANT"); |
300 | 0 | if (Opts.CPlusPlus) |
301 | 0 | Builder.defineMacro("_GNU_SOURCE"); |
302 | 0 | } |
303 | | public: |
304 | | using OSTargetInfo<Target>::OSTargetInfo; |
305 | | }; |
306 | | |
307 | | // Linux target |
308 | | template <typename Target> |
309 | | class LLVM_LIBRARY_VISIBILITY LinuxTargetInfo : public OSTargetInfo<Target> { |
310 | | protected: |
311 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
312 | 46 | MacroBuilder &Builder) const override { |
313 | | // Linux defines; list based off of gcc output |
314 | 46 | DefineStd(Builder, "unix", Opts); |
315 | 46 | DefineStd(Builder, "linux", Opts); |
316 | 46 | if (Triple.isAndroid()) { |
317 | 0 | Builder.defineMacro("__ANDROID__", "1"); |
318 | 0 | this->PlatformName = "android"; |
319 | 0 | this->PlatformMinVersion = Triple.getEnvironmentVersion(); |
320 | 0 | const unsigned Maj = this->PlatformMinVersion.getMajor(); |
321 | 0 | if (Maj) { |
322 | 0 | Builder.defineMacro("__ANDROID_MIN_SDK_VERSION__", Twine(Maj)); |
323 | | // This historical but ambiguous name for the minSdkVersion macro. Keep |
324 | | // defined for compatibility. |
325 | 0 | Builder.defineMacro("__ANDROID_API__", "__ANDROID_MIN_SDK_VERSION__"); |
326 | 0 | } |
327 | 46 | } else { |
328 | 46 | Builder.defineMacro("__gnu_linux__"); |
329 | 46 | } |
330 | 46 | if (Opts.POSIXThreads) |
331 | 0 | Builder.defineMacro("_REENTRANT"); |
332 | 46 | if (Opts.CPlusPlus) |
333 | 23 | Builder.defineMacro("_GNU_SOURCE"); |
334 | 46 | if (this->HasFloat128) |
335 | 46 | Builder.defineMacro("__FLOAT128__"); |
336 | 46 | } Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::HexagonTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::AArch64leTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::AArch64beTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::ARMleTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::ARMbeTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::MipsTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::M68kTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::PPC32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::PPC64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::RISCV32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::RISCV64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::SparcV8TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::SparcV8elTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::SparcV9TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::SystemZTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const clang::targets::LinuxTargetInfo<clang::targets::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Line | Count | Source | 312 | 46 | MacroBuilder &Builder) const override { | 313 | | // Linux defines; list based off of gcc output | 314 | 46 | DefineStd(Builder, "unix", Opts); | 315 | 46 | DefineStd(Builder, "linux", Opts); | 316 | 46 | if (Triple.isAndroid()) { | 317 | 0 | Builder.defineMacro("__ANDROID__", "1"); | 318 | 0 | this->PlatformName = "android"; | 319 | 0 | this->PlatformMinVersion = Triple.getEnvironmentVersion(); | 320 | 0 | const unsigned Maj = this->PlatformMinVersion.getMajor(); | 321 | 0 | if (Maj) { | 322 | 0 | Builder.defineMacro("__ANDROID_MIN_SDK_VERSION__", Twine(Maj)); | 323 | | // This historical but ambiguous name for the minSdkVersion macro. Keep | 324 | | // defined for compatibility. | 325 | 0 | Builder.defineMacro("__ANDROID_API__", "__ANDROID_MIN_SDK_VERSION__"); | 326 | 0 | } | 327 | 46 | } else { | 328 | 46 | Builder.defineMacro("__gnu_linux__"); | 329 | 46 | } | 330 | 46 | if (Opts.POSIXThreads) | 331 | 0 | Builder.defineMacro("_REENTRANT"); | 332 | 46 | if (Opts.CPlusPlus) | 333 | 23 | Builder.defineMacro("_GNU_SOURCE"); | 334 | 46 | if (this->HasFloat128) | 335 | 46 | Builder.defineMacro("__FLOAT128__"); | 336 | 46 | } |
Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::RenderScript32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::RenderScript64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::VETargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::CSKYTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::LoongArch32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::LoongArch64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
337 | | |
338 | | public: |
339 | | LinuxTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
340 | 46 | : OSTargetInfo<Target>(Triple, Opts) { |
341 | 46 | this->WIntType = TargetInfo::UnsignedInt; |
342 | | |
343 | 46 | switch (Triple.getArch()) { |
344 | 0 | default: |
345 | 0 | break; |
346 | 0 | case llvm::Triple::mips: |
347 | 0 | case llvm::Triple::mipsel: |
348 | 0 | case llvm::Triple::mips64: |
349 | 0 | case llvm::Triple::mips64el: |
350 | 0 | case llvm::Triple::ppc: |
351 | 0 | case llvm::Triple::ppcle: |
352 | 0 | case llvm::Triple::ppc64: |
353 | 0 | case llvm::Triple::ppc64le: |
354 | 0 | this->MCountName = "_mcount"; |
355 | 0 | break; |
356 | 0 | case llvm::Triple::x86: |
357 | 46 | case llvm::Triple::x86_64: |
358 | 46 | this->HasFloat128 = true; |
359 | 46 | break; |
360 | 46 | } |
361 | 46 | } Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::HexagonTargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::AArch64leTargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::AArch64beTargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::ARMleTargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::ARMbeTargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::MipsTargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::M68kTargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::PPC32TargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::PPC64TargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::RISCV32TargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::RISCV64TargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::SparcV8TargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::SparcV8elTargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::SparcV9TargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::SystemZTargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::X86_32TargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) clang::targets::LinuxTargetInfo<clang::targets::X86_64TargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Line | Count | Source | 340 | 46 | : OSTargetInfo<Target>(Triple, Opts) { | 341 | 46 | this->WIntType = TargetInfo::UnsignedInt; | 342 | | | 343 | 46 | switch (Triple.getArch()) { | 344 | 0 | default: | 345 | 0 | break; | 346 | 0 | case llvm::Triple::mips: | 347 | 0 | case llvm::Triple::mipsel: | 348 | 0 | case llvm::Triple::mips64: | 349 | 0 | case llvm::Triple::mips64el: | 350 | 0 | case llvm::Triple::ppc: | 351 | 0 | case llvm::Triple::ppcle: | 352 | 0 | case llvm::Triple::ppc64: | 353 | 0 | case llvm::Triple::ppc64le: | 354 | 0 | this->MCountName = "_mcount"; | 355 | 0 | break; | 356 | 0 | case llvm::Triple::x86: | 357 | 46 | case llvm::Triple::x86_64: | 358 | 46 | this->HasFloat128 = true; | 359 | 46 | break; | 360 | 46 | } | 361 | 46 | } |
Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::RenderScript32TargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::RenderScript64TargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::VETargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::CSKYTargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::LoongArch32TargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::LoongArch64TargetInfo>::LinuxTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
362 | | |
363 | 0 | const char *getStaticInitSectionSpecifier() const override { |
364 | 0 | return ".text.startup"; |
365 | 0 | } Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::HexagonTargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::AArch64leTargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::AArch64beTargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::ARMleTargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::ARMbeTargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::MipsTargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::M68kTargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::PPC32TargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::PPC64TargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::RISCV32TargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::RISCV64TargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::SparcV8TargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::SparcV8elTargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::SparcV9TargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::SystemZTargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::X86_32TargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::X86_64TargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::RenderScript32TargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::RenderScript64TargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::VETargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::CSKYTargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::LoongArch32TargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::LinuxTargetInfo<clang::targets::LoongArch64TargetInfo>::getStaticInitSectionSpecifier() const |
366 | | }; |
367 | | |
368 | | // NetBSD Target |
369 | | template <typename Target> |
370 | | class LLVM_LIBRARY_VISIBILITY NetBSDTargetInfo : public OSTargetInfo<Target> { |
371 | | protected: |
372 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
373 | 0 | MacroBuilder &Builder) const override { |
374 | | // NetBSD defines; list based off of gcc output |
375 | 0 | Builder.defineMacro("__NetBSD__"); |
376 | 0 | Builder.defineMacro("__unix__"); |
377 | 0 | if (Opts.POSIXThreads) |
378 | 0 | Builder.defineMacro("_REENTRANT"); |
379 | 0 | if (this->HasFloat128) |
380 | 0 | Builder.defineMacro("__FLOAT128__"); |
381 | 0 | } Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::AArch64leTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::AArch64beTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::ARMleTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::ARMbeTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::MipsTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::M68kTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::PPC32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::PPC64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::RISCV32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::RISCV64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::SparcV8TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::SparcV9TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
382 | | |
383 | | public: |
384 | | NetBSDTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
385 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
386 | 0 | this->MCountName = "__mcount"; |
387 | 0 | switch (Triple.getArch()) { |
388 | 0 | default: |
389 | 0 | break; |
390 | 0 | case llvm::Triple::x86: |
391 | 0 | case llvm::Triple::x86_64: |
392 | 0 | this->HasFloat128 = true; |
393 | 0 | break; |
394 | 0 | } |
395 | 0 | } Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::AArch64leTargetInfo>::NetBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::AArch64beTargetInfo>::NetBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::ARMleTargetInfo>::NetBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::ARMbeTargetInfo>::NetBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::MipsTargetInfo>::NetBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::M68kTargetInfo>::NetBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::PPC32TargetInfo>::NetBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::PPC64TargetInfo>::NetBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::RISCV32TargetInfo>::NetBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::RISCV64TargetInfo>::NetBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::SparcV8TargetInfo>::NetBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::SparcV9TargetInfo>::NetBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::X86_32TargetInfo>::NetBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NetBSDTargetInfo<clang::targets::X86_64TargetInfo>::NetBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
396 | | }; |
397 | | |
398 | | // OpenBSD Target |
399 | | template <typename Target> |
400 | | class LLVM_LIBRARY_VISIBILITY OpenBSDTargetInfo : public OSTargetInfo<Target> { |
401 | | protected: |
402 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
403 | 0 | MacroBuilder &Builder) const override { |
404 | | // OpenBSD defines; list based off of gcc output |
405 | |
|
406 | 0 | Builder.defineMacro("__OpenBSD__"); |
407 | 0 | DefineStd(Builder, "unix", Opts); |
408 | 0 | if (Opts.POSIXThreads) |
409 | 0 | Builder.defineMacro("_REENTRANT"); |
410 | 0 | if (this->HasFloat128) |
411 | 0 | Builder.defineMacro("__FLOAT128__"); |
412 | |
|
413 | 0 | if (Opts.C11) |
414 | 0 | Builder.defineMacro("__STDC_NO_THREADS__"); |
415 | 0 | } Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::AArch64leTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::ARMleTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::MipsTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::PPC32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::PPC64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::RISCV64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::SparcV9TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
416 | | |
417 | | public: |
418 | | OpenBSDTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
419 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
420 | 0 | this->WCharType = this->WIntType = this->SignedInt; |
421 | 0 | this->IntMaxType = TargetInfo::SignedLongLong; |
422 | 0 | this->Int64Type = TargetInfo::SignedLongLong; |
423 | 0 | switch (Triple.getArch()) { |
424 | 0 | case llvm::Triple::x86: |
425 | 0 | case llvm::Triple::x86_64: |
426 | 0 | this->HasFloat128 = true; |
427 | 0 | [[fallthrough]]; |
428 | 0 | default: |
429 | 0 | this->MCountName = "__mcount"; |
430 | 0 | break; |
431 | 0 | case llvm::Triple::mips64: |
432 | 0 | case llvm::Triple::mips64el: |
433 | 0 | case llvm::Triple::ppc: |
434 | 0 | case llvm::Triple::ppc64: |
435 | 0 | case llvm::Triple::ppc64le: |
436 | 0 | case llvm::Triple::sparcv9: |
437 | 0 | this->MCountName = "_mcount"; |
438 | 0 | break; |
439 | 0 | case llvm::Triple::riscv32: |
440 | 0 | case llvm::Triple::riscv64: |
441 | 0 | break; |
442 | 0 | } |
443 | 0 | } Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::AArch64leTargetInfo>::OpenBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::ARMleTargetInfo>::OpenBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::MipsTargetInfo>::OpenBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::PPC32TargetInfo>::OpenBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::PPC64TargetInfo>::OpenBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::RISCV64TargetInfo>::OpenBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::SparcV9TargetInfo>::OpenBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::X86_32TargetInfo>::OpenBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OpenBSDTargetInfo<clang::targets::X86_64TargetInfo>::OpenBSDTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
444 | | }; |
445 | | |
446 | | // PS3 PPU Target |
447 | | template <typename Target> |
448 | | class LLVM_LIBRARY_VISIBILITY PS3PPUTargetInfo : public OSTargetInfo<Target> { |
449 | | protected: |
450 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
451 | 0 | MacroBuilder &Builder) const override { |
452 | | // PS3 PPU defines. |
453 | 0 | Builder.defineMacro("__PPU__"); |
454 | 0 | Builder.defineMacro("__CELLOS_LV2__"); |
455 | 0 | Builder.defineMacro("__LP32__"); |
456 | 0 | Builder.defineMacro("_ARCH_PPC64"); |
457 | 0 | Builder.defineMacro("__powerpc64__"); |
458 | 0 | } |
459 | | |
460 | | public: |
461 | | PS3PPUTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
462 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
463 | 0 | this->LongWidth = this->LongAlign = 32; |
464 | 0 | this->PointerWidth = this->PointerAlign = 32; |
465 | 0 | this->IntMaxType = TargetInfo::SignedLongLong; |
466 | 0 | this->Int64Type = TargetInfo::SignedLongLong; |
467 | 0 | this->SizeType = TargetInfo::UnsignedInt; |
468 | 0 | this->resetDataLayout("E-m:e-p:32:32-Fi64-i64:64-n32:64"); |
469 | 0 | } |
470 | | }; |
471 | | |
472 | | // Common base class for PS4/PS5 targets. |
473 | | template <typename Target> |
474 | | class LLVM_LIBRARY_VISIBILITY PSOSTargetInfo : public OSTargetInfo<Target> { |
475 | | protected: |
476 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
477 | 0 | MacroBuilder &Builder) const override { |
478 | 0 | Builder.defineMacro("__FreeBSD__", "9"); |
479 | 0 | Builder.defineMacro("__FreeBSD_cc_version", "900001"); |
480 | 0 | Builder.defineMacro("__KPRINTF_ATTRIBUTE__"); |
481 | 0 | DefineStd(Builder, "unix", Opts); |
482 | 0 | Builder.defineMacro("__SCE__"); |
483 | 0 | Builder.defineMacro("__STDC_NO_COMPLEX__"); |
484 | 0 | Builder.defineMacro("__STDC_NO_THREADS__"); |
485 | 0 | } |
486 | | |
487 | | public: |
488 | | PSOSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
489 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
490 | 0 | this->WCharType = TargetInfo::UnsignedShort; |
491 | | |
492 | | // On PS4/PS5, TLS variable cannot be aligned to more than 32 bytes (256 |
493 | | // bits). |
494 | 0 | this->MaxTLSAlign = 256; |
495 | | |
496 | | // On PS4/PS5, do not honor explicit bit field alignment, |
497 | | // as in "__attribute__((aligned(2))) int b : 1;". |
498 | 0 | this->UseExplicitBitFieldAlignment = false; |
499 | |
|
500 | 0 | this->MCountName = ".mcount"; |
501 | 0 | this->NewAlign = 256; |
502 | 0 | this->SuitableAlign = 256; |
503 | 0 | } |
504 | | |
505 | | TargetInfo::CallingConvCheckResult |
506 | 0 | checkCallingConvention(CallingConv CC) const override { |
507 | 0 | return (CC == CC_C) ? TargetInfo::CCCR_OK : TargetInfo::CCCR_Error; |
508 | 0 | } |
509 | | |
510 | 0 | bool areDefaultedSMFStillPOD(const LangOptions &) const override { |
511 | 0 | return false; |
512 | 0 | } |
513 | | }; |
514 | | |
515 | | // PS4 Target |
516 | | template <typename Target> |
517 | | class LLVM_LIBRARY_VISIBILITY PS4OSTargetInfo : public PSOSTargetInfo<Target> { |
518 | | protected: |
519 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
520 | 0 | MacroBuilder &Builder) const override { |
521 | | // Start with base class defines. |
522 | 0 | PSOSTargetInfo<Target>::getOSDefines(Opts, Triple, Builder); |
523 | |
|
524 | 0 | Builder.defineMacro("__ORBIS__"); |
525 | 0 | } |
526 | | |
527 | | public: |
528 | | using PSOSTargetInfo<Target>::PSOSTargetInfo; |
529 | | }; |
530 | | |
531 | | // PS5 Target |
532 | | template <typename Target> |
533 | | class LLVM_LIBRARY_VISIBILITY PS5OSTargetInfo : public PSOSTargetInfo<Target> { |
534 | | protected: |
535 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
536 | 0 | MacroBuilder &Builder) const override { |
537 | | // Start with base class defines. |
538 | 0 | PSOSTargetInfo<Target>::getOSDefines(Opts, Triple, Builder); |
539 | |
|
540 | 0 | Builder.defineMacro("__PROSPERO__"); |
541 | 0 | } |
542 | | |
543 | | public: |
544 | | using PSOSTargetInfo<Target>::PSOSTargetInfo; |
545 | | }; |
546 | | |
547 | | // RTEMS Target |
548 | | template <typename Target> |
549 | | class LLVM_LIBRARY_VISIBILITY RTEMSTargetInfo : public OSTargetInfo<Target> { |
550 | | protected: |
551 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
552 | 0 | MacroBuilder &Builder) const override { |
553 | | // RTEMS defines; list based off of gcc output |
554 | |
|
555 | 0 | Builder.defineMacro("__rtems__"); |
556 | 0 | if (Opts.CPlusPlus) |
557 | 0 | Builder.defineMacro("_GNU_SOURCE"); |
558 | 0 | } Unexecuted instantiation: clang::targets::RTEMSTargetInfo<clang::targets::ARMleTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::RTEMSTargetInfo<clang::targets::ARMbeTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::RTEMSTargetInfo<clang::targets::MipsTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::RTEMSTargetInfo<clang::targets::PPC32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::RTEMSTargetInfo<clang::targets::SparcV8TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::RTEMSTargetInfo<clang::targets::SparcV8elTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
559 | | |
560 | | public: |
561 | | RTEMSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
562 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
563 | 0 | switch (Triple.getArch()) { |
564 | 0 | default: |
565 | 0 | case llvm::Triple::x86: |
566 | | // this->MCountName = ".mcount"; |
567 | 0 | break; |
568 | 0 | case llvm::Triple::mips: |
569 | 0 | case llvm::Triple::mipsel: |
570 | 0 | case llvm::Triple::ppc: |
571 | 0 | case llvm::Triple::ppc64: |
572 | 0 | case llvm::Triple::ppc64le: |
573 | | // this->MCountName = "_mcount"; |
574 | 0 | break; |
575 | 0 | case llvm::Triple::arm: |
576 | | // this->MCountName = "__mcount"; |
577 | 0 | break; |
578 | 0 | } |
579 | 0 | } Unexecuted instantiation: clang::targets::RTEMSTargetInfo<clang::targets::ARMleTargetInfo>::RTEMSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::RTEMSTargetInfo<clang::targets::ARMbeTargetInfo>::RTEMSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::RTEMSTargetInfo<clang::targets::MipsTargetInfo>::RTEMSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::RTEMSTargetInfo<clang::targets::PPC32TargetInfo>::RTEMSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::RTEMSTargetInfo<clang::targets::SparcV8TargetInfo>::RTEMSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::RTEMSTargetInfo<clang::targets::SparcV8elTargetInfo>::RTEMSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
580 | | }; |
581 | | |
582 | | // Solaris target |
583 | | template <typename Target> |
584 | | class LLVM_LIBRARY_VISIBILITY SolarisTargetInfo : public OSTargetInfo<Target> { |
585 | | protected: |
586 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
587 | 0 | MacroBuilder &Builder) const override { |
588 | 0 | DefineStd(Builder, "sun", Opts); |
589 | 0 | DefineStd(Builder, "unix", Opts); |
590 | 0 | Builder.defineMacro("__svr4__"); |
591 | 0 | Builder.defineMacro("__SVR4"); |
592 | | // Solaris headers require _XOPEN_SOURCE to be set to 600 for C99 and |
593 | | // newer, but to 500 for everything else. feature_test.h has a check to |
594 | | // ensure that you are not using C99 with an old version of X/Open or C89 |
595 | | // with a new version. |
596 | 0 | if (Opts.C99) |
597 | 0 | Builder.defineMacro("_XOPEN_SOURCE", "600"); |
598 | 0 | else |
599 | 0 | Builder.defineMacro("_XOPEN_SOURCE", "500"); |
600 | 0 | if (Opts.CPlusPlus) { |
601 | 0 | Builder.defineMacro("__C99FEATURES__"); |
602 | 0 | Builder.defineMacro("_FILE_OFFSET_BITS", "64"); |
603 | 0 | } |
604 | | // GCC restricts the next two to C++. |
605 | 0 | Builder.defineMacro("_LARGEFILE_SOURCE"); |
606 | 0 | Builder.defineMacro("_LARGEFILE64_SOURCE"); |
607 | 0 | Builder.defineMacro("__EXTENSIONS__"); |
608 | 0 | if (Opts.POSIXThreads) |
609 | 0 | Builder.defineMacro("_REENTRANT"); |
610 | 0 | if (this->HasFloat128) |
611 | 0 | Builder.defineMacro("__FLOAT128__"); |
612 | 0 | } Unexecuted instantiation: clang::targets::SolarisTargetInfo<clang::targets::SparcV8TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::SolarisTargetInfo<clang::targets::SparcV9TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::SolarisTargetInfo<clang::targets::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::SolarisTargetInfo<clang::targets::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
613 | | |
614 | | public: |
615 | | SolarisTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
616 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
617 | 0 | if (this->PointerWidth == 64) { |
618 | 0 | this->WCharType = this->WIntType = this->SignedInt; |
619 | 0 | } else { |
620 | 0 | this->WCharType = this->WIntType = this->SignedLong; |
621 | 0 | } |
622 | 0 | switch (Triple.getArch()) { |
623 | 0 | default: |
624 | 0 | break; |
625 | 0 | case llvm::Triple::x86: |
626 | 0 | case llvm::Triple::x86_64: |
627 | 0 | this->HasFloat128 = true; |
628 | 0 | break; |
629 | 0 | } |
630 | 0 | } Unexecuted instantiation: clang::targets::SolarisTargetInfo<clang::targets::SparcV8TargetInfo>::SolarisTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::SolarisTargetInfo<clang::targets::SparcV9TargetInfo>::SolarisTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::SolarisTargetInfo<clang::targets::X86_32TargetInfo>::SolarisTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::SolarisTargetInfo<clang::targets::X86_64TargetInfo>::SolarisTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
631 | | }; |
632 | | |
633 | | // AIX Target |
634 | | template <typename Target> |
635 | | class AIXTargetInfo : public OSTargetInfo<Target> { |
636 | | protected: |
637 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
638 | 0 | MacroBuilder &Builder) const override { |
639 | 0 | DefineStd(Builder, "unix", Opts); |
640 | 0 | Builder.defineMacro("_IBMR2"); |
641 | 0 | Builder.defineMacro("_POWER"); |
642 | 0 | Builder.defineMacro("__THW_BIG_ENDIAN__"); |
643 | |
|
644 | 0 | Builder.defineMacro("_AIX"); |
645 | 0 | Builder.defineMacro("__TOS_AIX__"); |
646 | 0 | Builder.defineMacro("__HOS_AIX__"); |
647 | |
|
648 | 0 | if (Opts.C11) { |
649 | 0 | Builder.defineMacro("__STDC_NO_ATOMICS__"); |
650 | 0 | Builder.defineMacro("__STDC_NO_THREADS__"); |
651 | 0 | } |
652 | |
|
653 | 0 | if (Opts.EnableAIXExtendedAltivecABI) |
654 | 0 | Builder.defineMacro("__EXTABI__"); |
655 | |
|
656 | 0 | VersionTuple OsVersion = Triple.getOSVersion(); |
657 | | |
658 | | // Define AIX OS-Version Macros. |
659 | | // Includes logic for legacy versions of AIX; no specific intent to support. |
660 | 0 | if (OsVersion >= VersionTuple(3, 2)) |
661 | 0 | Builder.defineMacro("_AIX32"); |
662 | 0 | if (OsVersion >= VersionTuple(4, 1)) |
663 | 0 | Builder.defineMacro("_AIX41"); |
664 | 0 | if (OsVersion >= VersionTuple(4, 3)) |
665 | 0 | Builder.defineMacro("_AIX43"); |
666 | 0 | if (OsVersion >= VersionTuple(5, 0)) |
667 | 0 | Builder.defineMacro("_AIX50"); |
668 | 0 | if (OsVersion >= VersionTuple(5, 1)) |
669 | 0 | Builder.defineMacro("_AIX51"); |
670 | 0 | if (OsVersion >= VersionTuple(5, 2)) |
671 | 0 | Builder.defineMacro("_AIX52"); |
672 | 0 | if (OsVersion >= VersionTuple(5, 3)) |
673 | 0 | Builder.defineMacro("_AIX53"); |
674 | 0 | if (OsVersion >= VersionTuple(6, 1)) |
675 | 0 | Builder.defineMacro("_AIX61"); |
676 | 0 | if (OsVersion >= VersionTuple(7, 1)) |
677 | 0 | Builder.defineMacro("_AIX71"); |
678 | 0 | if (OsVersion >= VersionTuple(7, 2)) |
679 | 0 | Builder.defineMacro("_AIX72"); |
680 | 0 | if (OsVersion >= VersionTuple(7, 3)) |
681 | 0 | Builder.defineMacro("_AIX73"); |
682 | | |
683 | | // FIXME: Do not define _LONG_LONG when -fno-long-long is specified. |
684 | 0 | Builder.defineMacro("_LONG_LONG"); |
685 | |
|
686 | 0 | if (Opts.POSIXThreads) { |
687 | 0 | Builder.defineMacro("_THREAD_SAFE"); |
688 | 0 | } |
689 | |
|
690 | 0 | if (this->PointerWidth == 64) { |
691 | 0 | Builder.defineMacro("__64BIT__"); |
692 | 0 | } |
693 | | |
694 | | // Define _WCHAR_T when it is a fundamental type |
695 | | // (i.e., for C++ without -fno-wchar). |
696 | 0 | if (Opts.CPlusPlus && Opts.WChar) { |
697 | 0 | Builder.defineMacro("_WCHAR_T"); |
698 | 0 | } |
699 | 0 | } Unexecuted instantiation: clang::targets::AIXTargetInfo<clang::targets::PPC32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::AIXTargetInfo<clang::targets::PPC64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
700 | | |
701 | | public: |
702 | | AIXTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
703 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
704 | 0 | this->MCountName = "__mcount"; |
705 | 0 | this->TheCXXABI.set(TargetCXXABI::XL); |
706 | |
|
707 | 0 | if (this->PointerWidth == 64) { |
708 | 0 | this->WCharType = this->UnsignedInt; |
709 | 0 | } else { |
710 | 0 | this->WCharType = this->UnsignedShort; |
711 | 0 | } |
712 | 0 | this->UseZeroLengthBitfieldAlignment = true; |
713 | 0 | } Unexecuted instantiation: clang::targets::AIXTargetInfo<clang::targets::PPC32TargetInfo>::AIXTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::AIXTargetInfo<clang::targets::PPC64TargetInfo>::AIXTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
714 | | |
715 | | // AIX sets FLT_EVAL_METHOD to be 1. |
716 | 0 | LangOptions::FPEvalMethodKind getFPEvalMethod() const override { |
717 | 0 | return LangOptions::FPEvalMethodKind::FEM_Double; |
718 | 0 | } Unexecuted instantiation: clang::targets::AIXTargetInfo<clang::targets::PPC32TargetInfo>::getFPEvalMethod() const Unexecuted instantiation: clang::targets::AIXTargetInfo<clang::targets::PPC64TargetInfo>::getFPEvalMethod() const |
719 | | |
720 | 0 | bool defaultsToAIXPowerAlignment() const override { return true; } Unexecuted instantiation: clang::targets::AIXTargetInfo<clang::targets::PPC32TargetInfo>::defaultsToAIXPowerAlignment() const Unexecuted instantiation: clang::targets::AIXTargetInfo<clang::targets::PPC64TargetInfo>::defaultsToAIXPowerAlignment() const |
721 | | |
722 | 0 | bool areDefaultedSMFStillPOD(const LangOptions &) const override { |
723 | 0 | return false; |
724 | 0 | } Unexecuted instantiation: clang::targets::AIXTargetInfo<clang::targets::PPC32TargetInfo>::areDefaultedSMFStillPOD(clang::LangOptions const&) const Unexecuted instantiation: clang::targets::AIXTargetInfo<clang::targets::PPC64TargetInfo>::areDefaultedSMFStillPOD(clang::LangOptions const&) const |
725 | | }; |
726 | | |
727 | | // z/OS target |
728 | | template <typename Target> |
729 | | class LLVM_LIBRARY_VISIBILITY ZOSTargetInfo : public OSTargetInfo<Target> { |
730 | | protected: |
731 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
732 | 0 | MacroBuilder &Builder) const override { |
733 | | // FIXME: _LONG_LONG should not be defined under -std=c89. |
734 | 0 | Builder.defineMacro("_LONG_LONG"); |
735 | 0 | Builder.defineMacro("__370__"); |
736 | 0 | Builder.defineMacro("__BFP__"); |
737 | | // FIXME: __BOOL__ should not be defined under -std=c89. |
738 | 0 | Builder.defineMacro("__BOOL__"); |
739 | 0 | Builder.defineMacro("__COMPILER_VER__", "0x50000000"); |
740 | 0 | Builder.defineMacro("__LONGNAME__"); |
741 | 0 | Builder.defineMacro("__MVS__"); |
742 | 0 | Builder.defineMacro("__THW_370__"); |
743 | 0 | Builder.defineMacro("__THW_BIG_ENDIAN__"); |
744 | 0 | Builder.defineMacro("__TOS_390__"); |
745 | 0 | Builder.defineMacro("__TOS_MVS__"); |
746 | 0 | Builder.defineMacro("__XPLINK__"); |
747 | |
|
748 | 0 | if (this->PointerWidth == 64) |
749 | 0 | Builder.defineMacro("__64BIT__"); |
750 | |
|
751 | 0 | if (Opts.CPlusPlus && Opts.WChar) { |
752 | | // Macro __wchar_t is defined so that the wchar_t data |
753 | | // type is not declared as a typedef in system headers. |
754 | 0 | Builder.defineMacro("__wchar_t"); |
755 | 0 | } |
756 | |
|
757 | 0 | this->PlatformName = llvm::Triple::getOSTypeName(Triple.getOS()); |
758 | 0 | } |
759 | | |
760 | | public: |
761 | | ZOSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
762 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
763 | 0 | this->WCharType = TargetInfo::UnsignedInt; |
764 | 0 | this->MaxAlignedAttribute = 128; |
765 | 0 | this->UseBitFieldTypeAlignment = false; |
766 | 0 | this->UseZeroLengthBitfieldAlignment = true; |
767 | 0 | this->UseLeadingZeroLengthBitfield = false; |
768 | 0 | this->ZeroLengthBitfieldBoundary = 32; |
769 | 0 | this->TheCXXABI.set(TargetCXXABI::XL); |
770 | 0 | } |
771 | | |
772 | 0 | bool areDefaultedSMFStillPOD(const LangOptions &) const override { |
773 | 0 | return false; |
774 | 0 | } |
775 | | }; |
776 | | |
777 | | void addWindowsDefines(const llvm::Triple &Triple, const LangOptions &Opts, |
778 | | MacroBuilder &Builder); |
779 | | |
780 | | // Windows target |
781 | | template <typename Target> |
782 | | class LLVM_LIBRARY_VISIBILITY WindowsTargetInfo : public OSTargetInfo<Target> { |
783 | | protected: |
784 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
785 | 0 | MacroBuilder &Builder) const override { |
786 | 0 | addWindowsDefines(Triple, Opts, Builder); |
787 | 0 | } Unexecuted instantiation: clang::targets::WindowsTargetInfo<clang::targets::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::WindowsTargetInfo<clang::targets::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::WindowsTargetInfo<clang::targets::AArch64leTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::WindowsTargetInfo<clang::targets::ARMleTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
788 | | |
789 | | public: |
790 | | WindowsTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
791 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
792 | 0 | this->WCharType = TargetInfo::UnsignedShort; |
793 | 0 | this->WIntType = TargetInfo::UnsignedShort; |
794 | 0 | } Unexecuted instantiation: clang::targets::WindowsTargetInfo<clang::targets::X86_32TargetInfo>::WindowsTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::WindowsTargetInfo<clang::targets::X86_64TargetInfo>::WindowsTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::WindowsTargetInfo<clang::targets::AArch64leTargetInfo>::WindowsTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::WindowsTargetInfo<clang::targets::ARMleTargetInfo>::WindowsTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
795 | | }; |
796 | | |
797 | | template <typename Target> |
798 | | class LLVM_LIBRARY_VISIBILITY NaClTargetInfo : public OSTargetInfo<Target> { |
799 | | protected: |
800 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
801 | 0 | MacroBuilder &Builder) const override { |
802 | 0 | if (Opts.POSIXThreads) |
803 | 0 | Builder.defineMacro("_REENTRANT"); |
804 | 0 | if (Opts.CPlusPlus) |
805 | 0 | Builder.defineMacro("_GNU_SOURCE"); |
806 | |
|
807 | 0 | DefineStd(Builder, "unix", Opts); |
808 | 0 | Builder.defineMacro("__native_client__"); |
809 | 0 | } Unexecuted instantiation: clang::targets::NaClTargetInfo<clang::targets::ARMleTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NaClTargetInfo<clang::targets::ARMbeTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NaClTargetInfo<clang::targets::NaClMips32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NaClTargetInfo<clang::targets::PNaClTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NaClTargetInfo<clang::targets::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::NaClTargetInfo<clang::targets::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
810 | | |
811 | | public: |
812 | | NaClTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
813 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
814 | 0 | this->LongAlign = 32; |
815 | 0 | this->LongWidth = 32; |
816 | 0 | this->PointerAlign = 32; |
817 | 0 | this->PointerWidth = 32; |
818 | 0 | this->IntMaxType = TargetInfo::SignedLongLong; |
819 | 0 | this->Int64Type = TargetInfo::SignedLongLong; |
820 | 0 | this->DoubleAlign = 64; |
821 | 0 | this->LongDoubleWidth = 64; |
822 | 0 | this->LongDoubleAlign = 64; |
823 | 0 | this->LongLongWidth = 64; |
824 | 0 | this->LongLongAlign = 64; |
825 | 0 | this->SizeType = TargetInfo::UnsignedInt; |
826 | 0 | this->PtrDiffType = TargetInfo::SignedInt; |
827 | 0 | this->IntPtrType = TargetInfo::SignedInt; |
828 | | // RegParmMax is inherited from the underlying architecture. |
829 | 0 | this->LongDoubleFormat = &llvm::APFloat::IEEEdouble(); |
830 | 0 | if (Triple.getArch() == llvm::Triple::arm) { |
831 | | // Handled in ARM's setABI(). |
832 | 0 | } else if (Triple.getArch() == llvm::Triple::x86) { |
833 | 0 | this->resetDataLayout("e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-" |
834 | 0 | "i64:64-i128:128-n8:16:32-S128"); |
835 | 0 | } else if (Triple.getArch() == llvm::Triple::x86_64) { |
836 | 0 | this->resetDataLayout("e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-" |
837 | 0 | "i64:64-i128:128-n8:16:32:64-S128"); |
838 | 0 | } else if (Triple.getArch() == llvm::Triple::mipsel) { |
839 | | // Handled on mips' setDataLayout. |
840 | 0 | } else { |
841 | 0 | assert(Triple.getArch() == llvm::Triple::le32); |
842 | 0 | this->resetDataLayout("e-p:32:32-i64:64"); |
843 | 0 | } |
844 | 0 | } Unexecuted instantiation: clang::targets::NaClTargetInfo<clang::targets::ARMleTargetInfo>::NaClTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NaClTargetInfo<clang::targets::ARMbeTargetInfo>::NaClTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NaClTargetInfo<clang::targets::NaClMips32TargetInfo>::NaClTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NaClTargetInfo<clang::targets::PNaClTargetInfo>::NaClTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NaClTargetInfo<clang::targets::X86_32TargetInfo>::NaClTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::NaClTargetInfo<clang::targets::X86_64TargetInfo>::NaClTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
845 | | }; |
846 | | |
847 | | // Fuchsia Target |
848 | | template <typename Target> |
849 | | class LLVM_LIBRARY_VISIBILITY FuchsiaTargetInfo : public OSTargetInfo<Target> { |
850 | | protected: |
851 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
852 | 0 | MacroBuilder &Builder) const override { |
853 | 0 | Builder.defineMacro("__Fuchsia__"); |
854 | 0 | if (Opts.POSIXThreads) |
855 | 0 | Builder.defineMacro("_REENTRANT"); |
856 | | // Required by the libc++ locale support. |
857 | 0 | if (Opts.CPlusPlus) |
858 | 0 | Builder.defineMacro("_GNU_SOURCE"); |
859 | 0 | Builder.defineMacro("__Fuchsia_API_level__", Twine(Opts.FuchsiaAPILevel)); |
860 | 0 | this->PlatformName = "fuchsia"; |
861 | 0 | this->PlatformMinVersion = VersionTuple(Opts.FuchsiaAPILevel); |
862 | 0 | } Unexecuted instantiation: clang::targets::FuchsiaTargetInfo<clang::targets::AArch64leTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::FuchsiaTargetInfo<clang::targets::AArch64beTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::FuchsiaTargetInfo<clang::targets::RISCV64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::FuchsiaTargetInfo<clang::targets::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::FuchsiaTargetInfo<clang::targets::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
863 | | |
864 | | public: |
865 | | FuchsiaTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
866 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
867 | 0 | this->MCountName = "__mcount"; |
868 | 0 | this->TheCXXABI.set(TargetCXXABI::Fuchsia); |
869 | 0 | } Unexecuted instantiation: clang::targets::FuchsiaTargetInfo<clang::targets::AArch64leTargetInfo>::FuchsiaTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::FuchsiaTargetInfo<clang::targets::AArch64beTargetInfo>::FuchsiaTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::FuchsiaTargetInfo<clang::targets::RISCV64TargetInfo>::FuchsiaTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::FuchsiaTargetInfo<clang::targets::X86_32TargetInfo>::FuchsiaTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::FuchsiaTargetInfo<clang::targets::X86_64TargetInfo>::FuchsiaTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
870 | | }; |
871 | | |
872 | | // WebAssembly target |
873 | | template <typename Target> |
874 | | class LLVM_LIBRARY_VISIBILITY WebAssemblyOSTargetInfo |
875 | | : public OSTargetInfo<Target> { |
876 | | protected: |
877 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
878 | 0 | MacroBuilder &Builder) const override { |
879 | | // A common platform macro. |
880 | 0 | if (Opts.POSIXThreads) |
881 | 0 | Builder.defineMacro("_REENTRANT"); |
882 | | // Follow g++ convention and predefine _GNU_SOURCE for C++. |
883 | 0 | if (Opts.CPlusPlus) |
884 | 0 | Builder.defineMacro("_GNU_SOURCE"); |
885 | | // Indicate that we have __float128. |
886 | 0 | Builder.defineMacro("__FLOAT128__"); |
887 | 0 | } Unexecuted instantiation: clang::targets::WebAssemblyOSTargetInfo<clang::targets::WebAssembly32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::WebAssemblyOSTargetInfo<clang::targets::WebAssembly64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
888 | | |
889 | | public: |
890 | | explicit WebAssemblyOSTargetInfo(const llvm::Triple &Triple, |
891 | | const TargetOptions &Opts) |
892 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
893 | 0 | this->MCountName = "__mcount"; |
894 | 0 | this->TheCXXABI.set(TargetCXXABI::WebAssembly); |
895 | 0 | this->HasFloat128 = true; |
896 | 0 | } Unexecuted instantiation: clang::targets::WebAssemblyOSTargetInfo<clang::targets::WebAssembly32TargetInfo>::WebAssemblyOSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::WebAssemblyOSTargetInfo<clang::targets::WebAssembly64TargetInfo>::WebAssemblyOSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
897 | | }; |
898 | | |
899 | | // WASI target |
900 | | template <typename Target> |
901 | | class LLVM_LIBRARY_VISIBILITY WASITargetInfo |
902 | | : public WebAssemblyOSTargetInfo<Target> { |
903 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
904 | 0 | MacroBuilder &Builder) const final { |
905 | 0 | WebAssemblyOSTargetInfo<Target>::getOSDefines(Opts, Triple, Builder); |
906 | 0 | Builder.defineMacro("__wasi__"); |
907 | 0 | } Unexecuted instantiation: clang::targets::WASITargetInfo<clang::targets::WebAssembly32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::WASITargetInfo<clang::targets::WebAssembly64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
908 | | |
909 | | public: |
910 | | using WebAssemblyOSTargetInfo<Target>::WebAssemblyOSTargetInfo; |
911 | | }; |
912 | | |
913 | | // Emscripten target |
914 | | template <typename Target> |
915 | | class LLVM_LIBRARY_VISIBILITY EmscriptenTargetInfo |
916 | | : public WebAssemblyOSTargetInfo<Target> { |
917 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
918 | 0 | MacroBuilder &Builder) const final { |
919 | 0 | WebAssemblyOSTargetInfo<Target>::getOSDefines(Opts, Triple, Builder); |
920 | 0 | DefineStd(Builder, "unix", Opts); |
921 | 0 | Builder.defineMacro("__EMSCRIPTEN__"); |
922 | 0 | if (Opts.POSIXThreads) |
923 | 0 | Builder.defineMacro("__EMSCRIPTEN_PTHREADS__"); |
924 | 0 | } Unexecuted instantiation: clang::targets::EmscriptenTargetInfo<clang::targets::WebAssembly32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::EmscriptenTargetInfo<clang::targets::WebAssembly64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
925 | | |
926 | | public: |
927 | | explicit EmscriptenTargetInfo(const llvm::Triple &Triple, |
928 | | const TargetOptions &Opts) |
929 | 0 | : WebAssemblyOSTargetInfo<Target>(Triple, Opts) { |
930 | | // Keeping the alignment of long double to 8 bytes even though its size is |
931 | | // 16 bytes allows emscripten to have an 8-byte-aligned max_align_t which |
932 | | // in turn gives is a 8-byte aligned malloc. |
933 | | // Emscripten's ABI is unstable and we may change this back to 128 to match |
934 | | // the WebAssembly default in the future. |
935 | 0 | this->LongDoubleAlign = 64; |
936 | 0 | } Unexecuted instantiation: clang::targets::EmscriptenTargetInfo<clang::targets::WebAssembly32TargetInfo>::EmscriptenTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::EmscriptenTargetInfo<clang::targets::WebAssembly64TargetInfo>::EmscriptenTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
937 | | }; |
938 | | |
939 | | // OHOS target |
940 | | template <typename Target> |
941 | | class LLVM_LIBRARY_VISIBILITY OHOSTargetInfo : public OSTargetInfo<Target> { |
942 | | protected: |
943 | | void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, |
944 | 0 | MacroBuilder &Builder) const override { |
945 | | // Linux defines; list based off of gcc output |
946 | 0 | DefineStd(Builder, "unix", Opts); |
947 | | |
948 | | // Generic OHOS target defines |
949 | 0 | if (Triple.isOHOSFamily()) { |
950 | 0 | Builder.defineMacro("__OHOS_FAMILY__", "1"); |
951 | |
|
952 | 0 | auto Version = Triple.getEnvironmentVersion(); |
953 | 0 | this->PlatformName = "ohos"; |
954 | 0 | this->PlatformMinVersion = Version; |
955 | 0 | Builder.defineMacro("__OHOS_Major__", Twine(Version.getMajor())); |
956 | 0 | if (auto Minor = Version.getMinor()) |
957 | 0 | Builder.defineMacro("__OHOS_Minor__", Twine(*Minor)); |
958 | 0 | if (auto Subminor = Version.getSubminor()) |
959 | 0 | Builder.defineMacro("__OHOS_Micro__", Twine(*Subminor)); |
960 | 0 | } |
961 | |
|
962 | 0 | if (Triple.isOpenHOS()) |
963 | 0 | Builder.defineMacro("__OHOS__"); |
964 | |
|
965 | 0 | if (Triple.isOSLinux()) { |
966 | 0 | DefineStd(Builder, "linux", Opts); |
967 | 0 | } else if (Triple.isOSLiteOS()) { |
968 | 0 | Builder.defineMacro("__LITEOS__"); |
969 | 0 | } |
970 | |
|
971 | 0 | if (Opts.POSIXThreads) |
972 | 0 | Builder.defineMacro("_REENTRANT"); |
973 | 0 | if (Opts.CPlusPlus) |
974 | 0 | Builder.defineMacro("_GNU_SOURCE"); |
975 | 0 | if (this->HasFloat128) |
976 | 0 | Builder.defineMacro("__FLOAT128__"); |
977 | 0 | } Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::AArch64leTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::ARMleTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::MipsTargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::RISCV64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::X86_64TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::X86_32TargetInfo>::getOSDefines(clang::LangOptions const&, llvm::Triple const&, clang::MacroBuilder&) const |
978 | | |
979 | | public: |
980 | | OHOSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) |
981 | 0 | : OSTargetInfo<Target>(Triple, Opts) { |
982 | 0 | this->WIntType = TargetInfo::UnsignedInt; |
983 | |
|
984 | 0 | switch (Triple.getArch()) { |
985 | 0 | default: |
986 | 0 | break; |
987 | 0 | case llvm::Triple::x86: |
988 | 0 | case llvm::Triple::x86_64: |
989 | 0 | this->HasFloat128 = true; |
990 | 0 | break; |
991 | 0 | } |
992 | 0 | } Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::AArch64leTargetInfo>::OHOSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::ARMleTargetInfo>::OHOSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::MipsTargetInfo>::OHOSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::RISCV64TargetInfo>::OHOSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::X86_64TargetInfo>::OHOSTargetInfo(llvm::Triple const&, clang::TargetOptions const&) |
993 | | |
994 | 0 | const char *getStaticInitSectionSpecifier() const override { |
995 | 0 | return ".text.startup"; |
996 | 0 | } Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::AArch64leTargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::ARMleTargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::MipsTargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::RISCV64TargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::X86_64TargetInfo>::getStaticInitSectionSpecifier() const Unexecuted instantiation: clang::targets::OHOSTargetInfo<clang::targets::X86_32TargetInfo>::getStaticInitSectionSpecifier() const |
997 | | }; |
998 | | |
999 | | } // namespace targets |
1000 | | } // namespace clang |
1001 | | #endif // LLVM_CLANG_LIB_BASIC_TARGETS_OSTARGETS_H |