diff options
| author | David Callahan <dcallahan@fb.com> | 2019-04-04 23:30:47 +0000 |
|---|---|---|
| committer | David Callahan <dcallahan@fb.com> | 2019-04-04 23:30:47 +0000 |
| commit | f498bdcebfa439218e315be74a62ad52db3e2846 (patch) | |
| tree | 7ce7c0f7a93857d40367d0d089fc5694538aca37 | |
| parent | a6ed16c98f503f5acc912a8f00b74f591f6de951 (diff) | |
| download | bcm5719-llvm-f498bdcebfa439218e315be74a62ad52db3e2846.tar.gz bcm5719-llvm-f498bdcebfa439218e315be74a62ad52db3e2846.zip | |
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
| -rw-r--r-- | llvm/test/tools/llvm-extract/recursive.ll | 8 | ||||
| -rw-r--r-- | 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 54813dba796..7fa9eceba91 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 30c89a87439..64674729bf4 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<CallInst>(&I); - if (!CI) + CallBase *CB = dyn_cast<CallBase>(&I); + if (!CB) continue; - Function *CF = CI->getCalledFunction(); + Function *CF = CB->getCalledFunction(); if (!CF) continue; if (CF->isDeclaration() || GVs.count(CF)) |

