binding for Target, Triple, TargetMachine
This commit is contained in:
parent
ca0a2b9fdd
commit
9485d03e18
9 changed files with 199 additions and 8 deletions
|
|
@ -368,9 +368,9 @@ PyObject* EngineBuilder_setMAttrs(llvm::EngineBuilder* eb,
|
|||
return NULL;
|
||||
}
|
||||
std::vector<const char*> tmp;
|
||||
const int N = PyList_Size(strlist);
|
||||
const Py_ssize_t N = PyList_Size(strlist);
|
||||
tmp.reserve(N);
|
||||
for (int i = 0; i < N; ++i) {
|
||||
for (Py_ssize_t i = 0; i < N; ++i) {
|
||||
const char * elem = PyString_AsString(PyList_GetItem(strlist, i));
|
||||
if (!elem) {
|
||||
return NULL;
|
||||
|
|
@ -381,3 +381,27 @@ PyObject* EngineBuilder_setMAttrs(llvm::EngineBuilder* eb,
|
|||
return pycapsule_new(eb, "llvm::EngineBuilder");
|
||||
}
|
||||
|
||||
static
|
||||
PyObject* EngineBuilder_selectTarget(llvm::EngineBuilder* eb,
|
||||
const llvm::Triple& TargetTriple,
|
||||
llvm::StringRef MArch,
|
||||
llvm::StringRef MCPU,
|
||||
PyObject* strlist)
|
||||
{
|
||||
const Py_ssize_t N = PySequence_Size(strlist);
|
||||
llvm::SmallVector<std::string, 8> MAttrs;
|
||||
MAttrs.reserve(N);
|
||||
for (Py_ssize_t i = 0; i < N; ++i) {
|
||||
PyObject* str = PySequence_GetItem(strlist, i);
|
||||
const char * cp = PyString_AsString(str);
|
||||
if (!cp) {
|
||||
Py_DECREF(str);
|
||||
return NULL;
|
||||
}
|
||||
MAttrs.push_back(cp);
|
||||
Py_DECREF(str);
|
||||
}
|
||||
eb->selectTarget(TargetTriple, MArch, MCPU, MAttrs);
|
||||
return pycapsule_new(eb, "llvm::EngineBuilder");
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue