More to IRBuilder and Instruction

This commit is contained in:
Siu Kwan Lam 2013-02-07 17:40:00 -06:00
commit fe383ca326
3 changed files with 90 additions and 19 deletions

View file

@ -14,6 +14,7 @@
#include <llvm/Analysis/Verifier.h>
#include <llvm/Constants.h>
#include <llvm/Intrinsics.h>
#include <llvm/IRBuilder.h>
#include "auto_pyobject.h"
@ -732,3 +733,17 @@ PyObject* BasicBlock_getInstList(llvm::BasicBlock* BB)
"llvm::Instruction");
}
static
PyObject* IRBuilder_CreateAggregateRet(llvm::IRBuilder<>* builder,
PyObject* Vals,
unsigned N)
{
using namespace llvm;
std::vector<Value*> vec_values;
bool ok = extract<Value>::from_py_sequence(vec_values, Vals, "llvm::Value");
if (not ok) return NULL;
Value** ptr_values = &vec_values[0];
ReturnInst* inst = builder->CreateAggregateRet(ptr_values, N);
return pycapsule_new(inst, "llvm::Value", "llvm:ReturnInst");
}