OLD | NEW |
(Empty) | |
| 1 ; RUN: not pnacl-abicheck < %s | FileCheck %s |
| 2 |
| 3 ; This tests that the arithmetic attributes "nuw" and "nsw" ("no |
| 4 ; unsigned wrap" and "no signed wrap") and "exact" are disallowed by |
| 5 ; the PNaCl ABI verifier. |
| 6 |
| 7 define internal void @allowed_cases() { |
| 8 %add = add i32 1, 2 |
| 9 %shl = shl i32 3, 4 |
| 10 %udiv = udiv i32 4, 2 |
| 11 %lshr = lshr i32 2, 1 |
| 12 %ashr = ashr i32 2, 1 |
| 13 ret void |
| 14 } |
| 15 ; CHECK-NOT: disallowed |
| 16 |
| 17 |
| 18 define internal void @rejected_cases() { |
| 19 %add = add nsw i32 1, 2 |
| 20 ; CHECK: disallowed: has "nsw" attribute: %add |
| 21 %shl1 = shl nuw i32 3, 4 |
| 22 ; CHECK-NEXT: disallowed: has "nuw" attribute: %shl1 |
| 23 %sub = sub nsw nuw i32 5, 6 |
| 24 ; CHECK-NEXT: disallowed: has "nuw" attribute: %sub |
| 25 |
| 26 %lshr = lshr exact i32 2, 1 |
| 27 ; CHECK-NEXT: disallowed: has "exact" attribute: %lshr |
| 28 %ashr = ashr exact i32 2, 1 |
| 29 ; CHECK-NEXT: disallowed: has "exact" attribute: %ashr |
| 30 %udiv = udiv exact i32 4, 2 |
| 31 ; CHECK-NEXT: disallowed: has "exact" attribute: %udiv |
| 32 |
| 33 ret void |
| 34 } |
| 35 ; CHECK-NOT: disallowed |
| 36 |
| 37 |
| 38 ; This stops the verifier from complaining about the lack of an entry point. |
| 39 define void @_start(i32 %arg) { |
| 40 ret void |
| 41 } |
OLD | NEW |