Fangrui Song | f31811f | 2020-06-26 20:41:37 -0700 | [diff] [blame] | 1 | ; RUN: opt -basic-aa -print-alias-sets -alias-set-saturation-threshold=2 -S -o - < %s 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=NOSAT |
| 2 | ; RUN: opt -basic-aa -print-alias-sets -alias-set-saturation-threshold=1 -S -o - < %s 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=SAT |
Michael Kuperstein | 41898f0 | 2016-08-19 17:05:22 +0000 | [diff] [blame] | 3 | |
| 4 | ; CHECK-LABEL: 'allmust' |
George Burgess IV | d98d505 | 2018-10-10 01:35:22 +0000 | [diff] [blame] | 5 | ; CHECK: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %a, LocationSize::precise(4)) |
| 6 | ; CHECK: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %b, LocationSize::precise(4)) |
| 7 | ; CHECK: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %c, LocationSize::precise(4)) |
| 8 | ; CHECK: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %d, LocationSize::precise(4)) |
Michael Kuperstein | 41898f0 | 2016-08-19 17:05:22 +0000 | [diff] [blame] | 9 | define void @allmust() { |
| 10 | %a = alloca i32 |
| 11 | %b = alloca i32 |
| 12 | %c = alloca i32 |
| 13 | %d = alloca i32 |
| 14 | store i32 1, i32* %a |
| 15 | store i32 2, i32* %b |
| 16 | store i32 3, i32* %c |
| 17 | store i32 4, i32* %d |
| 18 | ret void |
| 19 | } |
| 20 | |
Jonathan Roelofs | 7c5d2be | 2020-04-02 16:28:32 -0600 | [diff] [blame] | 21 | ; CHECK-LABEL: 'mergemay' |
George Burgess IV | d98d505 | 2018-10-10 01:35:22 +0000 | [diff] [blame] | 22 | ; NOSAT: AliasSet[{{.*}}, 2] may alias, Mod Pointers: (i32* %a, LocationSize::precise(4)), (i32* %a1, LocationSize::precise(4)) |
| 23 | ; NOSAT: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %b, LocationSize::precise(4)) |
Michael Kuperstein | 41898f0 | 2016-08-19 17:05:22 +0000 | [diff] [blame] | 24 | ; SAT: AliasSet[{{.*}}, 2] may alias, Mod forwarding to 0x[[FWD:[0-9a-f]*]] |
| 25 | ; SAT: AliasSet[{{.*}}, 1] must alias, Mod forwarding to 0x[[FWD]] |
George Burgess IV | d98d505 | 2018-10-10 01:35:22 +0000 | [diff] [blame] | 26 | ; SAT: AliasSet[0x[[FWD]], 2] may alias, Mod/Ref Pointers: (i32* %a, LocationSize::precise(4)), (i32* %a1, LocationSize::precise(4)), (i32* %b, LocationSize::precise(4)) |
Michael Kuperstein | 41898f0 | 2016-08-19 17:05:22 +0000 | [diff] [blame] | 27 | define void @mergemay(i32 %k) { |
| 28 | %a = alloca i32 |
| 29 | %b = alloca i32 |
| 30 | store i32 1, i32* %a |
| 31 | store i32 2, i32* %b |
| 32 | %a1 = getelementptr i32, i32 *%a, i32 %k |
| 33 | store i32 2, i32* %a1 |
| 34 | ret void |
| 35 | } |
| 36 | |
| 37 | ; CHECK-LABEL: 'mergemust' |
George Burgess IV | d98d505 | 2018-10-10 01:35:22 +0000 | [diff] [blame] | 38 | ; NOSAT: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %a, LocationSize::precise(4)) |
| 39 | ; NOSAT: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %b, LocationSize::precise(4)) |
| 40 | ; NOSAT: AliasSet[{{.*}}, 2] may alias, Mod Pointers: (i32* %c, LocationSize::precise(4)), (i32* %d, LocationSize::precise(4)) |
Michael Kuperstein | 41898f0 | 2016-08-19 17:05:22 +0000 | [diff] [blame] | 41 | ; SAT: AliasSet[{{.*}}, 1] must alias, Mod forwarding to 0x[[FWD:[0-9a-f]*]] |
| 42 | ; SAT: AliasSet[{{.*}}, 1] must alias, Mod forwarding to 0x[[FWD]] |
| 43 | ; SAT: AliasSet[{{.*}}, 2] may alias, Mod forwarding to 0x[[FWD]] |
George Burgess IV | d98d505 | 2018-10-10 01:35:22 +0000 | [diff] [blame] | 44 | ; SAT: AliasSet[0x[[FWD]], 3] may alias, Mod/Ref Pointers: (i32* %a, LocationSize::precise(4)), (i32* %b, LocationSize::precise(4)), (i32* %c, LocationSize::precise(4)), (i32* %d, LocationSize::precise(4)) |
Michael Kuperstein | 41898f0 | 2016-08-19 17:05:22 +0000 | [diff] [blame] | 45 | define void @mergemust(i32* %c, i32* %d) { |
| 46 | %a = alloca i32 |
| 47 | %b = alloca i32 |
| 48 | store i32 1, i32* %a |
| 49 | store i32 2, i32* %b |
| 50 | store i32 3, i32* %c |
| 51 | store i32 4, i32* %d |
| 52 | ret void |
| 53 | } |