mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
[Analysis] Make LocationSize pretty-printing more descriptive
This is the third patch in a series intended to make https://reviews.llvm.org/D44748 more easily reviewable. Please see that patch for more context. The second being r344013. The intent is to make the output of printing a LocationSize more precise. The main motivation for this is that we plan to add a bit to distinguish whether a given LocationSize is an upper-bound or is precise; making that information available in pretty-printing is nice. llvm-svn: 344108
This commit is contained in:
parent
e4e97b9e95
commit
84de810c0d
@ -87,7 +87,7 @@ public:
|
||||
return !(*this == Other);
|
||||
}
|
||||
|
||||
void print(raw_ostream &OS) const { OS << Value; }
|
||||
void print(raw_ostream &OS) const;
|
||||
|
||||
// Returns an opaque value that represents this LocationSize. Cannot be
|
||||
// reliably converted back into a LocationSize.
|
||||
|
@ -18,6 +18,18 @@
|
||||
#include "llvm/IR/Type.h"
|
||||
using namespace llvm;
|
||||
|
||||
void LocationSize::print(raw_ostream &OS) const {
|
||||
OS << "LocationSize::";
|
||||
if (*this == unknown())
|
||||
OS << "unknown";
|
||||
else if (*this == mapEmpty())
|
||||
OS << "mapEmpty";
|
||||
else if (*this == mapTombstone())
|
||||
OS << "mapTombstone";
|
||||
else
|
||||
OS << "precise(" << getValue() << ')';
|
||||
}
|
||||
|
||||
MemoryLocation MemoryLocation::get(const LoadInst *LI) {
|
||||
AAMDNodes AATags;
|
||||
LI->getAAMetadata(AATags);
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
; CHECK: Alias sets for function 'test_alloca_argmemonly':
|
||||
; CHECK-NEXT: Alias Set Tracker: 2 alias sets for 3 pointer values.
|
||||
; CHECK-NEXT: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, 1)
|
||||
; CHECK-NEXT: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK-NEXT: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %d, unknown), (i8* %s, unknown)
|
||||
define void @test_alloca_argmemonly(i8* %s, i8* %d) {
|
||||
entry:
|
||||
@ -28,7 +28,7 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test_noalias_argmemonly':
|
||||
; CHECK-NEXT: Alias Set Tracker: 2 alias sets for 3 pointer values.
|
||||
; CHECK-NEXT: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, 1)
|
||||
; CHECK-NEXT: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK-NEXT: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %d, unknown), (i8* %s, unknown)
|
||||
define void @test_noalias_argmemonly(i8* noalias %a, i8* %s, i8* %d) {
|
||||
entry:
|
||||
@ -121,7 +121,7 @@ declare void @my_memmove(i8* nocapture, i8* nocapture readonly, i64) argmemonly
|
||||
|
||||
; CHECK: Alias sets for function 'test_attribute_intersect':
|
||||
; CHECK-NEXT: Alias Set Tracker: 1 alias sets for 1 pointer values.
|
||||
; CHECK-NEXT: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref Pointers: (i8* %a, 1)
|
||||
; CHECK-NEXT: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref Pointers: (i8* %a, LocationSize::precise(1))
|
||||
define i8 @test_attribute_intersect(i8* noalias %a) {
|
||||
entry:
|
||||
;; This call is effectively readnone since the argument is readonly
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,9 +2,9 @@
|
||||
|
||||
; CHECK: Alias sets for function 'test1':
|
||||
; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK-NOT: 1 Unknown instruction
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, LocationSize::precise(1))
|
||||
define void @test1(i32 %c) {
|
||||
entry:
|
||||
%a = alloca i8, align 1
|
||||
@ -18,10 +18,10 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test2':
|
||||
; CHECK: Alias Set Tracker: 3 alias sets for 2 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] may alias, Ref
|
||||
; CHECK: 1 Unknown instructions: call void (i1, ...) @llvm.experimental.guard(i1 %cond1) [ "deopt"() ]
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, LocationSize::precise(1))
|
||||
define void @test2(i32 %c) {
|
||||
entry:
|
||||
%a = alloca i8, align 1
|
||||
@ -35,7 +35,7 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test3':
|
||||
; CHECK: Alias Set Tracker: 1 alias sets for 2 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref Pointers: (i8* %a, 1), (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 3] may alias, Mod/Ref Pointers: (i8* %a, LocationSize::precise(1)), (i8* %b, LocationSize::precise(1))
|
||||
; CHECK: 1 Unknown instructions: call void (i1, ...) @llvm.experimental.guard(i1 %cond1) [ "deopt"() ]
|
||||
define void @test3(i32 %c, i8* %a, i8* %b) {
|
||||
entry:
|
||||
@ -48,9 +48,9 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test4':
|
||||
; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %a, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK: 1 Unknown instructions: call void (i1, ...) @llvm.experimental.guard(i1 %cond1) [ "deopt"() ]
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, LocationSize::precise(1))
|
||||
define void @test4(i32 %c, i8* %a) {
|
||||
entry:
|
||||
%b = alloca i8, align 1
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
; CHECK: Alias sets for function 'test_known_size':
|
||||
; CHECK: Alias Set Tracker: 1 alias sets for 1 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %d, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %d, LocationSize::precise(1))
|
||||
define void @test_known_size(i8* noalias %d) {
|
||||
entry:
|
||||
call void @llvm.memset.p0i8.i64(i8* align 1 %d, i8 0, i64 1, i1 false)
|
||||
@ -24,7 +24,7 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test_atomic_known_size':
|
||||
; CHECK: Alias Set Tracker: 1 alias sets for 1 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %d, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %d, LocationSize::precise(1))
|
||||
define void @test_atomic_known_size(i8* noalias %d) {
|
||||
entry:
|
||||
call void @llvm.memset.element.unordered.atomic.p0i8.i32(i8* align 1 %d, i8 0, i64 1, i32 1)
|
||||
|
@ -6,8 +6,8 @@
|
||||
|
||||
; CHECK: Alias sets for function 'test_known_size':
|
||||
; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %d, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref Pointers: (i8* %s, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %d, LocationSize::precise(1))
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Ref Pointers: (i8* %s, LocationSize::precise(1))
|
||||
define void @test_known_size(i8* noalias %s, i8* noalias %d) {
|
||||
entry:
|
||||
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %d, i8* %s, i64 1, i1 false)
|
||||
@ -27,10 +27,10 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test1':
|
||||
; CHECK: Alias Set Tracker: 3 alias sets for 4 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK-NOT: 1 Unknown instructions
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %d, 1), (i8* %s, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %d, LocationSize::precise(1)), (i8* %s, LocationSize::precise(1))
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, LocationSize::precise(1))
|
||||
define void @test1(i8* %s, i8* %d) {
|
||||
entry:
|
||||
%a = alloca i8, align 1
|
||||
@ -43,10 +43,10 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test1_atomic':
|
||||
; CHECK: Alias Set Tracker: 3 alias sets for 4 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK-NOT: 1 Unknown instructions
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %d, 1), (i8* %s, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %d, LocationSize::precise(1)), (i8* %s, LocationSize::precise(1))
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, LocationSize::precise(1))
|
||||
define void @test1_atomic(i8* %s, i8* %d) {
|
||||
entry:
|
||||
%a = alloca i8, align 1
|
||||
@ -59,10 +59,10 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test2':
|
||||
; CHECK: Alias Set Tracker: 3 alias sets for 4 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK-NOT: 1 Unknown instructions
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %d, 1), (i8* %s, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %d, LocationSize::precise(1)), (i8* %s, LocationSize::precise(1))
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, LocationSize::precise(1))
|
||||
define void @test2(i8* %s, i8* %d) {
|
||||
entry:
|
||||
%a = alloca i8, align 1
|
||||
@ -75,10 +75,10 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test3':
|
||||
; CHECK: Alias Set Tracker: 3 alias sets for 4 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK-NOT: 1 Unknown instructions
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %d, 1), (i8* %s, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %d, LocationSize::precise(1)), (i8* %s, LocationSize::precise(1))
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, LocationSize::precise(1))
|
||||
define void @test3(i8* %s, i8* %d) {
|
||||
entry:
|
||||
%a = alloca i8, align 1
|
||||
@ -91,10 +91,10 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test3_atomic':
|
||||
; CHECK: Alias Set Tracker: 3 alias sets for 4 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK-NOT: 1 Unknown instructions
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %d, 1), (i8* %s, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %d, LocationSize::precise(1)), (i8* %s, LocationSize::precise(1))
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, LocationSize::precise(1))
|
||||
define void @test3_atomic(i8* %s, i8* %d) {
|
||||
entry:
|
||||
%a = alloca i8, align 1
|
||||
@ -107,10 +107,10 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test4':
|
||||
; CHECK: Alias Set Tracker: 3 alias sets for 4 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK-NOT: 1 Unknown instructions
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %d, 1), (i8* %s, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 2] may alias, Mod/Ref Pointers: (i8* %d, LocationSize::precise(1)), (i8* %s, LocationSize::precise(1))
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, LocationSize::precise(1))
|
||||
define void @test4(i8* %s, i8* %d) {
|
||||
entry:
|
||||
%a = alloca i8, align 1
|
||||
@ -123,8 +123,8 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test5':
|
||||
; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %a, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, LocationSize::precise(1))
|
||||
define void @test5() {
|
||||
entry:
|
||||
%a = alloca i8, align 1
|
||||
@ -137,8 +137,8 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test5_atomic':
|
||||
; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %a, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, LocationSize::precise(1))
|
||||
define void @test5_atomic() {
|
||||
entry:
|
||||
%a = alloca i8, align 1
|
||||
@ -151,8 +151,8 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test6':
|
||||
; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %a, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, LocationSize::precise(1))
|
||||
define void @test6() {
|
||||
entry:
|
||||
%a = alloca i8, align 1
|
||||
@ -165,8 +165,8 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test6_atomic':
|
||||
; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %a, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, LocationSize::precise(1))
|
||||
define void @test6_atomic() {
|
||||
entry:
|
||||
%a = alloca i8, align 1
|
||||
@ -179,8 +179,8 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test7':
|
||||
; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %a, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %b, LocationSize::precise(1))
|
||||
define void @test7() {
|
||||
entry:
|
||||
%a = alloca i8, align 1
|
||||
@ -194,8 +194,8 @@ entry:
|
||||
|
||||
; CHECK: Alias sets for function 'test7_atomic':
|
||||
; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %a, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %b, 1)
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %a, LocationSize::precise(1))
|
||||
; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod/Ref Pointers: (i8* %b, LocationSize::precise(1))
|
||||
define void @test7_atomic() {
|
||||
entry:
|
||||
%a = alloca i8, align 1
|
||||
|
@ -2,10 +2,10 @@
|
||||
; RUN: opt -basicaa -print-alias-sets -alias-set-saturation-threshold=1 -S -o - < %s 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=SAT
|
||||
|
||||
; CHECK-LABEL: 'allmust'
|
||||
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %a, 4)
|
||||
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %b, 4)
|
||||
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %c, 4)
|
||||
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %d, 4)
|
||||
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %a, LocationSize::precise(4))
|
||||
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %b, LocationSize::precise(4))
|
||||
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %c, LocationSize::precise(4))
|
||||
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %d, LocationSize::precise(4))
|
||||
define void @allmust() {
|
||||
%a = alloca i32
|
||||
%b = alloca i32
|
||||
@ -19,11 +19,11 @@ define void @allmust() {
|
||||
}
|
||||
|
||||
; CHECK-LABEL :'mergemay'
|
||||
; NOSAT: AliasSet[{{.*}}, 2] may alias, Mod Pointers: (i32* %a, 4), (i32* %a1, 4)
|
||||
; NOSAT: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %b, 4)
|
||||
; NOSAT: AliasSet[{{.*}}, 2] may alias, Mod Pointers: (i32* %a, LocationSize::precise(4)), (i32* %a1, LocationSize::precise(4))
|
||||
; NOSAT: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %b, LocationSize::precise(4))
|
||||
; SAT: AliasSet[{{.*}}, 2] may alias, Mod forwarding to 0x[[FWD:[0-9a-f]*]]
|
||||
; SAT: AliasSet[{{.*}}, 1] must alias, Mod forwarding to 0x[[FWD]]
|
||||
; SAT: AliasSet[0x[[FWD]], 2] may alias, Mod/Ref Pointers: (i32* %a, 4), (i32* %a1, 4), (i32* %b, 4)
|
||||
; 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))
|
||||
define void @mergemay(i32 %k) {
|
||||
%a = alloca i32
|
||||
%b = alloca i32
|
||||
@ -35,13 +35,13 @@ define void @mergemay(i32 %k) {
|
||||
}
|
||||
|
||||
; CHECK-LABEL: 'mergemust'
|
||||
; NOSAT: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %a, 4)
|
||||
; NOSAT: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %b, 4)
|
||||
; NOSAT: AliasSet[{{.*}}, 2] may alias, Mod Pointers: (i32* %c, 4), (i32* %d, 4)
|
||||
; NOSAT: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %a, LocationSize::precise(4))
|
||||
; NOSAT: AliasSet[{{.*}}, 1] must alias, Mod Pointers: (i32* %b, LocationSize::precise(4))
|
||||
; NOSAT: AliasSet[{{.*}}, 2] may alias, Mod Pointers: (i32* %c, LocationSize::precise(4)), (i32* %d, LocationSize::precise(4))
|
||||
; SAT: AliasSet[{{.*}}, 1] must alias, Mod forwarding to 0x[[FWD:[0-9a-f]*]]
|
||||
; SAT: AliasSet[{{.*}}, 1] must alias, Mod forwarding to 0x[[FWD]]
|
||||
; SAT: AliasSet[{{.*}}, 2] may alias, Mod forwarding to 0x[[FWD]]
|
||||
; SAT: AliasSet[0x[[FWD]], 3] may alias, Mod/Ref Pointers: (i32* %a, 4), (i32* %b, 4), (i32* %c, 4), (i32* %d, 4)
|
||||
; 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))
|
||||
define void @mergemust(i32* %c, i32* %d) {
|
||||
%a = alloca i32
|
||||
%b = alloca i32
|
||||
|
Loading…
Reference in New Issue
Block a user