Index: test/NaCl/Bitcode/pnacl-bcdis/no-abbreviations.ll |
diff --git a/test/NaCl/Bitcode/pnacl-bcdis/no-abbreviations.ll b/test/NaCl/Bitcode/pnacl-bcdis/no-abbreviations.ll |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7d0af6c01903eef62e2e18670b9acbd86bd154ae |
--- /dev/null |
+++ b/test/NaCl/Bitcode/pnacl-bcdis/no-abbreviations.ll |
@@ -0,0 +1,181 @@ |
+; Simple test to show the difference between no abbreviations, and |
+; the ones provided by pnacl-freeze. Differences are show by the |
+; addresses for records. |
+ |
+; RUN: llvm-as < %s | pnacl-freeze --allow-local-symbol-tables \ |
+; RUN: | pnacl-bcdis --allow-local-symbol-tables \ |
+; RUN: | FileCheck %s --check-prefix ABV |
+ |
+; RUN: llvm-as < %s | pnacl-freeze --allow-local-symbol-tables \ |
+; RUN: | pnacl-bccompress --remove-abbreviations \ |
+; RUN: | pnacl-bcdis --allow-local-symbol-tables \ |
+; RUN: | FileCheck %s --check-prefix NOABV |
+ |
+define i32 @fact(i32 %n) { |
+ %v1 = icmp eq i32 0, 1 |
+ br i1 %v1, label %true, label %false |
+true: |
+ ret i32 1 |
+false: |
+ %v2 = sub i32 %n, 1 |
+ %v3 = call i32 @fact(i32 %v2) |
+ %v4 = mul i32 %n, %v3 |
+ ret i32 %v4 |
+} |
+ |
+; ABV: 0:0|<65532, 80, 69, 88, 69, 1, 0,|Magic Number: 'PEXE' (80, 69, 88, 69) |
+; ABV-NEXT: | 8, 0, 17, 0, 4, 0, 2, 0, 0, |PNaCl Version: 2 |
+; ABV-NEXT: | 0> | |
+; ABV-NEXT: 16:0|1: <65535, 8, 2> |module { // BlockID = 8 |
+; ABV-NEXT: 24:0| 3: <1, 1> | version 1; |
+; ABV-NEXT: 26:4| 1: <65535, 0, 2> | abbreviations { // BlockID = 0 |
+; ABV-NEXT: 36:0| 1: <1, 14> | valuesymtab: |
+; ABV-NEXT: 38:4| 2: <65533, 4, 0, 1, 3, 0,| @a0 = abbrev <fixed(3), vbr(8), |
+; ABV-NEXT: | 2, 8, 0, 3, 0, 1, 8> | array(fixed(8))>; |
+; ABV-NEXT: 43:2| 2: <65533, 4, 1, 1, 0, 2,| @a1 = abbrev <1, vbr(8), |
+; ABV-NEXT: | 8, 0, 3, 0, 1, 7> | array(fixed(7))>; |
+; ABV-NEXT: 48:0| 2: <65533, 4, 1, 1, 0, 2,| @a2 = abbrev <1, vbr(8), |
+; ABV-NEXT: | 8, 0, 3, 0, 4> | array(char6)>; |
+; ABV-NEXT: 52:1| 2: <65533, 4, 1, 2, 0, 2,| @a3 = abbrev <2, vbr(8), |
+; ABV-NEXT: | 8, 0, 3, 0, 4> | array(char6)>; |
+; ABV-NEXT: 56:2| 1: <1, 11> | constants: |
+; ABV-NEXT: 58:6| 2: <65533, 2, 1, 1, 0, 1,| @a0 = abbrev <1, fixed(3)>; |
+; ABV-NEXT: | 3> | |
+; ABV-NEXT: 61:7| 2: <65533, 2, 1, 4, 0, 2,| @a1 = abbrev <4, vbr(8)>; |
+; ABV-NEXT: | 8> | |
+; ABV-NEXT: 65:0| 2: <65533, 2, 1, 4, 1, 0>| @a2 = abbrev <4, 0>; |
+; ABV-NEXT: 68:1| 2: <65533, 2, 1, 6, 0, 2,| @a3 = abbrev <6, vbr(8)>; |
+; ABV-NEXT: | 8> | |
+; ABV-NEXT: 71:2| 1: <1, 12> | function: |
+; ABV-NEXT: 73:6| 2: <65533, 4, 1, 20, 0, | @a0 = abbrev <20, vbr(6), vbr(4), |
+; ABV-NEXT: | 2, 6, 0, 2, 4, 0, 2, | vbr(4)>; |
+; ABV-NEXT: | 4> | |
+; ABV-NEXT: 79:1| 2: <65533, 4, 1, 2, 0, 2,| @a1 = abbrev <2, vbr(6), vbr(6), |
+; ABV-NEXT: | 6, 0, 2, 6, 0, 1, 4> | fixed(4)>; |
+; ABV-NEXT: 84:4| 2: <65533, 4, 1, 3, 0, 2,| @a2 = abbrev <3, vbr(6), |
+; ABV-NEXT: | 6, 0, 1, 3, 0, 1, 4> | fixed(3), fixed(4)>; |
+; ABV-NEXT: 89:7| 2: <65533, 1, 1, 10> | @a3 = abbrev <10>; |
+; ABV-NEXT: 91:7| 2: <65533, 2, 1, 10, 0, | @a4 = abbrev <10, vbr(6)>; |
+; ABV-NEXT: | 2, 6> | |
+; ABV-NEXT: 95:0| 2: <65533, 1, 1, 15> | @a5 = abbrev <15>; |
+; ABV-NEXT: 97:0| 2: <65533, 3, 1, 43, 0, | @a6 = abbrev <43, vbr(6), |
+; ABV-NEXT: | 2, 6, 0, 1, 3> | fixed(3)>; |
+; ABV-NEXT: 101:2| 2: <65533, 4, 1, 24, 0, | @a7 = abbrev <24, vbr(6), vbr(6), |
+; ABV-NEXT: | 2, 6, 0, 2, 6, 0, 2, | vbr(4)>; |
+; ABV-NEXT: | 4> | |
+; ABV-NEXT: 106:5| 1: <1, 19> | globals: |
+; ABV-NEXT: 109:1| 2: <65533, 3, 1, 0, 0, 2,| @a0 = abbrev <0, vbr(6), |
+; ABV-NEXT: | 6, 0, 1, 1> | fixed(1)>; |
+; ABV-NEXT: 113:3| 2: <65533, 2, 1, 1, 0, 2,| @a1 = abbrev <1, vbr(8)>; |
+; ABV-NEXT: | 8> | |
+; ABV-NEXT: 116:4| 2: <65533, 2, 1, 2, 0, 2,| @a2 = abbrev <2, vbr(8)>; |
+; ABV-NEXT: | 8> | |
+; ABV-NEXT: 119:5| 2: <65533, 3, 1, 3, 0, 3,| @a3 = abbrev <3, array(fixed(8))> |
+; ABV-NEXT: | 0, 1, 8> | ; |
+; ABV-NEXT: 123:2| 2: <65533, 2, 1, 4, 0, 2,| @a4 = abbrev <4, vbr(6)>; |
+; ABV-NEXT: | 6> | |
+; ABV-NEXT: 126:3| 2: <65533, 3, 1, 4, 0, 2,| @a5 = abbrev <4, vbr(6), vbr(6)>; |
+; ABV-NEXT: | 6, 0, 2, 6> | |
+; ABV-NEXT: 130:5| 0: <65534> | } |
+; ABV-NEXT: 132:0| 1: <65535, 17, 3> | types { // BlockID = 17 |
+; ABV-NEXT: 140:0| 2: <65533, 4, 1, 21, 0, | %a0 = abbrev <21, fixed(1), |
+; ABV-NEXT: | 1, 1, 0, 3, 0, 1, 3> | array(fixed(3))>; |
+; ABV-NEXT: 144:7| 3: <1, 4> | count 4; |
+; ABV-NEXT: 147:4| 3: <7, 32> | @t0 = i32; |
+; ABV-NEXT: 150:7| 3: <2> | @t1 = void; |
+; ABV-NEXT: 152:6| 4: <21, 0, 0, 0> | @t2 = i32 (i32); <%a0> |
+; ABV-NEXT: 154:6| 3: <7, 1> | @t3 = i1; |
+; ABV-NEXT: 157:3| 0: <65534> | } |
+; ABV-NEXT: 160:0| 3: <8, 2, 0, 0, 0> | define external i32 @f0(i32); |
+; ABV-NEXT: 164:6| 1: <65535, 19, 4> | globals { // BlockID = 19 |
+; ABV-NEXT: 172:0| 3: <5, 0> | count 0; |
+; ABV-NEXT: 174:6| 0: <65534> | } |
+; ABV-NEXT: 176:0| 1: <65535, 14, 3> | valuesymtab { // BlockID = 14 |
+; ABV-NEXT: 184:0| 6: <1, 0, 102, 97, 99, | @f0 : "fact"; <@a2> |
+; ABV-NEXT: | 116> | |
+; ABV-NEXT: 189:1| 0: <65534> | } |
+; ABV-NEXT: 192:0| 1: <65535, 12, 4> | function i32 @f0(i32 %p0) { |
+; ABV-NEXT: | | // BlockID = 12 |
+; ABV-NEXT: 200:0| 3: <1, 3> | blocks 3; |
+; ABV-NEXT: 202:6| 1: <65535, 11, 3> | constants { // BlockID = 11 |
+; ABV-NEXT: 212:0| 4: <1, 0> | i32: <@a0> |
+; ABV-NEXT: 212:6| 5: <4, 2> | %c0 = i32 1; <@a1> |
+; ABV-NEXT: 214:1| 6: <4, 0> | %c1 = i32 0; <@a2> |
+; ABV-NEXT: 214:4| 0: <65534> | } |
+; ABV-NEXT: | | %b0: |
+; ABV-NEXT: 216:0| 3: <28, 1, 2, 32> | %v0 = icmp eq i32 %c1, %c0; |
+; ABV-NEXT: 221:0| 3: <11, 1, 2, 1> | br i1 %v0, label %b1, label %b2; |
+; ABV-NEXT: | | %b1: |
+; ABV-NEXT: 225:2| 8: <10, 3> | ret i32 %c0; <@a4> |
+; ABV-NEXT: | | %b2: |
+; ABV-NEXT: 226:4| 5: <2, 4, 3, 1> | %v1 = sub i32 %p0, %c0; <@a1> |
+; ABV-NEXT: 229:0| 3: <34, 0, 6, 1> | %v2 = call i32 @f0(i32 %v1); |
+; ABV-NEXT: 234:0| 5: <2, 6, 1, 2> | %v3 = mul i32 %p0, %v2; <@a1> |
+; ABV-NEXT: 236:4| 8: <10, 1> | ret i32 %v3; <@a4> |
+; ABV-NEXT: 237:6| 1: <65535, 14, 3> | valuesymtab { // BlockID = 14 |
+; ABV-NEXT: 244:0| 7: <2, 1, 116, 114, | %b1 : "true"; <@a3> |
+; ABV-NEXT: | 117, 101> | |
+; ABV-NEXT: 249:1| 6: <1, 4, 118, 49> | %v0 : "v1"; <@a2> |
+; ABV-NEXT: 252:6| 6: <1, 5, 118, 50> | %v1 : "v2"; <@a2> |
+; ABV-NEXT: 256:3| 6: <1, 6, 118, 51> | %v2 : "v3"; <@a2> |
+; ABV-NEXT: 260:0| 6: <1, 7, 118, 52> | %v3 : "v4"; <@a2> |
+; ABV-NEXT: 263:5| 7: <2, 2, 102, 97, 108,| %b2 : "false"; <@a3> |
+; ABV-NEXT: | 115, 101> | |
+; ABV-NEXT: 269:4| 6: <1, 1, 110> | %p0 : "n"; <@a2> |
+; ABV-NEXT: 272:3| 0: <65534> | } |
+; ABV-NEXT: 276:0| 0: <65534> | } |
+; ABV-NEXT: 280:0|0: <65534> |} |
+ |
+; NOABV: 0:0|<65532, 80, 69, 88, 69, 1, 0,|Magic Number: 'PEXE' (80, 69, 88, 69) |
+; NOABV-NEXT: | 8, 0, 17, 0, 4, 0, 2, 0, 0, |PNaCl Version: 2 |
+; NOABV-NEXT: | 0> | |
+; NOABV-NEXT: 16:0|1: <65535, 8, 2> |module { // BlockID = 8 |
+; NOABV-NEXT: 24:0| 3: <1, 1> | version 1; |
+; NOABV-NEXT: 26:4| 1: <65535, 0, 2> | abbreviations { // BlockID = 0 |
+; NOABV-NEXT: 36:0| 0: <65534> | } |
+; NOABV-NEXT: 40:0| 1: <65535, 17, 2> | types { // BlockID = 17 |
+; NOABV-NEXT: 48:0| 3: <1, 4> | count 4; |
+; NOABV-NEXT: 50:4| 3: <7, 32> | @t0 = i32; |
+; NOABV-NEXT: 53:6| 3: <2> | @t1 = void; |
+; NOABV-NEXT: 55:4| 3: <21, 0, 0, 0> | @t2 = i32 (i32); |
+; NOABV-NEXT: 59:4| 3: <7, 1> | @t3 = i1; |
+; NOABV-NEXT: 62:0| 0: <65534> | } |
+; NOABV-NEXT: 64:0| 3: <8, 2, 0, 0, 0> | define external i32 @f0(i32); |
+; NOABV-NEXT: 68:6| 1: <65535, 19, 2> | globals { // BlockID = 19 |
+; NOABV-NEXT: 76:0| 3: <5, 0> | count 0; |
+; NOABV-NEXT: 78:4| 0: <65534> | } |
+; NOABV-NEXT: 80:0| 1: <65535, 14, 2> | valuesymtab { // BlockID = 14 |
+; NOABV-NEXT: 88:0| 3: <1, 0, 102, 97, 99, | @f0 : "fact"; |
+; NOABV-NEXT: | 116> | |
+; NOABV-NEXT: 96:4| 0: <65534> | } |
+; NOABV-NEXT: 100:0| 1: <65535, 12, 2> | function i32 @f0(i32 %p0) { |
+; NOABV-NEXT: | | // BlockID = 12 |
+; NOABV-NEXT: 108:0| 3: <1, 3> | blocks 3; |
+; NOABV-NEXT: 110:4| 1: <65535, 11, 2> | constants { // BlockID = 11 |
+; NOABV-NEXT: 120:0| 3: <1, 0> | i32: |
+; NOABV-NEXT: 122:4| 3: <4, 2> | %c0 = i32 1; |
+; NOABV-NEXT: 125:0| 3: <4, 0> | %c1 = i32 0; |
+; NOABV-NEXT: 127:4| 0: <65534> | } |
+; NOABV-NEXT: | | %b0: |
+; NOABV-NEXT: 128:0| 3: <28, 1, 2, 32> | %v0 = icmp eq i32 %c1, %c0; |
+; NOABV-NEXT: 132:6| 3: <11, 1, 2, 1> | br i1 %v0, label %b1, label %b2; |
+; NOABV-NEXT: | | %b1: |
+; NOABV-NEXT: 136:6| 3: <10, 3> | ret i32 %c0; |
+; NOABV-NEXT: | | %b2: |
+; NOABV-NEXT: 139:2| 3: <2, 4, 3, 1> | %v1 = sub i32 %p0, %c0; |
+; NOABV-NEXT: 143:2| 3: <34, 0, 6, 1> | %v2 = call i32 @f0(i32 %v1); |
+; NOABV-NEXT: 148:0| 3: <2, 6, 1, 2> | %v3 = mul i32 %p0, %v2; |
+; NOABV-NEXT: 152:0| 3: <10, 1> | ret i32 %v3; |
+; NOABV-NEXT: 154:4| 1: <65535, 14, 2> | valuesymtab { // BlockID = 14 |
+; NOABV-NEXT: 164:0| 3: <2, 1, 116, 114, | %b1 : "true"; |
+; NOABV-NEXT: | 117, 101> | |
+; NOABV-NEXT: 172:4| 3: <1, 4, 118, 49> | %v0 : "v1"; |
+; NOABV-NEXT: 178:0| 3: <1, 5, 118, 50> | %v1 : "v2"; |
+; NOABV-NEXT: 183:4| 3: <1, 6, 118, 51> | %v2 : "v3"; |
+; NOABV-NEXT: 189:0| 3: <1, 7, 118, 52> | %v3 : "v4"; |
+; NOABV-NEXT: 194:4| 3: <2, 2, 102, 97, 108,| %b2 : "false"; |
+; NOABV-NEXT: | 115, 101> | |
+; NOABV-NEXT: 204:4| 3: <1, 1, 110> | %p0 : "n"; |
+; NOABV-NEXT: 208:4| 0: <65534> | } |
+; NOABV-NEXT: 212:0| 0: <65534> | } |
+; NOABV-NEXT: 216:0|0: <65534> |} |