Fix PR1735 and Transforms/DeadArgElim/2007-10-18-VarargsReturn.ll by

fixing some obviously broken code :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43141 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2007-10-18 18:49:29 +00:00
parent 50c26b642c
commit a0bc7fc7bd
2 changed files with 15 additions and 3 deletions

View File

@ -168,7 +168,7 @@ bool DAE::DeleteDeadVarargs(Function &Fn) {
CallSite CS = CallSite::get(Fn.use_back());
Instruction *Call = CS.getInstruction();
// Loop over the operands, dropping extraneous ones at the end of the list.
// Pass all the same arguments.
Args.assign(CS.arg_begin(), CS.arg_begin()+NumArgs);
Instruction *New;
@ -185,13 +185,13 @@ bool DAE::DeleteDeadVarargs(Function &Fn) {
Args.clear();
if (!Call->use_empty())
Call->replaceAllUsesWith(Constant::getNullValue(Call->getType()));
Call->replaceAllUsesWith(New);
New->takeName(Call);
// Finally, remove the old call from the program, reducing the use-count of
// F.
Call->getParent()->getInstList().erase(Call);
Call->eraseFromParent();
}
// Since we have now created the new function, splice the body of the old

View File

@ -0,0 +1,12 @@
; RUN: llvm-as < %s | opt -deadargelim | llvm-dis | not grep {ret i32 0}
; PR1735
define internal i32 @test(i32 %A, ...) {
ret i32 %A
}
define i32 @foo() {
%A = call i32(i32, ...)* @test(i32 1)
ret i32 %A
}