Index: test/NaCl/Bitcode/pnacl-bcdis/types-and-fcn-addrs.ll |
diff --git a/test/NaCl/Bitcode/pnacl-bcdis/types-and-fcn-addrs.ll b/test/NaCl/Bitcode/pnacl-bcdis/types-and-fcn-addrs.ll |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e4c0baece7476fd50bfbf0850d345426e91a573b |
--- /dev/null |
+++ b/test/NaCl/Bitcode/pnacl-bcdis/types-and-fcn-addrs.ll |
@@ -0,0 +1,87 @@ |
+; Simple test to see if we handle all types. Note: Types are generated |
+; via function declarations. |
+ |
+; RUN: llvm-as < %s | pnacl-freeze | pnacl-bccompress --remove-abbreviations \ |
+; RUN: | pnacl-bcdis | FileCheck %s |
+ |
+declare void @func(); |
+ |
+declare i32 @test(i32, float, i32, i32, i64); |
+ |
+declare i64 @merge(i32, i32); |
+ |
+declare double @Float2Double(float); |
+ |
+declare float @Double2Float(double); |
+ |
+declare void @indefargs(i32, ...); |
+ |
+declare <4 x i32> @Mul(<4 x i32>, <4 x i32>); |
+ |
+; Show example where function name can't be modeled as a char6. |
+declare i32 @foo$bar(i32); |
+ |
+; CHECK: 0:0|<65532, 80, 69, 88, 69, 1, 0,|Magic Number: 'PEXE' (80, 69, 88, 69) |
+; CHECK-NEXT: | 8, 0, 17, 0, 4, 0, 2, 0, 0, |PNaCl Version: 2 |
+; CHECK-NEXT: | 0> | |
+; CHECK-NEXT: 16:0|1: <65535, 8, 2> |module { // BlockID = 8 |
+; CHECK-NEXT: 24:0| 3: <1, 1> | version 1; |
+; CHECK-NEXT: 26:4| 1: <65535, 0, 2> | abbreviations { // BlockID = 0 |
+; CHECK-NEXT: 36:0| 0: <65534> | } |
+; CHECK-NEXT: 40:0| 1: <65535, 17, 2> | types { // BlockID = 17 |
+; CHECK-NEXT: 48:0| 3: <1, 14> | count 14; |
+; CHECK-NEXT: 50:4| 3: <7, 32> | @t0 = i32; |
+; CHECK-NEXT: 53:6| 3: <3> | @t1 = float; |
+; CHECK-NEXT: 55:4| 3: <12, 4, 0> | @t2 = <4 x i32>; |
+; CHECK-NEXT: 58:6| 3: <7, 64> | @t3 = i64; |
+; CHECK-NEXT: 62:0| 3: <4> | @t4 = double; |
+; CHECK-NEXT: 63:6| 3: <2> | @t5 = void; |
+; CHECK-NEXT: 65:4| 3: <21, 0, 5> | @t6 = void (); |
+; CHECK-NEXT: 68:6| 3: <21, 0, 0, 0, 1, 0, 0,| @t7 = |
+; CHECK-NEXT: | 3> | i32 (i32, float, i32, i32, i64) |
+; CHECK-NEXT: | | ; |
+; CHECK-NEXT: 75:6| 3: <21, 0, 3, 0, 0> | @t8 = i64 (i32, i32); |
+; CHECK-NEXT: 80:4| 3: <21, 0, 4, 1> | @t9 = double (float); |
+; CHECK-NEXT: 84:4| 3: <21, 0, 1, 4> | @t10 = float (double); |
+; CHECK-NEXT: 88:4| 3: <21, 0, 5, 0> | @t11 = void (i32); |
+; CHECK-NEXT: 92:4| 3: <21, 0, 2, 2, 2> | @t12 = |
+; CHECK-NEXT: | | <4 x i32> |
+; CHECK-NEXT: | | (<4 x i32>, <4 x i32>); |
+; CHECK-NEXT: 97:2| 3: <21, 0, 0, 0> | @t13 = i32 (i32); |
+; CHECK-NEXT: 101:2| 0: <65534> | } |
+; CHECK-NEXT: 104:0| 3: <8, 6, 0, 1, 0> | declare external void @f0(); |
+; CHECK-NEXT: 108:6| 3: <8, 7, 0, 1, 0> | declare external |
+; CHECK-NEXT: | | i32 |
+; CHECK-NEXT: | | @f1(i32, float, i32, i32, i64); |
+; CHECK-NEXT: 113:4| 3: <8, 8, 0, 1, 0> | declare external i64 @f2(i32, i32); |
+; CHECK-NEXT: 118:2| 3: <8, 9, 0, 1, 0> | declare external double @f3(float); |
+; CHECK-NEXT: 123:0| 3: <8, 10, 0, 1, 0> | declare external float @f4(double); |
+; CHECK-NEXT: 127:6| 3: <8, 11, 0, 1, 0> | declare external void @f5(i32); |
+; CHECK-NEXT: 132:4| 3: <8, 12, 0, 1, 0> | declare external |
+; CHECK-NEXT: | | <4 x i32> |
+; CHECK-NEXT: | | @f6(<4 x i32>, <4 x i32>); |
+; CHECK-NEXT: 137:2| 3: <8, 13, 0, 1, 0> | declare external i32 @f7(i32); |
+; CHECK-NEXT: 142:0| 1: <65535, 19, 2> | globals { // BlockID = 19 |
+; CHECK-NEXT: 148:0| 3: <5, 0> | count 0; |
+; CHECK-NEXT: 150:4| 0: <65534> | } |
+; CHECK-NEXT: 152:0| 1: <65535, 14, 2> | valuesymtab { // BlockID = 14 |
+; CHECK-NEXT: 160:0| 3: <1, 1, 116, 101, 115, | @f1 : "test"; |
+; CHECK-NEXT: | 116> | |
+; CHECK-NEXT: 168:4| 3: <1, 2, 109, 101, 114, | @f2 : "merge"; |
+; CHECK-NEXT: | 103, 101> | |
+; CHECK-NEXT: 178:4| 3: <1, 3, 70, 108, 111, | @f3 : "Float2Double"; |
+; CHECK-NEXT: | 97, 116, 50, 68, 111,| |
+; CHECK-NEXT: | 117, 98, 108, 101> | |
+; CHECK-NEXT: 199:0| 3: <1, 4, 68, 111, 117, | @f4 : "Double2Float"; |
+; CHECK-NEXT: | 98, 108, 101, 50, 70,| |
+; CHECK-NEXT: | 108, 111, 97, 116> | |
+; CHECK-NEXT: 219:4| 3: <1, 5, 105, 110, 100, | @f5 : "indefargs"; |
+; CHECK-NEXT: | 101, 102, 97, 114, | |
+; CHECK-NEXT: | 103, 115> | |
+; CHECK-NEXT: 235:4| 3: <1, 0, 102, 117, 110, | @f0 : "func"; |
+; CHECK-NEXT: | 99> | |
+; CHECK-NEXT: 244:0| 3: <1, 7, 102, 111, 111, | @f7 : {'f', 'o', 'o', 36, 'b', |
+; CHECK-NEXT: | 36, 98, 97, 114> | 'a', 'r'} |
+; CHECK-NEXT: 257:0| 3: <1, 6, 77, 117, 108> | @f6 : "Mul"; |
+; CHECK-NEXT: 264:0| 0: <65534> | } |
+; CHECK-NEXT: 268:0|0: <65534> |} |