diff options
| author | Keno Fischer <keno@alumni.harvard.edu> | 2017-04-06 20:51:40 +0000 |
|---|---|---|
| committer | Keno Fischer <keno@alumni.harvard.edu> | 2017-04-06 20:51:40 +0000 |
| commit | 1505de5495bd72b1478d2bf74c6da3c2833f7d55 (patch) | |
| tree | 08acf4765002d79108886b6fb3bd5bc43d3f2acc /llvm/test | |
| parent | 8d4e2768be3aa1e2ecd9c6fec430ab770a5bea6d (diff) | |
| download | bcm5719-llvm-1505de5495bd72b1478d2bf74c6da3c2833f7d55.tar.gz bcm5719-llvm-1505de5495bd72b1478d2bf74c6da3c2833f7d55.zip | |
[llvm-extract] Add option for recursive extraction
Summary:
Particularly, with --delete, this can be very useful for testing
new optimizations on some hotspots, without having to run it on the whole
application. E.g. as such:
```
llvm-extract app.bc --recursive --rfunc .*hotspot.* > hotspot.bc
llvm-extract app.bc --recursive --delete --rfunc .*hotspot.* > residual.bc
llc -filetype=obj residual.bc > residual.o
llc -filetype=obj hotspot.bc > hotspot.o
cc -o app residual.o hotspot.o
```
Reviewed By: davide
Differential Revision: https://reviews.llvm.org/D31722
llvm-svn: 299706
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/tools/llvm-extract/recursive.ll | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-extract/recursive.ll b/llvm/test/tools/llvm-extract/recursive.ll new file mode 100644 index 00000000000..54813dba796 --- /dev/null +++ b/llvm/test/tools/llvm-extract/recursive.ll @@ -0,0 +1,32 @@ +; 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 + +; CHECK-AB: define void @a +; CHECK-AB: define void @b +; CHECK-AB-NOT: define void @c +; CHECK-AB-NOT: define void @d + +; CHECK-CD-NOT: define void @a +; CHECK-CD-NOT: define void @b +; CHECK-CD: define void @c +; CHECK-CD: define void @d + +define void @a() { + call void @b() + ret void +} + +define void @b() { + ret void +} + +define void @c() { + call void @d() + ret void +} + +define void @d() { + call void @c() + ret void +} |

