summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorKeno Fischer <keno@alumni.harvard.edu>2017-04-06 20:51:40 +0000
committerKeno Fischer <keno@alumni.harvard.edu>2017-04-06 20:51:40 +0000
commit1505de5495bd72b1478d2bf74c6da3c2833f7d55 (patch)
tree08acf4765002d79108886b6fb3bd5bc43d3f2acc /llvm/test
parent8d4e2768be3aa1e2ecd9c6fec430ab770a5bea6d (diff)
downloadbcm5719-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.ll32
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
+}
OpenPOWER on IntegriCloud