mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-29 22:30:33 +00:00
Fix test/Bindings/Ocaml/vmcore.ml. When IRBuilder::CreateMalloc was removed,
LLVMBuildMalloc was reimplemented but with the bug that it didn't insert the resulting instruction. llvm-svn: 84374
This commit is contained in:
parent
a72ccc6fee
commit
4f6c397742
@ -992,12 +992,14 @@ public:
|
||||
/// constant 1.
|
||||
/// 2. Call malloc with that argument.
|
||||
/// 3. Bitcast the result of the malloc call to the specified type.
|
||||
static Value *CreateMalloc(Instruction *InsertBefore, const Type *IntPtrTy,
|
||||
const Type *AllocTy, Value *ArraySize = 0,
|
||||
const Twine &Name = "");
|
||||
static Value *CreateMalloc(BasicBlock *InsertAtEnd, const Type *IntPtrTy,
|
||||
const Type *AllocTy, Value *ArraySize = 0,
|
||||
Function* MallocF = 0, const Twine &Name = "");
|
||||
static Instruction *CreateMalloc(Instruction *InsertBefore,
|
||||
const Type *IntPtrTy, const Type *AllocTy,
|
||||
Value *ArraySize = 0,
|
||||
const Twine &Name = "");
|
||||
static Instruction *CreateMalloc(BasicBlock *InsertAtEnd,
|
||||
const Type *IntPtrTy, const Type *AllocTy,
|
||||
Value *ArraySize = 0, Function* MallocF = 0,
|
||||
const Twine &Name = "");
|
||||
|
||||
~CallInst();
|
||||
|
||||
|
@ -1700,15 +1700,17 @@ LLVMValueRef LLVMBuildNot(LLVMBuilderRef B, LLVMValueRef V, const char *Name) {
|
||||
LLVMValueRef LLVMBuildMalloc(LLVMBuilderRef B, LLVMTypeRef Ty,
|
||||
const char *Name) {
|
||||
const Type* IntPtrT = Type::getInt32Ty(unwrap(B)->GetInsertBlock()->getContext());
|
||||
return wrap(CallInst::CreateMalloc(unwrap(B)->GetInsertBlock(), IntPtrT,
|
||||
unwrap(Ty), 0, 0, Twine(Name)));
|
||||
return wrap(unwrap(B)->Insert(CallInst::CreateMalloc(
|
||||
unwrap(B)->GetInsertBlock(), IntPtrT, unwrap(Ty), 0, 0, ""),
|
||||
Twine(Name)));
|
||||
}
|
||||
|
||||
LLVMValueRef LLVMBuildArrayMalloc(LLVMBuilderRef B, LLVMTypeRef Ty,
|
||||
LLVMValueRef Val, const char *Name) {
|
||||
const Type* IntPtrT = Type::getInt32Ty(unwrap(B)->GetInsertBlock()->getContext());
|
||||
return wrap(CallInst::CreateMalloc(unwrap(B)->GetInsertBlock(), IntPtrT,
|
||||
unwrap(Ty), unwrap(Val), 0, Twine(Name)));
|
||||
return wrap(unwrap(B)->Insert(CallInst::CreateMalloc(
|
||||
unwrap(B)->GetInsertBlock(), IntPtrT, unwrap(Ty), unwrap(Val), 0, ""),
|
||||
Twine(Name)));
|
||||
}
|
||||
|
||||
LLVMValueRef LLVMBuildAlloca(LLVMBuilderRef B, LLVMTypeRef Ty,
|
||||
|
@ -460,10 +460,10 @@ static Value *checkArraySize(Value *Amt, const Type *IntPtrTy) {
|
||||
return Amt;
|
||||
}
|
||||
|
||||
static Value *createMalloc(Instruction *InsertBefore, BasicBlock *InsertAtEnd,
|
||||
const Type *IntPtrTy, const Type *AllocTy,
|
||||
Value *ArraySize, Function* MallocF,
|
||||
const Twine &NameStr) {
|
||||
static Instruction *createMalloc(Instruction *InsertBefore,
|
||||
BasicBlock *InsertAtEnd, const Type *IntPtrTy,
|
||||
const Type *AllocTy, Value *ArraySize,
|
||||
Function *MallocF, const Twine &NameStr) {
|
||||
assert(((!InsertBefore && InsertAtEnd) || (InsertBefore && !InsertAtEnd)) &&
|
||||
"createMalloc needs either InsertBefore or InsertAtEnd");
|
||||
|
||||
@ -507,7 +507,7 @@ static Value *createMalloc(Instruction *InsertBefore, BasicBlock *InsertAtEnd,
|
||||
if (!MallocF->doesNotAlias(0)) MallocF->setDoesNotAlias(0);
|
||||
const PointerType *AllocPtrType = PointerType::getUnqual(AllocTy);
|
||||
CallInst *MCall = NULL;
|
||||
Value *Result = NULL;
|
||||
Instruction *Result = NULL;
|
||||
if (InsertBefore) {
|
||||
MCall = CallInst::Create(MallocF, AllocSize, "malloccall", InsertBefore);
|
||||
Result = MCall;
|
||||
@ -536,9 +536,9 @@ static Value *createMalloc(Instruction *InsertBefore, BasicBlock *InsertAtEnd,
|
||||
/// constant 1.
|
||||
/// 2. Call malloc with that argument.
|
||||
/// 3. Bitcast the result of the malloc call to the specified type.
|
||||
Value *CallInst::CreateMalloc(Instruction *InsertBefore, const Type *IntPtrTy,
|
||||
const Type *AllocTy, Value *ArraySize,
|
||||
const Twine &Name) {
|
||||
Instruction *CallInst::CreateMalloc(Instruction *InsertBefore,
|
||||
const Type *IntPtrTy, const Type *AllocTy,
|
||||
Value *ArraySize, const Twine &Name) {
|
||||
return createMalloc(InsertBefore, NULL, IntPtrTy, AllocTy,
|
||||
ArraySize, NULL, Name);
|
||||
}
|
||||
@ -551,9 +551,10 @@ Value *CallInst::CreateMalloc(Instruction *InsertBefore, const Type *IntPtrTy,
|
||||
/// 3. Bitcast the result of the malloc call to the specified type.
|
||||
/// Note: This function does not add the bitcast to the basic block, that is the
|
||||
/// responsibility of the caller.
|
||||
Value *CallInst::CreateMalloc(BasicBlock *InsertAtEnd, const Type *IntPtrTy,
|
||||
const Type *AllocTy, Value *ArraySize,
|
||||
Function* MallocF, const Twine &Name) {
|
||||
Instruction *CallInst::CreateMalloc(BasicBlock *InsertAtEnd,
|
||||
const Type *IntPtrTy, const Type *AllocTy,
|
||||
Value *ArraySize, Function* MallocF,
|
||||
const Twine &Name) {
|
||||
return createMalloc(NULL, InsertAtEnd, IntPtrTy, AllocTy,
|
||||
ArraySize, MallocF, Name);
|
||||
}
|
||||
|
@ -936,9 +936,9 @@ let test_builder () =
|
||||
group "memory"; begin
|
||||
let bb08 = append_block context "Bb08" fn in
|
||||
let b = builder_at_end context bb08 in
|
||||
|
||||
(* RUN: grep {Inst20.*malloc.*i8 } < %t.ll
|
||||
* RUN: grep {Inst21.*malloc.*i8.*P1} < %t.ll
|
||||
|
||||
(* RUN: grep {Inst20.*malloc} < %t.ll
|
||||
* RUN: grep {Inst21.*malloc} < %t.ll
|
||||
* RUN: grep {Inst22.*alloca.*i32 } < %t.ll
|
||||
* RUN: grep {Inst23.*alloca.*i32.*P2} < %t.ll
|
||||
* RUN: grep {free.*Inst20} < %t.ll
|
||||
|
Loading…
Reference in New Issue
Block a user