[llvm-commits] [llvm] r82694 - in /llvm/trunk: examples/BrainF/ include/llvm/ lib/AsmParser/ lib/Bitcode/Reader/ lib/VMCore/ test/Analysis/PointerTracking/ test/Transforms/GlobalOpt/ test/Transforms/InstCombine/
Evan Cheng
evan.cheng at apple.com
Thu Sep 24 19:01:06 PDT 2009
Hi Victor,
This is breaking tests on x86_64 / Mac OS X. I know at least of two
failures under MultiSource/Applications:
siod and d/make_dparser.
Please revert the patch if you need time to investigate it.
Thanks,
Evan
On Sep 24, 2009, at 10:47 AM, Victor Hernandez wrote:
> Author: hernande
> Date: Thu Sep 24 12:47:49 2009
> New Revision: 82694
>
> URL: http://llvm.org/viewvc/llvm-project?rev=82694&view=rev
> Log:
> Auto-upgrade malloc instructions to malloc calls.
>
> Reviewed by Devang Patel.
>
>
> Modified:
> llvm/trunk/examples/BrainF/BrainF.cpp
> llvm/trunk/include/llvm/Instructions.h
> llvm/trunk/lib/AsmParser/LLLexer.cpp
> llvm/trunk/lib/AsmParser/LLParser.cpp
> llvm/trunk/lib/AsmParser/LLParser.h
> llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
> llvm/trunk/lib/VMCore/Core.cpp
> llvm/trunk/lib/VMCore/Instructions.cpp
> llvm/trunk/test/Analysis/PointerTracking/sizes.ll
> llvm/trunk/test/Transforms/GlobalOpt/malloc-promote-2.ll
> llvm/trunk/test/Transforms/GlobalOpt/malloc-promote-3.ll
> llvm/trunk/test/Transforms/InstCombine/cast-malloc.ll
> llvm/trunk/test/Transforms/InstCombine/cast.ll
> llvm/trunk/test/Transforms/InstCombine/getelementptr.ll
> llvm/trunk/test/Transforms/InstCombine/malloc-free-delete.ll
> llvm/trunk/test/Transforms/InstCombine/malloc2.ll
>
> Modified: llvm/trunk/examples/BrainF/BrainF.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/BrainF/BrainF.cpp?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/examples/BrainF/BrainF.cpp (original)
> +++ llvm/trunk/examples/BrainF/BrainF.cpp Thu Sep 24 12:47:49 2009
> @@ -25,6 +25,7 @@
>
> #include "BrainF.h"
> #include "llvm/Constants.h"
> +#include "llvm/Instructions.h"
> #include "llvm/Intrinsics.h"
> #include "llvm/ADT/STLExtras.h"
> #include <iostream>
> @@ -78,7 +79,11 @@
>
> //%arr = malloc i8, i32 %d
> ConstantInt *val_mem = ConstantInt::get(C, APInt(32, memtotal));
> - ptr_arr = builder->CreateMalloc(IntegerType::getInt8Ty(C),
> val_mem, "arr");
> + BasicBlock* BB = builder->GetInsertBlock();
> + const Type* IntPtrTy = IntegerType::getInt32Ty(C);
> + ptr_arr = CallInst::CreateMalloc(BB, IntPtrTy,
> IntegerType::getInt8Ty(C),
> + val_mem, NULL, "arr");
> + BB->getInstList().push_back(cast<Instruction>(ptr_arr));
>
> //call void @llvm.memset.i32(i8 *%arr, i8 0, i32 %d, i32 1)
> {
>
> Modified: llvm/trunk/include/llvm/Instructions.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Instructions.h?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/include/llvm/Instructions.h (original)
> +++ llvm/trunk/include/llvm/Instructions.h Thu Sep 24 12:47:49 2009
> @@ -1044,7 +1044,7 @@
> const Twine &Name = "");
> static Value *CreateMalloc(BasicBlock *InsertAtEnd, const Type
> *IntPtrTy,
> const Type *AllocTy, Value *ArraySize =
> 0,
> - const Twine &Name = "");
> + Function* MallocF = 0, const Twine
> &Name = "");
>
> ~CallInst();
>
> @@ -1149,6 +1149,11 @@
> const Value *getCalledValue() const { return Op<0>(); }
> Value *getCalledValue() { return Op<0>(); }
>
> + /// setCalledFunction - Set the function called
> + void setCalledFunction(Value* Fn) {
> + Op<0>() = Fn;
> + }
> +
> // Methods for support type inquiry through isa, cast, and dyn_cast:
> static inline bool classof(const CallInst *) { return true; }
> static inline bool classof(const Instruction *I) {
>
> Modified: llvm/trunk/lib/AsmParser/LLLexer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLLexer.cpp?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/AsmParser/LLLexer.cpp (original)
> +++ llvm/trunk/lib/AsmParser/LLLexer.cpp Thu Sep 24 12:47:49 2009
> @@ -602,6 +602,9 @@
> // Scan CurPtr ahead, seeing if there is just whitespace before
> the newline.
> if (JustWhitespaceNewLine(CurPtr))
> return lltok::kw_zeroext;
> + } else if (Len == 6 && !memcmp(StartChar, "malloc", 6)) {
> + // Autoupgrade malloc instruction
> + return lltok::kw_malloc;
> }
>
> // Keywords for instructions.
> @@ -641,7 +644,6 @@
> INSTKEYWORD(unwind, Unwind);
> INSTKEYWORD(unreachable, Unreachable);
>
> - INSTKEYWORD(malloc, Malloc);
> INSTKEYWORD(alloca, Alloca);
> INSTKEYWORD(free, Free);
> INSTKEYWORD(load, Load);
>
> Modified: llvm/trunk/lib/AsmParser/LLParser.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLParser.cpp?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/AsmParser/LLParser.cpp (original)
> +++ llvm/trunk/lib/AsmParser/LLParser.cpp Thu Sep 24 12:47:49 2009
> @@ -69,6 +69,27 @@
> /// ValidateEndOfModule - Do final validity and sanity checks at the
> end of the
> /// module.
> bool LLParser::ValidateEndOfModule() {
> + // Update auto-upgraded malloc calls from "autoupgrade_malloc" to
> "malloc".
> + if (MallocF) {
> + MallocF->setName("malloc");
> + // If setName() does not set the name to "malloc", then there
> is already a
> + // declaration of "malloc". In that case, iterate over all
> calls to MallocF
> + // and get them to call the declared "malloc" instead.
> + if (MallocF->getName() != "malloc") {
> + Function* realMallocF = M->getFunction("malloc");
> + for (User::use_iterator UI = MallocF->use_begin(), UE=
> MallocF->use_end();
> + UI != UE; ) {
> + User* user = *UI;
> + UI++;
> + if (CallInst *Call = dyn_cast<CallInst>(user))
> + Call->setCalledFunction(realMallocF);
> + }
> + if (!realMallocF->doesNotAlias(0)) realMallocF-
> >setDoesNotAlias(0);
> + MallocF->eraseFromParent();
> + MallocF = NULL;
> + }
> + }
> +
> if (!ForwardRefTypes.empty())
> return Error(ForwardRefTypes.begin()->second.second,
> "use of undefined type named '" +
> @@ -2776,8 +2797,8 @@
> case lltok::kw_call: return ParseCall(Inst, PFS, false);
> case lltok::kw_tail: return ParseCall(Inst, PFS, true);
> // Memory.
> - case lltok::kw_alloca:
> - case lltok::kw_malloc: return ParseAlloc(Inst, PFS,
> KeywordVal);
> + case lltok::kw_alloca: return ParseAlloc(Inst, PFS);
> + case lltok::kw_malloc: return ParseAlloc(Inst, PFS, BB,
> false);
> case lltok::kw_free: return ParseFree(Inst, PFS);
> case lltok::kw_load: return ParseLoad(Inst, PFS, false);
> case lltok::kw_store: return ParseStore(Inst, PFS, false);
> @@ -3286,7 +3307,7 @@
> }
>
> /// ParsePHI
> -/// ::= 'phi' Type '[' Value ',' Value ']' (',' '[' Value ','
> Valueà ']')*
> +/// ::= 'phi' Type '[' Value ',' Value ']' (',' '[' Value ','
> Valueâü ']')*
> bool LLParser::ParsePHI(Instruction *&Inst, PerFunctionState &PFS) {
> PATypeHolder Ty(Type::getVoidTy(Context));
> Value *Op0, *Op1;
> @@ -3431,7 +3452,7 @@
> /// ::= 'malloc' Type (',' TypeAndValue)? (',' OptionalInfo)?
> /// ::= 'alloca' Type (',' TypeAndValue)? (',' OptionalInfo)?
> bool LLParser::ParseAlloc(Instruction *&Inst, PerFunctionState &PFS,
> - unsigned Opc) {
> + BasicBlock* BB, bool isAlloca) {
> PATypeHolder Ty(Type::getVoidTy(Context));
> Value *Size = 0;
> LocTy SizeLoc;
> @@ -3451,10 +3472,21 @@
> if (Size && Size->getType() != Type::getInt32Ty(Context))
> return Error(SizeLoc, "element count must be i32");
>
> - if (Opc == Instruction::Malloc)
> - Inst = new MallocInst(Ty, Size, Alignment);
> - else
> + if (isAlloca)
> Inst = new AllocaInst(Ty, Size, Alignment);
> + else {
> + // Autoupgrade old malloc instruction to malloc call.
> + const Type* IntPtrTy = Type::getInt32Ty(Context);
> + const Type* Int8PtrTy = PointerType::getUnqual(Type::getInt8Ty
> (Context));
> + if (!MallocF)
> + // Prototype malloc as "void *autoupgrade_malloc(int32)".
> + MallocF = cast<Function>(M->getOrInsertFunction
> ("autoupgrade_malloc",
> + Int8PtrTy, IntPtrTy, NULL));
> + // "autoupgrade_malloc" updated to "malloc" in
> ValidateEndOfModule().
> +
> + Inst = cast<Instruction>(CallInst::CreateMalloc(BB, IntPtrTy, Ty,
> + Size, MallocF));
> + }
> return false;
> }
>
>
> Modified: llvm/trunk/lib/AsmParser/LLParser.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLParser.h?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/AsmParser/LLParser.h (original)
> +++ llvm/trunk/lib/AsmParser/LLParser.h Thu Sep 24 12:47:49 2009
> @@ -75,9 +75,11 @@
> std::map<std::string, std::pair<GlobalValue*, LocTy> >
> ForwardRefVals;
> std::map<unsigned, std::pair<GlobalValue*, LocTy> >
> ForwardRefValIDs;
> std::vector<GlobalValue*> NumberedVals;
> + Function* MallocF;
> public:
> LLParser(MemoryBuffer *F, SourceMgr &SM, SMDiagnostic &Err,
> Module *m) :
> - Context(m->getContext()), Lex(F, SM, Err, m->getContext()), M
> (m) {}
> + Context(m->getContext()), Lex(F, SM, Err, m->getContext()),
> + M(m), MallocF(NULL) {}
> bool Run();
>
> LLVMContext& getContext() { return Context; }
> @@ -276,7 +278,8 @@
> bool ParseShuffleVector(Instruction *&I, PerFunctionState &PFS);
> bool ParsePHI(Instruction *&I, PerFunctionState &PFS);
> bool ParseCall(Instruction *&I, PerFunctionState &PFS, bool
> isTail);
> - bool ParseAlloc(Instruction *&I, PerFunctionState &PFS,
> unsigned Opc);
> + bool ParseAlloc(Instruction *&I, PerFunctionState &PFS,
> + BasicBlock *BB = 0, bool isAlloca = true);
> bool ParseFree(Instruction *&I, PerFunctionState &PFS);
> bool ParseLoad(Instruction *&I, PerFunctionState &PFS, bool
> isVolatile);
> bool ParseStore(Instruction *&I, PerFunctionState &PFS, bool
> isVolatile);
>
> Modified: llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp (original)
> +++ llvm/trunk/lib/Bitcode/Reader/BitcodeReader.cpp Thu Sep 24
> 12:47:49 2009
> @@ -2046,14 +2046,21 @@
> }
>
> case bitc::FUNC_CODE_INST_MALLOC: { // MALLOC: [instty, op, align]
> + // Autoupgrade malloc instruction to malloc call.
> if (Record.size() < 3)
> return Error("Invalid MALLOC record");
> const PointerType *Ty =
> dyn_cast_or_null<PointerType>(getTypeByID(Record[0]));
> Value *Size = getFnValueByID(Record[1], Type::getInt32Ty
> (Context));
> - unsigned Align = Record[2];
> if (!Ty || !Size) return Error("Invalid MALLOC record");
> - I = new MallocInst(Ty->getElementType(), Size, (1 << Align)
> >> 1);
> + if (!CurBB) return Error("Invalid malloc instruction with no
> BB");
> + const Type* Int32Ty = IntegerType::getInt32Ty(CurBB-
> >getContext());
> + if (Size->getType() != Int32Ty)
> + Size = CastInst::CreateIntegerCast(Size, Int32Ty, false /
> *ZExt*/,
> + "", CurBB);
> + Value* Malloc = CallInst::CreateMalloc(CurBB, Int32Ty,
> + Ty->getElementType(),
> Size, NULL);
> + I = cast<Instruction>(Malloc);
> InstructionList.push_back(I);
> break;
> }
>
> Modified: llvm/trunk/lib/VMCore/Core.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Core.cpp?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/VMCore/Core.cpp (original)
> +++ llvm/trunk/lib/VMCore/Core.cpp Thu Sep 24 12:47:49 2009
> @@ -1636,12 +1636,16 @@
>
> LLVMValueRef LLVMBuildMalloc(LLVMBuilderRef B, LLVMTypeRef Ty,
> const char *Name) {
> - return wrap(unwrap(B)->CreateMalloc(unwrap(Ty), 0, Name));
> + const Type* IntPtrT = Type::getInt32Ty(unwrap(B)->GetInsertBlock
> ()->getContext());
> + return wrap(CallInst::CreateMalloc(unwrap(B)->GetInsertBlock(),
> IntPtrT,
> + unwrap(Ty), 0, 0, Twine(Name)));
> }
>
> LLVMValueRef LLVMBuildArrayMalloc(LLVMBuilderRef B, LLVMTypeRef Ty,
> LLVMValueRef Val, const char
> *Name) {
> - return wrap(unwrap(B)->CreateMalloc(unwrap(Ty), unwrap(Val),
> 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)));
> }
>
> LLVMValueRef LLVMBuildAlloca(LLVMBuilderRef B, LLVMTypeRef Ty,
>
> Modified: llvm/trunk/lib/VMCore/Instructions.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Instructions.cpp?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/lib/VMCore/Instructions.cpp (original)
> +++ llvm/trunk/lib/VMCore/Instructions.cpp Thu Sep 24 12:47:49 2009
> @@ -462,7 +462,8 @@
>
> static Value *createMalloc(Instruction *InsertBefore, BasicBlock
> *InsertAtEnd,
> const Type *IntPtrTy, const Type *AllocTy,
> - Value *ArraySize, const Twine &NameStr) {
> + Value *ArraySize, Function* MallocF,
> + const Twine &NameStr) {
> assert(((!InsertBefore && InsertAtEnd) || (InsertBefore && !
> InsertAtEnd)) &&
> "createMalloc needs either InsertBefore or InsertAtEnd");
>
> @@ -499,10 +500,11 @@
> BasicBlock* BB = InsertBefore ? InsertBefore->getParent() :
> InsertAtEnd;
> Module* M = BB->getParent()->getParent();
> const Type *BPTy = PointerType::getUnqual(Type::getInt8Ty(BB-
> >getContext()));
> - // prototype malloc as "void *malloc(size_t)"
> - Constant *MallocF = M->getOrInsertFunction("malloc", BPTy,
> IntPtrTy, NULL);
> - if (!cast<Function>(MallocF)->doesNotAlias(0))
> - cast<Function>(MallocF)->setDoesNotAlias(0);
> + if (!MallocF)
> + // prototype malloc as "void *malloc(size_t)"
> + MallocF = cast<Function>(M->getOrInsertFunction("malloc", BPTy,
> + IntPtrTy, NULL));
> + if (!MallocF->doesNotAlias(0)) MallocF->setDoesNotAlias(0);
> const PointerType *AllocPtrType = PointerType::getUnqual(AllocTy);
> CallInst *MCall = NULL;
> Value *MCast = NULL;
> @@ -531,7 +533,8 @@
> Value *CallInst::CreateMalloc(Instruction *InsertBefore, const Type
> *IntPtrTy,
> const Type *AllocTy, Value *ArraySize,
> const Twine &Name) {
> - return createMalloc(InsertBefore, NULL, IntPtrTy, AllocTy,
> ArraySize, Name);
> + return createMalloc(InsertBefore, NULL, IntPtrTy, AllocTy,
> + ArraySize, NULL, Name);
> }
>
> /// CreateMalloc - Generate the IR for a call to malloc:
> @@ -544,8 +547,9 @@
> /// responsibility of the caller.
> Value *CallInst::CreateMalloc(BasicBlock *InsertAtEnd, const Type
> *IntPtrTy,
> const Type *AllocTy, Value *ArraySize,
> - const Twine &Name) {
> - return createMalloc(NULL, InsertAtEnd, IntPtrTy, AllocTy,
> ArraySize, Name);
> + Function* MallocF, const Twine &Name) {
> + return createMalloc(NULL, InsertAtEnd, IntPtrTy, AllocTy,
> + ArraySize, MallocF, Name);
> }
>
> //
> =
> =
> =
> ----------------------------------------------------------------------=
> ==//
>
> Modified: llvm/trunk/test/Analysis/PointerTracking/sizes.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/PointerTracking/sizes.ll?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/test/Analysis/PointerTracking/sizes.ll (original)
> +++ llvm/trunk/test/Analysis/PointerTracking/sizes.ll Thu Sep 24
> 12:47:49 2009
> @@ -63,7 +63,7 @@
> define i32 @foo2(i32 %n) nounwind {
> entry:
> %call = malloc i8, i32 %n ; <i8*> [#uses=1]
> -; CHECK: %call =
> +; CHECK: %malloccall =
> ; CHECK: ==> %n elements, %n bytes allocated
> %call2 = tail call i8* @calloc(i64 2, i64 4) nounwind ; <i8*>
> [#uses=1]
> ; CHECK: %call2 =
>
> Modified: llvm/trunk/test/Transforms/GlobalOpt/malloc-promote-2.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GlobalOpt/malloc-promote-2.ll?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/test/Transforms/GlobalOpt/malloc-promote-2.ll
> (original)
> +++ llvm/trunk/test/Transforms/GlobalOpt/malloc-promote-2.ll Thu Sep
> 24 12:47:49 2009
> @@ -1,4 +1,6 @@
> -; RUN: opt < %s -globalopt -S | not grep malloc
> +; RUN: opt < %s -globalopt -globaldce -S | not grep malloc
> +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-
> i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-
> f80:128:128"
> +target triple = "i686-apple-darwin8"
>
> @G = internal global i32* null ; <i32**> [#uses=3]
>
>
> Modified: llvm/trunk/test/Transforms/GlobalOpt/malloc-promote-3.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GlobalOpt/malloc-promote-3.ll?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/test/Transforms/GlobalOpt/malloc-promote-3.ll
> (original)
> +++ llvm/trunk/test/Transforms/GlobalOpt/malloc-promote-3.ll Thu Sep
> 24 12:47:49 2009
> @@ -1,4 +1,6 @@
> -; RUN: opt < %s -globalopt -S | not grep malloc
> +; RUN: opt < %s -globalopt -globaldce -S | not grep malloc
> +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-
> i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-
> f80:128:128"
> +target triple = "i686-apple-darwin8"
>
> @G = internal global i32* null ; <i32**> [#uses=4]
>
>
> Modified: llvm/trunk/test/Transforms/InstCombine/cast-malloc.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/cast-malloc.ll?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/test/Transforms/InstCombine/cast-malloc.ll (original)
> +++ llvm/trunk/test/Transforms/InstCombine/cast-malloc.ll Thu Sep 24
> 12:47:49 2009
> @@ -1,6 +1,6 @@
> ; test that casted mallocs get converted to malloc of the right type
> ; RUN: opt < %s -instcombine -S | \
> -; RUN: not grep bitcast
> +; RUN: grep bitcast | count 1
>
> ; The target datalayout is important for this test case. We have to
> tell
> ; instcombine that the ABI alignment for a long is 4-bytes, not 8,
> otherwise
>
> Modified: llvm/trunk/test/Transforms/InstCombine/cast.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/cast.ll?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/test/Transforms/InstCombine/cast.ll (original)
> +++ llvm/trunk/test/Transforms/InstCombine/cast.ll Thu Sep 24
> 12:47:49 2009
> @@ -79,9 +79,9 @@
> }
>
> define i32* @test12() {
> - %p = malloc [4 x i8] ; <[4 x i8]*> [#uses=1]
> - %c = bitcast [4 x i8]* %p to i32* ; <i32*>
> [#uses=1]
> - ret i32* %c
> + %c = malloc [4 x i8] ; <[4 x i8]*> [#uses=1]
> + %p = bitcast [4 x i8]* %c to i32* ; <i32*>
> [#uses=1]
> + ret i32* %p
> }
> define i8* @test13(i64 %A) {
> %c = getelementptr [0 x i8]* bitcast ([32832 x i8]* @inbuf
> to [0 x i8]*), i64 0, i64 %A ; <i8*> [#uses=1]
>
> Modified: llvm/trunk/test/Transforms/InstCombine/getelementptr.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/getelementptr.ll?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/test/Transforms/InstCombine/getelementptr.ll (original)
> +++ llvm/trunk/test/Transforms/InstCombine/getelementptr.ll Thu Sep
> 24 12:47:49 2009
> @@ -58,7 +58,7 @@
> %B = getelementptr i32* %A, i64 2
> ret i32* %B
> ; CHECK: @test6
> -; CHECK: getelementptr [4 x i32]* %M, i64 0, i64 2
> +; CHECK: getelementptr i8* %malloccall, i64 8
> }
>
> define i32* @test7(i32* %I, i64 %C, i64 %D) {
>
> Modified: llvm/trunk/test/Transforms/InstCombine/malloc-free-delete.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/malloc-free-delete.ll?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/test/Transforms/InstCombine/malloc-free-delete.ll
> (original)
> +++ llvm/trunk/test/Transforms/InstCombine/malloc-free-delete.ll Thu
> Sep 24 12:47:49 2009
> @@ -1,5 +1,5 @@
> ; RUN: opt < %s -instcombine -S | grep {ret i32 0}
> -; RUN: opt < %s -instcombine -S | not grep malloc
> +; RUN: opt < %s -instcombine -globaldce -S | not grep malloc
> ; PR1201
> define i32 @main(i32 %argc, i8** %argv) {
> %c_19 = alloca i8* ; <i8**> [#uses=2]
>
> Modified: llvm/trunk/test/Transforms/InstCombine/malloc2.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/malloc2.ll?rev=82694&r1=82693&r2=82694&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/test/Transforms/InstCombine/malloc2.ll (original)
> +++ llvm/trunk/test/Transforms/InstCombine/malloc2.ll Thu Sep 24
> 12:47:49 2009
> @@ -1,5 +1,4 @@
> ; RUN: opt < %s -instcombine -S | grep {ret i32 0}
> -; RUN: opt < %s -instcombine -S | not grep malloc
> ; PR1313
>
> define i32 @test1(i32 %argc, i8* %argv, i8* %envp) {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list