From f498bdcebfa439218e315be74a62ad52db3e2846 Mon Sep 17 00:00:00 2001 From: David Callahan Date: Thu, 4 Apr 2019 23:30:47 +0000 Subject: [PATCH] Include invoke'd functions for recursive extract Summary: When recursively extracting a function from a bit code file, include functions mentioned in InvokeInst as well as CallInst Reviewers: loladiro, espindola, volkan Reviewed By: loladiro Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60231 llvm-svn: 357735 --- llvm/test/tools/llvm-extract/recursive.ll | 8 ++++++++ llvm/tools/llvm-extract/llvm-extract.cpp | 6 +++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/llvm/test/tools/llvm-extract/recursive.ll b/llvm/test/tools/llvm-extract/recursive.ll index 54813db..7fa9ece 100644 --- a/llvm/test/tools/llvm-extract/recursive.ll +++ b/llvm/test/tools/llvm-extract/recursive.ll @@ -1,6 +1,7 @@ ; RUN: llvm-extract -func=a --recursive %s -S | FileCheck --check-prefix=CHECK-AB %s ; RUN: llvm-extract -func=a --recursive --delete %s -S | FileCheck --check-prefix=CHECK-CD %s ; RUN: llvm-extract -func=d --recursive %s -S | FileCheck --check-prefix=CHECK-CD %s +; RUN: llvm-extract -func=e --recursive %s -S | FileCheck --check-prefix=CHECK-CD %s ; CHECK-AB: define void @a ; CHECK-AB: define void @b @@ -30,3 +31,10 @@ define void @d() { call void @c() ret void } + +define void @e() { + invoke void @c() + to label %L unwind label %L +L: + ret void +} \ No newline at end of file diff --git a/llvm/tools/llvm-extract/llvm-extract.cpp b/llvm/tools/llvm-extract/llvm-extract.cpp index 30c89a8..6467472 100644 --- a/llvm/tools/llvm-extract/llvm-extract.cpp +++ b/llvm/tools/llvm-extract/llvm-extract.cpp @@ -270,10 +270,10 @@ int main(int argc, char **argv) { ExitOnErr(F->materialize()); for (auto &BB : *F) { for (auto &I : BB) { - auto *CI = dyn_cast(&I); - if (!CI) + CallBase *CB = dyn_cast(&I); + if (!CB) continue; - Function *CF = CI->getCalledFunction(); + Function *CF = CB->getCalledFunction(); if (!CF) continue; if (CF->isDeclaration() || GVs.count(CF)) -- 2.7.4