Index: test/Transforms/NaCl/rewrite-call-with-libfunc-argument.ll |
diff --git a/test/Transforms/NaCl/rewrite-call-with-libfunc-argument.ll b/test/Transforms/NaCl/rewrite-call-with-libfunc-argument.ll |
new file mode 100644 |
index 0000000000000000000000000000000000000000..56ee2d2c078e2ece071a5fe08fc6dd02f0dc92a8 |
--- /dev/null |
+++ b/test/Transforms/NaCl/rewrite-call-with-libfunc-argument.ll |
@@ -0,0 +1,18 @@ |
+; RUN: opt < %s -rewrite-pnacl-library-calls -S | FileCheck %s |
+ |
+; See https://code.google.com/p/nativeclient/issues/detail?id=3706 |
+; Make sure that when @longjmp is used as an argument in a call instruction, |
+; the rewrite pass does the right thing and doesn't get confused. |
+ |
+; CHECK: define internal void @longjmp(i64* %env, i32 %val) { |
+ |
+declare void @longjmp(i64*, i32) |
+ |
+declare void @somefunc(i32, void (i64*, i32)*, i32) |
+ |
+define void @foo() { |
+entry: |
+ call void @somefunc(i32 1, void (i64*, i32)* @longjmp, i32 2) |
+; CHECK: call void @somefunc(i32 1, void (i64*, i32)* @longjmp, i32 2) |
+ ret void |
+} |