Run dead type elimination after dead argument elimination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105552 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2010-06-07 20:28:37 +00:00
parent b9539745c5
commit d0a6a8ca31
2 changed files with 8 additions and 3 deletions

View File

@ -2,12 +2,16 @@
; RUN: llvm-dis remove_arguments_test.ll.tmp-reduced-simplified.bc -o - | FileCheck %s
; Test to make sure that arguments are removed from the function if they are
; unnecessary.
; unnecessary. And clean up any types that that frees up too.
; CHECK: target triple
; CHECK-NOT: struct.anon
%struct.anon = type { i32 }
declare i32 @test2()
; CHECK: define void @test() {
define i32 @test(i32 %A, i32 %B, float %C) {
define i32 @test(i32 %A, %struct.anon* %B, float %C) {
call i32 @test2()
ret i32 %1
}

View File

@ -116,13 +116,14 @@ Module *BugDriver::performFinalCleanups(Module *M, bool MayModifySemantics) {
std::vector<const PassInfo*> CleanupPasses;
CleanupPasses.push_back(getPI(createGlobalDCEPass()));
CleanupPasses.push_back(getPI(createDeadTypeEliminationPass()));
if (MayModifySemantics)
CleanupPasses.push_back(getPI(createDeadArgHackingPass()));
else
CleanupPasses.push_back(getPI(createDeadArgEliminationPass()));
CleanupPasses.push_back(getPI(createDeadTypeEliminationPass()));
Module *New = runPassesOn(M, CleanupPasses);
if (New == 0) {
errs() << "Final cleanups failed. Sorry. :( Please report a bug!\n";