forked from OSchip/llvm-project
Run dead type elimination after dead argument elimination.
llvm-svn: 105552
This commit is contained in:
parent
fb8ed43349
commit
fa9ad13002
|
@ -2,12 +2,16 @@
|
||||||
; RUN: llvm-dis remove_arguments_test.ll.tmp-reduced-simplified.bc -o - | FileCheck %s
|
; 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
|
; 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()
|
declare i32 @test2()
|
||||||
|
|
||||||
; CHECK: define void @test() {
|
; 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()
|
call i32 @test2()
|
||||||
ret i32 %1
|
ret i32 %1
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,13 +116,14 @@ Module *BugDriver::performFinalCleanups(Module *M, bool MayModifySemantics) {
|
||||||
|
|
||||||
std::vector<const PassInfo*> CleanupPasses;
|
std::vector<const PassInfo*> CleanupPasses;
|
||||||
CleanupPasses.push_back(getPI(createGlobalDCEPass()));
|
CleanupPasses.push_back(getPI(createGlobalDCEPass()));
|
||||||
CleanupPasses.push_back(getPI(createDeadTypeEliminationPass()));
|
|
||||||
|
|
||||||
if (MayModifySemantics)
|
if (MayModifySemantics)
|
||||||
CleanupPasses.push_back(getPI(createDeadArgHackingPass()));
|
CleanupPasses.push_back(getPI(createDeadArgHackingPass()));
|
||||||
else
|
else
|
||||||
CleanupPasses.push_back(getPI(createDeadArgEliminationPass()));
|
CleanupPasses.push_back(getPI(createDeadArgEliminationPass()));
|
||||||
|
|
||||||
|
CleanupPasses.push_back(getPI(createDeadTypeEliminationPass()));
|
||||||
|
|
||||||
Module *New = runPassesOn(M, CleanupPasses);
|
Module *New = runPassesOn(M, CleanupPasses);
|
||||||
if (New == 0) {
|
if (New == 0) {
|
||||||
errs() << "Final cleanups failed. Sorry. :( Please report a bug!\n";
|
errs() << "Final cleanups failed. Sorry. :( Please report a bug!\n";
|
||||||
|
|
Loading…
Reference in New Issue