diff options
author | Dan Gohman <gohman@apple.com> | 2010-06-07 20:20:33 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-06-07 20:20:33 +0000 |
commit | b9539745c54de13452e5ae7d0a13cb20dd763c10 (patch) | |
tree | cfffbcc8bdcd31d4d6cda41590abdc4eecaad968 | |
parent | e49a13e7260b83ce56d01446f2a165cc9f35da7f (diff) | |
download | external_llvm-b9539745c54de13452e5ae7d0a13cb20dd763c10.zip external_llvm-b9539745c54de13452e5ae7d0a13cb20dd763c10.tar.gz external_llvm-b9539745c54de13452e5ae7d0a13cb20dd763c10.tar.bz2 |
Make bugpoint dead-argument-hacking actually work, and actually test it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105551 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Transforms/IPO/DeadArgumentElimination.cpp | 7 | ||||
-rw-r--r-- | test/BugPoint/remove_arguments_test.ll | 2 |
2 files changed, 9 insertions, 0 deletions
diff --git a/lib/Transforms/IPO/DeadArgumentElimination.cpp b/lib/Transforms/IPO/DeadArgumentElimination.cpp index 692e47d..475eee8 100644 --- a/lib/Transforms/IPO/DeadArgumentElimination.cpp +++ b/lib/Transforms/IPO/DeadArgumentElimination.cpp @@ -120,9 +120,14 @@ namespace { typedef SmallVector<RetOrArg, 5> UseVector; + protected: + // DAH uses this to specify a different ID. + explicit DAE(void *ID) : ModulePass(ID) {} + public: static char ID; // Pass identification, replacement for typeid DAE() : ModulePass(&ID) {} + bool runOnModule(Module &M); virtual bool ShouldHackArguments() const { return false; } @@ -155,6 +160,8 @@ namespace { /// by bugpoint. struct DAH : public DAE { static char ID; + DAH() : DAE(&ID) {} + virtual bool ShouldHackArguments() const { return true; } }; } diff --git a/test/BugPoint/remove_arguments_test.ll b/test/BugPoint/remove_arguments_test.ll index fb17c78..39a1371 100644 --- a/test/BugPoint/remove_arguments_test.ll +++ b/test/BugPoint/remove_arguments_test.ll @@ -1,10 +1,12 @@ ; RUN: bugpoint %s -output-prefix %t -bugpoint-crashcalls -silence-passes +; 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. declare i32 @test2() +; CHECK: define void @test() { define i32 @test(i32 %A, i32 %B, float %C) { call i32 @test2() ret i32 %1 |