53 return reinterpret_cast<Target*
>(
P);
79 if (
IT->getName() == NameRef)
87 char **ErrorMessage) {
94 *ErrorMessage =
strdup(Error.c_str());
103 return unwrap(T)->getName();
107 return unwrap(T)->getShortDescription();
111 return unwrap(T)->hasJIT();
115 return unwrap(T)->hasTargetMachine();
119 return unwrap(T)->hasMCAsmBackend();
123 const char*
Triple,
const char* CPU,
const char* Features,
161 return wrap(
unwrap(T)->createTargetMachine(Triple, CPU, Features, opt, RM,
176 std::string StringRep =
unwrap(T)->getTargetTriple();
177 return strdup(StringRep.c_str());
181 std::string StringRep =
unwrap(T)->getTargetCPU();
182 return strdup(StringRep.c_str());
186 std::string StringRep =
unwrap(T)->getTargetFeatureString();
187 return strdup(StringRep.c_str());
196 unwrap(T)->setAsmVerbosityDefault(VerboseAsm);
211 error =
"No DataLayout in TargetMachine";
212 *ErrorMessage =
strdup(error.c_str());
227 error =
"TargetMachine can't emit a file of this type";
228 *ErrorMessage =
strdup(error.c_str());
242 if (!error.empty()) {
243 *ErrorMessage =
strdup(error.c_str());
255 std::string CodeString;
261 std::string &Data = OStream.
str();
LLVMMemoryBufferRef LLVMCreateMemoryBufferWithMemoryRangeCopy(const char *InputData, size_t InputDataLength, const char *BufferName)
The main container class for the LLVM Intermediate Representation.
char * LLVMGetDefaultTargetTriple(void)
std::string getDefaultTargetTriple()
LLVMContext ** unwrap(LLVMContextRef *Tys)
static const Target * lookupTarget(const std::string &Triple, std::string &Error)
struct LLVMOpaqueTargetData * LLVMTargetDataRef
LLVMTargetRef LLVMGetTargetMachineTarget(LLVMTargetMachineRef T)
LLVMBool LLVMTargetHasAsmBackend(LLVMTargetRef T)
struct LLVMOpaqueTargetMachine * LLVMTargetMachineRef
static cl::opt< ITMode > IT(cl::desc("IT block support"), cl::Hidden, cl::init(DefaultIT), cl::ZeroOrMore, cl::values(clEnumValN(DefaultIT,"arm-default-it","Generate IT block based on arch"), clEnumValN(RestrictedIT,"arm-restrict-it","Disallow deprecated IT based on ARMv8"), clEnumValN(NoRestrictedIT,"arm-no-restrict-it","Allow IT blocks based on ARMv7"), clEnumValEnd))
struct LLVMOpaqueMemoryBuffer * LLVMMemoryBufferRef
static LLVMBool LLVMTargetMachineEmit(LLVMTargetMachineRef T, LLVMModuleRef M, formatted_raw_ostream &OS, LLVMCodeGenFileType codegen, char **ErrorMessage)
void LLVMSetTargetMachineAsmVerbosity(LLVMTargetMachineRef T, LLVMBool VerboseAsm)
const char * LLVMGetTargetName(LLVMTargetRef T)
char * LLVMGetTargetMachineFeatureString(LLVMTargetMachineRef T)
LLVMTargetDataRef LLVMGetTargetMachineData(LLVMTargetMachineRef T)
LLVMBool LLVMTargetMachineEmitToMemoryBuffer(LLVMTargetMachineRef T, LLVMModuleRef M, LLVMCodeGenFileType codegen, char **ErrorMessage, LLVMMemoryBufferRef *OutMemBuf)
LLVMBool LLVMGetTargetFromTriple(const char *TripleStr, LLVMTargetRef *T, char **ErrorMessage)
void LLVMDisposeTargetMachine(LLVMTargetMachineRef T)
struct LLVMTarget * LLVMTargetRef
virtual bool addPassesToEmitFile(PassManagerBase &, formatted_raw_ostream &, CodeGenFileType, bool=true, AnalysisID=0, AnalysisID=0)
LLVMBool LLVMTargetMachineEmitToFile(LLVMTargetMachineRef T, LLVMModuleRef M, char *Filename, LLVMCodeGenFileType codegen, char **ErrorMessage)
Two Address instruction pass
const char * LLVMGetTargetDescription(LLVMTargetRef T)
LLVMBool LLVMTargetHasTargetMachine(LLVMTargetRef T)
LLVMTargetRef LLVMGetFirstTarget()
char *strdup(const char *s1);
char * LLVMGetTargetMachineTriple(LLVMTargetMachineRef T)
SmallVectorImpl< T >::const_pointer c_str(SmallVectorImpl< T > &str)
LLVMTargetRef LLVMGetNextTarget(LLVMTargetRef T)
LLVMContextRef * wrap(const LLVMContext **Tys)
struct LLVMOpaqueTargetLibraryInfotData * LLVMTargetLibraryInfoRef
char * LLVMGetTargetMachineCPU(LLVMTargetMachineRef T)
LLVMBool LLVMTargetHasJIT(LLVMTargetRef T)
virtual const DataLayout * getDataLayout() const
LLVMTargetMachineRef LLVMCreateTargetMachine(LLVMTargetRef T, const char *Triple, const char *CPU, const char *Features, LLVMCodeGenOptLevel Level, LLVMRelocMode Reloc, LLVMCodeModel CodeModel)
struct LLVMOpaqueModule * LLVMModuleRef
LLVMTargetRef LLVMGetTargetFromName(const char *Name)
static RegisterPass< NVPTXAllocaHoisting > X("alloca-hoisting","Hoisting alloca instructions in non-entry ""blocks to the entry block")