A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/CodeGen_2TargetInfo_8cpp_source.html below:

clang: lib/CodeGen/TargetInfo.cpp Source File

20#include "llvm/ADT/StringExtras.h" 21#include "llvm/ADT/Twine.h" 22#include "llvm/IR/Function.h" 23#include "llvm/IR/Type.h" 24#include "llvm/Support/raw_ostream.h" 26using namespace clang

;

27using namespace

CodeGen;

30

raw_ostream &OS = llvm::errs();

31

OS <<

"(ABIArgInfo Kind="

;

34

OS <<

"Direct Type="

;

63

OS <<

"CoerceAndExpand Type="

;

71

: Info(

std

::move(Info)) {}

117 return

llvm::CallingConv::SPIR_KERNEL;

121

llvm::PointerType *

T

,

QualType

QT)

const

{

122 return

llvm::ConstantPointerNull::get(

T

);

129 "Address space agnostic languages only"

);

135 LangAS

DestAddr, llvm::Type *DestTy,

bool

isNonNull)

const

{

138 if

(

auto

*

C

= dyn_cast<llvm::Constant>(Src))

142

Src, DestTy, Src->hasName() ? Src->getName() +

".ascast"

:

""

);

148

llvm::Type *DestTy)

const

{

151 return

llvm::ConstantExpr::getPointerCast(Src, DestTy);

157

llvm::AtomicOrdering Ordering,

158

llvm::LLVMContext &Ctx)

const

{

159 return

Ctx.getOrInsertSyncScopeID(

""

);

164 if

(llvm::Function *Fn = dyn_cast_or_null<llvm::Function>(GV)) {

166

Fn->addFnAttr(

"stack-probe-size"

,

169

Fn->addFnAttr(

"no-stack-arg-probe"

);

179 CodeGenFunction

&CGF, llvm::Function *Invoke, llvm::Type *BlockTy)

const

{

180 auto

*InvokeFT = Invoke->getFunctionType();

182

std::string Name = Invoke->getName().str() +

"_kernel"

;

183 auto

*FT = llvm::FunctionType::get(llvm::Type::getVoidTy(

C

),

184

InvokeFT->params(),

false

);

185 auto

*F = llvm::Function::Create(FT, llvm::GlobalValue::ExternalLinkage, Name,

187

llvm::CallingConv::ID KernelCC =

189

F->setCallingConv(KernelCC);

191

llvm::AttrBuilder KernelAttrs(

C

);

195

F->addFnAttrs(KernelAttrs);

197 auto

IP = CGF.

Builder

.saveIP();

198 auto

*BB = llvm::BasicBlock::Create(

C

,

"entry"

, F);

200

Builder.SetInsertPoint(BB);

202

llvm::CallInst *

Call

= Builder.CreateCall(Invoke, Args);

203 Call

->setCallingConv(Invoke->getCallingConv());

205

Builder.CreateRetVoid();

206

Builder.restoreIP(IP);

217

F.addFnAttr(

"sign-return-address-key"

, BPI.

getSignKeyStr

());

219 if

(F.hasFnAttribute(

"sign-return-address"

))

220

F.removeFnAttr(

"sign-return-address"

);

221 if

(F.hasFnAttribute(

"sign-return-address-key"

))

222

F.removeFnAttr(

"sign-return-address-key"

);

225 auto

AddRemoveAttributeAsSet = [&](

bool Set

,

const

StringRef &ModAttr) {

227

F.addFnAttr(ModAttr);

228 else if

(F.hasFnAttribute(ModAttr))

229

F.removeFnAttr(ModAttr);

233 "branch-target-enforcement"

);

235 "branch-protection-pauth-lr"

);

245

FuncAttrs.addAttribute(

"sign-return-address-key"

, BPI.

getSignKeyStr

());

248

FuncAttrs.addAttribute(

"branch-target-enforcement"

);

250

FuncAttrs.addAttribute(

"branch-protection-pauth-lr"

);

252

FuncAttrs.addAttribute(

"guarded-control-stack"

);

263

std::unique_ptr<TargetCodeGenInfo>

265 return

std::make_unique<DefaultTargetCodeGenInfo>(CGM.

getTypes

());

QuantityType getQuantity() const

getQuantity - Get the raw integer representation of this quantity.

unsigned getInAllocaFieldIndex() const

bool getIndirectByVal() const

llvm::StructType * getCoerceAndExpandType() const

bool getIndirectRealign() const

unsigned getIndirectAddrSpace() const

@ Extend

Extend - Valid only for integer argument types.

@ Ignore

Ignore - Ignore the argument (treat as void).

@ IndirectAliased

IndirectAliased - Similar to Indirect, but the pointer may be to an object that is otherwise referenc...

@ Expand

Expand - Only valid for aggregate argument types.

@ InAlloca

InAlloca - Pass the argument directly using the LLVM inalloca attribute.

@ Indirect

Indirect - Pass the argument indirectly via a hidden pointer with the specified alignment (0 indicate...

@ CoerceAndExpand

CoerceAndExpand - Only valid for aggregate argument types.

@ Direct

Direct - Pass the argument directly using the normal converted LLVM type, or by coercing to another s...

llvm::Type * getCoerceToType() const

CharUnits getIndirectAlign() const

Address CreateAddrSpaceCast(Address Addr, llvm::Type *Ty, llvm::Type *ElementTy, const llvm::Twine &Name="")

CallArgList - Type for representing both the value and type of arguments in a call.

CodeGenFunction - This class organizes the per-function state that is used while generating LLVM code...

CodeGenTypes & getTypes() const

llvm::LLVMContext & getLLVMContext()

This class organizes the cross-function state that is used while generating LLVM code.

llvm::Module & getModule() const

const LangOptions & getLangOpts() const

CodeGenTypes & getTypes()

const CodeGenOptions & getCodeGenOpts() const

void addDefaultFunctionDefinitionAttributes(llvm::AttrBuilder &attrs)

Like the overload taking a Function &, but intended specifically for frontends that want to build on ...

This class organizes the cross-module state that is used while lowering AST types to LLVM types.

unsigned ClangCallConvToLLVMCallConv(CallingConv CC)

Convert clang calling convention to LLVM callilng convention.

DefaultABIInfo - The default implementation for ABI specific details.

TargetCodeGenInfo - This class organizes various target-specific codegeneration issues,...

virtual unsigned getSizeOfUnwindException() const

Determines the size of struct _Unwind_Exception on this platform, in 8-bit units.

virtual void getDependentLibraryOption(llvm::StringRef Lib, llvm::SmallString< 24 > &Opt) const

Gets the linker options necessary to link a dependent library on this platform.

Address performAddrSpaceCast(CodeGen::CodeGenFunction &CGF, Address Addr, LangAS SrcAddr, LangAS DestAddr, llvm::Type *DestTy, bool IsNonNull=false) const

virtual llvm::SyncScope::ID getLLVMSyncScopeID(const LangOptions &LangOpts, SyncScope Scope, llvm::AtomicOrdering Ordering, llvm::LLVMContext &Ctx) const

Get the syncscope used in LLVM IR.

static void setBranchProtectionFnAttributes(const TargetInfo::BranchProtectionInfo &BPI, llvm::Function &F)

virtual unsigned getOpenCLKernelCallingConv() const

Get LLVM calling convention for OpenCL kernel.

virtual LangAS getGlobalVarAddressSpace(CodeGenModule &CGM, const VarDecl *D) const

Get target favored AST address space of a global variable for languages other than OpenCL and CUDA.

void addStackProbeTargetAttributes(const Decl *D, llvm::GlobalValue *GV, CodeGen::CodeGenModule &CGM) const

virtual llvm::Constant * getNullPointer(const CodeGen::CodeGenModule &CGM, llvm::PointerType *T, QualType QT) const

Get target specific null pointer.

static void initBranchProtectionFnAttributes(const TargetInfo::BranchProtectionInfo &BPI, llvm::AttrBuilder &FuncAttrs)

TargetCodeGenInfo(std::unique_ptr< ABIInfo > Info)

virtual llvm::Value * createEnqueuedBlockKernel(CodeGenFunction &CGF, llvm::Function *BlockInvokeFunc, llvm::Type *BlockTy) const

Create an OpenCL kernel for an enqueued block.

virtual ~TargetCodeGenInfo()

virtual bool isNoProtoCallVariadic(const CodeGen::CallArgList &args, const FunctionNoProtoType *fnType) const

Determine whether a call to an unprototyped functions under the given calling convention should use t...

Decl - This represents one declaration (or definition), e.g.

Represents a K&R-style 'int foo()' function, which has no information available about its arguments.

@ None

No signing for any function.

Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...

A (possibly-)qualified type.

Scope - A scope is a transient data structure that is used while parsing the program.

LangOptions::SignReturnAddressScopeKind SignReturnAddr

const char * getSignKeyStr() const

bool BranchProtectionPAuthLR

bool BranchTargetEnforcement

const char * getSignReturnAddrStr() const

Represents a variable declaration or definition.

std::unique_ptr< TargetCodeGenInfo > createDefaultTargetCodeGenInfo(CodeGenModule &CGM)

The JSON file list parser is used to communicate input to InstallAPI.

LangAS

Defines the address space values used by the address space qualifier of QualType.

const FunctionProtoType * T

SyncScope

Defines synch scope values used internally by clang.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4