Index: test/Transforms/NaCl/rewrite-longjmp-noncall-uses.ll |
diff --git a/test/Transforms/NaCl/rewrite-longjmp-noncall-uses.ll b/test/Transforms/NaCl/rewrite-longjmp-noncall-uses.ll |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ed7818ec96881eaf068bb22a4d3552da1e87e0de |
--- /dev/null |
+++ b/test/Transforms/NaCl/rewrite-longjmp-noncall-uses.ll |
@@ -0,0 +1,21 @@ |
+; RUN: opt < %s -rewrite-pnacl-library-calls -S | FileCheck %s |
+; Check that the rewrite pass behaves correctly in the presence |
+; of various uses of longjmp that are not calls. |
+ |
+@fp = global void (i64*, i32)* @longjmp, align 8 |
+; CHECK: @fp = global void (i64*, i32)* @longjmp, align 8 |
+@arrfp = global [3 x void (i64*, i32)*] [void (i64*, i32)* null, void (i64*, i32)* @longjmp, void (i64*, i32)* null], align 16 |
+; CHECK: @arrfp = global [3 x void (i64*, i32)*] [void (i64*, i32)* null, void (i64*, i32)* @longjmp, void (i64*, i32)* null], align 16 |
+ |
+; CHECK: define internal void @longjmp(i64* %env, i32 %val) { |
+ |
+declare void @longjmp(i64*, i32) |
+ |
+declare void @somefunc(i8*) |
+ |
+define void @foo() { |
+entry: |
+ call void @somefunc(i8* bitcast (void (i64*, i32)* @longjmp to i8*)) |
+; CHECK: call void @somefunc(i8* bitcast (void (i64*, i32)* @longjmp to i8*)) |
+ ret void |
+} |