|
clang 23.0.0git
|
#include "/work/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CIR/CodeGen/TargetInfo.h"
Public Member Functions | |
| TargetCIRGenInfo (std::unique_ptr< ABIInfo > info) | |
| virtual | ~TargetCIRGenInfo ()=default |
| const ABIInfo & | getABIInfo () const |
| Returns ABI info helper for the target. | |
| virtual clang::LangAS | getGlobalVarAddressSpace (CIRGenModule &cgm, const clang::VarDecl *d) const |
| Get target favored AST address space of a global variable for languages other than OpenCL and CUDA. | |
| virtual mlir::ptr::MemorySpaceAttrInterface | getCIRAllocaAddressSpace () const |
| Get the address space for alloca. | |
| virtual bool | isNoProtoCallVariadic (const FunctionNoProtoType *fnType) const |
| Determine whether a call to an unprototyped functions under the given calling convention should use the variadic convention or the non-variadic convention. | |
| virtual void | setTargetAttributes (const clang::Decl *decl, mlir::Operation *global, CIRGenModule &module) const |
| Provides a convenient hook to handle extra target-specific attributes for the given global. | |
| virtual bool | isScalarizableAsmOperand (CIRGenFunction &cgf, mlir::Type ty) const |
| virtual mlir::Type | adjustInlineAsmType (CIRGenFunction &cgf, llvm::StringRef constraint, mlir::Type ty) const |
| Corrects the MLIR type for a given constraint and "usual" type. | |
Definition at line 42 of file TargetInfo.h.
|
inline |
Definition at line 46 of file TargetInfo.h.
Referenced by isNoProtoCallVariadic().
|
virtualdefault |
|
inlinevirtual |
Corrects the MLIR type for a given constraint and "usual" type.
Definition at line 129 of file TargetInfo.h.
|
inline |
Returns ABI info helper for the target.
Definition at line 51 of file TargetInfo.h.
|
inlinevirtual |
Get the address space for alloca.
Definition at line 61 of file TargetInfo.h.
Referenced by clang::CIRGen::CIRGenModule::CIRGenModule().
|
virtual |
Get target favored AST address space of a global variable for languages other than OpenCL and CUDA.
If d is nullptr, returns the default target favored address space for global variable.
Definition at line 133 of file TargetInfo.cpp.
References clang::Default, clang::QualType::getAddressSpace(), clang::CIRGen::CIRGenModule::getLangOpts(), and clang::ValueDecl::getType().
|
virtual |
Determine whether a call to an unprototyped functions under the given calling convention should use the variadic convention or the non-variadic convention.
There's a good reason to make a platform's variadic calling convention be different from its non-variadic calling convention: the non-variadic arguments can be passed in registers (better for performance), and the variadic arguments can be passed on the stack (also better for performance). If this is done, however, unprototyped functions must use the non-variadic convention, because C99 states that a call through an unprototyped function type must succeed if the function was defined with a non-variadic prototype with compatible parameters. Therefore, splitting the conventions makes it impossible to call a variadic function through an unprototyped type. Since function prototypes came out in the late 1970s, this is probably an acceptable trade-off. Nonetheless, not all platforms are willing to make it, and in particularly x86-64 bends over backwards to make the conventions compatible.
The default is false. This is correct whenever:
However, some platforms make the conventions identical except for passing additional out-of-band information to a variadic function: for example, x86-64 passes the number of SSE arguments in al. On these platforms, it is desirable to call unprototyped functions using the variadic convention so that unprototyped calls to varargs functions still succeed.
Relatedly, platforms which pass the fixed arguments to this: A foo(B, C, D); differently than they would pass them to this: A foo(B, C, D, ...); may need to adjust the debugger-support code in Sema to do the right thing when calling a function with no know signature.
Definition at line 123 of file TargetInfo.cpp.
References isNoProtoCallVariadic(), and TargetCIRGenInfo().
Referenced by arrangeFreeFunctionLikeCall(), and isNoProtoCallVariadic().
|
inlinevirtual |
Definition at line 119 of file TargetInfo.h.
Referenced by emitAsmStores().
|
inlinevirtual |
Provides a convenient hook to handle extra target-specific attributes for the given global.
In OG, the function receives an llvm::GlobalValue. However, functions and global variables are separate types in Clang IR, so we use a general mlir::Operation*.
Definition at line 115 of file TargetInfo.h.
References clang::ast_matchers::decl.
Referenced by clang::CIRGen::CIRGenModule::setFunctionAttributes().