From b9539745c54de13452e5ae7d0a13cb20dd763c10 Mon Sep 17 00:00:00 2001 From: Dan Gohman <gohman@apple.com> Date: Mon, 7 Jun 2010 20:20:33 +0000 Subject: [PATCH] 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 --- lib/Transforms/IPO/DeadArgumentElimination.cpp | 7 +++++++ test/BugPoint/remove_arguments_test.ll | 2 ++ 2 files changed, 9 insertions(+) diff --git a/lib/Transforms/IPO/DeadArgumentElimination.cpp b/lib/Transforms/IPO/DeadArgumentElimination.cpp index 692e47da71c..475eee8b19e 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 fb17c78a140..39a1371640f 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