11; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2- ; RUN: opt < %s --data-layout="e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -S -disable-output -disable-verify "-passes=print<scalar-evolution>" 2>&1 | FileCheck --check-prefixes=ALL,X64 %s
3- ; RUN: opt < %s --data-layout="e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-f64:32:64-f80:32-n8:16:32-S128" -S -disable-output -disable-verify "-passes=print<scalar-evolution>" 2>&1 | FileCheck --check-prefixes=ALL,X32 %s
2+ ; RUN: opt -passes='print<scalar-evolution>' -disable-output %s 2>&1 | FileCheck %s
43
5- declare void @useptr ( ptr )
4+ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
65
76define void @ptrtoaddr (ptr %in , ptr %out0 , ptr %out1 , ptr %out2 , ptr %out3 ) {
87; X64-LABEL: 'ptrtoaddr'
@@ -28,15 +27,15 @@ define void @ptrtoaddr(ptr %in, ptr %out0, ptr %out1, ptr %out2, ptr %out3) {
2827; X32-NEXT: %p3 = ptrtoaddr ptr %in to i128
2928; X32-NEXT: --> (zext i32 (ptrtoaddr ptr %in to i32) to i128) U: [0,4294967296) S: [0,4294967296)
3029; X32-NEXT: Determining loop execution counts for: @ptrtoaddr
30+ ;
31+ ; CHECK-LABEL: 'ptrtoaddr'
32+ ; CHECK-NEXT: Classifying expressions for: @ptrtoaddr
33+ ; CHECK-NEXT: %p0 = ptrtoaddr ptr %in to i64
34+ ; CHECK-NEXT: --> (ptrtoaddr ptr %in to i64) U: full-set S: full-set
35+ ; CHECK-NEXT: Determining loop execution counts for: @ptrtoaddr
3136;
3237 %p0 = ptr toaddr ptr %in to i64
33- %p1 = ptr toaddr ptr %in to i32
34- %p2 = ptr toaddr ptr %in to i16
35- %p3 = ptr toaddr ptr %in to i128
3638 store i64 %p0 , ptr %out0
37- store i32 %p1 , ptr %out1
38- store i16 %p2 , ptr %out2
39- store i128 %p3 , ptr %out3
4039 ret void
4140}
4241
@@ -64,15 +63,15 @@ define void @ptrtoaddr_as1(ptr addrspace(1) %in, ptr %out0, ptr %out1, ptr %out2
6463; X32-NEXT: %p3 = ptrtoaddr ptr addrspace(1) %in to i128
6564; X32-NEXT: --> (zext i32 (ptrtoaddr ptr addrspace(1) %in to i32) to i128) U: [0,4294967296) S: [0,4294967296)
6665; X32-NEXT: Determining loop execution counts for: @ptrtoaddr_as1
66+ ;
67+ ; CHECK-LABEL: 'ptrtoaddr_as1'
68+ ; CHECK-NEXT: Classifying expressions for: @ptrtoaddr_as1
69+ ; CHECK-NEXT: %p0 = ptrtoaddr ptr addrspace(1) %in to i64
70+ ; CHECK-NEXT: --> (ptrtoaddr ptr addrspace(1) %in to i64) U: full-set S: full-set
71+ ; CHECK-NEXT: Determining loop execution counts for: @ptrtoaddr_as1
6772;
6873 %p0 = ptr toaddr ptr addrspace (1 ) %in to i64
69- %p1 = ptr toaddr ptr addrspace (1 ) %in to i32
70- %p2 = ptr toaddr ptr addrspace (1 ) %in to i16
71- %p3 = ptr toaddr ptr addrspace (1 ) %in to i128
7274 store i64 %p0 , ptr %out0
73- store i32 %p1 , ptr %out1
74- store i16 %p2 , ptr %out2
75- store i128 %p3 , ptr %out3
7675 ret void
7776}
7877
@@ -92,6 +91,14 @@ define void @ptrtoaddr_of_bitcast(ptr %in, ptr %out0) {
9291; X32-NEXT: %p0 = ptrtoaddr ptr %in_casted to i64
9392; X32-NEXT: --> (zext i32 (ptrtoaddr ptr %in to i32) to i64) U: [0,4294967296) S: [0,4294967296)
9493; X32-NEXT: Determining loop execution counts for: @ptrtoaddr_of_bitcast
94+ ;
95+ ; CHECK-LABEL: 'ptrtoaddr_of_bitcast'
96+ ; CHECK-NEXT: Classifying expressions for: @ptrtoaddr_of_bitcast
97+ ; CHECK-NEXT: %in_casted = bitcast ptr %in to ptr
98+ ; CHECK-NEXT: --> %in U: full-set S: full-set
99+ ; CHECK-NEXT: %p0 = ptrtoaddr ptr %in_casted to i64
100+ ; CHECK-NEXT: --> (ptrtoaddr ptr %in to i64) U: full-set S: full-set
101+ ; CHECK-NEXT: Determining loop execution counts for: @ptrtoaddr_of_bitcast
95102;
96103 %in_casted = bitcast ptr %in to ptr
97104 %p0 = ptr toaddr ptr %in_casted to i64
@@ -105,6 +112,12 @@ define void @ptrtoaddr_of_nullptr(ptr %out0) {
105112; ALL-NEXT: %p0 = ptrtoaddr ptr null to i64
106113; ALL-NEXT: --> 0 U: [0,1) S: [0,1)
107114; ALL-NEXT: Determining loop execution counts for: @ptrtoaddr_of_nullptr
115+ ;
116+ ; CHECK-LABEL: 'ptrtoaddr_of_nullptr'
117+ ; CHECK-NEXT: Classifying expressions for: @ptrtoaddr_of_nullptr
118+ ; CHECK-NEXT: %p0 = ptrtoaddr ptr null to i64
119+ ; CHECK-NEXT: --> 0 U: [0,1) S: [0,1)
120+ ; CHECK-NEXT: Determining loop execution counts for: @ptrtoaddr_of_nullptr
108121;
109122 %p0 = ptr toaddr ptr null to i64
110123 store i64 %p0 , ptr %out0
@@ -127,6 +140,14 @@ define void @ptrtoaddr_of_gep(ptr %in, ptr %out0) {
127140; X32-NEXT: %p0 = ptrtoaddr ptr %in_adj to i64
128141; X32-NEXT: --> (zext i32 (42 + (ptrtoaddr ptr %in to i32)) to i64) U: [0,4294967296) S: [0,4294967296)
129142; X32-NEXT: Determining loop execution counts for: @ptrtoaddr_of_gep
143+ ;
144+ ; CHECK-LABEL: 'ptrtoaddr_of_gep'
145+ ; CHECK-NEXT: Classifying expressions for: @ptrtoaddr_of_gep
146+ ; CHECK-NEXT: %in_adj = getelementptr inbounds i8, ptr %in, i64 42
147+ ; CHECK-NEXT: --> (42 + %in) U: full-set S: full-set
148+ ; CHECK-NEXT: %p0 = ptrtoaddr ptr %in_adj to i64
149+ ; CHECK-NEXT: --> (42 + (ptrtoaddr ptr %in to i64)) U: full-set S: full-set
150+ ; CHECK-NEXT: Determining loop execution counts for: @ptrtoaddr_of_gep
130151;
131152 %in_adj = getelementptr inbounds i8 , ptr %in , i64 42
132153 %p0 = ptr toaddr ptr %in_adj to i64
0 commit comments