Coverage Report

Created: 2024-01-17 10:31

/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