diff options
author | Peter Zotov <whitequark@whitequark.org> | 2013-11-06 10:25:18 +0000 |
---|---|---|
committer | Peter Zotov <whitequark@whitequark.org> | 2013-11-06 10:25:18 +0000 |
commit | 7b61b75c217d2b59401477e64587dc630f8cf589 (patch) | |
tree | e65d3edd15fafe8a3384bd38dde174efbcc451e1 /llvm/lib/Target/TargetMachineC.cpp | |
parent | 671fe2ee58ca1dd4d801d4afc48a68b18d0fc6f9 (diff) | |
download | llvm-7b61b75c217d2b59401477e64587dc630f8cf589.zip llvm-7b61b75c217d2b59401477e64587dc630f8cf589.tar.gz llvm-7b61b75c217d2b59401477e64587dc630f8cf589.tar.bz2 |
[llvm-c] Improve TargetMachine bindings
Original patch by Chris Wailes
llvm-svn: 194143
Diffstat (limited to 'llvm/lib/Target/TargetMachineC.cpp')
-rw-r--r-- | llvm/lib/Target/TargetMachineC.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/llvm/lib/Target/TargetMachineC.cpp b/llvm/lib/Target/TargetMachineC.cpp index 2bb0f4c..36600d1 100644 --- a/llvm/lib/Target/TargetMachineC.cpp +++ b/llvm/lib/Target/TargetMachineC.cpp @@ -21,6 +21,7 @@ #include "llvm/Support/FormattedStream.h" #include "llvm/Support/TargetRegistry.h" #include "llvm/Support/raw_ostream.h" +#include "llvm/Support/Host.h" #include "llvm/Target/TargetMachine.h" #include <cassert> #include <cstdlib> @@ -71,6 +72,35 @@ LLVMTargetRef LLVMGetNextTarget(LLVMTargetRef T) { return wrap(unwrap(T)->getNext()); } +LLVMBool LLVMGetTargetFromName(const char *Name, LLVMTargetRef *T) { + for (TargetRegistry::iterator IT = TargetRegistry::begin(), + IE = TargetRegistry::end(); IT != IE; ++IT) { + if (IT->getName() == Name) { + *T = wrap(&*IT); + + return 0; + } + } + + return 1; +} + +LLVMBool LLVMGetTargetFromTriple(const char* TripleStr, LLVMTargetRef *T, + char **ErrorMessage) { + std::string Error; + + *T = wrap(TargetRegistry::lookupTarget(TripleStr, Error)); + + if (!*T) { + if (ErrorMessage) + *ErrorMessage = strdup(Error.c_str()); + + return 1; + } + + return 0; +} + const char * LLVMGetTargetName(LLVMTargetRef T) { return unwrap(T)->getName(); } @@ -162,6 +192,11 @@ LLVMTargetDataRef LLVMGetTargetMachineData(LLVMTargetMachineRef T) { return wrap(unwrap(T)->getDataLayout()); } +void LLVMSetTargetMachineAsmVerbosity(LLVMTargetMachineRef T, + LLVMBool VerboseAsm) { + unwrap(T)->setAsmVerbosityDefault(VerboseAsm); +} + static LLVMBool LLVMTargetMachineEmit(LLVMTargetMachineRef T, LLVMModuleRef M, formatted_raw_ostream &OS, LLVMCodeGenFileType codegen, char **ErrorMessage) { TargetMachine* TM = unwrap(T); @@ -229,3 +264,7 @@ LLVMBool LLVMTargetMachineEmitToMemoryBuffer(LLVMTargetMachineRef T, Data.length(), ""); return Result; } + +char *LLVMGetDefaultTargetTriple(void) { + return strdup(sys::getDefaultTargetTriple().c_str()); +} |