[llvm] 2f79f54 - [SimpleLoopUnswitch] Convert tests to opaque pointers (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 4 07:28:45 PST 2023
Author: Nikita Popov
Date: 2023-01-04T16:28:13+01:00
New Revision: 2f79f5438cd6f4fa0fdc32458911c2d163f917c0
URL: https://github.com/llvm/llvm-project/commit/2f79f5438cd6f4fa0fdc32458911c2d163f917c0
DIFF: https://github.com/llvm/llvm-project/commit/2f79f5438cd6f4fa0fdc32458911c2d163f917c0.diff
LOG: [SimpleLoopUnswitch] Convert tests to opaque pointers (NFC)
Added:
Modified:
llvm/test/Transforms/SimpleLoopUnswitch/2006-06-13-SingleEntryPHI.ll
llvm/test/Transforms/SimpleLoopUnswitch/2007-05-09-Unreachable.ll
llvm/test/Transforms/SimpleLoopUnswitch/2007-07-12-ExitDomInfo.ll
llvm/test/Transforms/SimpleLoopUnswitch/2007-07-13-DomInfo.ll
llvm/test/Transforms/SimpleLoopUnswitch/2007-07-18-DomInfo.ll
llvm/test/Transforms/SimpleLoopUnswitch/2007-08-01-Dom.ll
llvm/test/Transforms/SimpleLoopUnswitch/2007-08-01-LCSSA.ll
llvm/test/Transforms/SimpleLoopUnswitch/2007-10-04-DomFrontier.ll
llvm/test/Transforms/SimpleLoopUnswitch/2008-06-17-DomFrontier.ll
llvm/test/Transforms/SimpleLoopUnswitch/2010-11-18-LCSSA.ll
llvm/test/Transforms/SimpleLoopUnswitch/2011-09-26-EHCrash.ll
llvm/test/Transforms/SimpleLoopUnswitch/2012-04-02-IndirectBr.ll
llvm/test/Transforms/SimpleLoopUnswitch/2012-04-30-LoopUnswitch-LPad-Crash.ll
llvm/test/Transforms/SimpleLoopUnswitch/2012-05-20-Phi.ll
llvm/test/Transforms/SimpleLoopUnswitch/2015-09-18-Addrspace.ll
llvm/test/Transforms/SimpleLoopUnswitch/ARM/nontrivial-unswitch-cost.ll
llvm/test/Transforms/SimpleLoopUnswitch/PGO-nontrivial-unswitch.ll
llvm/test/Transforms/SimpleLoopUnswitch/PGO-nontrivial-unswitch2.ll
llvm/test/Transforms/SimpleLoopUnswitch/basictest.ll
llvm/test/Transforms/SimpleLoopUnswitch/catchswitch.ll
llvm/test/Transforms/SimpleLoopUnswitch/cleanuppad.ll
llvm/test/Transforms/SimpleLoopUnswitch/crash.ll
llvm/test/Transforms/SimpleLoopUnswitch/endless-unswitch.ll
llvm/test/Transforms/SimpleLoopUnswitch/exponential-behavior.ll
llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch-nested.ll
llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch-nested2.ll
llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch.ll
llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch2.ll
llvm/test/Transforms/SimpleLoopUnswitch/exponential-switch-unswitch.ll
llvm/test/Transforms/SimpleLoopUnswitch/guards.ll
llvm/test/Transforms/SimpleLoopUnswitch/implicit-null-checks.ll
llvm/test/Transforms/SimpleLoopUnswitch/msan.ll
llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-cost.ll
llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-freeze.ll
llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-markloopasdeleted.ll
llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-redundant-switch.ll
llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch.ll
llvm/test/Transforms/SimpleLoopUnswitch/options.ll
llvm/test/Transforms/SimpleLoopUnswitch/partial-unswitch-mssa-threshold.ll
llvm/test/Transforms/SimpleLoopUnswitch/partial-unswitch-update-memoryssa.ll
llvm/test/Transforms/SimpleLoopUnswitch/partial-unswitch.ll
llvm/test/Transforms/SimpleLoopUnswitch/pipeline.ll
llvm/test/Transforms/SimpleLoopUnswitch/preserve-analyses.ll
llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-iteration.ll
llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-logical-and-or.ll
llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-profmd.ll
llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2006-06-13-SingleEntryPHI.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2006-06-13-SingleEntryPHI.ll
index 06dc92e44f830..05303b987171d 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/2006-06-13-SingleEntryPHI.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/2006-06-13-SingleEntryPHI.ll
@@ -1,10 +1,10 @@
; RUN: opt < %s -passes=simple-loop-unswitch -verify-memoryssa -disable-output
- %struct.BLEND_MAP = type { i16, i16, i16, i32, %struct.BLEND_MAP_ENTRY* }
+ %struct.BLEND_MAP = type { i16, i16, i16, i32, ptr }
%struct.BLEND_MAP_ENTRY = type { float, i8, { [5 x float], [4 x i8] } }
- %struct.TPATTERN = type { i16, i16, i16, i32, float, float, float, %struct.WARP*, %struct.TPATTERN*, %struct.BLEND_MAP*, { %struct.anon, [4 x i8] } }
- %struct.TURB = type { i16, %struct.WARP*, [3 x double], i32, float, float }
- %struct.WARP = type { i16, %struct.WARP* }
+ %struct.TPATTERN = type { i16, i16, i16, i32, float, float, float, ptr, ptr, ptr, { %struct.anon, [4 x i8] } }
+ %struct.TURB = type { i16, ptr, [3 x double], i32, float, float }
+ %struct.WARP = type { i16, ptr }
%struct.anon = type { float, [3 x double] }
define void @Parse_Pattern() {
@@ -13,14 +13,14 @@ entry:
bb671: ; preds = %cond_true1099
br label %bb1096.outer23
bb1096.outer20.loopexit: ; preds = %cond_true1099
- %Local_Turb.0.ph24.lcssa = phi %struct.TURB* [ %Local_Turb.0.ph24, %cond_true1099 ] ; <%struct.TURB*> [#uses=1]
+ %Local_Turb.0.ph24.lcssa = phi ptr [ %Local_Turb.0.ph24, %cond_true1099 ] ; <ptr> [#uses=1]
br label %bb1096.outer20
bb1096.outer20: ; preds = %bb1096.outer20.loopexit, %entry
- %Local_Turb.0.ph22 = phi %struct.TURB* [ undef, %entry ], [ %Local_Turb.0.ph24.lcssa, %bb1096.outer20.loopexit ] ; <%struct.TURB*> [#uses=1]
+ %Local_Turb.0.ph22 = phi ptr [ undef, %entry ], [ %Local_Turb.0.ph24.lcssa, %bb1096.outer20.loopexit ] ; <ptr> [#uses=1]
%tmp1098 = icmp eq i32 0, 0 ; <i1> [#uses=1]
br label %bb1096.outer23
bb1096.outer23: ; preds = %bb1096.outer20, %bb671
- %Local_Turb.0.ph24 = phi %struct.TURB* [ %Local_Turb.0.ph22, %bb1096.outer20 ], [ null, %bb671 ] ; <%struct.TURB*> [#uses=2]
+ %Local_Turb.0.ph24 = phi ptr [ %Local_Turb.0.ph22, %bb1096.outer20 ], [ null, %bb671 ] ; <ptr> [#uses=2]
br label %bb1096
bb1096: ; preds = %cond_true1099, %bb1096.outer23
br i1 %tmp1098, label %cond_true1099, label %bb1102
@@ -30,6 +30,6 @@ cond_true1099: ; preds = %bb1096
i32 359, label %bb1096
]
bb1102: ; preds = %bb1096
- %Local_Turb.0.ph24.lcssa1 = phi %struct.TURB* [ %Local_Turb.0.ph24, %bb1096 ] ; <%struct.TURB*> [#uses=0]
+ %Local_Turb.0.ph24.lcssa1 = phi ptr [ %Local_Turb.0.ph24, %bb1096 ] ; <ptr> [#uses=0]
ret void
}
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2007-05-09-Unreachable.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2007-05-09-Unreachable.ll
index 9a4c9887724fb..d7c8fa0f7d728 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/2007-05-09-Unreachable.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/2007-05-09-Unreachable.ll
@@ -3,8 +3,8 @@
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64"
target triple = "i686-pc-linux-gnu"
- %struct.ada__streams__root_stream_type = type { %struct.ada__tags__dispatch_table* }
- %struct.ada__tags__dispatch_table = type { [1 x i8*] }
+ %struct.ada__streams__root_stream_type = type { ptr }
+ %struct.ada__tags__dispatch_table = type { [1 x ptr] }
%struct.quotes__T173s = type { i8, %struct.quotes__T173s__T174s, [2 x [1 x double]], [2 x i16], i64, i8 }
%struct.quotes__T173s__T174s = type { i8, i8, i8, i16, i16, [2 x [1 x double]] }
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2007-07-12-ExitDomInfo.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2007-07-12-ExitDomInfo.ll
index 8b5d0b7a7f675..bd44e897e78f1 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/2007-07-12-ExitDomInfo.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/2007-07-12-ExitDomInfo.ll
@@ -1,6 +1,6 @@
; RUN: opt < %s -passes='loop(simple-loop-unswitch),instcombine' -verify-memoryssa -disable-output
- at str3 = external constant [3 x i8] ; <[3 x i8]*> [#uses=1]
+ at str3 = external constant [3 x i8] ; <ptr> [#uses=1]
define i32 @stringSearch_Clib(i32 %count) {
entry:
@@ -15,9 +15,9 @@ bb36.outer: ; preds = %bb41, %bb36.preheader
br i1 %ttmp33, label %bb.nph, label %bb41
bb.nph: ; preds = %bb36.outer
- %ttmp8 = icmp eq i8* null, null ; <i1> [#uses=1]
- %ttmp6 = icmp eq i8* null, null ; <i1> [#uses=1]
- %tmp31 = call i32 @strcspn( i8* null, i8* getelementptr ([3 x i8], [3 x i8]* @str3, i64 0, i64 0) ) ; <i32> [#uses=1]
+ %ttmp8 = icmp eq ptr null, null ; <i1> [#uses=1]
+ %ttmp6 = icmp eq ptr null, null ; <i1> [#uses=1]
+ %tmp31 = call i32 @strcspn( ptr null, ptr @str3 ) ; <i32> [#uses=1]
br i1 %ttmp8, label %cond_next, label %cond_true
cond_true: ; preds = %bb.nph
@@ -42,4 +42,4 @@ bb44: ; preds = %bb41, %entry
ret i32 %c.01.1
}
-declare i32 @strcspn(i8*, i8*)
+declare i32 @strcspn(ptr, ptr)
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2007-07-13-DomInfo.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2007-07-13-DomInfo.ll
index 2c695a5fa3e46..2ce0398c7908f 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/2007-07-13-DomInfo.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/2007-07-13-DomInfo.ll
@@ -1,6 +1,6 @@
; RUN: opt < %s -passes=simple-loop-unswitch -verify-memoryssa -disable-output
-define i32 @main(i32 %argc, i8** %argv) {
+define i32 @main(i32 %argc, ptr %argv) {
entry:
%tmp1785365 = icmp ult i32 0, 100 ; <i1> [#uses=1]
br label %bb
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2007-07-18-DomInfo.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2007-07-18-DomInfo.ll
index 2bf085a948eb3..0151d8d2677b1 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/2007-07-18-DomInfo.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/2007-07-18-DomInfo.ll
@@ -2,9 +2,9 @@
; PR1559
target triple = "i686-pc-linux-gnu"
- %struct.re_pattern_buffer = type { i8*, i32, i32, i32, i8*, i8*, i32, i8 }
+ %struct.re_pattern_buffer = type { ptr, i32, i32, i32, ptr, ptr, i32, i8 }
-define fastcc i32 @byte_regex_compile(i8* %pattern, i32 %size, i32 %syntax, %struct.re_pattern_buffer* %bufp) {
+define fastcc i32 @byte_regex_compile(ptr %pattern, i32 %size, i32 %syntax, ptr %bufp) {
entry:
br i1 false, label %bb147, label %cond_next123
@@ -33,16 +33,16 @@ cond_true1849: ; preds = %cond_next1844
br label %bb1855.outer.outer
bb1855.outer.outer: ; preds = %cond_true1849, %bb1734
- %b.10.ph.ph = phi i8* [ null, %cond_true1849 ], [ null, %bb1734 ] ; <i8*> [#uses=1]
+ %b.10.ph.ph = phi ptr [ null, %cond_true1849 ], [ null, %bb1734 ] ; <ptr> [#uses=1]
br label %bb1855.outer
bb1855.outer: ; preds = %bb1855.outer.outer, %cond_next1844
- %b.10.ph = phi i8* [ null, %cond_next1844 ], [ %b.10.ph.ph, %bb1855.outer.outer ] ; <i8*> [#uses=1]
- %tmp1837 = icmp eq i8* null, null ; <i1> [#uses=2]
+ %b.10.ph = phi ptr [ null, %cond_next1844 ], [ %b.10.ph.ph, %bb1855.outer.outer ] ; <ptr> [#uses=1]
+ %tmp1837 = icmp eq ptr null, null ; <i1> [#uses=2]
br i1 false, label %cond_true1831, label %cond_next1915
cond_next1915: ; preds = %cond_next1961, %bb1855.outer
- store i8* null, i8** null
+ store ptr null, ptr null
br i1 %tmp1837, label %cond_next1929, label %cond_true1923
cond_true1923: ; preds = %cond_next1915
@@ -52,7 +52,7 @@ cond_next1929: ; preds = %cond_next1915
br i1 false, label %cond_next1961, label %cond_next2009
cond_next1961: ; preds = %cond_next1929
- %tmp1992 = getelementptr i8, i8* %b.10.ph, i32 0 ; <i8*> [#uses=0]
+ %tmp1992 = getelementptr i8, ptr %b.10.ph, i32 0 ; <ptr> [#uses=0]
br label %cond_next1915
cond_next2009: ; preds = %cond_next1929
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2007-08-01-Dom.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2007-08-01-Dom.ll
index 143772cce84c1..c89741ade15f8 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/2007-08-01-Dom.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/2007-08-01-Dom.ll
@@ -3,7 +3,7 @@
%struct.QBasicAtomic = type { i32 }
-define void @_ZNK5QDate9addMonthsEi(%struct.QBasicAtomic* sret(%struct.QBasicAtomic) %agg.result, %struct.QBasicAtomic* %this, i32 %nmonths) {
+define void @_ZNK5QDate9addMonthsEi(ptr sret(%struct.QBasicAtomic) %agg.result, ptr %this, i32 %nmonths) {
entry:
br label %cond_true90
@@ -17,7 +17,7 @@ bb53: ; preds = %bb45
br i1 false, label %bb93, label %cond_true90
bb58: ; preds = %bb45
- store i32 0, i32* null, align 4
+ store i32 0, ptr null, align 4
br i1 false, label %cond_true90, label %bb93
cond_true90: ; preds = %bb58, %bb53, %bb16, %entry
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2007-08-01-LCSSA.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2007-08-01-LCSSA.ll
index 591b840519a78..ca2423d19d169 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/2007-08-01-LCSSA.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/2007-08-01-LCSSA.ll
@@ -1,26 +1,26 @@
; RUN: opt < %s -passes='loop(simple-loop-unswitch),instcombine' -verify-memoryssa -disable-output
%struct.ClassDef = type { %struct.QByteArray, %struct.QByteArray, %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", i8, i8, %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", %"struct.QMap<QByteArray,QByteArray>", %"struct.QList<ArgumentDef>", %"struct.QMap<QByteArray,QByteArray>", i32, i32 }
- %struct.FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct.FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i32, i32, [40 x i8] }
- %struct.Generator = type { %struct.FILE*, %struct.ClassDef*, %"struct.QList<ArgumentDef>", %struct.QByteArray, %"struct.QList<ArgumentDef>" }
+ %struct.FILE = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i16, i8, [1 x i8], ptr, i64, ptr, ptr, ptr, ptr, i32, i32, [40 x i8] }
+ %struct.Generator = type { ptr, ptr, %"struct.QList<ArgumentDef>", %struct.QByteArray, %"struct.QList<ArgumentDef>" }
%struct.QBasicAtomic = type { i32 }
- %struct.QByteArray = type { %"struct.QByteArray::Data"* }
- %"struct.QByteArray::Data" = type { %struct.QBasicAtomic, i32, i32, i8*, [1 x i8] }
+ %struct.QByteArray = type { ptr }
+ %"struct.QByteArray::Data" = type { %struct.QBasicAtomic, i32, i32, ptr, [1 x i8] }
%"struct.QList<ArgumentDef>" = type { %"struct.QList<ArgumentDef>::._19" }
%"struct.QList<ArgumentDef>::._19" = type { %struct.QListData }
- %struct.QListData = type { %"struct.QListData::Data"* }
- %"struct.QListData::Data" = type { %struct.QBasicAtomic, i32, i32, i32, i8, [1 x i8*] }
+ %struct.QListData = type { ptr }
+ %"struct.QListData::Data" = type { %struct.QBasicAtomic, i32, i32, i32, i8, [1 x ptr] }
%"struct.QMap<QByteArray,QByteArray>" = type { %"struct.QMap<QByteArray,QByteArray>::._56" }
- %"struct.QMap<QByteArray,QByteArray>::._56" = type { %struct.QMapData* }
- %struct.QMapData = type { %struct.QMapData*, [12 x %struct.QMapData*], %struct.QBasicAtomic, i32, i32, i32, i8 }
- %struct._IO_marker = type { %struct._IO_marker*, %struct.FILE*, i32 }
- at .str9 = external constant [1 x i8] ; <[1 x i8]*> [#uses=1]
+ %"struct.QMap<QByteArray,QByteArray>::._56" = type { ptr }
+ %struct.QMapData = type { ptr, [12 x ptr], %struct.QBasicAtomic, i32, i32, i32, i8 }
+ %struct._IO_marker = type { ptr, ptr, i32 }
+ at .str9 = external constant [1 x i8] ; <ptr> [#uses=1]
-declare i32 @strcmp(i8*, i8*)
+declare i32 @strcmp(ptr, ptr)
-define i32 @_ZN9Generator6strregEPKc(%struct.Generator* %this, i8* %s) {
+define i32 @_ZN9Generator6strregEPKc(ptr %this, ptr %s) {
entry:
- %s_addr.0 = select i1 false, i8* getelementptr ([1 x i8], [1 x i8]* @.str9, i32 0, i32 0), i8* %s ; <i8*> [#uses=2]
- %tmp122 = icmp eq i8* %s_addr.0, null ; <i1> [#uses=1]
+ %s_addr.0 = select i1 false, ptr @.str9, ptr %s ; <ptr> [#uses=2]
+ %tmp122 = icmp eq ptr %s_addr.0, null ; <i1> [#uses=1]
br label %bb184
bb55: ; preds = %bb184
@@ -30,7 +30,7 @@ bb88: ; preds = %bb184
br i1 %tmp122, label %bb154, label %bb128
bb128: ; preds = %bb88
- %tmp138 = call i32 @strcmp( i8* null, i8* %s_addr.0 ) ; <i32> [#uses=1]
+ %tmp138 = call i32 @strcmp( ptr null, ptr %s_addr.0 ) ; <i32> [#uses=1]
%iftmp.37.0.in4 = icmp eq i32 %tmp138, 0 ; <i1> [#uses=1]
br i1 %iftmp.37.0.in4, label %bb250, label %bb166
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2007-10-04-DomFrontier.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2007-10-04-DomFrontier.ll
index 6854ae47abfcf..f4c1ff39b5282 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/2007-10-04-DomFrontier.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/2007-10-04-DomFrontier.ll
@@ -1,20 +1,20 @@
; RUN: opt < %s -passes='loop-mssa(licm),loop-unroll' -disable-output
- at resonant = external global i32 ; <i32*> [#uses=2]
+ at resonant = external global i32 ; <ptr> [#uses=2]
define void @weightadj() {
entry:
br label %bb
bb: ; preds = %bb158, %entry
- store i32 0, i32* @resonant, align 4
+ store i32 0, ptr @resonant, align 4
br i1 false, label %g.exit, label %bb158
g.exit: ; preds = %bb68, %bb
br i1 false, label %bb68, label %cond_true
cond_true: ; preds = %g.exit
- store i32 1, i32* @resonant, align 4
+ store i32 1, ptr @resonant, align 4
br label %bb68
bb68: ; preds = %cond_true, %g.exit
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2008-06-17-DomFrontier.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2008-06-17-DomFrontier.ll
index 054a7d1b92e2c..9ac26a80c3ece 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/2008-06-17-DomFrontier.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/2008-06-17-DomFrontier.ll
@@ -1,5 +1,5 @@
; RUN: opt < %s -passes=licm,simple-loop-unswitch -disable-output
- at g_56 = external global i16 ; <i16*> [#uses=2]
+ at g_56 = external global i16 ; <ptr> [#uses=2]
define i32 @func_67(i32 %p_68, i8 signext %p_69, i8 signext %p_71) nounwind {
entry:
@@ -14,9 +14,9 @@ bb19: ; preds = %bb3
bb29: ; preds = %bb19, %bb3
ret i32 0
bb36: ; preds = %bb19
- store i16 0, i16* @g_56, align 2
+ store i16 0, ptr @g_56, align 2
br i1 false, label %bb44, label %bb3
bb44: ; preds = %bb44, %bb36
- %tmp46 = load i16, i16* @g_56, align 2 ; <i16> [#uses=0]
+ %tmp46 = load i16, ptr @g_56, align 2 ; <i16> [#uses=0]
br i1 false, label %bb, label %bb44
}
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2010-11-18-LCSSA.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2010-11-18-LCSSA.ll
index 96199728a66e4..37aabe273eed2 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/2010-11-18-LCSSA.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/2010-11-18-LCSSA.ll
@@ -7,7 +7,7 @@ entry:
br i1 true, label %for.end12, label %bb.nph
bb.nph: ; preds = %entry
- %g_38.promoted = load i32, i32* @g_38
+ %g_38.promoted = load i32, ptr @g_38
br label %for.body
for.body: ; preds = %for.cond, %bb.nph
@@ -20,7 +20,7 @@ for.cond: ; preds = %for.body
br i1 true, label %for.cond.for.end12_crit_edge, label %for.body
for.cond.for.end12_crit_edge: ; preds = %for.cond
- store i32 %call1, i32* @g_38
+ store i32 %call1, ptr @g_38
br label %for.end12
for.end12: ; preds = %for.cond.for.end12_crit_edge, %entry
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2011-09-26-EHCrash.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2011-09-26-EHCrash.ll
index 108db7f547c2b..86f6e7c112937 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/2011-09-26-EHCrash.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/2011-09-26-EHCrash.ll
@@ -3,10 +3,10 @@
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-apple-macosx10.7.2"
-%class.MyContainer.1.3.19.29 = type { [6 x %class.MyMemVarClass.0.2.18.28*] }
+%class.MyContainer.1.3.19.29 = type { [6 x ptr] }
%class.MyMemVarClass.0.2.18.28 = type { i32 }
-define void @_ZN11MyContainer1fEi(%class.MyContainer.1.3.19.29* %this, i32 %doit) uwtable ssp align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
+define void @_ZN11MyContainer1fEi(ptr %this, i32 %doit) uwtable ssp align 2 personality ptr @__gxx_personality_v0 {
entry:
br label %for.cond
@@ -22,31 +22,28 @@ for.body: ; preds = %for.cond
if.then: ; preds = %for.body
%idxprom = sext i32 %inc1 to i64
- %array_ = getelementptr inbounds %class.MyContainer.1.3.19.29, %class.MyContainer.1.3.19.29* %this, i32 0, i32 0
- %arrayidx = getelementptr inbounds [6 x %class.MyMemVarClass.0.2.18.28*], [6 x %class.MyMemVarClass.0.2.18.28*]* %array_, i32 0, i64 %idxprom
- %tmp4 = load %class.MyMemVarClass.0.2.18.28*, %class.MyMemVarClass.0.2.18.28** %arrayidx, align 8
- %isnull = icmp eq %class.MyMemVarClass.0.2.18.28* %tmp4, null
+ %arrayidx = getelementptr inbounds [6 x ptr], ptr %this, i32 0, i64 %idxprom
+ %tmp4 = load ptr, ptr %arrayidx, align 8
+ %isnull = icmp eq ptr %tmp4, null
br i1 %isnull, label %for.inc, label %delete.notnull
delete.notnull: ; preds = %if.then
- invoke void @_ZN13MyMemVarClassD1Ev(%class.MyMemVarClass.0.2.18.28* %tmp4)
+ invoke void @_ZN13MyMemVarClassD1Ev(ptr %tmp4)
to label %invoke.cont unwind label %lpad
invoke.cont: ; preds = %delete.notnull
- %0 = bitcast %class.MyMemVarClass.0.2.18.28* %tmp4 to i8*
- call void @_ZdlPv(i8* %0) nounwind
+ call void @_ZdlPv(ptr %tmp4) nounwind
br label %for.inc
lpad: ; preds = %delete.notnull
- %1 = landingpad { i8*, i32 }
+ %0 = landingpad { ptr, i32 }
cleanup
- %2 = extractvalue { i8*, i32 } %1, 0
- %3 = extractvalue { i8*, i32 } %1, 1
- %4 = bitcast %class.MyMemVarClass.0.2.18.28* %tmp4 to i8*
- call void @_ZdlPv(i8* %4) nounwind
- %lpad.val = insertvalue { i8*, i32 } undef, i8* %2, 0
- %lpad.val7 = insertvalue { i8*, i32 } %lpad.val, i32 %3, 1
- resume { i8*, i32 } %lpad.val7
+ %1 = extractvalue { ptr, i32 } %0, 0
+ %2 = extractvalue { ptr, i32 } %0, 1
+ call void @_ZdlPv(ptr %tmp4) nounwind
+ %lpad.val = insertvalue { ptr, i32 } undef, ptr %1, 0
+ %lpad.val7 = insertvalue { ptr, i32 } %lpad.val, i32 %2, 1
+ resume { ptr, i32 } %lpad.val7
for.inc: ; preds = %invoke.cont, %if.then, %for.body
%inc = add nsw i32 %inc1, 1
@@ -56,8 +53,8 @@ for.end: ; preds = %for.cond
ret void
}
-declare void @_ZN13MyMemVarClassD1Ev(%class.MyMemVarClass.0.2.18.28*)
+declare void @_ZN13MyMemVarClassD1Ev(ptr)
declare i32 @__gxx_personality_v0(...)
-declare void @_ZdlPv(i8*) nounwind
+declare void @_ZdlPv(ptr) nounwind
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2012-04-02-IndirectBr.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2012-04-02-IndirectBr.ll
index 82395ca862df6..ea4aa21b81bf0 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/2012-04-02-IndirectBr.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/2012-04-02-IndirectBr.ll
@@ -8,7 +8,7 @@
; CHECK-NEXT: br label %"16"
; CHECK: "16": ; preds = %"22", %"5"
-; CHECK-NEXT: indirectbr i8* undef, [label %"22", label %"33"]
+; CHECK-NEXT: indirectbr ptr undef, [label %"22", label %"33"]
; CHECK: "22": ; preds = %"16"
; CHECK-NEXT: br i1 %0, label %"16", label %"26"
@@ -28,7 +28,7 @@ entry:
br label %"16"
"16": ; preds = %"22", %"5"
- indirectbr i8* undef, [label %"22", label %"33"]
+ indirectbr ptr undef, [label %"22", label %"33"]
"22": ; preds = %"16"
br i1 %0, label %"16", label %"26"
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2012-04-30-LoopUnswitch-LPad-Crash.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2012-04-30-LoopUnswitch-LPad-Crash.ll
index d61aff1ad282d..8ad869015f44e 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/2012-04-30-LoopUnswitch-LPad-Crash.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/2012-04-30-LoopUnswitch-LPad-Crash.ll
@@ -3,18 +3,18 @@
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.7.0"
-%class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379 = type { %class.C.23.43.67.103.139.159.179.199.239.243.247.251.263.295.303.339.347.376*, %class.B.21.41.65.101.137.157.177.197.237.241.245.249.261.293.301.337.345.378 }
-%class.C.23.43.67.103.139.159.179.199.239.243.247.251.263.295.303.339.347.376 = type { %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379* }
-%class.B.21.41.65.101.137.157.177.197.237.241.245.249.261.293.301.337.345.378 = type { %class.A.20.40.64.100.136.156.176.196.236.240.244.248.260.292.300.336.344.377* }
+%class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379 = type { ptr, %class.B.21.41.65.101.137.157.177.197.237.241.245.249.261.293.301.337.345.378 }
+%class.C.23.43.67.103.139.159.179.199.239.243.247.251.263.295.303.339.347.376 = type { ptr }
+%class.B.21.41.65.101.137.157.177.197.237.241.245.249.261.293.301.337.345.378 = type { ptr }
%class.A.20.40.64.100.136.156.176.196.236.240.244.248.260.292.300.336.344.377 = type { i8 }
-define void @_Z23get_reconstruction_pathv() uwtable ssp personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
+define void @_Z23get_reconstruction_pathv() uwtable ssp personality ptr @__gxx_personality_v0 {
entry:
%c = alloca %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379, align 8
br label %for.cond
for.cond: ; preds = %for.end, %entry
- invoke void @_ZN1DptEv(%class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379* %c)
+ invoke void @_ZN1DptEv(ptr %c)
to label %invoke.cont unwind label %lpad
invoke.cont: ; preds = %for.cond
@@ -22,7 +22,7 @@ invoke.cont: ; preds = %for.cond
to label %for.cond3 unwind label %lpad
for.cond3: ; preds = %invoke.cont6, %invoke.cont
- invoke void @_ZN1DptEv(%class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379* %c)
+ invoke void @_ZN1DptEv(ptr %c)
to label %invoke.cont4 unwind label %lpad
invoke.cont4: ; preds = %for.cond3
@@ -33,23 +33,22 @@ invoke.cont6: ; preds = %invoke.cont4
br i1 undef, label %for.cond3, label %for.end
lpad: ; preds = %for.end, %invoke.cont4, %for.cond3, %invoke.cont, %for.cond
- %0 = landingpad { i8*, i32 }
+ %0 = landingpad { ptr, i32 }
cleanup
- resume { i8*, i32 } undef
+ resume { ptr, i32 } undef
for.end: ; preds = %invoke.cont6
invoke void @_ZN1C13_M_insert_auxER1D()
to label %for.cond unwind label %lpad
}
-define void @_ZN1DptEv(%class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379* %this) uwtable ssp align 2 {
+define void @_ZN1DptEv(ptr %this) uwtable ssp align 2 {
entry:
- %this.addr = alloca %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379*, align 8
- store %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379* %this, %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379** %this.addr, align 8
- %this1 = load %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379*, %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379** %this.addr
- %px = getelementptr inbounds %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379, %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379* %this1, i32 0, i32 0
- %0 = load %class.C.23.43.67.103.139.159.179.199.239.243.247.251.263.295.303.339.347.376*, %class.C.23.43.67.103.139.159.179.199.239.243.247.251.263.295.303.339.347.376** %px, align 8
- %tobool = icmp ne %class.C.23.43.67.103.139.159.179.199.239.243.247.251.263.295.303.339.347.376* %0, null
+ %this.addr = alloca ptr, align 8
+ store ptr %this, ptr %this.addr, align 8
+ %this1 = load ptr, ptr %this.addr
+ %0 = load ptr, ptr %this1, align 8
+ %tobool = icmp ne ptr %0, null
br i1 %tobool, label %cond.end, label %cond.false
cond.false: ; preds = %entry
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2012-05-20-Phi.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2012-05-20-Phi.ll
index 3d9474b257ead..eef32ad271d26 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/2012-05-20-Phi.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/2012-05-20-Phi.ll
@@ -9,9 +9,9 @@ target triple = "x86_64-unknown-linux-gnu"
define void @func() noreturn nounwind uwtable {
entry:
- %0 = load i32, i32* @a, align 4
+ %0 = load i32, ptr @a, align 4
%tobool = icmp eq i32 %0, 0
- %1 = load i32, i32* @b, align 4
+ %1 = load i32, ptr @b, align 4
br label %while.body
while.body: ; preds = %while.body, %entry
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2015-09-18-Addrspace.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2015-09-18-Addrspace.ll
index a9cf3c0435ff8..ce767f14cf073 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/2015-09-18-Addrspace.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/2015-09-18-Addrspace.ll
@@ -9,8 +9,8 @@ target datalayout = "e-m:e-p:16:16-p1:32:16-i32:16-i64:16-n8:16"
define void @foo() {
; CHECK-LABEL: @foo
entry:
- %arrayidx.i1 = getelementptr inbounds i16, i16* undef, i16 undef
- %arrayidx.i = addrspacecast i16* %arrayidx.i1 to i16 addrspace(1)*
+ %arrayidx.i1 = getelementptr inbounds i16, ptr undef, i16 undef
+ %arrayidx.i = addrspacecast ptr %arrayidx.i1 to ptr addrspace(1)
br i1 undef, label %for.body.i, label %bar.exit
for.body.i: ; preds = %for.body.i, %entry
@@ -18,8 +18,8 @@ for.body.i: ; preds = %for.body.i, %entry
; will try to find the base object to prove deferenceability. If we look
; through the addrspacecast, we'll fail an assertion about bitwidths matching
; CHECK-LABEL: for.body.i
-; CHECK: %0 = load i16, i16 addrspace(1)* %arrayidx.i, align 2
- %0 = load i16, i16 addrspace(1)* %arrayidx.i, align 2
+; CHECK: %0 = load i16, ptr addrspace(1) %arrayidx.i, align 2
+ %0 = load i16, ptr addrspace(1) %arrayidx.i, align 2
%cmp1.i = icmp eq i16 %0, 0
br i1 %cmp1.i, label %bar.exit, label %for.body.i
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/ARM/nontrivial-unswitch-cost.ll b/llvm/test/Transforms/SimpleLoopUnswitch/ARM/nontrivial-unswitch-cost.ll
index 1a537d6d43135..adf118ba7ea14 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/ARM/nontrivial-unswitch-cost.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/ARM/nontrivial-unswitch-cost.ll
@@ -5,7 +5,7 @@ declare void @a()
declare void @b()
declare void @x()
-define void @test_no_unswitch(i1* %ptr, i1 %cond) {
+define void @test_no_unswitch(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_no_unswitch(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
@@ -22,7 +22,7 @@ define void @test_no_unswitch(i1* %ptr, i1 %cond) {
; CHECK-NEXT: call void @b()
; CHECK-NEXT: br label [[LOOP_LATCH]]
; CHECK: loop_latch:
-; CHECK-NEXT: [[V:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V]], label [[LOOP_BEGIN]], label [[LOOP_EXIT:%.*]]
; CHECK: loop_exit:
; CHECK-NEXT: ret void
@@ -45,14 +45,14 @@ loop_b:
br label %loop_latch
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
ret void
}
-define void @test_unswitch(i1* %ptr, i1 %cond) {
+define void @test_unswitch(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_unswitch(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND:%.*]]
@@ -66,7 +66,7 @@ define void @test_unswitch(i1* %ptr, i1 %cond) {
; CHECK-NEXT: call void @a()
; CHECK-NEXT: br label [[LOOP_LATCH_US:%.*]]
; CHECK: loop_latch.us:
-; CHECK-NEXT: [[V_US:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V_US:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V_US]], label [[LOOP_BEGIN_US]], label [[LOOP_EXIT_SPLIT_US:%.*]]
; CHECK: loop_exit.split.us:
; CHECK-NEXT: br label [[LOOP_EXIT:%.*]]
@@ -79,7 +79,7 @@ define void @test_unswitch(i1* %ptr, i1 %cond) {
; CHECK-NEXT: call void @b()
; CHECK-NEXT: br label [[LOOP_LATCH:%.*]]
; CHECK: loop_latch:
-; CHECK-NEXT: [[V:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V]], label [[LOOP_BEGIN]], label [[LOOP_EXIT_SPLIT:%.*]]
; CHECK: loop_exit.split:
; CHECK-NEXT: br label [[LOOP_EXIT]]
@@ -102,14 +102,14 @@ loop_b:
br label %loop_latch
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
ret void
}
-define void @test_unswitch_minsize(i1* %ptr, i1 %cond) #0 {
+define void @test_unswitch_minsize(ptr %ptr, i1 %cond) #0 {
; CHECK-LABEL: @test_unswitch_minsize(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
@@ -123,7 +123,7 @@ define void @test_unswitch_minsize(i1* %ptr, i1 %cond) #0 {
; CHECK-NEXT: call void @b()
; CHECK-NEXT: br label [[LOOP_LATCH]]
; CHECK: loop_latch:
-; CHECK-NEXT: [[V:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V]], label [[LOOP_BEGIN]], label [[LOOP_EXIT:%.*]]
; CHECK: loop_exit:
; CHECK-NEXT: ret void
@@ -144,14 +144,14 @@ loop_b:
br label %loop_latch
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
ret void
}
-define void @test_unswitch_non_dup_code(i1* %ptr, i1 %cond) {
+define void @test_unswitch_non_dup_code(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_unswitch_non_dup_code(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND:%.*]]
@@ -168,7 +168,7 @@ define void @test_unswitch_non_dup_code(i1* %ptr, i1 %cond) {
; CHECK-NEXT: call void @a()
; CHECK-NEXT: br label [[LOOP_LATCH_US:%.*]]
; CHECK: loop_latch.us:
-; CHECK-NEXT: [[V_US:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V_US:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V_US]], label [[LOOP_BEGIN_US]], label [[LOOP_EXIT_SPLIT_US:%.*]]
; CHECK: loop_exit.split.us:
; CHECK-NEXT: br label [[LOOP_EXIT:%.*]]
@@ -184,7 +184,7 @@ define void @test_unswitch_non_dup_code(i1* %ptr, i1 %cond) {
; CHECK-NEXT: call void @b()
; CHECK-NEXT: br label [[LOOP_LATCH:%.*]]
; CHECK: loop_latch:
-; CHECK-NEXT: [[V:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V]], label [[LOOP_BEGIN]], label [[LOOP_EXIT_SPLIT:%.*]]
; CHECK: loop_exit.split:
; CHECK-NEXT: br label [[LOOP_EXIT]]
@@ -213,14 +213,14 @@ loop_b:
br label %loop_latch
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
ret void
}
-define void @test_unswitch_non_dup_code_minsize(i1* %ptr, i1 %cond) #0 {
+define void @test_unswitch_non_dup_code_minsize(ptr %ptr, i1 %cond) #0 {
; CHECK-LABEL: @test_unswitch_non_dup_code_minsize(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
@@ -240,7 +240,7 @@ define void @test_unswitch_non_dup_code_minsize(i1* %ptr, i1 %cond) #0 {
; CHECK-NEXT: call void @b()
; CHECK-NEXT: br label [[LOOP_LATCH]]
; CHECK: loop_latch:
-; CHECK-NEXT: [[V:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V]], label [[LOOP_BEGIN]], label [[LOOP_EXIT:%.*]]
; CHECK: loop_exit:
; CHECK-NEXT: ret void
@@ -267,14 +267,14 @@ loop_b:
br label %loop_latch
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
ret void
}
-define void @test_unswitch_non_dup_code_in_cfg(i1* %ptr, i1 %cond) {
+define void @test_unswitch_non_dup_code_in_cfg(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_unswitch_non_dup_code_in_cfg(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND:%.*]]
@@ -285,7 +285,7 @@ define void @test_unswitch_non_dup_code_in_cfg(i1* %ptr, i1 %cond) {
; CHECK-NEXT: call void @x()
; CHECK-NEXT: br label [[LOOP_A_US:%.*]]
; CHECK: loop_a.us:
-; CHECK-NEXT: [[V1_US:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V1_US:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V1_US]], label [[LOOP_A_A_US:%.*]], label [[LOOP_A_B_US:%.*]]
; CHECK: loop_a_b.us:
; CHECK-NEXT: call void @a()
@@ -294,7 +294,7 @@ define void @test_unswitch_non_dup_code_in_cfg(i1* %ptr, i1 %cond) {
; CHECK-NEXT: call void @a()
; CHECK-NEXT: br label [[LOOP_LATCH_US]]
; CHECK: loop_latch.us:
-; CHECK-NEXT: [[V3_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V3_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V3_US]], label [[LOOP_BEGIN_US]], label [[LOOP_EXIT_SPLIT_US:%.*]]
; CHECK: loop_exit.split.us:
; CHECK-NEXT: br label [[LOOP_EXIT:%.*]]
@@ -304,7 +304,7 @@ define void @test_unswitch_non_dup_code_in_cfg(i1* %ptr, i1 %cond) {
; CHECK-NEXT: call void @x()
; CHECK-NEXT: br label [[LOOP_B:%.*]]
; CHECK: loop_b:
-; CHECK-NEXT: [[V2:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2]], label [[LOOP_B_A:%.*]], label [[LOOP_B_B:%.*]]
; CHECK: loop_b_a:
; CHECK-NEXT: call void @b()
@@ -313,7 +313,7 @@ define void @test_unswitch_non_dup_code_in_cfg(i1* %ptr, i1 %cond) {
; CHECK-NEXT: call void @b()
; CHECK-NEXT: br label [[LOOP_LATCH]]
; CHECK: loop_latch:
-; CHECK-NEXT: [[V3:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V3:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V3]], label [[LOOP_BEGIN]], label [[LOOP_EXIT_SPLIT:%.*]]
; CHECK: loop_exit.split:
; CHECK-NEXT: br label [[LOOP_EXIT]]
@@ -328,7 +328,7 @@ loop_begin:
br i1 %cond, label %loop_a, label %loop_b
loop_a:
- %v1 = load i1, i1* %ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_a_a, label %loop_a_b
loop_a_a:
@@ -340,7 +340,7 @@ loop_a_b:
br label %loop_latch
loop_b:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_b_a, label %loop_b_b
loop_b_a:
@@ -352,14 +352,14 @@ loop_b_b:
br label %loop_latch
loop_latch:
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %loop_begin, label %loop_exit
loop_exit:
ret void
}
-define void @test_unswitch_non_dup_code_in_cfg_minsize(i1* %ptr, i1 %cond) #0 {
+define void @test_unswitch_non_dup_code_in_cfg_minsize(ptr %ptr, i1 %cond) #0 {
; CHECK-LABEL: @test_unswitch_non_dup_code_in_cfg_minsize(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
@@ -367,7 +367,7 @@ define void @test_unswitch_non_dup_code_in_cfg_minsize(i1* %ptr, i1 %cond) #0 {
; CHECK-NEXT: call void @x()
; CHECK-NEXT: br i1 [[COND:%.*]], label [[LOOP_A:%.*]], label [[LOOP_B:%.*]]
; CHECK: loop_a:
-; CHECK-NEXT: [[V1:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V1:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V1]], label [[LOOP_A_A:%.*]], label [[LOOP_A_B:%.*]]
; CHECK: loop_a_a:
; CHECK-NEXT: call void @a()
@@ -376,7 +376,7 @@ define void @test_unswitch_non_dup_code_in_cfg_minsize(i1* %ptr, i1 %cond) #0 {
; CHECK-NEXT: call void @a()
; CHECK-NEXT: br label [[LOOP_LATCH]]
; CHECK: loop_b:
-; CHECK-NEXT: [[V2:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2]], label [[LOOP_B_A:%.*]], label [[LOOP_B_B:%.*]]
; CHECK: loop_b_a:
; CHECK-NEXT: call void @b()
@@ -385,7 +385,7 @@ define void @test_unswitch_non_dup_code_in_cfg_minsize(i1* %ptr, i1 %cond) #0 {
; CHECK-NEXT: call void @b()
; CHECK-NEXT: br label [[LOOP_LATCH]]
; CHECK: loop_latch:
-; CHECK-NEXT: [[V3:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V3:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V3]], label [[LOOP_BEGIN]], label [[LOOP_EXIT:%.*]]
; CHECK: loop_exit:
; CHECK-NEXT: ret void
@@ -398,7 +398,7 @@ loop_begin:
br i1 %cond, label %loop_a, label %loop_b
loop_a:
- %v1 = load i1, i1* %ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_a_a, label %loop_a_b
loop_a_a:
@@ -410,7 +410,7 @@ loop_a_b:
br label %loop_latch
loop_b:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_b_a, label %loop_b_b
loop_b_a:
@@ -422,14 +422,14 @@ loop_b_b:
br label %loop_latch
loop_latch:
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %loop_begin, label %loop_exit
loop_exit:
ret void
}
-define void @test_no_unswitch_non_dup_code(i1* %ptr, i1 %cond) {
+define void @test_no_unswitch_non_dup_code(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_no_unswitch_non_dup_code(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
@@ -437,7 +437,7 @@ define void @test_no_unswitch_non_dup_code(i1* %ptr, i1 %cond) {
; CHECK-NEXT: call void @x()
; CHECK-NEXT: br i1 [[COND:%.*]], label [[LOOP_A:%.*]], label [[LOOP_B:%.*]]
; CHECK: loop_a:
-; CHECK-NEXT: [[V1:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V1:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V1]], label [[LOOP_A_A:%.*]], label [[LOOP_A_B:%.*]]
; CHECK: loop_a_a:
; CHECK-NEXT: call void @a()
@@ -446,7 +446,7 @@ define void @test_no_unswitch_non_dup_code(i1* %ptr, i1 %cond) {
; CHECK-NEXT: call void @a()
; CHECK-NEXT: br label [[LOOP_LATCH]]
; CHECK: loop_b:
-; CHECK-NEXT: [[V2:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2]], label [[LOOP_B_A:%.*]], label [[LOOP_B_B:%.*]]
; CHECK: loop_b_a:
; CHECK-NEXT: call void @b()
@@ -457,7 +457,7 @@ define void @test_no_unswitch_non_dup_code(i1* %ptr, i1 %cond) {
; CHECK: loop_latch:
; CHECK-NEXT: call void @x()
; CHECK-NEXT: call void @x()
-; CHECK-NEXT: [[V:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V]], label [[LOOP_BEGIN]], label [[LOOP_EXIT:%.*]]
; CHECK: loop_exit:
; CHECK-NEXT: ret void
@@ -470,7 +470,7 @@ loop_begin:
br i1 %cond, label %loop_a, label %loop_b
loop_a:
- %v1 = load i1, i1* %ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_a_a, label %loop_a_b
loop_a_a:
@@ -482,7 +482,7 @@ loop_a_b:
br label %loop_latch
loop_b:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_b_a, label %loop_b_b
loop_b_a:
@@ -496,14 +496,14 @@ loop_b_b:
loop_latch:
call void @x()
call void @x()
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
ret void
}
-define void @test_unswitch_large_exit(i1* %ptr, i1 %cond) {
+define void @test_unswitch_large_exit(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_unswitch_large_exit(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND:%.*]]
@@ -517,7 +517,7 @@ define void @test_unswitch_large_exit(i1* %ptr, i1 %cond) {
; CHECK-NEXT: call void @a()
; CHECK-NEXT: br label [[LOOP_LATCH_US:%.*]]
; CHECK: loop_latch.us:
-; CHECK-NEXT: [[V_US:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V_US:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V_US]], label [[LOOP_BEGIN_US]], label [[LOOP_EXIT_SPLIT_US:%.*]]
; CHECK: loop_exit.split.us:
; CHECK-NEXT: br label [[LOOP_EXIT:%.*]]
@@ -530,7 +530,7 @@ define void @test_unswitch_large_exit(i1* %ptr, i1 %cond) {
; CHECK-NEXT: call void @b()
; CHECK-NEXT: br label [[LOOP_LATCH:%.*]]
; CHECK: loop_latch:
-; CHECK-NEXT: [[V:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V]], label [[LOOP_BEGIN]], label [[LOOP_EXIT_SPLIT:%.*]]
; CHECK: loop_exit.split:
; CHECK-NEXT: br label [[LOOP_EXIT]]
@@ -557,7 +557,7 @@ loop_b:
br label %loop_latch
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
@@ -568,7 +568,7 @@ loop_exit:
ret void
}
-define void @test_unswitch_dedicated_exiting(i1* %ptr, i1 %cond) {
+define void @test_unswitch_dedicated_exiting(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_unswitch_dedicated_exiting(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND:%.*]]
@@ -582,7 +582,7 @@ define void @test_unswitch_dedicated_exiting(i1* %ptr, i1 %cond) {
; CHECK-NEXT: call void @a()
; CHECK-NEXT: br label [[LOOP_LATCH_US:%.*]]
; CHECK: loop_latch.us:
-; CHECK-NEXT: [[V_US:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V_US:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V_US]], label [[LOOP_BEGIN_US]], label [[LOOP_EXIT_SPLIT_US:%.*]]
; CHECK: loop_exit.split.us:
; CHECK-NEXT: br label [[LOOP_EXIT:%.*]]
@@ -619,14 +619,14 @@ loop_b_exit:
ret void
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
ret void
}
-define void @test_unswitch_dedicated_exiting_minsize(i1* %ptr, i1 %cond) #0 {
+define void @test_unswitch_dedicated_exiting_minsize(ptr %ptr, i1 %cond) #0 {
; CHECK-LABEL: @test_unswitch_dedicated_exiting_minsize(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
@@ -643,7 +643,7 @@ define void @test_unswitch_dedicated_exiting_minsize(i1* %ptr, i1 %cond) #0 {
; CHECK-NEXT: call void @b()
; CHECK-NEXT: ret void
; CHECK: loop_latch:
-; CHECK-NEXT: [[V:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V]], label [[LOOP_BEGIN]], label [[LOOP_EXIT:%.*]]
; CHECK: loop_exit:
; CHECK-NEXT: ret void
@@ -667,7 +667,7 @@ loop_b_exit:
ret void
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/PGO-nontrivial-unswitch.ll b/llvm/test/Transforms/SimpleLoopUnswitch/PGO-nontrivial-unswitch.ll
index eeb5014cb47f9..daff716edea8d 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/PGO-nontrivial-unswitch.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/PGO-nontrivial-unswitch.ll
@@ -7,7 +7,7 @@
declare i32 @a()
declare i32 @b()
; Check loops in cold functions will not be applied non-trivial loop unswitch
-define void @f1(i32 %i, i1 %cond, i1 %hot_cond, i1 %cold_cond, i1* %ptr) !prof !0 {
+define void @f1(i32 %i, i1 %cond, i1 %hot_cond, i1 %cold_cond, ptr %ptr) !prof !0 {
; CHECK-LABEL: @f1(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[COLD_LOOP_BEGIN:%.*]]
@@ -20,7 +20,7 @@ define void @f1(i32 %i, i1 %cond, i1 %hot_cond, i1 %cold_cond, i1* %ptr) !prof !
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @b()
; CHECK-NEXT: br label [[COLD_LOOP_LATCH]]
; CHECK: cold_loop_latch:
-; CHECK-NEXT: [[V2:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V2:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V2]], label [[COLD_LOOP_BEGIN]], label [[COLD_LOOP_EXIT:%.*]]
; CHECK: cold_loop_exit:
; CHECK-NEXT: ret void
@@ -40,7 +40,7 @@ cold_loop_b:
br label %cold_loop_latch
cold_loop_latch:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %cold_loop_begin, label %cold_loop_exit
cold_loop_exit:
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/PGO-nontrivial-unswitch2.ll b/llvm/test/Transforms/SimpleLoopUnswitch/PGO-nontrivial-unswitch2.ll
index 452b4d876d937..2f7acac885f45 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/PGO-nontrivial-unswitch2.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/PGO-nontrivial-unswitch2.ll
@@ -8,7 +8,7 @@ declare i32 @b()
; Check loops will be applied non-trivial loop unswitch in a non-cold function,
; even loop headers are cold
-define void @f1(i32 %i, i1 %cond, i1 %hot_cond, i1 %cold_cond, i1* %ptr) !prof !14 {
+define void @f1(i32 %i, i1 %cond, i1 %hot_cond, i1 %cold_cond, ptr %ptr) !prof !14 {
; CHECK-LABEL: @f1(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[ENTRY_COLD_LOOP:%.*]]
@@ -24,7 +24,7 @@ define void @f1(i32 %i, i1 %cond, i1 %hot_cond, i1 %cold_cond, i1* %ptr) !prof !
; CHECK-NEXT: [[TMP0:%.*]] = call i32 @a()
; CHECK-NEXT: br label [[COLD_LOOP_LATCH_US:%.*]]
; CHECK: cold_loop_latch.us:
-; CHECK-NEXT: [[V2_US:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V2_US:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V2_US]], label [[COLD_LOOP_BEGIN_US]], label [[COLD_LOOP_EXIT_LOOPEXIT_SPLIT_US:%.*]]
; CHECK: cold_loop_exit.loopexit.split.us:
; CHECK-NEXT: br label [[COLD_LOOP_EXIT_LOOPEXIT:%.*]]
@@ -36,7 +36,7 @@ define void @f1(i32 %i, i1 %cond, i1 %hot_cond, i1 %cold_cond, i1* %ptr) !prof !
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @b()
; CHECK-NEXT: br label [[COLD_LOOP_LATCH:%.*]]
; CHECK: cold_loop_latch:
-; CHECK-NEXT: [[V2:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2]], label [[COLD_LOOP_BEGIN]], label [[COLD_LOOP_EXIT_LOOPEXIT_SPLIT:%.*]]
; CHECK: cold_loop_exit.loopexit.split:
; CHECK-NEXT: br label [[COLD_LOOP_EXIT_LOOPEXIT]]
@@ -63,7 +63,7 @@ cold_loop_b:
br label %cold_loop_latch
cold_loop_latch:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %cold_loop_begin, label %cold_loop_exit
cold_loop_exit:
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/basictest.ll b/llvm/test/Transforms/SimpleLoopUnswitch/basictest.ll
index f2e49737f5b43..e313728491249 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/basictest.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/basictest.ll
@@ -1,21 +1,21 @@
; RUN: opt -passes='loop(simple-loop-unswitch),verify<loops>' -S < %s | FileCheck %s
; RUN: opt -verify-memoryssa -passes='loop-mssa(simple-loop-unswitch),verify<loops>' -S < %s | FileCheck %s
-define i32 @test(i32* %A, i1 %C) {
+define i32 @test(ptr %A, i1 %C) {
entry:
br label %no_exit
no_exit: ; preds = %no_exit.backedge, %entry
%i.0.0 = phi i32 [ 0, %entry ], [ %i.0.0.be, %no_exit.backedge ] ; <i32> [#uses=3]
%gep.upgrd.1 = zext i32 %i.0.0 to i64 ; <i64> [#uses=1]
- %tmp.7 = getelementptr i32, i32* %A, i64 %gep.upgrd.1 ; <i32*> [#uses=4]
- %tmp.13 = load i32, i32* %tmp.7 ; <i32> [#uses=2]
+ %tmp.7 = getelementptr i32, ptr %A, i64 %gep.upgrd.1 ; <ptr> [#uses=4]
+ %tmp.13 = load i32, ptr %tmp.7 ; <i32> [#uses=2]
%tmp.14 = add i32 %tmp.13, 1 ; <i32> [#uses=1]
- store i32 %tmp.14, i32* %tmp.7
+ store i32 %tmp.14, ptr %tmp.7
br i1 %C, label %then, label %endif
then: ; preds = %no_exit
- %tmp.29 = load i32, i32* %tmp.7 ; <i32> [#uses=1]
+ %tmp.29 = load i32, ptr %tmp.7 ; <i32> [#uses=1]
%tmp.30 = add i32 %tmp.29, 2 ; <i32> [#uses=1]
- store i32 %tmp.30, i32* %tmp.7
+ store i32 %tmp.30, ptr %tmp.7
%inc9 = add i32 %i.0.0, 1 ; <i32> [#uses=2]
%tmp.112 = icmp ult i32 %inc9, 100000 ; <i1> [#uses=1]
br i1 %tmp.112, label %no_exit.backedge, label %return
@@ -34,16 +34,16 @@ return: ; preds = %endif, %then
; the noduplicate call.
; CHECK-LABEL: @test2(
-define i32 @test2(i32* %var) {
+define i32 @test2(ptr %var) {
%mem = alloca i32
- store i32 2, i32* %mem
- %c = load i32, i32* %mem
+ store i32 2, ptr %mem
+ %c = load i32, ptr %mem
br label %loop_begin
loop_begin:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
switch i32 %c, label %default [
i32 1, label %inc
@@ -69,16 +69,16 @@ loop_exit:
; the convergent call that is not control-dependent on the unswitch condition.
; CHECK-LABEL: @test3(
-define i32 @test3(i32* %var) {
+define i32 @test3(ptr %var) {
%mem = alloca i32
- store i32 2, i32* %mem
- %c = load i32, i32* %mem
+ store i32 2, ptr %mem
+ %c = load i32, ptr %mem
br label %loop_begin
loop_begin:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
; CHECK: call void @conv()
; CHECK-NOT: call void @conv()
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/catchswitch.ll b/llvm/test/Transforms/SimpleLoopUnswitch/catchswitch.ll
index f0bc312badfd2..303de221b005c 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/catchswitch.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/catchswitch.ll
@@ -6,7 +6,7 @@ declare i32 @__gxx_wasm_personality_v0(...)
declare void @foo()
-define void @test(i1 %arg) personality i8* bitcast (i32 (...)* @__gxx_wasm_personality_v0 to i8*) {
+define void @test(i1 %arg) personality ptr @__gxx_wasm_personality_v0 {
entry:
br label %while.body
@@ -24,7 +24,7 @@ catch.dispatch: ; preds = %invoke.cont, %if.en
%0 = catchswitch within none [label %catch] unwind to caller
catch: ; preds = %catch.dispatch
- %1 = catchpad within %0 [i8* null]
+ %1 = catchpad within %0 [ptr null]
unreachable
cleanup: ; preds = %invoke.cont
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/cleanuppad.ll b/llvm/test/Transforms/SimpleLoopUnswitch/cleanuppad.ll
index f9dc2804645be..3fd9ced64d765 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/cleanuppad.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/cleanuppad.ll
@@ -1,7 +1,7 @@
; RUN: opt -S -passes=simple-loop-unswitch -verify-memoryssa < %s | FileCheck %s
target triple = "x86_64-pc-win32"
-define void @f(i32 %doit, i1 %x, i1 %y) personality i32 (...)* @__CxxFrameHandler3 {
+define void @f(i32 %doit, i1 %x, i1 %y) personality ptr @__CxxFrameHandler3 {
entry:
%tobool = icmp eq i32 %doit, 0
br label %for.cond
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/crash.ll b/llvm/test/Transforms/SimpleLoopUnswitch/crash.ll
index 9bf061efb9f47..a7f4c08ef874b 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/crash.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/crash.ll
@@ -1,6 +1,6 @@
; RUN: opt < %s -passes=simple-loop-unswitch -verify-memoryssa -disable-output
-define void @test1(i32* %S2) {
+define void @test1(ptr %S2) {
entry:
br i1 false, label %list_Length.exit, label %cond_true.i
cond_true.i: ; preds = %entry
@@ -20,7 +20,7 @@ bb62: ; preds = %bb62.loopexit, %bb44
cond_next68: ; preds = %bb62
br i1 false, label %return.loopexit, label %bb44
bb78: ; preds = %list_Length.exit9
- %tmp49.not = icmp eq i32* %S2, null ; <i1> [#uses=1]
+ %tmp49.not = icmp eq ptr %S2, null ; <i1> [#uses=1]
br label %bb44
return.loopexit: ; preds = %cond_next68, %bb62
%retval.0.ph = phi i32 [ 1, %cond_next68 ], [ 0, %bb62 ] ; <i32> [#uses=1]
@@ -47,7 +47,7 @@ for.end: ; preds = %for.body, %entry
}
; PR6879
-define i32* @test3(i32** %p_45, i16 zeroext %p_46, i64 %p_47, i64 %p_48, i16 signext %p_49) nounwind {
+define ptr @test3(ptr %p_45, i16 zeroext %p_46, i64 %p_47, i64 %p_48, i16 signext %p_49) nounwind {
entry:
br label %for.cond
@@ -62,5 +62,5 @@ for.cond4: ; preds = %for.cond
br label %for.cond
for.end88: ; preds = %for.cond
- ret i32* undef
+ ret ptr undef
}
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/endless-unswitch.ll b/llvm/test/Transforms/SimpleLoopUnswitch/endless-unswitch.ll
index 313748d67f3e0..0d3aa8b243109 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/endless-unswitch.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/endless-unswitch.ll
@@ -21,7 +21,7 @@ define dso_local void @d() {
; CHECK: for.cond:
; CHECK-NEXT: br i1 false, label [[FOR_END:%.*]], label [[FOR_COND]]
; CHECK: for.end:
-; CHECK-NEXT: [[TMP0:%.*]] = load i16, i16* null, align 2
+; CHECK-NEXT: [[TMP0:%.*]] = load i16, ptr null, align 2
; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i16 [[TMP0]], 0
; CHECK-NEXT: br i1 [[TMP1]], label [[FOR_END_SPLIT:%.*]], label [[FOR_END_SPLIT_US:%.*]]
; CHECK: for.end.split.us:
@@ -29,13 +29,13 @@ define dso_local void @d() {
; CHECK: g.us:
; CHECK-NEXT: br label [[G_SPLIT_US6:%.*]]
; CHECK: for.cond1.us1:
-; CHECK-NEXT: [[TMP2:%.*]] = load i16, i16* null, align 2
+; CHECK-NEXT: [[TMP2:%.*]] = load i16, ptr null, align 2
; CHECK-NEXT: [[TOBOOL4_NOT_US:%.*]] = icmp eq i16 [[TMP2]], 0
; CHECK-NEXT: br i1 [[TOBOOL4_NOT_US]], label [[FOR_COND5_PREHEADER_US4:%.*]], label [[G_LOOPEXIT_US:%.*]]
; CHECK: for.cond5.us2:
; CHECK-NEXT: br i1 false, label [[FOR_COND1_LOOPEXIT_US5:%.*]], label [[FOR_INC_US3:%.*]]
; CHECK: for.inc.us3:
-; CHECK-NEXT: store i8 0, i8* @b, align 1
+; CHECK-NEXT: store i8 0, ptr @b, align 1
; CHECK-NEXT: br label [[FOR_COND5_US2:%.*]]
; CHECK: for.cond5.preheader.us4:
; CHECK-NEXT: br label [[FOR_COND5_US2]]
@@ -50,7 +50,7 @@ define dso_local void @d() {
; CHECK: g.loopexit:
; CHECK-NEXT: br label [[G]], !llvm.loop [[LOOP2:![0-9]+]]
; CHECK: g:
-; CHECK-NEXT: [[TMP3:%.*]] = load i16, i16* null, align 2
+; CHECK-NEXT: [[TMP3:%.*]] = load i16, ptr null, align 2
; CHECK-NEXT: [[TMP4:%.*]] = icmp eq i16 [[TMP3]], 0
; CHECK-NEXT: br i1 [[TMP4]], label [[G_SPLIT_US:%.*]], label [[G_SPLIT:%.*]]
; CHECK: g.split.us:
@@ -60,7 +60,7 @@ define dso_local void @d() {
; CHECK: for.cond5.us:
; CHECK-NEXT: br i1 false, label [[FOR_COND1_LOOPEXIT_US:%.*]], label [[FOR_INC_US:%.*]]
; CHECK: for.inc.us:
-; CHECK-NEXT: store i8 0, i8* @b, align 1
+; CHECK-NEXT: store i8 0, ptr @b, align 1
; CHECK-NEXT: br label [[FOR_COND5_US:%.*]]
; CHECK: for.cond5.preheader.us:
; CHECK-NEXT: br label [[FOR_COND5_US]]
@@ -71,7 +71,7 @@ define dso_local void @d() {
; CHECK: for.cond1.loopexit:
; CHECK-NEXT: br label [[FOR_COND1]], !llvm.loop [[LOOP0]]
; CHECK: for.cond1:
-; CHECK-NEXT: [[TMP5:%.*]] = load i16, i16* null, align 2
+; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr null, align 2
; CHECK-NEXT: [[TOBOOL4_NOT:%.*]] = icmp eq i16 [[TMP5]], 0
; CHECK-NEXT: br i1 [[TOBOOL4_NOT]], label [[FOR_COND5_PREHEADER:%.*]], label [[G_LOOPEXIT:%.*]]
; CHECK: for.cond5.preheader:
@@ -79,7 +79,7 @@ define dso_local void @d() {
; CHECK: for.cond5:
; CHECK-NEXT: br i1 false, label [[FOR_COND1_LOOPEXIT:%.*]], label [[FOR_INC:%.*]]
; CHECK: for.inc:
-; CHECK-NEXT: store i8 0, i8* @b, align 1
+; CHECK-NEXT: store i8 0, ptr @b, align 1
; CHECK-NEXT: br label [[FOR_COND5]]
;
entry:
@@ -95,7 +95,7 @@ g: ; preds = %for.cond1, %for.end
br label %for.cond1
for.cond1: ; preds = %for.cond5, %g
- %0 = load i16, i16* null, align 2
+ %0 = load i16, ptr null, align 2
%tobool4.not = icmp eq i16 %0, 0
br i1 %tobool4.not, label %for.cond5, label %g
@@ -103,6 +103,6 @@ for.cond5: ; preds = %for.inc, %for.cond1
br i1 false, label %for.cond1, label %for.inc
for.inc: ; preds = %for.cond5
- store i8 0, i8* @b, align 1
+ store i8 0, ptr @b, align 1
br label %for.cond5
}
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/exponential-behavior.ll b/llvm/test/Transforms/SimpleLoopUnswitch/exponential-behavior.ll
index 2a6954a2259d1..2aa6b682ac406 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/exponential-behavior.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/exponential-behavior.ll
@@ -1,6 +1,6 @@
; RUN: opt -passes=simple-loop-unswitch -verify-memoryssa -S < %s | FileCheck %s
-define void @f(i32 %n, i32* %ptr) {
+define void @f(i32 %n, ptr %ptr) {
; CHECK-LABEL: @f(
entry:
br label %loop
@@ -42,7 +42,7 @@ loop:
br i1 %us.29, label %leave, label %be
be:
- store volatile i32 0, i32* %ptr
+ store volatile i32 0, ptr %ptr
%becond = icmp ult i32 %iv.inc, %n
br i1 %becond, label %leave, label %loop
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch-nested.ll b/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch-nested.ll
index 54b0eb2f080d7..f82d7309f6d07 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch-nested.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch-nested.ll
@@ -75,11 +75,10 @@
declare void @bar()
-define void @loop_nested3_conds5(i32* %addr, i1 %c1, i1 %c2, i1 %c3, i1 %c4, i1 %c5) {
+define void @loop_nested3_conds5(ptr %addr, i1 %c1, i1 %c2, i1 %c3, i1 %c4, i1 %c5) {
entry:
- %addr1 = getelementptr i32, i32* %addr, i64 0
- %addr2 = getelementptr i32, i32* %addr, i64 1
- %addr3 = getelementptr i32, i32* %addr, i64 2
+ %addr2 = getelementptr i32, ptr %addr, i64 1
+ %addr3 = getelementptr i32, ptr %addr, i64 2
br label %outer
outer:
%iv1 = phi i32 [0, %entry], [%iv1.next, %outer_latch]
@@ -133,15 +132,15 @@ loop_latch_right:
br label %loop_latch
loop_latch:
- store volatile i32 0, i32* %addr1
+ store volatile i32 0, ptr %addr
%test_loop = icmp slt i32 %iv3, 50
br i1 %test_loop, label %loop, label %middle_latch
middle_latch:
- store volatile i32 0, i32* %addr2
+ store volatile i32 0, ptr %addr2
%test_middle = icmp slt i32 %iv2, 50
br i1 %test_middle, label %middle, label %outer_latch
outer_latch:
- store volatile i32 0, i32* %addr3
+ store volatile i32 0, ptr %addr3
%test_outer = icmp slt i32 %iv1, 50
br i1 %test_outer, label %outer, label %exit
exit:
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch-nested2.ll b/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch-nested2.ll
index 036fc0fb2456b..63d2789da5a82 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch-nested2.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch-nested2.ll
@@ -86,11 +86,10 @@
declare void @bar()
-define void @loop_nested3_conds5(i32* %addr, i1 %c1, i1 %c2, i1 %c3, i1 %c4, i1 %c5) {
+define void @loop_nested3_conds5(ptr %addr, i1 %c1, i1 %c2, i1 %c3, i1 %c4, i1 %c5) {
entry:
- %addr1 = getelementptr i32, i32* %addr, i64 0
- %addr2 = getelementptr i32, i32* %addr, i64 1
- %addr3 = getelementptr i32, i32* %addr, i64 2
+ %addr2 = getelementptr i32, ptr %addr, i64 1
+ %addr3 = getelementptr i32, ptr %addr, i64 2
br label %outer
outer:
%iv1 = phi i32 [0, %entry], [%iv1.next, %outer_latch]
@@ -144,15 +143,15 @@ loop_latch_right:
br label %loop_latch
loop_latch:
- store volatile i32 0, i32* %addr1
+ store volatile i32 0, ptr %addr
%test_loop = icmp slt i32 %iv3, 50
br i1 %test_loop, label %loop, label %middle_latch
middle_latch:
- store volatile i32 0, i32* %addr2
+ store volatile i32 0, ptr %addr2
%test_middle = icmp slt i32 %iv2, 50
br i1 %test_middle, label %middle, label %outer_latch
outer_latch:
- store volatile i32 0, i32* %addr3
+ store volatile i32 0, ptr %addr3
%test_outer = icmp slt i32 %iv1, 50
br i1 %test_outer, label %outer, label %exit
exit:
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch.ll b/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch.ll
index 96df0b7012d57..a2a745f46bca7 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch.ll
@@ -66,7 +66,7 @@
; LOOP32-COUNT-32: Loop at depth 1 containing:
; LOOP32-NOT: Loop at depth 1 containing:
-define void @loop_simple5(i32* %addr, i1 %c1, i1 %c2, i1 %c3, i1 %c4, i1 %c5) {
+define void @loop_simple5(ptr %addr, i1 %c1, i1 %c2, i1 %c3, i1 %c4, i1 %c5) {
entry:
br label %loop
loop:
@@ -92,7 +92,7 @@ loop_next4:
loop_latch_right:
br label %loop_latch
loop_latch:
- store volatile i32 0, i32* %addr
+ store volatile i32 0, ptr %addr
%test_loop = icmp slt i32 %iv, 50
br i1 %test_loop, label %loop, label %exit
exit:
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch2.ll b/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch2.ll
index 907bd204d8b32..283958d01ae92 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch2.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/exponential-nontrivial-unswitch2.ll
@@ -50,7 +50,7 @@
declare void @bar()
-define void @loop_simple5(i32* %addr, i1 %c1, i1 %c2, i1 %c3, i1 %c4, i1 %c5) {
+define void @loop_simple5(ptr %addr, i1 %c1, i1 %c2, i1 %c3, i1 %c4, i1 %c5) {
entry:
br label %loop
loop:
@@ -68,7 +68,7 @@ loop_next3:
loop_next4:
br i1 %c5, label %loop_latch, label %exit
loop_latch:
- store volatile i32 0, i32* %addr
+ store volatile i32 0, ptr %addr
%test_loop = icmp slt i32 %iv, 50
br i1 %test_loop, label %loop, label %exit
exit:
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/exponential-switch-unswitch.ll b/llvm/test/Transforms/SimpleLoopUnswitch/exponential-switch-unswitch.ll
index 725873867a626..96fe899d69c3b 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/exponential-switch-unswitch.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/exponential-switch-unswitch.ll
@@ -76,10 +76,9 @@
; LOOP-MAX-COUNT-111: Loop at depth 2 containing:
; LOOP-MAX-NOT: Loop at depth 2 containing:
-define i32 @loop_switch(i32* %addr, i32 %c1, i32 %c2) {
+define i32 @loop_switch(ptr %addr, i32 %c1, i32 %c2) {
entry:
- %addr1 = getelementptr i32, i32* %addr, i64 0
- %addr2 = getelementptr i32, i32* %addr, i64 1
+ %addr2 = getelementptr i32, ptr %addr, i64 1
%check0 = icmp eq i32 %c2, 0
%check1 = icmp eq i32 %c2, 31
%check2 = icmp eq i32 %c2, 32
@@ -114,12 +113,12 @@ case0:
br i1 %check0, label %exit, label %inner_latch
inner_latch:
- store volatile i32 0, i32* %addr1
+ store volatile i32 0, ptr %addr
%test_inner = icmp slt i32 %iv2, 50
br i1 %test_inner, label %inner_loop, label %outer_latch
outer_latch:
- store volatile i32 0, i32* %addr2
+ store volatile i32 0, ptr %addr2
%test_outer = icmp slt i32 %iv1, 50
br i1 %test_outer, label %outer_loop, label %exit
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/guards.ll b/llvm/test/Transforms/SimpleLoopUnswitch/guards.ll
index 41725204082fd..0123d2246ad23 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/guards.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/guards.ll
@@ -219,7 +219,7 @@ exit:
; CHECK-LABEL: @test_cleanuppad(
; CHECK: call void (i1, ...) @llvm.experimental.guard(i1 %cond) [ "deopt"() ]
; CHECK-NOT: call void (i1, ...) @llvm.experimental.guard(
-define void @test_cleanuppad(i1 %cond, i32 %N) personality i32 (...)* @__CxxFrameHandler3 {
+define void @test_cleanuppad(i1 %cond, i32 %N) personality ptr @__CxxFrameHandler3 {
entry:
br label %loop
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/implicit-null-checks.ll b/llvm/test/Transforms/SimpleLoopUnswitch/implicit-null-checks.ll
index 9fe52925c3868..94ad65738804a 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/implicit-null-checks.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/implicit-null-checks.ll
@@ -9,17 +9,17 @@ declare void @throw_npe()
; unswitched because we may exit loop before we reach the condition, so
; there is no guarantee that following implicit branch always means getting
; to throw_npe block.
-define i32 @test_should_drop_make_implicit(i32* %p1, i32* %p2) {
+define i32 @test_should_drop_make_implicit(ptr %p1, ptr %p2) {
; CHECK-LABEL: @test_should_drop_make_implicit(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[NULL_CHECK:%.*]] = icmp eq i32* [[P2:%.*]], null
+; CHECK-NEXT: [[NULL_CHECK:%.*]] = icmp eq ptr [[P2:%.*]], null
; CHECK-NEXT: [[NULL_CHECK_FR:%.*]] = freeze i1 [[NULL_CHECK]]
; CHECK-NEXT: br i1 [[NULL_CHECK_FR]], label [[ENTRY_SPLIT_US:%.*]], label [[ENTRY_SPLIT:%.*]]
; CHECK: entry.split.us:
; CHECK-NEXT: br label [[LOOP_US:%.*]]
; CHECK: loop.us:
; CHECK-NEXT: [[IV_US:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT_US]] ]
-; CHECK-NEXT: [[X_US:%.*]] = load i32, i32* [[P1:%.*]], align 4
+; CHECK-NEXT: [[X_US:%.*]] = load i32, ptr [[P1:%.*]], align 4
; CHECK-NEXT: [[SIDE_EXIT_COND_US:%.*]] = icmp eq i32 [[X_US]], 0
; CHECK-NEXT: br i1 [[SIDE_EXIT_COND_US]], label [[SIDE_EXIT_SPLIT_US:%.*]], label [[NULL_CHECK_BLOCK_US:%.*]]
; CHECK: null_check_block.us:
@@ -32,7 +32,7 @@ define i32 @test_should_drop_make_implicit(i32* %p1, i32* %p2) {
; CHECK-NEXT: br label [[LOOP:%.*]]
; CHECK: loop:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ]
-; CHECK-NEXT: [[X:%.*]] = load i32, i32* [[P1]], align 4
+; CHECK-NEXT: [[X:%.*]] = load i32, ptr [[P1]], align 4
; CHECK-NEXT: [[SIDE_EXIT_COND:%.*]] = icmp eq i32 [[X]], 0
; CHECK-NEXT: br i1 [[SIDE_EXIT_COND]], label [[SIDE_EXIT_SPLIT:%.*]], label [[NULL_CHECK_BLOCK:%.*]]
; CHECK: null_check_block:
@@ -53,11 +53,11 @@ define i32 @test_should_drop_make_implicit(i32* %p1, i32* %p2) {
; CHECK-NEXT: ret i32 [[X_LCSSA2]]
;
entry:
- %null_check = icmp eq i32* %p2, null
+ %null_check = icmp eq ptr %p2, null
br label %loop
loop:
%iv = phi i32 [0, %entry], [%iv.next, %backedge]
- %x = load i32, i32* %p1
+ %x = load i32, ptr %p1
%side_exit_cond = icmp eq i32 %x, 0
br i1 %side_exit_cond, label %side_exit, label %null_check_block
@@ -82,16 +82,16 @@ exit:
; Here make.implicit notion may be preserved because we always get to throw_npe
; after following true branch. This is a trivial unswitch.
-define i32 @test_may_keep_make_implicit_trivial(i32* %p1, i32* %p2) {
+define i32 @test_may_keep_make_implicit_trivial(ptr %p1, ptr %p2) {
; CHECK-LABEL: @test_may_keep_make_implicit_trivial(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[NULL_CHECK:%.*]] = icmp eq i32* [[P2:%.*]], null
+; CHECK-NEXT: [[NULL_CHECK:%.*]] = icmp eq ptr [[P2:%.*]], null
; CHECK-NEXT: br i1 [[NULL_CHECK]], label [[THROW_NPE:%.*]], label [[ENTRY_SPLIT:%.*]], !make.implicit !0
; CHECK: entry.split:
; CHECK-NEXT: br label [[LOOP:%.*]]
; CHECK: loop:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ]
-; CHECK-NEXT: [[X:%.*]] = load i32, i32* [[P1:%.*]], align 4
+; CHECK-NEXT: [[X:%.*]] = load i32, ptr [[P1:%.*]], align 4
; CHECK-NEXT: [[SIDE_EXIT_COND:%.*]] = icmp eq i32 [[X]], 0
; CHECK-NEXT: br label [[SIDE_EXIT_BLOCK:%.*]]
; CHECK: side_exit_block:
@@ -110,11 +110,11 @@ define i32 @test_may_keep_make_implicit_trivial(i32* %p1, i32* %p2) {
; CHECK-NEXT: ret i32 [[X_LCSSA2]]
;
entry:
- %null_check = icmp eq i32* %p2, null
+ %null_check = icmp eq ptr %p2, null
br label %loop
loop:
%iv = phi i32 [0, %entry], [%iv.next, %backedge]
- %x = load i32, i32* %p1
+ %x = load i32, ptr %p1
%side_exit_cond = icmp eq i32 %x, 0
br i1 %null_check, label %throw_npe, label %side_exit_block, !make.implicit !0
@@ -137,16 +137,16 @@ exit:
ret i32 %x
}
-define i32 @test_may_keep_make_implicit_non_trivial(i32* %p1, i32* %p2) {
+define i32 @test_may_keep_make_implicit_non_trivial(ptr %p1, ptr %p2) {
; CHECK-LABEL: @test_may_keep_make_implicit_non_trivial(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[NULL_CHECK:%.*]] = icmp eq i32* [[P2:%.*]], null
+; CHECK-NEXT: [[NULL_CHECK:%.*]] = icmp eq ptr [[P2:%.*]], null
; CHECK-NEXT: br i1 [[NULL_CHECK]], label [[ENTRY_SPLIT_US:%.*]], label [[ENTRY_SPLIT:%.*]], !make.implicit !0
; CHECK: entry.split.us:
; CHECK-NEXT: br label [[LOOP_US:%.*]]
; CHECK: loop.us:
; CHECK-NEXT: [[IV_US:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT_US]] ]
-; CHECK-NEXT: [[X_US:%.*]] = load i32, i32* [[P1:%.*]], align 4
+; CHECK-NEXT: [[X_US:%.*]] = load i32, ptr [[P1:%.*]], align 4
; CHECK-NEXT: [[INNER_BLOCK_COND_US:%.*]] = icmp eq i32 [[X_US]], 0
; CHECK-NEXT: br i1 [[INNER_BLOCK_COND_US]], label [[INNER_BLOCK_US:%.*]], label [[NULL_CHECK_BLOCK_US:%.*]]
; CHECK: inner_block.us:
@@ -159,7 +159,7 @@ define i32 @test_may_keep_make_implicit_non_trivial(i32* %p1, i32* %p2) {
; CHECK-NEXT: br label [[LOOP:%.*]]
; CHECK: loop:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ]
-; CHECK-NEXT: [[X:%.*]] = load i32, i32* [[P1]], align 4
+; CHECK-NEXT: [[X:%.*]] = load i32, ptr [[P1]], align 4
; CHECK-NEXT: [[INNER_BLOCK_COND:%.*]] = icmp eq i32 [[X]], 0
; CHECK-NEXT: br i1 [[INNER_BLOCK_COND]], label [[INNER_BLOCK:%.*]], label [[NULL_CHECK_BLOCK:%.*]]
; CHECK: inner_block:
@@ -178,11 +178,11 @@ define i32 @test_may_keep_make_implicit_non_trivial(i32* %p1, i32* %p2) {
; CHECK-NEXT: ret i32 [[X_LCSSA1]]
;
entry:
- %null_check = icmp eq i32* %p2, null
+ %null_check = icmp eq ptr %p2, null
br label %loop
loop:
%iv = phi i32 [0, %entry], [%iv.next, %backedge]
- %x = load i32, i32* %p1
+ %x = load i32, ptr %p1
%inner_block_cond = icmp eq i32 %x, 0
br i1 %inner_block_cond, label %inner_block, label %null_check_block
@@ -206,10 +206,10 @@ exit:
}
; Here make.implicit notion should be dropped because of exiting call.
-define i32 @test_should_drop_make_implicit_exiting_call(i32* %p1, i32* %p2) {
+define i32 @test_should_drop_make_implicit_exiting_call(ptr %p1, ptr %p2) {
; CHECK-LABEL: @test_should_drop_make_implicit_exiting_call(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[NULL_CHECK:%.*]] = icmp eq i32* [[P2:%.*]], null
+; CHECK-NEXT: [[NULL_CHECK:%.*]] = icmp eq ptr [[P2:%.*]], null
; CHECK-NEXT: [[NULL_CHECK_FR:%.*]] = freeze i1 [[NULL_CHECK]]
; CHECK-NEXT: br i1 [[NULL_CHECK_FR]], label [[ENTRY_SPLIT_US:%.*]], label [[ENTRY_SPLIT:%.*]]
; CHECK: entry.split.us:
@@ -217,7 +217,7 @@ define i32 @test_should_drop_make_implicit_exiting_call(i32* %p1, i32* %p2) {
; CHECK: loop.us:
; CHECK-NEXT: [[IV_US:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT_US]] ]
; CHECK-NEXT: call void @may_exit()
-; CHECK-NEXT: [[X_US:%.*]] = load i32, i32* [[P1:%.*]], align 4
+; CHECK-NEXT: [[X_US:%.*]] = load i32, ptr [[P1:%.*]], align 4
; CHECK-NEXT: [[SIDE_EXIT_COND_US:%.*]] = icmp eq i32 [[X_US]], 0
; CHECK-NEXT: br label [[THROW_NPE_SPLIT_US:%.*]]
; CHECK: throw_npe.split.us:
@@ -227,7 +227,7 @@ define i32 @test_should_drop_make_implicit_exiting_call(i32* %p1, i32* %p2) {
; CHECK: loop:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ]
; CHECK-NEXT: call void @may_exit()
-; CHECK-NEXT: [[X:%.*]] = load i32, i32* [[P1]], align 4
+; CHECK-NEXT: [[X:%.*]] = load i32, ptr [[P1]], align 4
; CHECK-NEXT: [[SIDE_EXIT_COND:%.*]] = icmp eq i32 [[X]], 0
; CHECK-NEXT: br label [[BACKEDGE]]
; CHECK: backedge:
@@ -242,12 +242,12 @@ define i32 @test_should_drop_make_implicit_exiting_call(i32* %p1, i32* %p2) {
; CHECK-NEXT: ret i32 [[X_LCSSA1]]
;
entry:
- %null_check = icmp eq i32* %p2, null
+ %null_check = icmp eq ptr %p2, null
br label %loop
loop:
%iv = phi i32 [0, %entry], [%iv.next, %backedge]
call void @may_exit()
- %x = load i32, i32* %p1
+ %x = load i32, ptr %p1
%side_exit_cond = icmp eq i32 %x, 0
br i1 %null_check, label %throw_npe, label %backedge, !make.implicit !0
@@ -265,16 +265,16 @@ exit:
}
; Here exiting call goes after the null check, so make.implicit may be preserved.
-define i32 @test_may_keep_make_implicit_exiting_call(i32* %p1, i32* %p2) {
+define i32 @test_may_keep_make_implicit_exiting_call(ptr %p1, ptr %p2) {
; CHECK-LABEL: @test_may_keep_make_implicit_exiting_call(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[NULL_CHECK:%.*]] = icmp eq i32* [[P2:%.*]], null
+; CHECK-NEXT: [[NULL_CHECK:%.*]] = icmp eq ptr [[P2:%.*]], null
; CHECK-NEXT: br i1 [[NULL_CHECK]], label [[THROW_NPE:%.*]], label [[ENTRY_SPLIT:%.*]], !make.implicit !0
; CHECK: entry.split:
; CHECK-NEXT: br label [[LOOP:%.*]]
; CHECK: loop:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT]] ], [ [[IV_NEXT:%.*]], [[BACKEDGE:%.*]] ]
-; CHECK-NEXT: [[X:%.*]] = load i32, i32* [[P1:%.*]], align 4
+; CHECK-NEXT: [[X:%.*]] = load i32, ptr [[P1:%.*]], align 4
; CHECK-NEXT: [[SIDE_EXIT_COND:%.*]] = icmp eq i32 [[X]], 0
; CHECK-NEXT: br label [[BACKEDGE]]
; CHECK: backedge:
@@ -290,11 +290,11 @@ define i32 @test_may_keep_make_implicit_exiting_call(i32* %p1, i32* %p2) {
; CHECK-NEXT: ret i32 [[X_LCSSA1]]
;
entry:
- %null_check = icmp eq i32* %p2, null
+ %null_check = icmp eq ptr %p2, null
br label %loop
loop:
%iv = phi i32 [0, %entry], [%iv.next, %backedge]
- %x = load i32, i32* %p1
+ %x = load i32, ptr %p1
%side_exit_cond = icmp eq i32 %x, 0
br i1 %null_check, label %throw_npe, label %backedge, !make.implicit !0
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/msan.ll b/llvm/test/Transforms/SimpleLoopUnswitch/msan.ll
index 3f04bcd82f81f..3b65eefdf67d5 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/msan.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/msan.ll
@@ -22,22 +22,22 @@ declare void @unknown2()
; Test that the branch on "y" is inside the loop (after the first unconditional
; branch).
-define void @may_not_execute_trivial(i1* %x) sanitize_memory {
+define void @may_not_execute_trivial(ptr %x) sanitize_memory {
; CHECK-LABEL: @may_not_execute_trivial(
entry:
- %y = load i64, i64* @y, align 8
+ %y = load i64, ptr @y, align 8
%y.cmp = icmp eq i64 %y, 0
br label %for.body
-; CHECK: %[[Y:.*]] = load i64, i64* @y
+; CHECK: %[[Y:.*]] = load i64, ptr @y
; CHECK: %[[YCMP:.*]] = icmp eq i64 %[[Y]], 0
; CHECK-NOT: br i1
; CHECK: br label %for.body
for.body:
%i = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
- %x.load = load i1, i1* %x
+ %x.load = load i1, ptr %x
br i1 %x.load, label %for.inc, label %if.then
-; CHECK: %[[XLOAD:.*]] = load i1, i1* %x
+; CHECK: %[[XLOAD:.*]] = load i1, ptr %x
; CHECK: br i1 %[[XLOAD]]
if.then:
@@ -62,7 +62,7 @@ for.end:
; This shows that it is not enough to suppress hoisting of load instructions,
; the actual problem is in the speculative branching.
-define void @may_not_execute2_trivial(i1* %x, i1 %y) sanitize_memory {
+define void @may_not_execute2_trivial(ptr %x, i1 %y) sanitize_memory {
; CHECK-LABEL: @may_not_execute2_trivial(
entry:
br label %for.body
@@ -71,9 +71,9 @@ entry:
for.body:
%i = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
- %x.load = load i1, i1* %x
+ %x.load = load i1, ptr %x
br i1 %x.load, label %for.inc, label %if.then
-; CHECK: %[[XLOAD:.*]] = load i1, i1* %x
+; CHECK: %[[XLOAD:.*]] = load i1, ptr %x
; CHECK: br i1 %[[XLOAD]]
if.then:
@@ -108,10 +108,10 @@ for.end:
define void @must_execute_trivial() sanitize_memory {
; CHECK-LABEL: @must_execute_trivial(
entry:
- %y = load i64, i64* @y, align 8
+ %y = load i64, ptr @y, align 8
%y.cmp = icmp eq i64 %y, 0
br label %for.body
-; CHECK: %[[Y:.*]] = load i64, i64* @y
+; CHECK: %[[Y:.*]] = load i64, ptr @y
; CHECK: %[[YCMP:.*]] = icmp eq i64 %[[Y]], 0
; CHECK: br i1 %[[YCMP]], label %[[EXIT_SPLIT:.*]], label %[[PH:.*]]
;
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-cost.ll b/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-cost.ll
index f7224d310ea0e..10bd04f784985 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-cost.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-cost.ll
@@ -10,7 +10,7 @@ declare void @x()
; First establish enough code size in the duplicated 'loop_begin' block to
; suppress unswitching.
-define void @test_no_unswitch(i1* %ptr, i1 %cond) {
+define void @test_no_unswitch(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_no_unswitch(
entry:
br label %loop_begin
@@ -42,7 +42,7 @@ loop_b:
br label %loop_latch
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
@@ -51,7 +51,7 @@ loop_exit:
; Now check that the smaller formulation of 'loop_begin' does in fact unswitch
; with our low threshold.
-define void @test_unswitch(i1* %ptr, i1 %cond) {
+define void @test_unswitch(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_unswitch(
entry:
br label %loop_begin
@@ -80,7 +80,7 @@ loop_a:
; CHECK-NEXT: br label %loop_latch.us
;
; CHECK: loop_latch.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin.us, label %loop_exit.split.us
;
; CHECK: loop_exit.split.us:
@@ -103,14 +103,14 @@ loop_b:
; CHECK-NEXT: br label %loop_latch
;
; CHECK: loop_latch:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin, label %loop_exit.split
;
; CHECK: loop_exit.split:
; CHECK-NEXT: br label %loop_exit
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
@@ -122,7 +122,7 @@ loop_exit:
; Check that even with large amounts of code on either side of the unswitched
; branch, if that code would be kept in only one of the unswitched clones it
; doesn't contribute to the cost.
-define void @test_unswitch_non_dup_code(i1* %ptr, i1 %cond) {
+define void @test_unswitch_non_dup_code(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_unswitch_non_dup_code(
entry:
br label %loop_begin
@@ -157,7 +157,7 @@ loop_a:
; CHECK-NEXT: br label %loop_latch.us
;
; CHECK: loop_latch.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin.us, label %loop_exit.split.us
;
; CHECK: loop_exit.split.us:
@@ -186,14 +186,14 @@ loop_b:
; CHECK-NEXT: br label %loop_latch
;
; CHECK: loop_latch:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin, label %loop_exit.split
;
; CHECK: loop_exit.split:
; CHECK-NEXT: br label %loop_exit
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
@@ -204,7 +204,7 @@ loop_exit:
; Much like with non-duplicated code directly in the successor, we also won't
; duplicate even interesting CFGs.
-define void @test_unswitch_non_dup_code_in_cfg(i1* %ptr, i1 %cond) {
+define void @test_unswitch_non_dup_code_in_cfg(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_unswitch_non_dup_code_in_cfg(
entry:
br label %loop_begin
@@ -217,7 +217,7 @@ loop_begin:
br i1 %cond, label %loop_a, label %loop_b
loop_a:
- %v1 = load i1, i1* %ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_a_a, label %loop_a_b
loop_a_a:
@@ -237,7 +237,7 @@ loop_a_b:
; CHECK-NEXT: br label %loop_a.us
;
; CHECK: loop_a.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_a_a.us, label %loop_a_b.us
;
; CHECK: loop_a_b.us:
@@ -249,14 +249,14 @@ loop_a_b:
; CHECK-NEXT: br label %loop_latch.us
;
; CHECK: loop_latch.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin.us, label %loop_exit.split.us
;
; CHECK: loop_exit.split.us:
; CHECK-NEXT: br label %loop_exit
loop_b:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_b_a, label %loop_b_b
loop_b_a:
@@ -276,7 +276,7 @@ loop_b_b:
; CHECK-NEXT: br label %loop_b
;
; CHECK: loop_b:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_b_a, label %loop_b_b
;
; CHECK: loop_b_a:
@@ -288,14 +288,14 @@ loop_b_b:
; CHECK-NEXT: br label %loop_latch
;
; CHECK: loop_latch:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin, label %loop_exit.split
;
; CHECK: loop_exit.split:
; CHECK-NEXT: br label %loop_exit
loop_latch:
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %loop_begin, label %loop_exit
loop_exit:
@@ -307,7 +307,7 @@ loop_exit:
; Check that even if there is *some* non-duplicated code on one side of an
; unswitch, we don't count any other code in the loop that will in fact have to
; be duplicated.
-define void @test_no_unswitch_non_dup_code(i1* %ptr, i1 %cond) {
+define void @test_no_unswitch_non_dup_code(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_no_unswitch_non_dup_code(
entry:
br label %loop_begin
@@ -325,7 +325,7 @@ loop_begin:
; CHECK-NEXT: br i1 %cond, label %loop_a, label %loop_b
loop_a:
- %v1 = load i1, i1* %ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_a_a, label %loop_a_b
loop_a_a:
@@ -337,7 +337,7 @@ loop_a_b:
br label %loop_latch
loop_b:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_b_a, label %loop_b_b
loop_b_a:
@@ -351,7 +351,7 @@ loop_b_b:
loop_latch:
call void @x()
call void @x()
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
@@ -361,7 +361,7 @@ loop_exit:
; Check that we still unswitch when the exit block contains lots of code, even
; though we do clone the exit block as part of unswitching. This should work
; because we should split the exit block before anything inside it.
-define void @test_unswitch_large_exit(i1* %ptr, i1 %cond) {
+define void @test_unswitch_large_exit(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_unswitch_large_exit(
entry:
br label %loop_begin
@@ -390,7 +390,7 @@ loop_a:
; CHECK-NEXT: br label %loop_latch.us
;
; CHECK: loop_latch.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin.us, label %loop_exit.split.us
;
; CHECK: loop_exit.split.us:
@@ -413,14 +413,14 @@ loop_b:
; CHECK-NEXT: br label %loop_latch
;
; CHECK: loop_latch:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin, label %loop_exit.split
;
; CHECK: loop_exit.split:
; CHECK-NEXT: br label %loop_exit
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
@@ -439,7 +439,7 @@ loop_exit:
; Check that we handle a dedicated exit edge unswitch which is still
; non-trivial and has lots of code in the exit.
-define void @test_unswitch_dedicated_exiting(i1* %ptr, i1 %cond) {
+define void @test_unswitch_dedicated_exiting(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_unswitch_dedicated_exiting(
entry:
br label %loop_begin
@@ -468,7 +468,7 @@ loop_a:
; CHECK-NEXT: br label %loop_latch.us
;
; CHECK: loop_latch.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin.us, label %loop_exit.split.us
;
; CHECK: loop_exit.split.us:
@@ -497,7 +497,7 @@ loop_b_exit:
; CHECK-NEXT: ret void
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-freeze.ll b/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-freeze.ll
index e5c2fee7b2f78..e511dac7fdca7 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-freeze.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-freeze.ll
@@ -18,11 +18,11 @@ declare i32 @cond.i32()
declare i32 @__CxxFrameHandler3(...)
-define i32 @test1_freeze(i1* %ptr0, i1* %ptr1, i1* %ptr2) {
+define i32 @test1_freeze(ptr %ptr0, ptr %ptr1, ptr %ptr2) {
; CHECK-LABEL: @test1_freeze(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[COND1:%.*]] = load i1, i1* [[PTR1:%.*]], align 1
-; CHECK-NEXT: [[COND2:%.*]] = load i1, i1* [[PTR2:%.*]], align 1
+; CHECK-NEXT: [[COND1:%.*]] = load i1, ptr [[PTR1:%.*]], align 1
+; CHECK-NEXT: [[COND2:%.*]] = load i1, ptr [[PTR2:%.*]], align 1
; CHECK-NEXT: br i1 [[COND1]], label [[ENTRY_SPLIT_US:%.*]], label [[ENTRY_SPLIT:%.*]]
; CHECK: entry.split.us:
; CHECK-NEXT: br label [[LOOP_BEGIN_US:%.*]]
@@ -32,7 +32,7 @@ define i32 @test1_freeze(i1* %ptr0, i1* %ptr1, i1* %ptr2) {
; CHECK-NEXT: [[TMP0:%.*]] = call i32 @a()
; CHECK-NEXT: br label [[LATCH_US:%.*]]
; CHECK: latch.us:
-; CHECK-NEXT: [[V_US:%.*]] = load i1, i1* [[PTR0:%.*]], align 1
+; CHECK-NEXT: [[V_US:%.*]] = load i1, ptr [[PTR0:%.*]], align 1
; CHECK-NEXT: br i1 [[V_US]], label [[LOOP_BEGIN_US]], label [[LOOP_EXIT_SPLIT_US:%.*]]
; CHECK: loop_exit.split.us:
; CHECK-NEXT: br label [[LOOP_EXIT:%.*]]
@@ -50,7 +50,7 @@ define i32 @test1_freeze(i1* %ptr0, i1* %ptr1, i1* %ptr2) {
; CHECK-NEXT: call void @sink3(i1 true)
; CHECK-NEXT: br label [[LATCH_US2:%.*]]
; CHECK: latch.us2:
-; CHECK-NEXT: [[V_US3:%.*]] = load i1, i1* [[PTR0]], align 1
+; CHECK-NEXT: [[V_US3:%.*]] = load i1, ptr [[PTR0]], align 1
; CHECK-NEXT: br i1 [[V_US3]], label [[LOOP_BEGIN_US1]], label [[LOOP_EXIT_SPLIT_SPLIT_US:%.*]]
; CHECK: loop_exit.split.split.us:
; CHECK-NEXT: br label [[LOOP_EXIT_SPLIT:%.*]]
@@ -65,7 +65,7 @@ define i32 @test1_freeze(i1* %ptr0, i1* %ptr1, i1* %ptr2) {
; CHECK-NEXT: call void @sink4(i1 false)
; CHECK-NEXT: br label [[LATCH:%.*]]
; CHECK: latch:
-; CHECK-NEXT: [[V:%.*]] = load i1, i1* [[PTR0]], align 1
+; CHECK-NEXT: [[V:%.*]] = load i1, ptr [[PTR0]], align 1
; CHECK-NEXT: br i1 [[V]], label [[LOOP_BEGIN]], label [[LOOP_EXIT_SPLIT_SPLIT:%.*]]
; CHECK: loop_exit.split.split:
; CHECK-NEXT: br label [[LOOP_EXIT_SPLIT]]
@@ -75,8 +75,8 @@ define i32 @test1_freeze(i1* %ptr0, i1* %ptr1, i1* %ptr2) {
; CHECK-NEXT: ret i32 0
;
entry:
- %cond1 = load i1, i1* %ptr1
- %cond2 = load i1, i1* %ptr2
+ %cond1 = load i1, ptr %ptr1
+ %cond2 = load i1, ptr %ptr2
br label %loop_begin
loop_begin:
@@ -105,7 +105,7 @@ loop_b_b:
; %cond2 is replaced to false
latch:
- %v = load i1, i1* %ptr0
+ %v = load i1, ptr %ptr0
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
@@ -116,36 +116,36 @@ loop_exit:
; produces a non-loop clone that can reach multiple exit blocks which are part
; of
diff erent outer loops we correctly divide the cloned loop blocks between
; the outer loops based on reachability.
-define i32 @test7a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test7a(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test7a(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
-; CHECK-NEXT: [[A:%.*]] = load i32, i32* [[A_PTR:%.*]], align 4
+; CHECK-NEXT: [[A:%.*]] = load i32, ptr [[A_PTR:%.*]], align 4
; CHECK-NEXT: br label [[INNER_LOOP_BEGIN:%.*]]
; CHECK: inner_loop_begin:
; CHECK-NEXT: [[A_PHI:%.*]] = phi i32 [ [[A]], [[LOOP_BEGIN]] ], [ [[A2:%.*]], [[INNER_INNER_LOOP_EXIT:%.*]] ]
-; CHECK-NEXT: [[COND:%.*]] = load i1, i1* [[COND_PTR:%.*]], align 1
-; CHECK-NEXT: [[B:%.*]] = load i32, i32* [[B_PTR:%.*]], align 4
+; CHECK-NEXT: [[COND:%.*]] = load i1, ptr [[COND_PTR:%.*]], align 1
+; CHECK-NEXT: [[B:%.*]] = load i32, ptr [[B_PTR:%.*]], align 4
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND]]
; CHECK-NEXT: br i1 [[COND_FR]], label [[INNER_LOOP_BEGIN_SPLIT_US:%.*]], label [[INNER_LOOP_BEGIN_SPLIT:%.*]]
; CHECK: inner_loop_begin.split.us:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN_US:%.*]]
; CHECK: inner_inner_loop_begin.us:
-; CHECK-NEXT: [[V1_US:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V1_US:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V1_US]], label [[INNER_INNER_LOOP_A_US:%.*]], label [[INNER_INNER_LOOP_B_US:%.*]]
; CHECK: inner_inner_loop_b.us:
-; CHECK-NEXT: [[V3_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V3_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V3_US]], label [[INNER_INNER_LOOP_EXIT_SPLIT_US:%.*]], label [[INNER_INNER_LOOP_C_US_LOOPEXIT:%.*]]
; CHECK: inner_inner_loop_a.us:
; CHECK-NEXT: [[A_PHI_LCSSA10:%.*]] = phi i32 [ [[A_PHI]], [[INNER_INNER_LOOP_BEGIN_US]] ]
; CHECK-NEXT: [[B_LCSSA6:%.*]] = phi i32 [ [[B]], [[INNER_INNER_LOOP_BEGIN_US]] ]
-; CHECK-NEXT: [[V2_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2_US]], label [[LOOP_EXIT_SPLIT_US:%.*]], label [[INNER_INNER_LOOP_C_US:%.*]]
; CHECK: inner_inner_loop_c.us.loopexit:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_C_US]]
; CHECK: inner_inner_loop_c.us:
-; CHECK-NEXT: [[V4_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V4_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V4_US]], label [[INNER_LOOP_EXIT_LOOPEXIT_SPLIT_US:%.*]], label [[INNER_INNER_LOOP_D_US:%.*]]
; CHECK: inner_inner_loop_d.us:
; CHECK-NEXT: br label [[INNER_LOOP_EXIT_LOOPEXIT_SPLIT_US]]
@@ -160,24 +160,24 @@ define i32 @test7a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
; CHECK: inner_loop_begin.split:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN:%.*]]
; CHECK: inner_inner_loop_begin:
-; CHECK-NEXT: [[V1:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V1:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V1]], label [[INNER_INNER_LOOP_A:%.*]], label [[INNER_INNER_LOOP_B:%.*]]
; CHECK: inner_inner_loop_a:
-; CHECK-NEXT: [[V2:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2]], label [[LOOP_EXIT_SPLIT:%.*]], label [[INNER_INNER_LOOP_C:%.*]]
; CHECK: inner_inner_loop_b:
-; CHECK-NEXT: [[V3:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V3:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V3]], label [[INNER_INNER_LOOP_EXIT_SPLIT:%.*]], label [[INNER_INNER_LOOP_C]]
; CHECK: inner_inner_loop_c:
-; CHECK-NEXT: [[V4:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V4:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V4]], label [[INNER_LOOP_EXIT_LOOPEXIT_SPLIT:%.*]], label [[INNER_INNER_LOOP_D:%.*]]
; CHECK: inner_inner_loop_d:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN]]
; CHECK: inner_inner_loop_exit.split:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_EXIT]]
; CHECK: inner_inner_loop_exit:
-; CHECK-NEXT: [[A2]] = load i32, i32* [[A_PTR]], align 4
-; CHECK-NEXT: [[V5:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[A2]] = load i32, ptr [[A_PTR]], align 4
+; CHECK-NEXT: [[V5:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V5]], label [[INNER_LOOP_EXIT_LOOPEXIT1:%.*]], label [[INNER_LOOP_BEGIN]]
; CHECK: inner_loop_exit.loopexit.split:
; CHECK-NEXT: br label [[INNER_LOOP_EXIT_LOOPEXIT]]
@@ -201,29 +201,29 @@ entry:
br label %loop_begin
loop_begin:
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br label %inner_loop_begin
inner_loop_begin:
%a.phi = phi i32 [ %a, %loop_begin ], [ %a2, %inner_inner_loop_exit ]
- %cond = load i1, i1* %cond.ptr
- %b = load i32, i32* %b.ptr
+ %cond = load i1, ptr %cond.ptr
+ %b = load i32, ptr %b.ptr
br label %inner_inner_loop_begin
inner_inner_loop_begin:
- %v1 = load i1, i1* %ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %inner_inner_loop_a, label %inner_inner_loop_b
inner_inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_exit, label %inner_inner_loop_c
inner_inner_loop_b:
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %inner_inner_loop_exit, label %inner_inner_loop_c
inner_inner_loop_c:
- %v4 = load i1, i1* %ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %inner_loop_exit, label %inner_inner_loop_d
inner_inner_loop_d:
@@ -233,8 +233,8 @@ inner_inner_loop_d:
; The original copy that continues to loop.
inner_inner_loop_exit:
- %a2 = load i32, i32* %a.ptr
- %v5 = load i1, i1* %ptr
+ %a2 = load i32, ptr %a.ptr
+ %v5 = load i1, ptr %ptr
br i1 %v5, label %inner_loop_exit, label %inner_loop_begin
inner_loop_exit:
@@ -249,32 +249,32 @@ loop_exit:
; Same pattern as @test7a but here the original loop becomes a non-loop that
; can reach multiple exit blocks which are part of
diff erent outer loops.
-define i32 @test7b(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test7b(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test7b(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
-; CHECK-NEXT: [[A:%.*]] = load i32, i32* [[A_PTR:%.*]], align 4
+; CHECK-NEXT: [[A:%.*]] = load i32, ptr [[A_PTR:%.*]], align 4
; CHECK-NEXT: br label [[INNER_LOOP_BEGIN:%.*]]
; CHECK: inner_loop_begin:
; CHECK-NEXT: [[A_PHI:%.*]] = phi i32 [ [[A]], [[LOOP_BEGIN]] ], [ [[A2:%.*]], [[INNER_INNER_LOOP_EXIT:%.*]] ]
-; CHECK-NEXT: [[COND:%.*]] = load i1, i1* [[COND_PTR:%.*]], align 1
-; CHECK-NEXT: [[B:%.*]] = load i32, i32* [[B_PTR:%.*]], align 4
+; CHECK-NEXT: [[COND:%.*]] = load i1, ptr [[COND_PTR:%.*]], align 1
+; CHECK-NEXT: [[B:%.*]] = load i32, ptr [[B_PTR:%.*]], align 4
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND]]
; CHECK-NEXT: br i1 [[COND_FR]], label [[INNER_LOOP_BEGIN_SPLIT_US:%.*]], label [[INNER_LOOP_BEGIN_SPLIT:%.*]]
; CHECK: inner_loop_begin.split.us:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN_US:%.*]]
; CHECK: inner_inner_loop_begin.us:
-; CHECK-NEXT: [[V1_US:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V1_US:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V1_US]], label [[INNER_INNER_LOOP_A_US:%.*]], label [[INNER_INNER_LOOP_B_US:%.*]]
; CHECK: inner_inner_loop_b.us:
-; CHECK-NEXT: [[V3_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V3_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V3_US]], label [[INNER_INNER_LOOP_EXIT_SPLIT_US:%.*]], label [[INNER_INNER_LOOP_C_US:%.*]]
; CHECK: inner_inner_loop_a.us:
-; CHECK-NEXT: [[V2_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2_US]], label [[LOOP_EXIT_SPLIT_US:%.*]], label [[INNER_INNER_LOOP_C_US]]
; CHECK: inner_inner_loop_c.us:
-; CHECK-NEXT: [[V4_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V4_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V4_US]], label [[INNER_LOOP_EXIT_LOOPEXIT_SPLIT_US:%.*]], label [[INNER_INNER_LOOP_D_US:%.*]]
; CHECK: inner_inner_loop_d.us:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN_US]]
@@ -289,28 +289,28 @@ define i32 @test7b(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
; CHECK: inner_loop_begin.split:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN:%.*]]
; CHECK: inner_inner_loop_begin:
-; CHECK-NEXT: [[V1:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V1:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V1]], label [[INNER_INNER_LOOP_A:%.*]], label [[INNER_INNER_LOOP_B:%.*]]
; CHECK: inner_inner_loop_a:
; CHECK-NEXT: [[A_PHI_LCSSA:%.*]] = phi i32 [ [[A_PHI]], [[INNER_INNER_LOOP_BEGIN]] ]
; CHECK-NEXT: [[B_LCSSA3:%.*]] = phi i32 [ [[B]], [[INNER_INNER_LOOP_BEGIN]] ]
-; CHECK-NEXT: [[V2:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2]], label [[LOOP_EXIT_SPLIT:%.*]], label [[INNER_INNER_LOOP_C:%.*]]
; CHECK: inner_inner_loop_b:
-; CHECK-NEXT: [[V3:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V3:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V3]], label [[INNER_INNER_LOOP_EXIT_SPLIT:%.*]], label [[INNER_INNER_LOOP_C_LOOPEXIT:%.*]]
; CHECK: inner_inner_loop_c.loopexit:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_C]]
; CHECK: inner_inner_loop_c:
-; CHECK-NEXT: [[V4:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V4:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V4]], label [[INNER_LOOP_EXIT_LOOPEXIT_SPLIT:%.*]], label [[INNER_INNER_LOOP_D:%.*]]
; CHECK: inner_inner_loop_d:
; CHECK-NEXT: br label [[INNER_LOOP_EXIT_LOOPEXIT_SPLIT]]
; CHECK: inner_inner_loop_exit.split:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_EXIT]]
; CHECK: inner_inner_loop_exit:
-; CHECK-NEXT: [[A2]] = load i32, i32* [[A_PTR]], align 4
-; CHECK-NEXT: [[V5:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[A2]] = load i32, ptr [[A_PTR]], align 4
+; CHECK-NEXT: [[V5:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V5]], label [[INNER_LOOP_EXIT_LOOPEXIT1:%.*]], label [[INNER_LOOP_BEGIN]]
; CHECK: inner_loop_exit.loopexit.split:
; CHECK-NEXT: br label [[INNER_LOOP_EXIT_LOOPEXIT]]
@@ -334,29 +334,29 @@ entry:
br label %loop_begin
loop_begin:
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br label %inner_loop_begin
inner_loop_begin:
%a.phi = phi i32 [ %a, %loop_begin ], [ %a2, %inner_inner_loop_exit ]
- %cond = load i1, i1* %cond.ptr
- %b = load i32, i32* %b.ptr
+ %cond = load i1, ptr %cond.ptr
+ %b = load i32, ptr %b.ptr
br label %inner_inner_loop_begin
inner_inner_loop_begin:
- %v1 = load i1, i1* %ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %inner_inner_loop_a, label %inner_inner_loop_b
inner_inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_exit, label %inner_inner_loop_c
inner_inner_loop_b:
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %inner_inner_loop_exit, label %inner_inner_loop_c
inner_inner_loop_c:
- %v4 = load i1, i1* %ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %inner_loop_exit, label %inner_inner_loop_d
inner_inner_loop_d:
@@ -366,8 +366,8 @@ inner_inner_loop_d:
; blocks.
inner_inner_loop_exit:
- %a2 = load i32, i32* %a.ptr
- %v5 = load i1, i1* %ptr
+ %a2 = load i32, ptr %a.ptr
+ %v5 = load i1, ptr %ptr
br i1 %v5, label %inner_loop_exit, label %inner_loop_begin
inner_loop_exit:
@@ -382,29 +382,29 @@ loop_exit:
; Test that when the exit block set of an inner loop changes to start at a less
; high level of the loop nest we correctly hoist the loop up the nest.
-define i32 @test8a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test8a(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test8a(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
-; CHECK-NEXT: [[A:%.*]] = load i32, i32* [[A_PTR:%.*]], align 4
+; CHECK-NEXT: [[A:%.*]] = load i32, ptr [[A_PTR:%.*]], align 4
; CHECK-NEXT: br label [[INNER_LOOP_BEGIN:%.*]]
; CHECK: inner_loop_begin:
; CHECK-NEXT: [[A_PHI:%.*]] = phi i32 [ [[A]], [[LOOP_BEGIN]] ], [ [[A2:%.*]], [[INNER_INNER_LOOP_EXIT:%.*]] ]
-; CHECK-NEXT: [[COND:%.*]] = load i1, i1* [[COND_PTR:%.*]], align 1
-; CHECK-NEXT: [[B:%.*]] = load i32, i32* [[B_PTR:%.*]], align 4
+; CHECK-NEXT: [[COND:%.*]] = load i1, ptr [[COND_PTR:%.*]], align 1
+; CHECK-NEXT: [[B:%.*]] = load i32, ptr [[B_PTR:%.*]], align 4
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND]]
; CHECK-NEXT: br i1 [[COND_FR]], label [[INNER_LOOP_BEGIN_SPLIT_US:%.*]], label [[INNER_LOOP_BEGIN_SPLIT:%.*]]
; CHECK: inner_loop_begin.split.us:
; CHECK-NEXT: [[A_PHI_LCSSA4:%.*]] = phi i32 [ [[A_PHI]], [[INNER_LOOP_BEGIN]] ]
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN_US:%.*]]
; CHECK: inner_inner_loop_begin.us:
-; CHECK-NEXT: [[V1_US:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V1_US:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V1_US]], label [[INNER_INNER_LOOP_A_US:%.*]], label [[INNER_INNER_LOOP_B_US:%.*]]
; CHECK: inner_inner_loop_b.us:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_LATCH_US:%.*]]
; CHECK: inner_inner_loop_a.us:
-; CHECK-NEXT: [[V2_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2_US]], label [[INNER_INNER_LOOP_LATCH_US]], label [[INNER_LOOP_EXIT_LOOPEXIT_SPLIT_US:%.*]]
; CHECK: inner_inner_loop_latch.us:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN_US]]
@@ -414,18 +414,18 @@ define i32 @test8a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
; CHECK: inner_loop_begin.split:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN:%.*]]
; CHECK: inner_inner_loop_begin:
-; CHECK-NEXT: [[V1:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V1:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V1]], label [[INNER_INNER_LOOP_A:%.*]], label [[INNER_INNER_LOOP_B:%.*]]
; CHECK: inner_inner_loop_a:
-; CHECK-NEXT: [[V2:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2]], label [[INNER_INNER_LOOP_LATCH:%.*]], label [[INNER_LOOP_EXIT_LOOPEXIT_SPLIT:%.*]]
; CHECK: inner_inner_loop_b:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_EXIT]]
; CHECK: inner_inner_loop_latch:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN]]
; CHECK: inner_inner_loop_exit:
-; CHECK-NEXT: [[A2]] = load i32, i32* [[A_PTR]], align 4
-; CHECK-NEXT: [[V4:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[A2]] = load i32, ptr [[A_PTR]], align 4
+; CHECK-NEXT: [[V4:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V4]], label [[INNER_LOOP_EXIT_LOOPEXIT1:%.*]], label [[INNER_LOOP_BEGIN]]
; CHECK: inner_loop_exit.loopexit.split:
; CHECK-NEXT: [[A_PHI_LCSSA2:%.*]] = phi i32 [ [[A_PHI]], [[INNER_INNER_LOOP_A]] ]
@@ -438,7 +438,7 @@ define i32 @test8a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
; CHECK-NEXT: br label [[INNER_LOOP_EXIT]]
; CHECK: inner_loop_exit:
; CHECK-NEXT: [[A_PHI3:%.*]] = phi i32 [ [[A_PHI_LCSSA]], [[INNER_LOOP_EXIT_LOOPEXIT1]] ], [ [[DOTUS_PHI]], [[INNER_LOOP_EXIT_LOOPEXIT]] ]
-; CHECK-NEXT: [[V5:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V5:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V5]], label [[LOOP_EXIT:%.*]], label [[LOOP_BEGIN]]
; CHECK: loop_exit:
; CHECK-NEXT: [[A_LCSSA:%.*]] = phi i32 [ [[A_PHI3]], [[INNER_LOOP_EXIT]] ]
@@ -448,21 +448,21 @@ entry:
br label %loop_begin
loop_begin:
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br label %inner_loop_begin
inner_loop_begin:
%a.phi = phi i32 [ %a, %loop_begin ], [ %a2, %inner_inner_loop_exit ]
- %cond = load i1, i1* %cond.ptr
- %b = load i32, i32* %b.ptr
+ %cond = load i1, ptr %cond.ptr
+ %b = load i32, ptr %b.ptr
br label %inner_inner_loop_begin
inner_inner_loop_begin:
- %v1 = load i1, i1* %ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %inner_inner_loop_a, label %inner_inner_loop_b
inner_inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %inner_inner_loop_latch, label %inner_loop_exit
inner_inner_loop_b:
@@ -474,12 +474,12 @@ inner_inner_loop_latch:
; The original region exits the loop earlier.
inner_inner_loop_exit:
- %a2 = load i32, i32* %a.ptr
- %v4 = load i1, i1* %ptr
+ %a2 = load i32, ptr %a.ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %inner_loop_exit, label %inner_loop_begin
inner_loop_exit:
- %v5 = load i1, i1* %ptr
+ %v5 = load i1, ptr %ptr
br i1 %v5, label %loop_exit, label %loop_begin
loop_exit:
@@ -489,28 +489,28 @@ loop_exit:
; Same pattern as @test8a but where the original loop looses an exit block and
; needs to be hoisted up the nest.
-define i32 @test8b(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test8b(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test8b(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
-; CHECK-NEXT: [[A:%.*]] = load i32, i32* [[A_PTR:%.*]], align 4
+; CHECK-NEXT: [[A:%.*]] = load i32, ptr [[A_PTR:%.*]], align 4
; CHECK-NEXT: br label [[INNER_LOOP_BEGIN:%.*]]
; CHECK: inner_loop_begin:
; CHECK-NEXT: [[A_PHI:%.*]] = phi i32 [ [[A]], [[LOOP_BEGIN]] ], [ [[A2:%.*]], [[INNER_INNER_LOOP_EXIT:%.*]] ]
-; CHECK-NEXT: [[COND:%.*]] = load i1, i1* [[COND_PTR:%.*]], align 1
-; CHECK-NEXT: [[B:%.*]] = load i32, i32* [[B_PTR:%.*]], align 4
+; CHECK-NEXT: [[COND:%.*]] = load i1, ptr [[COND_PTR:%.*]], align 1
+; CHECK-NEXT: [[B:%.*]] = load i32, ptr [[B_PTR:%.*]], align 4
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND]]
; CHECK-NEXT: br i1 [[COND_FR]], label [[INNER_LOOP_BEGIN_SPLIT_US:%.*]], label [[INNER_LOOP_BEGIN_SPLIT:%.*]]
; CHECK: inner_loop_begin.split.us:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN_US:%.*]]
; CHECK: inner_inner_loop_begin.us:
-; CHECK-NEXT: [[V1_US:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[V1_US:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V1_US]], label [[INNER_INNER_LOOP_A_US:%.*]], label [[INNER_INNER_LOOP_B_US:%.*]]
; CHECK: inner_inner_loop_b.us:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_EXIT_SPLIT_US:%.*]]
; CHECK: inner_inner_loop_a.us:
-; CHECK-NEXT: [[V2_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2_US]], label [[INNER_INNER_LOOP_LATCH_US:%.*]], label [[INNER_LOOP_EXIT_LOOPEXIT_SPLIT_US:%.*]]
; CHECK: inner_inner_loop_latch.us:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN_US]]
@@ -523,18 +523,18 @@ define i32 @test8b(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
; CHECK-NEXT: [[A_PHI_LCSSA4:%.*]] = phi i32 [ [[A_PHI]], [[INNER_LOOP_BEGIN]] ]
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN:%.*]]
; CHECK: inner_inner_loop_begin:
-; CHECK-NEXT: [[V1:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V1:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V1]], label [[INNER_INNER_LOOP_A:%.*]], label [[INNER_INNER_LOOP_B:%.*]]
; CHECK: inner_inner_loop_a:
-; CHECK-NEXT: [[V2:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2]], label [[INNER_INNER_LOOP_LATCH:%.*]], label [[INNER_LOOP_EXIT_LOOPEXIT_SPLIT:%.*]]
; CHECK: inner_inner_loop_b:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_LATCH]]
; CHECK: inner_inner_loop_latch:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN]]
; CHECK: inner_inner_loop_exit:
-; CHECK-NEXT: [[A2]] = load i32, i32* [[A_PTR]], align 4
-; CHECK-NEXT: [[V4:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[A2]] = load i32, ptr [[A_PTR]], align 4
+; CHECK-NEXT: [[V4:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V4]], label [[INNER_LOOP_EXIT_LOOPEXIT1:%.*]], label [[INNER_LOOP_BEGIN]]
; CHECK: inner_loop_exit.loopexit.split:
; CHECK-NEXT: [[A_PHI_LCSSA2:%.*]] = phi i32 [ [[A_PHI_LCSSA4]], [[INNER_INNER_LOOP_A]] ]
@@ -547,7 +547,7 @@ define i32 @test8b(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
; CHECK-NEXT: br label [[INNER_LOOP_EXIT]]
; CHECK: inner_loop_exit:
; CHECK-NEXT: [[A_PHI3:%.*]] = phi i32 [ [[A_PHI_LCSSA]], [[INNER_LOOP_EXIT_LOOPEXIT1]] ], [ [[DOTUS_PHI]], [[INNER_LOOP_EXIT_LOOPEXIT]] ]
-; CHECK-NEXT: [[V5:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V5:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V5]], label [[LOOP_EXIT:%.*]], label [[LOOP_BEGIN]]
; CHECK: loop_exit:
; CHECK-NEXT: [[A_LCSSA:%.*]] = phi i32 [ [[A_PHI3]], [[INNER_LOOP_EXIT]] ]
@@ -557,21 +557,21 @@ entry:
br label %loop_begin
loop_begin:
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br label %inner_loop_begin
inner_loop_begin:
%a.phi = phi i32 [ %a, %loop_begin ], [ %a2, %inner_inner_loop_exit ]
- %cond = load i1, i1* %cond.ptr
- %b = load i32, i32* %b.ptr
+ %cond = load i1, ptr %cond.ptr
+ %b = load i32, ptr %b.ptr
br label %inner_inner_loop_begin
inner_inner_loop_begin:
- %v1 = load i1, i1* %ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %inner_inner_loop_a, label %inner_inner_loop_b
inner_inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %inner_inner_loop_latch, label %inner_loop_exit
inner_inner_loop_b:
@@ -583,12 +583,12 @@ inner_inner_loop_latch:
; The original region is now an exit in the preheader.
inner_inner_loop_exit:
- %a2 = load i32, i32* %a.ptr
- %v4 = load i1, i1* %ptr
+ %a2 = load i32, ptr %a.ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %inner_loop_exit, label %inner_loop_begin
inner_loop_exit:
- %v5 = load i1, i1* %ptr
+ %v5 = load i1, ptr %ptr
br i1 %v5, label %loop_exit, label %loop_begin
loop_exit:
@@ -597,7 +597,7 @@ loop_exit:
}
; Test that requires re-forming dedicated exits for the cloned loop.
-define i32 @test10a(i1* %ptr, i1 %cond, i32* %a.ptr) {
+define i32 @test10a(ptr %ptr, i1 %cond, ptr %a.ptr) {
; CHECK-LABEL: @test10a(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND:%.*]]
@@ -605,14 +605,14 @@ define i32 @test10a(i1* %ptr, i1 %cond, i32* %a.ptr) {
; CHECK: entry.split.us:
; CHECK-NEXT: br label [[LOOP_BEGIN_US:%.*]]
; CHECK: loop_begin.us:
-; CHECK-NEXT: [[A_US:%.*]] = load i32, i32* [[A_PTR:%.*]], align 4
-; CHECK-NEXT: [[V1_US:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[A_US:%.*]] = load i32, ptr [[A_PTR:%.*]], align 4
+; CHECK-NEXT: [[V1_US:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V1_US]], label [[LOOP_A_US:%.*]], label [[LOOP_B_US:%.*]]
; CHECK: loop_b.us:
; CHECK-NEXT: [[A_US_LCSSA:%.*]] = phi i32 [ [[A_US]], [[LOOP_BEGIN_US]] ]
; CHECK-NEXT: br label [[LOOP_EXIT_SPLIT_US:%.*]]
; CHECK: loop_a.us:
-; CHECK-NEXT: [[V2_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2_US]], label [[LOOP_EXIT_SPLIT_US_LOOPEXIT:%.*]], label [[LOOP_BEGIN_BACKEDGE_US:%.*]]
; CHECK: loop_begin.backedge.us:
; CHECK-NEXT: br label [[LOOP_BEGIN_US]]
@@ -625,11 +625,11 @@ define i32 @test10a(i1* %ptr, i1 %cond, i32* %a.ptr) {
; CHECK: entry.split:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
-; CHECK-NEXT: [[A:%.*]] = load i32, i32* [[A_PTR]], align 4
-; CHECK-NEXT: [[V1:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[A:%.*]] = load i32, ptr [[A_PTR]], align 4
+; CHECK-NEXT: [[V1:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V1]], label [[LOOP_A:%.*]], label [[LOOP_B:%.*]]
; CHECK: loop_a:
-; CHECK-NEXT: [[V2:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2]], label [[LOOP_EXIT_SPLIT:%.*]], label [[LOOP_BEGIN_BACKEDGE:%.*]]
; CHECK: loop_begin.backedge:
; CHECK-NEXT: br label [[LOOP_BEGIN]]
@@ -646,12 +646,12 @@ entry:
br label %loop_begin
loop_begin:
- %a = load i32, i32* %a.ptr
- %v1 = load i1, i1* %ptr
+ %a = load i32, ptr %a.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_a, label %loop_b
loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_exit, label %loop_begin
loop_b:
@@ -666,7 +666,7 @@ loop_exit:
}
; Test that requires re-forming dedicated exits for the original loop.
-define i32 @test10b(i1* %ptr, i1 %cond, i32* %a.ptr) {
+define i32 @test10b(ptr %ptr, i1 %cond, ptr %a.ptr) {
; CHECK-LABEL: @test10b(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND:%.*]]
@@ -674,13 +674,13 @@ define i32 @test10b(i1* %ptr, i1 %cond, i32* %a.ptr) {
; CHECK: entry.split.us:
; CHECK-NEXT: br label [[LOOP_BEGIN_US:%.*]]
; CHECK: loop_begin.us:
-; CHECK-NEXT: [[A_US:%.*]] = load i32, i32* [[A_PTR:%.*]], align 4
-; CHECK-NEXT: [[V1_US:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[A_US:%.*]] = load i32, ptr [[A_PTR:%.*]], align 4
+; CHECK-NEXT: [[V1_US:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V1_US]], label [[LOOP_A_US:%.*]], label [[LOOP_B_US:%.*]]
; CHECK: loop_b.us:
; CHECK-NEXT: br label [[LOOP_BEGIN_BACKEDGE_US:%.*]]
; CHECK: loop_a.us:
-; CHECK-NEXT: [[V2_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2_US]], label [[LOOP_BEGIN_BACKEDGE_US]], label [[LOOP_EXIT_SPLIT_US:%.*]]
; CHECK: loop_begin.backedge.us:
; CHECK-NEXT: br label [[LOOP_BEGIN_US]]
@@ -690,11 +690,11 @@ define i32 @test10b(i1* %ptr, i1 %cond, i32* %a.ptr) {
; CHECK: entry.split:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
-; CHECK-NEXT: [[A:%.*]] = load i32, i32* [[A_PTR]], align 4
-; CHECK-NEXT: [[V1:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[A:%.*]] = load i32, ptr [[A_PTR]], align 4
+; CHECK-NEXT: [[V1:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V1]], label [[LOOP_A:%.*]], label [[LOOP_B:%.*]]
; CHECK: loop_a:
-; CHECK-NEXT: [[V2:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2]], label [[LOOP_BEGIN_BACKEDGE:%.*]], label [[LOOP_EXIT_SPLIT_LOOPEXIT:%.*]]
; CHECK: loop_begin.backedge:
; CHECK-NEXT: br label [[LOOP_BEGIN]]
@@ -715,12 +715,12 @@ entry:
br label %loop_begin
loop_begin:
- %a = load i32, i32* %a.ptr
- %v1 = load i1, i1* %ptr
+ %a = load i32, ptr %a.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_a, label %loop_b
loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_begin, label %loop_exit
loop_b:
@@ -738,16 +738,16 @@ loop_exit:
; exits even an outer loop, we don't add the cloned preheader to the outer
; loop and do add the needed LCSSA phi nodes for the new exit block from the
; outer loop.
-define i32 @test11a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test11a(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test11a(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
-; CHECK-NEXT: [[B:%.*]] = load i32, i32* [[B_PTR:%.*]], align 4
-; CHECK-NEXT: [[V1:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[B:%.*]] = load i32, ptr [[B_PTR:%.*]], align 4
+; CHECK-NEXT: [[V1:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V1]], label [[LOOP_LATCH:%.*]], label [[INNER_LOOP_PH:%.*]]
; CHECK: inner_loop_ph:
-; CHECK-NEXT: [[COND:%.*]] = load i1, i1* [[COND_PTR:%.*]], align 1
+; CHECK-NEXT: [[COND:%.*]] = load i1, ptr [[COND_PTR:%.*]], align 1
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND]]
; CHECK-NEXT: br i1 [[COND_FR]], label [[INNER_LOOP_PH_SPLIT_US:%.*]], label [[INNER_LOOP_PH_SPLIT:%.*]]
; CHECK: inner_loop_ph.split.us:
@@ -755,7 +755,7 @@ define i32 @test11a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
; CHECK-NEXT: br label [[INNER_LOOP_BEGIN_US:%.*]]
; CHECK: inner_loop_begin.us:
; CHECK-NEXT: call void @sink1(i32 [[B_LCSSA]])
-; CHECK-NEXT: [[A_US:%.*]] = load i32, i32* [[A_PTR:%.*]], align 4
+; CHECK-NEXT: [[A_US:%.*]] = load i32, ptr [[A_PTR:%.*]], align 4
; CHECK-NEXT: br label [[LOOP_EXIT_LOOPEXIT_SPLIT_US:%.*]]
; CHECK: loop_exit.loopexit.split.us:
; CHECK-NEXT: [[A_LCSSA2_US:%.*]] = phi i32 [ [[A_US]], [[INNER_LOOP_BEGIN_US]] ]
@@ -764,14 +764,14 @@ define i32 @test11a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
; CHECK-NEXT: br label [[INNER_LOOP_BEGIN:%.*]]
; CHECK: inner_loop_begin:
; CHECK-NEXT: call void @sink1(i32 [[B]])
-; CHECK-NEXT: [[A:%.*]] = load i32, i32* [[A_PTR]], align 4
+; CHECK-NEXT: [[A:%.*]] = load i32, ptr [[A_PTR]], align 4
; CHECK-NEXT: br label [[INNER_LOOP_A:%.*]]
; CHECK: inner_loop_a:
-; CHECK-NEXT: [[V2:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2]], label [[INNER_LOOP_EXIT:%.*]], label [[INNER_LOOP_BEGIN]]
; CHECK: inner_loop_exit:
; CHECK-NEXT: [[A_INNER_LCSSA:%.*]] = phi i32 [ [[A]], [[INNER_LOOP_A]] ]
-; CHECK-NEXT: [[V3:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V3:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V3]], label [[LOOP_LATCH]], label [[LOOP_EXIT_LOOPEXIT1:%.*]]
; CHECK: loop_latch:
; CHECK-NEXT: br label [[LOOP_BEGIN]]
@@ -788,21 +788,21 @@ entry:
br label %loop_begin
loop_begin:
- %b = load i32, i32* %b.ptr
- %v1 = load i1, i1* %ptr
+ %b = load i32, ptr %b.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_latch, label %inner_loop_ph
inner_loop_ph:
- %cond = load i1, i1* %cond.ptr
+ %cond = load i1, ptr %cond.ptr
br label %inner_loop_begin
inner_loop_begin:
call void @sink1(i32 %b)
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond, label %loop_exit, label %inner_loop_a
inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %inner_loop_exit, label %inner_loop_begin
; The cloned path doesn't actually loop and is an exit from the outer loop as
; well.
@@ -810,7 +810,7 @@ inner_loop_a:
inner_loop_exit:
%a.inner_lcssa = phi i32 [ %a, %inner_loop_a ]
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %loop_latch, label %loop_exit
loop_latch:
@@ -825,26 +825,26 @@ loop_exit:
; directly exits even an outer loop, we remove the original preheader from the
; outer loop and add needed LCSSA phi nodes for the new exit block from the
; outer loop.
-define i32 @test11b(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test11b(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test11b(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
-; CHECK-NEXT: [[B:%.*]] = load i32, i32* [[B_PTR:%.*]], align 4
-; CHECK-NEXT: [[V1:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[B:%.*]] = load i32, ptr [[B_PTR:%.*]], align 4
+; CHECK-NEXT: [[V1:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V1]], label [[LOOP_LATCH:%.*]], label [[INNER_LOOP_PH:%.*]]
; CHECK: inner_loop_ph:
-; CHECK-NEXT: [[COND:%.*]] = load i1, i1* [[COND_PTR:%.*]], align 1
+; CHECK-NEXT: [[COND:%.*]] = load i1, ptr [[COND_PTR:%.*]], align 1
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND]]
; CHECK-NEXT: br i1 [[COND_FR]], label [[INNER_LOOP_PH_SPLIT_US:%.*]], label [[INNER_LOOP_PH_SPLIT:%.*]]
; CHECK: inner_loop_ph.split.us:
; CHECK-NEXT: br label [[INNER_LOOP_BEGIN_US:%.*]]
; CHECK: inner_loop_begin.us:
; CHECK-NEXT: call void @sink1(i32 [[B]])
-; CHECK-NEXT: [[A_US:%.*]] = load i32, i32* [[A_PTR:%.*]], align 4
+; CHECK-NEXT: [[A_US:%.*]] = load i32, ptr [[A_PTR:%.*]], align 4
; CHECK-NEXT: br label [[INNER_LOOP_A_US:%.*]]
; CHECK: inner_loop_a.us:
-; CHECK-NEXT: [[V2_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2_US]], label [[INNER_LOOP_EXIT_SPLIT_US:%.*]], label [[INNER_LOOP_BEGIN_US]]
; CHECK: inner_loop_exit.split.us:
; CHECK-NEXT: [[A_INNER_LCSSA_US:%.*]] = phi i32 [ [[A_US]], [[INNER_LOOP_A_US]] ]
@@ -854,10 +854,10 @@ define i32 @test11b(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
; CHECK-NEXT: br label [[INNER_LOOP_BEGIN:%.*]]
; CHECK: inner_loop_begin:
; CHECK-NEXT: call void @sink1(i32 [[B_LCSSA]])
-; CHECK-NEXT: [[A:%.*]] = load i32, i32* [[A_PTR]], align 4
+; CHECK-NEXT: [[A:%.*]] = load i32, ptr [[A_PTR]], align 4
; CHECK-NEXT: br label [[LOOP_EXIT_LOOPEXIT:%.*]]
; CHECK: inner_loop_exit:
-; CHECK-NEXT: [[V3:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V3:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V3]], label [[LOOP_LATCH]], label [[LOOP_EXIT_LOOPEXIT1:%.*]]
; CHECK: loop_latch:
; CHECK-NEXT: br label [[LOOP_BEGIN]]
@@ -875,28 +875,28 @@ entry:
br label %loop_begin
loop_begin:
- %b = load i32, i32* %b.ptr
- %v1 = load i1, i1* %ptr
+ %b = load i32, ptr %b.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_latch, label %inner_loop_ph
inner_loop_ph:
- %cond = load i1, i1* %cond.ptr
+ %cond = load i1, ptr %cond.ptr
br label %inner_loop_begin
inner_loop_begin:
call void @sink1(i32 %b)
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond, label %inner_loop_a, label %loop_exit
inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %inner_loop_exit, label %inner_loop_begin
; The cloned path continues to loop without the exit out of the entire nest.
; The original remains a loop losing the exit edge.
inner_loop_exit:
%a.inner_lcssa = phi i32 [ %a, %inner_loop_a ]
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %loop_latch, label %loop_exit
loop_latch:
@@ -911,18 +911,18 @@ loop_exit:
; another loop, we correctly attribute the cloned preheader to that outermost
; loop rather than only handling the case where the preheader is not in any loop
; at all.
-define i32 @test12a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test12a(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test12a(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
; CHECK-NEXT: br label [[INNER_LOOP_BEGIN:%.*]]
; CHECK: inner_loop_begin:
-; CHECK-NEXT: [[B:%.*]] = load i32, i32* [[B_PTR:%.*]], align 4
-; CHECK-NEXT: [[V1:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[B:%.*]] = load i32, ptr [[B_PTR:%.*]], align 4
+; CHECK-NEXT: [[V1:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V1]], label [[INNER_LOOP_LATCH:%.*]], label [[INNER_INNER_LOOP_PH:%.*]]
; CHECK: inner_inner_loop_ph:
-; CHECK-NEXT: [[COND:%.*]] = load i1, i1* [[COND_PTR:%.*]], align 1
+; CHECK-NEXT: [[COND:%.*]] = load i1, ptr [[COND_PTR:%.*]], align 1
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND]]
; CHECK-NEXT: br i1 [[COND_FR]], label [[INNER_INNER_LOOP_PH_SPLIT_US:%.*]], label [[INNER_INNER_LOOP_PH_SPLIT:%.*]]
; CHECK: inner_inner_loop_ph.split.us:
@@ -930,7 +930,7 @@ define i32 @test12a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN_US:%.*]]
; CHECK: inner_inner_loop_begin.us:
; CHECK-NEXT: call void @sink1(i32 [[B_LCSSA]])
-; CHECK-NEXT: [[A_US:%.*]] = load i32, i32* [[A_PTR:%.*]], align 4
+; CHECK-NEXT: [[A_US:%.*]] = load i32, ptr [[A_PTR:%.*]], align 4
; CHECK-NEXT: br label [[INNER_LOOP_EXIT_LOOPEXIT_SPLIT_US:%.*]]
; CHECK: inner_loop_exit.loopexit.split.us:
; CHECK-NEXT: [[A_LCSSA2_US:%.*]] = phi i32 [ [[A_US]], [[INNER_INNER_LOOP_BEGIN_US]] ]
@@ -939,14 +939,14 @@ define i32 @test12a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN:%.*]]
; CHECK: inner_inner_loop_begin:
; CHECK-NEXT: call void @sink1(i32 [[B]])
-; CHECK-NEXT: [[A:%.*]] = load i32, i32* [[A_PTR]], align 4
+; CHECK-NEXT: [[A:%.*]] = load i32, ptr [[A_PTR]], align 4
; CHECK-NEXT: br label [[INNER_INNER_LOOP_A:%.*]]
; CHECK: inner_inner_loop_a:
-; CHECK-NEXT: [[V2:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2]], label [[INNER_INNER_LOOP_EXIT:%.*]], label [[INNER_INNER_LOOP_BEGIN]]
; CHECK: inner_inner_loop_exit:
; CHECK-NEXT: [[A_INNER_INNER_LCSSA:%.*]] = phi i32 [ [[A]], [[INNER_INNER_LOOP_A]] ]
-; CHECK-NEXT: [[V3:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V3:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V3]], label [[INNER_LOOP_LATCH]], label [[INNER_LOOP_EXIT_LOOPEXIT1:%.*]]
; CHECK: inner_loop_latch:
; CHECK-NEXT: br label [[INNER_LOOP_BEGIN]]
@@ -957,7 +957,7 @@ define i32 @test12a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
; CHECK-NEXT: br label [[INNER_LOOP_EXIT]]
; CHECK: inner_loop_exit:
; CHECK-NEXT: [[A_INNER_LCSSA:%.*]] = phi i32 [ [[A_LCSSA2_US]], [[INNER_LOOP_EXIT_LOOPEXIT]] ], [ [[A_INNER_INNER_LCSSA_LCSSA]], [[INNER_LOOP_EXIT_LOOPEXIT1]] ]
-; CHECK-NEXT: [[V4:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V4:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V4]], label [[LOOP_BEGIN]], label [[LOOP_EXIT:%.*]]
; CHECK: loop_exit:
; CHECK-NEXT: [[A_LCSSA:%.*]] = phi i32 [ [[A_INNER_LCSSA]], [[INNER_LOOP_EXIT]] ]
@@ -970,21 +970,21 @@ loop_begin:
br label %inner_loop_begin
inner_loop_begin:
- %b = load i32, i32* %b.ptr
- %v1 = load i1, i1* %ptr
+ %b = load i32, ptr %b.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %inner_loop_latch, label %inner_inner_loop_ph
inner_inner_loop_ph:
- %cond = load i1, i1* %cond.ptr
+ %cond = load i1, ptr %cond.ptr
br label %inner_inner_loop_begin
inner_inner_loop_begin:
call void @sink1(i32 %b)
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond, label %inner_loop_exit, label %inner_inner_loop_a
inner_inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %inner_inner_loop_exit, label %inner_inner_loop_begin
; The cloned path doesn't actually loop and is an exit from the outer loop as
; well.
@@ -992,7 +992,7 @@ inner_inner_loop_a:
inner_inner_loop_exit:
%a.inner_inner_lcssa = phi i32 [ %a, %inner_inner_loop_a ]
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %inner_loop_latch, label %inner_loop_exit
inner_loop_latch:
@@ -1000,7 +1000,7 @@ inner_loop_latch:
inner_loop_exit:
%a.inner_lcssa = phi i32 [ %a, %inner_inner_loop_begin ], [ %a.inner_inner_lcssa, %inner_inner_loop_exit ]
- %v4 = load i1, i1* %ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %loop_begin, label %loop_exit
loop_exit:
@@ -1012,28 +1012,28 @@ loop_exit:
; another loop, we correctly sink the preheader to the outermost loop rather
; than only handling the case where the preheader is completely removed from
; a loop.
-define i32 @test12b(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test12b(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test12b(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
; CHECK-NEXT: br label [[INNER_LOOP_BEGIN:%.*]]
; CHECK: inner_loop_begin:
-; CHECK-NEXT: [[B:%.*]] = load i32, i32* [[B_PTR:%.*]], align 4
-; CHECK-NEXT: [[V1:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[B:%.*]] = load i32, ptr [[B_PTR:%.*]], align 4
+; CHECK-NEXT: [[V1:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V1]], label [[INNER_LOOP_LATCH:%.*]], label [[INNER_INNER_LOOP_PH:%.*]]
; CHECK: inner_inner_loop_ph:
-; CHECK-NEXT: [[COND:%.*]] = load i1, i1* [[COND_PTR:%.*]], align 1
+; CHECK-NEXT: [[COND:%.*]] = load i1, ptr [[COND_PTR:%.*]], align 1
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND]]
; CHECK-NEXT: br i1 [[COND_FR]], label [[INNER_INNER_LOOP_PH_SPLIT_US:%.*]], label [[INNER_INNER_LOOP_PH_SPLIT:%.*]]
; CHECK: inner_inner_loop_ph.split.us:
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN_US:%.*]]
; CHECK: inner_inner_loop_begin.us:
; CHECK-NEXT: call void @sink1(i32 [[B]])
-; CHECK-NEXT: [[A_US:%.*]] = load i32, i32* [[A_PTR:%.*]], align 4
+; CHECK-NEXT: [[A_US:%.*]] = load i32, ptr [[A_PTR:%.*]], align 4
; CHECK-NEXT: br label [[INNER_INNER_LOOP_A_US:%.*]]
; CHECK: inner_inner_loop_a.us:
-; CHECK-NEXT: [[V2_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2_US]], label [[INNER_INNER_LOOP_EXIT_SPLIT_US:%.*]], label [[INNER_INNER_LOOP_BEGIN_US]]
; CHECK: inner_inner_loop_exit.split.us:
; CHECK-NEXT: [[A_INNER_INNER_LCSSA_US:%.*]] = phi i32 [ [[A_US]], [[INNER_INNER_LOOP_A_US]] ]
@@ -1043,10 +1043,10 @@ define i32 @test12b(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
; CHECK-NEXT: br label [[INNER_INNER_LOOP_BEGIN:%.*]]
; CHECK: inner_inner_loop_begin:
; CHECK-NEXT: call void @sink1(i32 [[B_LCSSA]])
-; CHECK-NEXT: [[A:%.*]] = load i32, i32* [[A_PTR]], align 4
+; CHECK-NEXT: [[A:%.*]] = load i32, ptr [[A_PTR]], align 4
; CHECK-NEXT: br label [[INNER_LOOP_EXIT_LOOPEXIT:%.*]]
; CHECK: inner_inner_loop_exit:
-; CHECK-NEXT: [[V3:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V3:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V3]], label [[INNER_LOOP_LATCH]], label [[INNER_LOOP_EXIT_LOOPEXIT1:%.*]]
; CHECK: inner_loop_latch:
; CHECK-NEXT: br label [[INNER_LOOP_BEGIN]]
@@ -1058,7 +1058,7 @@ define i32 @test12b(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
; CHECK-NEXT: br label [[INNER_LOOP_EXIT]]
; CHECK: inner_loop_exit:
; CHECK-NEXT: [[A_INNER_LCSSA:%.*]] = phi i32 [ [[A_LCSSA2]], [[INNER_LOOP_EXIT_LOOPEXIT]] ], [ [[A_INNER_INNER_LCSSA_LCSSA]], [[INNER_LOOP_EXIT_LOOPEXIT1]] ]
-; CHECK-NEXT: [[V4:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V4:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V4]], label [[LOOP_BEGIN]], label [[LOOP_EXIT:%.*]]
; CHECK: loop_exit:
; CHECK-NEXT: [[A_LCSSA:%.*]] = phi i32 [ [[A_INNER_LCSSA]], [[INNER_LOOP_EXIT]] ]
@@ -1071,28 +1071,28 @@ loop_begin:
br label %inner_loop_begin
inner_loop_begin:
- %b = load i32, i32* %b.ptr
- %v1 = load i1, i1* %ptr
+ %b = load i32, ptr %b.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %inner_loop_latch, label %inner_inner_loop_ph
inner_inner_loop_ph:
- %cond = load i1, i1* %cond.ptr
+ %cond = load i1, ptr %cond.ptr
br label %inner_inner_loop_begin
inner_inner_loop_begin:
call void @sink1(i32 %b)
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond, label %inner_inner_loop_a, label %inner_loop_exit
inner_inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %inner_inner_loop_exit, label %inner_inner_loop_begin
; The cloned path continues to loop without the exit out of the entire nest.
; The original remains a loop losing the exit edge.
inner_inner_loop_exit:
%a.inner_inner_lcssa = phi i32 [ %a, %inner_inner_loop_a ]
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %inner_loop_latch, label %inner_loop_exit
inner_loop_latch:
@@ -1100,7 +1100,7 @@ inner_loop_latch:
inner_loop_exit:
%a.inner_lcssa = phi i32 [ %a, %inner_inner_loop_begin ], [ %a.inner_inner_lcssa, %inner_inner_loop_exit ]
- %v4 = load i1, i1* %ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %loop_begin, label %loop_exit
loop_exit:
@@ -1113,7 +1113,7 @@ loop_exit:
; exiting block that connects the inner loop to the cloned loop is not the header
; block. This ensures that we correctly handle interesting corner cases of
; traversing back to the header when establishing the cloned loop.
-define i32 @test13a(i1* %ptr, i1 %cond, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test13a(ptr %ptr, i1 %cond, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test13a(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND:%.*]]
@@ -1121,26 +1121,26 @@ define i32 @test13a(i1* %ptr, i1 %cond, i32* %a.ptr, i32* %b.ptr) {
; CHECK: entry.split.us:
; CHECK-NEXT: br label [[LOOP_BEGIN_US:%.*]]
; CHECK: loop_begin.us:
-; CHECK-NEXT: [[A_US:%.*]] = load i32, i32* [[A_PTR:%.*]], align 4
-; CHECK-NEXT: [[V1_US:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[A_US:%.*]] = load i32, ptr [[A_PTR:%.*]], align 4
+; CHECK-NEXT: [[V1_US:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V1_US]], label [[LOOP_A_US:%.*]], label [[LOOP_B_US:%.*]]
; CHECK: loop_b.us:
-; CHECK-NEXT: [[B_US:%.*]] = load i32, i32* [[B_PTR:%.*]], align 4
+; CHECK-NEXT: [[B_US:%.*]] = load i32, ptr [[B_PTR:%.*]], align 4
; CHECK-NEXT: br label [[LOOP_B_INNER_PH_US:%.*]]
; CHECK: loop_b_inner_ph.us:
; CHECK-NEXT: br label [[LOOP_B_INNER_HEADER_US:%.*]]
; CHECK: loop_b_inner_header.us:
-; CHECK-NEXT: [[V3_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V3_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V3_US]], label [[LOOP_B_INNER_LATCH_US:%.*]], label [[LOOP_B_INNER_BODY_US:%.*]]
; CHECK: loop_b_inner_body.us:
-; CHECK-NEXT: [[V4_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V4_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V4_US]], label [[LOOP_B_INNER_LATCH_US]], label [[LOOP_B_INNER_EXIT_US:%.*]]
; CHECK: loop_b_inner_exit.us:
; CHECK-NEXT: br label [[LOOP_LATCH_US:%.*]]
; CHECK: loop_b_inner_latch.us:
; CHECK-NEXT: br label [[LOOP_B_INNER_HEADER_US]]
; CHECK: loop_a.us:
-; CHECK-NEXT: [[V2_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2_US]], label [[LOOP_EXIT_SPLIT_US:%.*]], label [[LOOP_LATCH_US]]
; CHECK: loop_latch.us:
; CHECK-NEXT: br label [[LOOP_BEGIN_US]]
@@ -1150,14 +1150,14 @@ define i32 @test13a(i1* %ptr, i1 %cond, i32* %a.ptr, i32* %b.ptr) {
; CHECK: entry.split:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
-; CHECK-NEXT: [[A:%.*]] = load i32, i32* [[A_PTR]], align 4
-; CHECK-NEXT: [[V1:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[A:%.*]] = load i32, ptr [[A_PTR]], align 4
+; CHECK-NEXT: [[V1:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V1]], label [[LOOP_A:%.*]], label [[LOOP_B:%.*]]
; CHECK: loop_a:
-; CHECK-NEXT: [[V2:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2]], label [[LOOP_EXIT_SPLIT_LOOPEXIT:%.*]], label [[LOOP_LATCH:%.*]]
; CHECK: loop_b:
-; CHECK-NEXT: [[B:%.*]] = load i32, i32* [[B_PTR]], align 4
+; CHECK-NEXT: [[B:%.*]] = load i32, ptr [[B_PTR]], align 4
; CHECK-NEXT: br label [[LOOP_EXIT_SPLIT:%.*]]
; CHECK: loop_latch:
; CHECK-NEXT: br label [[LOOP_BEGIN]]
@@ -1175,27 +1175,27 @@ entry:
br label %loop_begin
loop_begin:
- %a = load i32, i32* %a.ptr
- %v1 = load i1, i1* %ptr
+ %a = load i32, ptr %a.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_a, label %loop_b
loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_exit, label %loop_latch
loop_b:
- %b = load i32, i32* %b.ptr
+ %b = load i32, ptr %b.ptr
br i1 %cond, label %loop_b_inner_ph, label %loop_exit
loop_b_inner_ph:
br label %loop_b_inner_header
loop_b_inner_header:
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %loop_b_inner_latch, label %loop_b_inner_body
loop_b_inner_body:
- %v4 = load i1, i1* %ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %loop_b_inner_latch, label %loop_b_inner_exit
loop_b_inner_latch:
@@ -1220,7 +1220,7 @@ loop_exit:
; the header block. This ensures that we correctly handle interesting corner
; cases of traversing back to the header when re-establishing the original loop
; still exists after unswitching.
-define i32 @test13b(i1* %ptr, i1 %cond, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test13b(ptr %ptr, i1 %cond, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test13b(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[COND_FR:%.*]] = freeze i1 [[COND:%.*]]
@@ -1228,14 +1228,14 @@ define i32 @test13b(i1* %ptr, i1 %cond, i32* %a.ptr, i32* %b.ptr) {
; CHECK: entry.split.us:
; CHECK-NEXT: br label [[LOOP_BEGIN_US:%.*]]
; CHECK: loop_begin.us:
-; CHECK-NEXT: [[A_US:%.*]] = load i32, i32* [[A_PTR:%.*]], align 4
-; CHECK-NEXT: [[V1_US:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[A_US:%.*]] = load i32, ptr [[A_PTR:%.*]], align 4
+; CHECK-NEXT: [[V1_US:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[V1_US]], label [[LOOP_A_US:%.*]], label [[LOOP_B_US:%.*]]
; CHECK: loop_b.us:
-; CHECK-NEXT: [[B_US:%.*]] = load i32, i32* [[B_PTR:%.*]], align 4
+; CHECK-NEXT: [[B_US:%.*]] = load i32, ptr [[B_PTR:%.*]], align 4
; CHECK-NEXT: br label [[LOOP_EXIT_SPLIT_US:%.*]]
; CHECK: loop_a.us:
-; CHECK-NEXT: [[V2_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2_US]], label [[LOOP_EXIT_SPLIT_US_LOOPEXIT:%.*]], label [[LOOP_LATCH_US:%.*]]
; CHECK: loop_latch.us:
; CHECK-NEXT: br label [[LOOP_BEGIN_US]]
@@ -1248,22 +1248,22 @@ define i32 @test13b(i1* %ptr, i1 %cond, i32* %a.ptr, i32* %b.ptr) {
; CHECK: entry.split:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
-; CHECK-NEXT: [[A:%.*]] = load i32, i32* [[A_PTR]], align 4
-; CHECK-NEXT: [[V1:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[A:%.*]] = load i32, ptr [[A_PTR]], align 4
+; CHECK-NEXT: [[V1:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V1]], label [[LOOP_A:%.*]], label [[LOOP_B:%.*]]
; CHECK: loop_a:
-; CHECK-NEXT: [[V2:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V2:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V2]], label [[LOOP_EXIT_SPLIT:%.*]], label [[LOOP_LATCH:%.*]]
; CHECK: loop_b:
-; CHECK-NEXT: [[B:%.*]] = load i32, i32* [[B_PTR]], align 4
+; CHECK-NEXT: [[B:%.*]] = load i32, ptr [[B_PTR]], align 4
; CHECK-NEXT: br label [[LOOP_B_INNER_PH:%.*]]
; CHECK: loop_b_inner_ph:
; CHECK-NEXT: br label [[LOOP_B_INNER_HEADER:%.*]]
; CHECK: loop_b_inner_header:
-; CHECK-NEXT: [[V3:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V3:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V3]], label [[LOOP_B_INNER_LATCH:%.*]], label [[LOOP_B_INNER_BODY:%.*]]
; CHECK: loop_b_inner_body:
-; CHECK-NEXT: [[V4:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[V4:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[V4]], label [[LOOP_B_INNER_LATCH]], label [[LOOP_B_INNER_EXIT:%.*]]
; CHECK: loop_b_inner_latch:
; CHECK-NEXT: br label [[LOOP_B_INNER_HEADER]]
@@ -1282,27 +1282,27 @@ entry:
br label %loop_begin
loop_begin:
- %a = load i32, i32* %a.ptr
- %v1 = load i1, i1* %ptr
+ %a = load i32, ptr %a.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_a, label %loop_b
loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_exit, label %loop_latch
loop_b:
- %b = load i32, i32* %b.ptr
+ %b = load i32, ptr %b.ptr
br i1 %cond, label %loop_exit, label %loop_b_inner_ph
loop_b_inner_ph:
br label %loop_b_inner_header
loop_b_inner_header:
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %loop_b_inner_latch, label %loop_b_inner_body
loop_b_inner_body:
- %v4 = load i1, i1* %ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %loop_b_inner_latch, label %loop_b_inner_exit
loop_b_inner_latch:
@@ -1335,7 +1335,7 @@ declare i32 @h(i32 %arg)
; skip whole subregions of the outer loop blocks but just because the header of
; the outer loop is also the preheader of an inner loop shouldn't confuse this
; walk.
-define void @test23(i1 %arg, i1* %ptr) {
+define void @test23(i1 %arg, ptr %ptr) {
; CHECK-LABEL: @test23(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[ARG_FR:%.*]] = freeze i1 [[ARG:%.*]]
@@ -1348,7 +1348,7 @@ define void @test23(i1 %arg, i1* %ptr) {
; CHECK-NEXT: call void @f()
; CHECK-NEXT: br label [[INNER_LATCH_US:%.*]]
; CHECK: inner.latch.us:
-; CHECK-NEXT: [[INNER_COND_US:%.*]] = load i1, i1* [[PTR:%.*]], align 1
+; CHECK-NEXT: [[INNER_COND_US:%.*]] = load i1, ptr [[PTR:%.*]], align 1
; CHECK-NEXT: br i1 [[INNER_COND_US]], label [[INNER_HEADER_US]], label [[OUTER_BODY_US:%.*]]
; CHECK: outer.body.us:
; CHECK-NEXT: br label [[OUTER_BODY_LEFT_US:%.*]]
@@ -1356,7 +1356,7 @@ define void @test23(i1 %arg, i1* %ptr) {
; CHECK-NEXT: call void @f()
; CHECK-NEXT: br label [[OUTER_LATCH_US:%.*]]
; CHECK: outer.latch.us:
-; CHECK-NEXT: [[OUTER_COND_US:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[OUTER_COND_US:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[OUTER_COND_US]], label [[OUTER_HEADER_US]], label [[EXIT_SPLIT_US:%.*]]
; CHECK: exit.split.us:
; CHECK-NEXT: br label [[EXIT:%.*]]
@@ -1368,7 +1368,7 @@ define void @test23(i1 %arg, i1* %ptr) {
; CHECK-NEXT: call void @f()
; CHECK-NEXT: br label [[INNER_LATCH:%.*]]
; CHECK: inner.latch:
-; CHECK-NEXT: [[INNER_COND:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[INNER_COND:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[INNER_COND]], label [[INNER_HEADER]], label [[OUTER_BODY:%.*]]
; CHECK: outer.body:
; CHECK-NEXT: br label [[OUTER_BODY_RIGHT:%.*]]
@@ -1376,7 +1376,7 @@ define void @test23(i1 %arg, i1* %ptr) {
; CHECK-NEXT: call void @g()
; CHECK-NEXT: br label [[OUTER_LATCH:%.*]]
; CHECK: outer.latch:
-; CHECK-NEXT: [[OUTER_COND:%.*]] = load i1, i1* [[PTR]], align 1
+; CHECK-NEXT: [[OUTER_COND:%.*]] = load i1, ptr [[PTR]], align 1
; CHECK-NEXT: br i1 [[OUTER_COND]], label [[OUTER_HEADER]], label [[EXIT_SPLIT:%.*]]
; CHECK: exit.split:
; CHECK-NEXT: br label [[EXIT]]
@@ -1396,7 +1396,7 @@ inner.header:
br label %inner.latch
inner.latch:
- %inner.cond = load i1, i1* %ptr
+ %inner.cond = load i1, ptr %ptr
br i1 %inner.cond, label %inner.header, label %outer.body
outer.body:
@@ -1411,7 +1411,7 @@ outer.body.right:
br label %outer.latch
outer.latch:
- %outer.cond = load i1, i1* %ptr
+ %outer.cond = load i1, ptr %ptr
br i1 %outer.cond, label %outer.header, label %exit
exit:
@@ -1797,15 +1797,15 @@ exit:
; A < B < C
; into
; A < (B, C)
-define void @hoist_inner_loop1(i32* %ptr) {
+define void @hoist_inner_loop1(ptr %ptr) {
; CHECK-LABEL: @hoist_inner_loop1(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[A_HEADER:%.*]]
; CHECK: a.header:
-; CHECK-NEXT: [[X_A:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[X_A:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: br label [[B_HEADER:%.*]]
; CHECK: b.header:
-; CHECK-NEXT: [[X_B:%.*]] = load i32, i32* [[PTR]], align 4
+; CHECK-NEXT: [[X_B:%.*]] = load i32, ptr [[PTR]], align 4
; CHECK-NEXT: [[V1:%.*]] = call i1 @cond()
; CHECK-NEXT: [[V1_FR:%.*]] = freeze i1 [[V1]]
; CHECK-NEXT: br i1 [[V1_FR]], label [[B_HEADER_SPLIT_US:%.*]], label [[B_HEADER_SPLIT:%.*]]
@@ -1823,8 +1823,8 @@ define void @hoist_inner_loop1(i32* %ptr) {
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @c()
; CHECK-NEXT: br label [[C_LATCH:%.*]]
; CHECK: c.latch:
-; CHECK-NEXT: store i32 [[X_A]], i32* [[PTR]], align 4
-; CHECK-NEXT: store i32 [[X_B_LCSSA]], i32* [[PTR]], align 4
+; CHECK-NEXT: store i32 [[X_A]], ptr [[PTR]], align 4
+; CHECK-NEXT: store i32 [[X_B_LCSSA]], ptr [[PTR]], align 4
; CHECK-NEXT: [[V2:%.*]] = call i1 @cond()
; CHECK-NEXT: br i1 [[V2]], label [[C_HEADER]], label [[A_EXIT_C:%.*]]
; CHECK: b.latch:
@@ -1843,11 +1843,11 @@ entry:
br label %a.header
a.header:
- %x.a = load i32, i32* %ptr
+ %x.a = load i32, ptr %ptr
br label %b.header
b.header:
- %x.b = load i32, i32* %ptr
+ %x.b = load i32, ptr %ptr
%v1 = call i1 @cond()
br label %c.header
@@ -1857,8 +1857,8 @@ c.header:
c.latch:
; Use values from other loops to check LCSSA form.
- store i32 %x.a, i32* %ptr
- store i32 %x.b, i32* %ptr
+ store i32 %x.a, ptr %ptr
+ store i32 %x.b, ptr %ptr
%v2 = call i1 @cond()
br i1 %v2, label %c.header, label %a.exit.c
@@ -1883,15 +1883,15 @@ exit:
; A < B < C
; into
; (A < B), C
-define void @hoist_inner_loop2(i32* %ptr) {
+define void @hoist_inner_loop2(ptr %ptr) {
; CHECK-LABEL: @hoist_inner_loop2(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[A_HEADER:%.*]]
; CHECK: a.header:
-; CHECK-NEXT: [[X_A:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[X_A:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: br label [[B_HEADER:%.*]]
; CHECK: b.header:
-; CHECK-NEXT: [[X_B:%.*]] = load i32, i32* [[PTR]], align 4
+; CHECK-NEXT: [[X_B:%.*]] = load i32, ptr [[PTR]], align 4
; CHECK-NEXT: [[V1:%.*]] = call i1 @cond()
; CHECK-NEXT: [[V1_FR:%.*]] = freeze i1 [[V1]]
; CHECK-NEXT: br i1 [[V1_FR]], label [[B_HEADER_SPLIT_US:%.*]], label [[B_HEADER_SPLIT:%.*]]
@@ -1910,8 +1910,8 @@ define void @hoist_inner_loop2(i32* %ptr) {
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @c()
; CHECK-NEXT: br label [[C_LATCH:%.*]]
; CHECK: c.latch:
-; CHECK-NEXT: store i32 [[X_A_LCSSA]], i32* [[PTR]], align 4
-; CHECK-NEXT: store i32 [[X_B_LCSSA]], i32* [[PTR]], align 4
+; CHECK-NEXT: store i32 [[X_A_LCSSA]], ptr [[PTR]], align 4
+; CHECK-NEXT: store i32 [[X_B_LCSSA]], ptr [[PTR]], align 4
; CHECK-NEXT: [[V2:%.*]] = call i1 @cond()
; CHECK-NEXT: br i1 [[V2]], label [[C_HEADER]], label [[EXIT:%.*]]
; CHECK: b.latch:
@@ -1926,11 +1926,11 @@ entry:
br label %a.header
a.header:
- %x.a = load i32, i32* %ptr
+ %x.a = load i32, ptr %ptr
br label %b.header
b.header:
- %x.b = load i32, i32* %ptr
+ %x.b = load i32, ptr %ptr
%v1 = call i1 @cond()
br label %c.header
@@ -1940,8 +1940,8 @@ c.header:
c.latch:
; Use values from other loops to check LCSSA form.
- store i32 %x.a, i32* %ptr
- store i32 %x.b, i32* %ptr
+ store i32 %x.a, ptr %ptr
+ store i32 %x.b, ptr %ptr
%v2 = call i1 @cond()
br i1 %v2, label %c.header, label %exit
@@ -1961,15 +1961,15 @@ exit:
; A < B < C < D
; into
; (A < B), (C < D)
-define void @hoist_inner_loop3(i32* %ptr) {
+define void @hoist_inner_loop3(ptr %ptr) {
; CHECK-LABEL: @hoist_inner_loop3(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[A_HEADER:%.*]]
; CHECK: a.header:
-; CHECK-NEXT: [[X_A:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[X_A:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: br label [[B_HEADER:%.*]]
; CHECK: b.header:
-; CHECK-NEXT: [[X_B:%.*]] = load i32, i32* [[PTR]], align 4
+; CHECK-NEXT: [[X_B:%.*]] = load i32, ptr [[PTR]], align 4
; CHECK-NEXT: [[V1:%.*]] = call i1 @cond()
; CHECK-NEXT: [[V1_FR:%.*]] = freeze i1 [[V1]]
; CHECK-NEXT: br i1 [[V1_FR]], label [[B_HEADER_SPLIT_US:%.*]], label [[B_HEADER_SPLIT:%.*]]
@@ -1988,12 +1988,12 @@ define void @hoist_inner_loop3(i32* %ptr) {
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @c()
; CHECK-NEXT: br label [[C_BODY:%.*]]
; CHECK: c.body:
-; CHECK-NEXT: [[X_C:%.*]] = load i32, i32* [[PTR]], align 4
+; CHECK-NEXT: [[X_C:%.*]] = load i32, ptr [[PTR]], align 4
; CHECK-NEXT: br label [[D_HEADER:%.*]]
; CHECK: d.header:
-; CHECK-NEXT: store i32 [[X_A_LCSSA]], i32* [[PTR]], align 4
-; CHECK-NEXT: store i32 [[X_B_LCSSA]], i32* [[PTR]], align 4
-; CHECK-NEXT: store i32 [[X_C]], i32* [[PTR]], align 4
+; CHECK-NEXT: store i32 [[X_A_LCSSA]], ptr [[PTR]], align 4
+; CHECK-NEXT: store i32 [[X_B_LCSSA]], ptr [[PTR]], align 4
+; CHECK-NEXT: store i32 [[X_C]], ptr [[PTR]], align 4
; CHECK-NEXT: [[V2:%.*]] = call i1 @cond()
; CHECK-NEXT: br i1 [[V2]], label [[D_HEADER]], label [[C_LATCH:%.*]]
; CHECK: c.latch:
@@ -2011,11 +2011,11 @@ entry:
br label %a.header
a.header:
- %x.a = load i32, i32* %ptr
+ %x.a = load i32, ptr %ptr
br label %b.header
b.header:
- %x.b = load i32, i32* %ptr
+ %x.b = load i32, ptr %ptr
%v1 = call i1 @cond()
br label %c.header
@@ -2024,14 +2024,14 @@ c.header:
br i1 %v1, label %b.latch, label %c.body
c.body:
- %x.c = load i32, i32* %ptr
+ %x.c = load i32, ptr %ptr
br label %d.header
d.header:
; Use values from other loops to check LCSSA form.
- store i32 %x.a, i32* %ptr
- store i32 %x.b, i32* %ptr
- store i32 %x.c, i32* %ptr
+ store i32 %x.a, ptr %ptr
+ store i32 %x.b, ptr %ptr
+ store i32 %x.c, ptr %ptr
%v2 = call i1 @cond()
br i1 %v2, label %d.header, label %c.latch
@@ -2161,18 +2161,18 @@ exit:
; A < B < C < D
; into
; A < ((B < C), D)
-define void @hoist_inner_loop5(i32* %ptr) {
+define void @hoist_inner_loop5(ptr %ptr) {
; CHECK-LABEL: @hoist_inner_loop5(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[A_HEADER:%.*]]
; CHECK: a.header:
-; CHECK-NEXT: [[X_A:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[X_A:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: br label [[B_HEADER:%.*]]
; CHECK: b.header:
-; CHECK-NEXT: [[X_B:%.*]] = load i32, i32* [[PTR]], align 4
+; CHECK-NEXT: [[X_B:%.*]] = load i32, ptr [[PTR]], align 4
; CHECK-NEXT: br label [[C_HEADER:%.*]]
; CHECK: c.header:
-; CHECK-NEXT: [[X_C:%.*]] = load i32, i32* [[PTR]], align 4
+; CHECK-NEXT: [[X_C:%.*]] = load i32, ptr [[PTR]], align 4
; CHECK-NEXT: [[V1:%.*]] = call i1 @cond()
; CHECK-NEXT: [[V1_FR:%.*]] = freeze i1 [[V1]]
; CHECK-NEXT: br i1 [[V1_FR]], label [[C_HEADER_SPLIT_US:%.*]], label [[C_HEADER_SPLIT:%.*]]
@@ -2191,9 +2191,9 @@ define void @hoist_inner_loop5(i32* %ptr) {
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @d()
; CHECK-NEXT: br label [[D_LATCH:%.*]]
; CHECK: d.latch:
-; CHECK-NEXT: store i32 [[X_A]], i32* [[PTR]], align 4
-; CHECK-NEXT: store i32 [[X_B_LCSSA]], i32* [[PTR]], align 4
-; CHECK-NEXT: store i32 [[X_C_LCSSA]], i32* [[PTR]], align 4
+; CHECK-NEXT: store i32 [[X_A]], ptr [[PTR]], align 4
+; CHECK-NEXT: store i32 [[X_B_LCSSA]], ptr [[PTR]], align 4
+; CHECK-NEXT: store i32 [[X_C_LCSSA]], ptr [[PTR]], align 4
; CHECK-NEXT: [[V2:%.*]] = call i1 @cond()
; CHECK-NEXT: br i1 [[V2]], label [[D_HEADER]], label [[A_LATCH:%.*]]
; CHECK: c.latch:
@@ -2210,15 +2210,15 @@ entry:
br label %a.header
a.header:
- %x.a = load i32, i32* %ptr
+ %x.a = load i32, ptr %ptr
br label %b.header
b.header:
- %x.b = load i32, i32* %ptr
+ %x.b = load i32, ptr %ptr
br label %c.header
c.header:
- %x.c = load i32, i32* %ptr
+ %x.c = load i32, ptr %ptr
%v1 = call i1 @cond()
br label %d.header
@@ -2228,9 +2228,9 @@ d.header:
d.latch:
; Use values from other loops to check LCSSA form.
- store i32 %x.a, i32* %ptr
- store i32 %x.b, i32* %ptr
- store i32 %x.c, i32* %ptr
+ store i32 %x.a, ptr %ptr
+ store i32 %x.b, ptr %ptr
+ store i32 %x.c, ptr %ptr
%v2 = call i1 @cond()
br i1 %v2, label %d.header, label %a.latch
@@ -2248,15 +2248,15 @@ exit:
ret void
}
-define void @hoist_inner_loop_switch(i32* %ptr) {
+define void @hoist_inner_loop_switch(ptr %ptr) {
; CHECK-LABEL: @hoist_inner_loop_switch(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[A_HEADER:%.*]]
; CHECK: a.header:
-; CHECK-NEXT: [[X_A:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[X_A:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: br label [[B_HEADER:%.*]]
; CHECK: b.header:
-; CHECK-NEXT: [[X_B:%.*]] = load i32, i32* [[PTR]], align 4
+; CHECK-NEXT: [[X_B:%.*]] = load i32, ptr [[PTR]], align 4
; CHECK-NEXT: [[V1:%.*]] = call i32 @cond.i32()
; CHECK-NEXT: [[V1_FR:%.*]] = freeze i32 [[V1]]
; CHECK-NEXT: switch i32 [[V1_FR]], label [[B_HEADER_SPLIT:%.*]] [
@@ -2279,8 +2279,8 @@ define void @hoist_inner_loop_switch(i32* %ptr) {
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @c()
; CHECK-NEXT: br label [[C_LATCH:%.*]]
; CHECK: c.latch:
-; CHECK-NEXT: store i32 [[X_A_LCSSA]], i32* [[PTR]], align 4
-; CHECK-NEXT: store i32 [[X_B_LCSSA]], i32* [[PTR]], align 4
+; CHECK-NEXT: store i32 [[X_A_LCSSA]], ptr [[PTR]], align 4
+; CHECK-NEXT: store i32 [[X_B_LCSSA]], ptr [[PTR]], align 4
; CHECK-NEXT: [[V2:%.*]] = call i1 @cond()
; CHECK-NEXT: br i1 [[V2]], label [[C_HEADER]], label [[EXIT:%.*]]
; CHECK: b.latch:
@@ -2295,11 +2295,11 @@ entry:
br label %a.header
a.header:
- %x.a = load i32, i32* %ptr
+ %x.a = load i32, ptr %ptr
br label %b.header
b.header:
- %x.b = load i32, i32* %ptr
+ %x.b = load i32, ptr %ptr
%v1 = call i32 @cond.i32()
br label %c.header
@@ -2313,8 +2313,8 @@ c.header:
c.latch:
; Use values from other loops to check LCSSA form.
- store i32 %x.a, i32* %ptr
- store i32 %x.b, i32* %ptr
+ store i32 %x.a, ptr %ptr
+ store i32 %x.b, ptr %ptr
%v2 = call i1 @cond()
br i1 %v2, label %c.header, label %exit
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-markloopasdeleted.ll b/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-markloopasdeleted.ll
index b3cc69398028e..b2c7226dba6a9 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-markloopasdeleted.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-markloopasdeleted.ll
@@ -33,20 +33,20 @@
; CHECK-NEXT: Running analysis: LoopAccessAnalysis on test6
-define i32 @test6(i1* %ptr, i1 %cond1, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test6(ptr %ptr, i1 %cond1, ptr %a.ptr, ptr %b.ptr) {
entry:
br label %loop_begin
loop_begin:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %cond1, label %loop_a, label %loop_b
loop_a:
br label %loop_a_inner
loop_a_inner:
- %va = load i1, i1* %ptr
- %a = load i32, i32* %a.ptr
+ %va = load i1, ptr %ptr
+ %a = load i32, ptr %a.ptr
br i1 %va, label %loop_a_inner, label %loop_a_inner_exit
loop_a_inner_exit:
@@ -57,8 +57,8 @@ loop_b:
br label %loop_b_inner
loop_b_inner:
- %vb = load i1, i1* %ptr
- %b = load i32, i32* %b.ptr
+ %vb = load i1, ptr %ptr
+ %b = load i32, ptr %b.ptr
br i1 %vb, label %loop_b_inner, label %loop_b_inner_exit
loop_b_inner_exit:
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-redundant-switch.ll b/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-redundant-switch.ll
index 09ae3b8758172..b32e2dcd69501 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-redundant-switch.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch-redundant-switch.ll
@@ -3,7 +3,7 @@
; RUN: opt -passes='loop-mssa(simple-loop-unswitch<nontrivial>)' -disable-output -S < %s
; This loop shouldn't trigger asserts in SimpleLoopUnswitch.
-define void @test_redundant_switch(i1* %ptr, i32 %cond) {
+define void @test_redundant_switch(ptr %ptr, i32 %cond) {
entry:
br label %loop_begin
@@ -16,7 +16,7 @@ loop_body:
br label %loop_latch
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch.ll b/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch.ll
index 968854722991e..887f1eb11bf07 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/nontrivial-unswitch.ll
@@ -14,7 +14,7 @@ declare i1 @cond()
declare i32 @cond.i32()
; Negative test: we cannot unswitch convergent calls.
-define void @test_no_unswitch_convergent(i1* %ptr, i1 %cond) {
+define void @test_no_unswitch_convergent(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_no_unswitch_convergent(
entry:
br label %loop_begin
@@ -38,7 +38,7 @@ loop_b:
br label %loop_latch
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
@@ -46,7 +46,7 @@ loop_exit:
}
; Negative test: we cannot unswitch noduplicate calls.
-define void @test_no_unswitch_noduplicate(i1* %ptr, i1 %cond) {
+define void @test_no_unswitch_noduplicate(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_no_unswitch_noduplicate(
entry:
br label %loop_begin
@@ -70,7 +70,7 @@ loop_b:
br label %loop_latch
loop_latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
@@ -81,7 +81,7 @@ declare i32 @__CxxFrameHandler3(...)
; Negative test: we cannot unswitch when tokens are used across blocks as we
; might introduce PHIs.
-define void @test_no_unswitch_cross_block_token(i1* %ptr, i1 %cond) nounwind personality i32 (...)* @__CxxFrameHandler3 {
+define void @test_no_unswitch_cross_block_token(ptr %ptr, i1 %cond) nounwind personality ptr @__CxxFrameHandler3 {
; CHECK-LABEL: @test_no_unswitch_cross_block_token(
entry:
br label %loop_begin
@@ -129,7 +129,7 @@ exit:
; Non-trivial loop unswitching where there are two distinct trivial conditions
; to unswitch within the loop.
-define i32 @test1(i1* %ptr, i1 %cond1, i1 %cond2) {
+define i32 @test1(ptr %ptr, i1 %cond1, i1 %cond2) {
; CHECK-LABEL: @test1(
entry:
br label %loop_begin
@@ -155,7 +155,7 @@ loop_a:
; CHECK-NEXT: br label %latch.us
;
; CHECK: latch.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin.us, label %loop_exit.split.us
;
; CHECK: loop_exit.split.us:
@@ -187,7 +187,7 @@ loop_b_a:
; CHECK-NEXT: br label %latch.us2
;
; CHECK: latch.us2:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin.us1, label %loop_exit.split.split.us
;
; CHECK: loop_exit.split.split.us:
@@ -212,14 +212,14 @@ loop_b_b:
; CHECK-NEXT: br label %latch
;
; CHECK: latch:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin, label %loop_exit.split.split
;
; CHECK: loop_exit.split.split:
; CHECK-NEXT: br label %loop_exit.split
latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
@@ -231,7 +231,7 @@ loop_exit:
; CHECK-NEXT: ret
}
-define i32 @test2(i1* %ptr, i1 %cond1, i32* %a.ptr, i32* %b.ptr, i32* %c.ptr) {
+define i32 @test2(ptr %ptr, i1 %cond1, ptr %a.ptr, ptr %b.ptr, ptr %c.ptr) {
; CHECK-LABEL: @test2(
entry:
br label %loop_begin
@@ -239,12 +239,12 @@ entry:
; CHECK-NEXT: br i1 %cond1, label %entry.split.us, label %entry.split
loop_begin:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %cond1, label %loop_a, label %loop_b
loop_a:
- %a = load i32, i32* %a.ptr
- %ac = load i32, i32* %c.ptr
+ %a = load i32, ptr %a.ptr
+ %ac = load i32, ptr %c.ptr
br i1 %v, label %loop_begin, label %loop_exit
; The 'loop_a' unswitched loop.
;
@@ -252,12 +252,12 @@ loop_a:
; CHECK-NEXT: br label %loop_begin.us
;
; CHECK: loop_begin.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br label %loop_a.us
;
; CHECK: loop_a.us:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
-; CHECK-NEXT: %[[AC:.*]] = load i32, i32* %c.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
+; CHECK-NEXT: %[[AC:.*]] = load i32, ptr %c.ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin.backedge.us, label %loop_exit.split.us
;
; CHECK: loop_exit.split.us:
@@ -266,8 +266,8 @@ loop_a:
; CHECK-NEXT: br label %loop_exit
loop_b:
- %b = load i32, i32* %b.ptr
- %bc = load i32, i32* %c.ptr
+ %b = load i32, ptr %b.ptr
+ %bc = load i32, ptr %c.ptr
br i1 %v, label %loop_begin, label %loop_exit
; The 'loop_b' unswitched loop.
;
@@ -275,12 +275,12 @@ loop_b:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br label %loop_b
;
; CHECK: loop_b:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
-; CHECK-NEXT: %[[BC:.*]] = load i32, i32* %c.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
+; CHECK-NEXT: %[[BC:.*]] = load i32, ptr %c.ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin.backedge, label %loop_exit.split
;
; CHECK: loop_exit.split:
@@ -302,7 +302,7 @@ loop_exit:
; Test a non-trivial unswitch of an exiting edge to an exit block with other
; in-loop predecessors.
-define i32 @test3a(i1* %ptr, i1 %cond1, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test3a(ptr %ptr, i1 %cond1, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test3a(
entry:
br label %loop_begin
@@ -310,8 +310,8 @@ entry:
; CHECK-NEXT: br i1 %cond1, label %entry.split.us, label %entry.split
loop_begin:
- %v = load i1, i1* %ptr
- %a = load i32, i32* %a.ptr
+ %v = load i1, ptr %ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond1, label %loop_exit, label %loop_b
; The 'loop_exit' clone.
;
@@ -319,8 +319,8 @@ loop_begin:
; CHECK-NEXT: br label %loop_begin.us
;
; CHECK: loop_begin.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %loop_exit.split.us
;
; CHECK: loop_exit.split.us:
@@ -328,7 +328,7 @@ loop_begin:
; CHECK-NEXT: br label %loop_exit
loop_b:
- %b = load i32, i32* %b.ptr
+ %b = load i32, ptr %b.ptr
br i1 %v, label %loop_begin, label %loop_exit
; The 'loop_b' unswitched loop.
;
@@ -336,12 +336,12 @@ loop_b:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %loop_b
;
; CHECK: loop_b:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin, label %loop_exit.split
;
; CHECK: loop_exit.split:
@@ -359,7 +359,7 @@ loop_exit:
; Test a non-trivial unswitch of an exiting edge to an exit block with other
; in-loop predecessors. This is the same as @test3a but with the reversed order
; of successors so that the exiting edge is *not* the cloned edge.
-define i32 @test3b(i1* %ptr, i1 %cond1, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test3b(ptr %ptr, i1 %cond1, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test3b(
entry:
br label %loop_begin
@@ -367,8 +367,8 @@ entry:
; CHECK-NEXT: br i1 %cond1, label %entry.split.us, label %entry.split
loop_begin:
- %v = load i1, i1* %ptr
- %a = load i32, i32* %a.ptr
+ %v = load i1, ptr %ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond1, label %loop_b, label %loop_exit
; The 'loop_b' unswitched loop.
;
@@ -376,12 +376,12 @@ loop_begin:
; CHECK-NEXT: br label %loop_begin.us
;
; CHECK: loop_begin.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %loop_b.us
;
; CHECK: loop_b.us:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin.us, label %loop_exit.split.us
;
; CHECK: loop_exit.split.us:
@@ -389,7 +389,7 @@ loop_begin:
; CHECK-NEXT: br label %loop_exit
loop_b:
- %b = load i32, i32* %b.ptr
+ %b = load i32, ptr %b.ptr
br i1 %v, label %loop_begin, label %loop_exit
; The original loop, now non-looping due to unswitching..
;
@@ -397,8 +397,8 @@ loop_b:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %loop_exit.split
;
; CHECK: loop_exit.split:
@@ -414,7 +414,7 @@ loop_exit:
; Test a non-trivial unswitch of an exiting edge to an exit block with no other
; in-loop predecessors.
-define void @test4a(i1* %ptr, i1 %cond1, i32* %a.ptr, i32* %b.ptr) {
+define void @test4a(ptr %ptr, i1 %cond1, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test4a(
entry:
br label %loop_begin
@@ -422,8 +422,8 @@ entry:
; CHECK-NEXT: br i1 %cond1, label %entry.split.us, label %entry.split
loop_begin:
- %v = load i1, i1* %ptr
- %a = load i32, i32* %a.ptr
+ %v = load i1, ptr %ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond1, label %loop_exit1, label %loop_b
; The 'loop_exit' clone.
;
@@ -431,8 +431,8 @@ loop_begin:
; CHECK-NEXT: br label %loop_begin.us
;
; CHECK: loop_begin.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %loop_exit1.split.us
;
; CHECK: loop_exit1.split.us:
@@ -440,7 +440,7 @@ loop_begin:
; CHECK-NEXT: br label %loop_exit1
loop_b:
- %b = load i32, i32* %b.ptr
+ %b = load i32, ptr %b.ptr
br i1 %v, label %loop_begin, label %loop_exit2
; The 'loop_b' unswitched loop.
;
@@ -448,12 +448,12 @@ loop_b:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %loop_b
;
; CHECK: loop_b:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin, label %loop_exit2
loop_exit1:
@@ -477,7 +477,7 @@ loop_exit2:
; Test a non-trivial unswitch of an exiting edge to an exit block with no other
; in-loop predecessors. This is the same as @test4a but with the edges reversed
; so that the exiting edge is *not* the cloned edge.
-define void @test4b(i1* %ptr, i1 %cond1, i32* %a.ptr, i32* %b.ptr) {
+define void @test4b(ptr %ptr, i1 %cond1, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test4b(
entry:
br label %loop_begin
@@ -485,8 +485,8 @@ entry:
; CHECK-NEXT: br i1 %cond1, label %entry.split.us, label %entry.split
loop_begin:
- %v = load i1, i1* %ptr
- %a = load i32, i32* %a.ptr
+ %v = load i1, ptr %ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond1, label %loop_b, label %loop_exit1
; The 'loop_b' clone.
;
@@ -494,12 +494,12 @@ loop_begin:
; CHECK-NEXT: br label %loop_begin.us
;
; CHECK: loop_begin.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %loop_b.us
;
; CHECK: loop_b.us:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin.us, label %loop_exit2.split.us
;
; CHECK: loop_exit2.split.us:
@@ -507,7 +507,7 @@ loop_begin:
; CHECK-NEXT: br label %loop_exit2
loop_b:
- %b = load i32, i32* %b.ptr
+ %b = load i32, ptr %b.ptr
br i1 %v, label %loop_begin, label %loop_exit2
; The 'loop_exit' unswitched path.
;
@@ -515,8 +515,8 @@ loop_b:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %loop_exit1
loop_exit1:
@@ -541,7 +541,7 @@ loop_exit2:
; in-loop predecessors. This is the same as @test4a but with a common merge
; block after the independent loop exits. This requires a
diff erent structural
; update to the dominator tree.
-define void @test4c(i1* %ptr, i1 %cond1, i32* %a.ptr, i32* %b.ptr) {
+define void @test4c(ptr %ptr, i1 %cond1, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test4c(
entry:
br label %loop_begin
@@ -549,8 +549,8 @@ entry:
; CHECK-NEXT: br i1 %cond1, label %entry.split.us, label %entry.split
loop_begin:
- %v = load i1, i1* %ptr
- %a = load i32, i32* %a.ptr
+ %v = load i1, ptr %ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond1, label %loop_exit1, label %loop_b
; The 'loop_exit' clone.
;
@@ -558,8 +558,8 @@ loop_begin:
; CHECK-NEXT: br label %loop_begin.us
;
; CHECK: loop_begin.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %loop_exit1.split.us
;
; CHECK: loop_exit1.split.us:
@@ -567,7 +567,7 @@ loop_begin:
; CHECK-NEXT: br label %loop_exit1
loop_b:
- %b = load i32, i32* %b.ptr
+ %b = load i32, ptr %b.ptr
br i1 %v, label %loop_begin, label %loop_exit2
; The 'loop_b' unswitched loop.
;
@@ -575,12 +575,12 @@ loop_b:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %loop_b
;
; CHECK: loop_b:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin, label %loop_exit2
loop_exit1:
@@ -607,7 +607,7 @@ exit:
}
; Test that we can unswitch a condition out of multiple layers of a loop nest.
-define i32 @test5(i1* %ptr, i1 %cond1, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test5(ptr %ptr, i1 %cond1, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test5(
entry:
br label %loop_begin
@@ -624,8 +624,8 @@ loop_begin:
br label %inner_loop_begin
inner_loop_begin:
- %v = load i1, i1* %ptr
- %a = load i32, i32* %a.ptr
+ %v = load i1, ptr %ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond1, label %loop_exit, label %inner_loop_b
; The 'loop_exit' clone.
;
@@ -633,8 +633,8 @@ inner_loop_begin:
; CHECK-NEXT: br label %inner_loop_begin.us
;
; CHECK: inner_loop_begin.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %loop_exit.loopexit.split.us
;
; CHECK: loop_exit.loopexit.split.us:
@@ -642,7 +642,7 @@ inner_loop_begin:
; CHECK-NEXT: br label %loop_exit
inner_loop_b:
- %b = load i32, i32* %b.ptr
+ %b = load i32, ptr %b.ptr
br i1 %v, label %inner_loop_begin, label %loop_latch
; The 'inner_loop_b' unswitched loop.
;
@@ -650,21 +650,21 @@ inner_loop_b:
; CHECK-NEXT: br label %inner_loop_begin
;
; CHECK: inner_loop_begin:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %inner_loop_b
;
; CHECK: inner_loop_b:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_loop_begin, label %loop_latch
loop_latch:
%b.phi = phi i32 [ %b, %inner_loop_b ]
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_begin, label %loop_exit
; CHECK: loop_latch:
; CHECK-NEXT: %[[B_INNER_LCSSA:.*]] = phi i32 [ %[[B]], %inner_loop_b ]
-; CHECK-NEXT: %[[V2:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V2:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V2]], label %loop_begin, label %loop_exit.loopexit1
loop_exit:
@@ -684,7 +684,7 @@ loop_exit:
; Test that we can unswitch a condition where we end up only cloning some of
; the nested loops and needing to delete some of the nested loops.
-define i32 @test6(i1* %ptr, i1 %cond1, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test6(ptr %ptr, i1 %cond1, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test6(
entry:
br label %loop_begin
@@ -692,15 +692,15 @@ entry:
; CHECK-NEXT: br i1 %cond1, label %entry.split.us, label %entry.split
loop_begin:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %cond1, label %loop_a, label %loop_b
loop_a:
br label %loop_a_inner
loop_a_inner:
- %va = load i1, i1* %ptr
- %a = load i32, i32* %a.ptr
+ %va = load i1, ptr %ptr
+ %a = load i32, ptr %a.ptr
br i1 %va, label %loop_a_inner, label %loop_a_inner_exit
loop_a_inner_exit:
@@ -712,15 +712,15 @@ loop_a_inner_exit:
; CHECK-NEXT: br label %loop_begin.us
;
; CHECK: loop_begin.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br label %loop_a.us
;
; CHECK: loop_a.us:
; CHECK-NEXT: br label %loop_a_inner.us
;
; CHECK: loop_a_inner.us
-; CHECK-NEXT: %[[VA:.*]] = load i1, i1* %ptr
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[VA:.*]] = load i1, ptr %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br i1 %[[VA]], label %loop_a_inner.us, label %loop_a_inner_exit.us
;
; CHECK: loop_a_inner_exit.us:
@@ -739,8 +739,8 @@ loop_b:
br label %loop_b_inner
loop_b_inner:
- %vb = load i1, i1* %ptr
- %b = load i32, i32* %b.ptr
+ %vb = load i1, ptr %ptr
+ %b = load i32, ptr %b.ptr
br i1 %vb, label %loop_b_inner, label %loop_b_inner_exit
loop_b_inner_exit:
@@ -756,15 +756,15 @@ latch:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br label %loop_b
;
; CHECK: loop_b:
; CHECK-NEXT: br label %loop_b_inner
;
; CHECK: loop_b_inner
-; CHECK-NEXT: %[[VB:.*]] = load i1, i1* %ptr
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
+; CHECK-NEXT: %[[VB:.*]] = load i1, ptr %ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
; CHECK-NEXT: br i1 %[[VB]], label %loop_b_inner, label %loop_b_inner_exit
;
; CHECK: loop_b_inner_exit:
@@ -790,7 +790,7 @@ loop_exit:
; produces a non-loop clone that can reach multiple exit blocks which are part
; of
diff erent outer loops we correctly divide the cloned loop blocks between
; the outer loops based on reachability.
-define i32 @test7a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test7a(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test7a(
entry:
br label %loop_begin
@@ -798,38 +798,38 @@ entry:
; CHECK-NEXT: br label %loop_begin
loop_begin:
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br label %inner_loop_begin
; CHECK: loop_begin:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %inner_loop_begin
inner_loop_begin:
%a.phi = phi i32 [ %a, %loop_begin ], [ %a2, %inner_inner_loop_exit ]
- %cond = load i1, i1* %cond.ptr
- %b = load i32, i32* %b.ptr
+ %cond = load i1, ptr %cond.ptr
+ %b = load i32, ptr %b.ptr
br label %inner_inner_loop_begin
; CHECK: inner_loop_begin:
; CHECK-NEXT: %[[A_INNER_PHI:.*]] = phi i32 [ %[[A]], %loop_begin ], [ %[[A2:.*]], %inner_inner_loop_exit ]
-; CHECK-NEXT: %[[COND:.*]] = load i1, i1* %cond.ptr
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
+; CHECK-NEXT: %[[COND:.*]] = load i1, ptr %cond.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
; CHECK-NEXT: %[[FROZEN:.+]] = freeze i1 %[[COND]]
; CHECK-NEXT: br i1 %[[FROZEN]], label %inner_loop_begin.split.us, label %inner_loop_begin.split
inner_inner_loop_begin:
- %v1 = load i1, i1* %ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %inner_inner_loop_a, label %inner_inner_loop_b
inner_inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_exit, label %inner_inner_loop_c
inner_inner_loop_b:
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %inner_inner_loop_exit, label %inner_inner_loop_c
inner_inner_loop_c:
- %v4 = load i1, i1* %ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %inner_loop_exit, label %inner_inner_loop_d
inner_inner_loop_d:
@@ -841,24 +841,24 @@ inner_inner_loop_d:
; CHECK-NEXT: br label %inner_inner_loop_begin.us
;
; CHECK: inner_inner_loop_begin.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_a.us, label %inner_inner_loop_b.us
;
; CHECK: inner_inner_loop_b.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_exit.split.us, label %inner_inner_loop_c.us.loopexit
;
; CHECK: inner_inner_loop_a.us:
; CHECK-NEXT: %[[A_NEW_LCSSA:.*]] = phi i32 [ %[[A_INNER_PHI]], %inner_inner_loop_begin.us ]
; CHECK-NEXT: %[[B_NEW_LCSSA:.*]] = phi i32 [ %[[B]], %inner_inner_loop_begin.us ]
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_exit.split.us, label %inner_inner_loop_c.us
;
; CHECK: inner_inner_loop_c.us.loopexit:
; CHECK-NEXT: br label %inner_inner_loop_c.us
;
; CHECK: inner_inner_loop_c.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_loop_exit.loopexit.split.us, label %inner_inner_loop_d.us
;
; CHECK: inner_inner_loop_d.us:
@@ -881,19 +881,19 @@ inner_inner_loop_d:
; CHECK-NEXT: br label %inner_inner_loop_begin
;
; CHECK: inner_inner_loop_begin:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_a, label %inner_inner_loop_b
;
; CHECK: inner_inner_loop_a:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_exit.split, label %inner_inner_loop_c
;
; CHECK: inner_inner_loop_b:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_exit.split, label %inner_inner_loop_c
;
; CHECK: inner_inner_loop_c:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_loop_exit.loopexit.split, label %inner_inner_loop_d
;
; CHECK: inner_inner_loop_d:
@@ -903,12 +903,12 @@ inner_inner_loop_d:
; CHECK-NEXT: br label %inner_inner_loop_exit
inner_inner_loop_exit:
- %a2 = load i32, i32* %a.ptr
- %v5 = load i1, i1* %ptr
+ %a2 = load i32, ptr %a.ptr
+ %v5 = load i1, ptr %ptr
br i1 %v5, label %inner_loop_exit, label %inner_loop_begin
; CHECK: inner_inner_loop_exit:
-; CHECK-NEXT: %[[A2]] = load i32, i32* %a.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[A2]] = load i32, ptr %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_loop_exit.loopexit1, label %inner_loop_begin
inner_loop_exit:
@@ -944,7 +944,7 @@ loop_exit:
; Same pattern as @test7a but here the original loop becomes a non-loop that
; can reach multiple exit blocks which are part of
diff erent outer loops.
-define i32 @test7b(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test7b(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test7b(
entry:
br label %loop_begin
@@ -952,38 +952,38 @@ entry:
; CHECK-NEXT: br label %loop_begin
loop_begin:
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br label %inner_loop_begin
; CHECK: loop_begin:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %inner_loop_begin
inner_loop_begin:
%a.phi = phi i32 [ %a, %loop_begin ], [ %a2, %inner_inner_loop_exit ]
- %cond = load i1, i1* %cond.ptr
- %b = load i32, i32* %b.ptr
+ %cond = load i1, ptr %cond.ptr
+ %b = load i32, ptr %b.ptr
br label %inner_inner_loop_begin
; CHECK: inner_loop_begin:
; CHECK-NEXT: %[[A_INNER_PHI:.*]] = phi i32 [ %[[A]], %loop_begin ], [ %[[A2:.*]], %inner_inner_loop_exit ]
-; CHECK-NEXT: %[[COND:.*]] = load i1, i1* %cond.ptr
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
+; CHECK-NEXT: %[[COND:.*]] = load i1, ptr %cond.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
; CHECK-NEXT: %[[FROZEN:.+]] = freeze i1 %[[COND]]
; CHECK-NEXT: br i1 %[[FROZEN]], label %inner_loop_begin.split.us, label %inner_loop_begin.split
inner_inner_loop_begin:
- %v1 = load i1, i1* %ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %inner_inner_loop_a, label %inner_inner_loop_b
inner_inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_exit, label %inner_inner_loop_c
inner_inner_loop_b:
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %inner_inner_loop_exit, label %inner_inner_loop_c
inner_inner_loop_c:
- %v4 = load i1, i1* %ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %inner_loop_exit, label %inner_inner_loop_d
inner_inner_loop_d:
@@ -994,19 +994,19 @@ inner_inner_loop_d:
; CHECK-NEXT: br label %inner_inner_loop_begin.us
;
; CHECK: inner_inner_loop_begin.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_a.us, label %inner_inner_loop_b.us
;
; CHECK: inner_inner_loop_b.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_exit.split.us, label %inner_inner_loop_c.us
;
; CHECK: inner_inner_loop_a.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_exit.split.us, label %inner_inner_loop_c.us
;
; CHECK: inner_inner_loop_c.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_loop_exit.loopexit.split.us, label %inner_inner_loop_d.us
;
; CHECK: inner_inner_loop_d.us:
@@ -1030,24 +1030,24 @@ inner_inner_loop_d:
; CHECK-NEXT: br label %inner_inner_loop_begin
;
; CHECK: inner_inner_loop_begin:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_a, label %inner_inner_loop_b
;
; CHECK: inner_inner_loop_a:
; CHECK-NEXT: %[[A_NEW_LCSSA:.*]] = phi i32 [ %[[A_INNER_PHI]], %inner_inner_loop_begin ]
; CHECK-NEXT: %[[B_NEW_LCSSA:.*]] = phi i32 [ %[[B]], %inner_inner_loop_begin ]
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_exit.split, label %inner_inner_loop_c
;
; CHECK: inner_inner_loop_b:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_exit.split, label %inner_inner_loop_c.loopexit
;
; CHECK: inner_inner_loop_c.loopexit:
; CHECK-NEXT: br label %inner_inner_loop_c
;
; CHECK: inner_inner_loop_c:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_loop_exit.loopexit.split, label %inner_inner_loop_d
;
; CHECK: inner_inner_loop_d:
@@ -1057,12 +1057,12 @@ inner_inner_loop_d:
; CHECK-NEXT: br label %inner_inner_loop_exit
inner_inner_loop_exit:
- %a2 = load i32, i32* %a.ptr
- %v5 = load i1, i1* %ptr
+ %a2 = load i32, ptr %a.ptr
+ %v5 = load i1, ptr %ptr
br i1 %v5, label %inner_loop_exit, label %inner_loop_begin
; CHECK: inner_inner_loop_exit:
-; CHECK-NEXT: %[[A2]] = load i32, i32* %a.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[A2]] = load i32, ptr %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_loop_exit.loopexit1, label %inner_loop_begin
inner_loop_exit:
@@ -1098,7 +1098,7 @@ loop_exit:
; Test that when the exit block set of an inner loop changes to start at a less
; high level of the loop nest we correctly hoist the loop up the nest.
-define i32 @test8a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test8a(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test8a(
entry:
br label %loop_begin
@@ -1106,30 +1106,30 @@ entry:
; CHECK-NEXT: br label %loop_begin
loop_begin:
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br label %inner_loop_begin
; CHECK: loop_begin:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %inner_loop_begin
inner_loop_begin:
%a.phi = phi i32 [ %a, %loop_begin ], [ %a2, %inner_inner_loop_exit ]
- %cond = load i1, i1* %cond.ptr
- %b = load i32, i32* %b.ptr
+ %cond = load i1, ptr %cond.ptr
+ %b = load i32, ptr %b.ptr
br label %inner_inner_loop_begin
; CHECK: inner_loop_begin:
; CHECK-NEXT: %[[A_INNER_PHI:.*]] = phi i32 [ %[[A]], %loop_begin ], [ %[[A2:.*]], %inner_inner_loop_exit ]
-; CHECK-NEXT: %[[COND:.*]] = load i1, i1* %cond.ptr
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
+; CHECK-NEXT: %[[COND:.*]] = load i1, ptr %cond.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
; CHECK-NEXT: %[[FROZEN:.+]] = freeze i1 %[[COND]]
; CHECK-NEXT: br i1 %[[FROZEN]], label %inner_loop_begin.split.us, label %inner_loop_begin.split
inner_inner_loop_begin:
- %v1 = load i1, i1* %ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %inner_inner_loop_a, label %inner_inner_loop_b
inner_inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %inner_inner_loop_latch, label %inner_loop_exit
inner_inner_loop_b:
@@ -1144,14 +1144,14 @@ inner_inner_loop_latch:
; CHECK-NEXT: br label %inner_inner_loop_begin.us
;
; CHECK: inner_inner_loop_begin.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_a.us, label %inner_inner_loop_b.us
;
; CHECK: inner_inner_loop_b.us:
; CHECK-NEXT: br label %inner_inner_loop_latch.us
;
; CHECK: inner_inner_loop_a.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_latch.us, label %inner_loop_exit.loopexit.split.us
;
; CHECK: inner_inner_loop_latch.us:
@@ -1167,11 +1167,11 @@ inner_inner_loop_latch:
; CHECK-NEXT: br label %inner_inner_loop_begin
;
; CHECK: inner_inner_loop_begin:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_a, label %inner_inner_loop_b
;
; CHECK: inner_inner_loop_a:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_latch, label %inner_loop_exit.loopexit.split
;
; CHECK: inner_inner_loop_b:
@@ -1181,16 +1181,16 @@ inner_inner_loop_latch:
; CHECK-NEXT: br label %inner_inner_loop_begin
inner_inner_loop_exit:
- %a2 = load i32, i32* %a.ptr
- %v4 = load i1, i1* %ptr
+ %a2 = load i32, ptr %a.ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %inner_loop_exit, label %inner_loop_begin
; CHECK: inner_inner_loop_exit:
-; CHECK-NEXT: %[[A2]] = load i32, i32* %a.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[A2]] = load i32, ptr %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_loop_exit.loopexit1, label %inner_loop_begin
inner_loop_exit:
- %v5 = load i1, i1* %ptr
+ %v5 = load i1, ptr %ptr
br i1 %v5, label %loop_exit, label %loop_begin
; CHECK: inner_loop_exit.loopexit.split:
; CHECK-NEXT: %[[A_INNER_LCSSA:.*]] = phi i32 [ %[[A_INNER_PHI]], %inner_inner_loop_a ]
@@ -1206,7 +1206,7 @@ inner_loop_exit:
;
; CHECK: inner_loop_exit:
; CHECK-NEXT: %[[A_INNER_PHI:.*]] = phi i32 [ %[[A_INNER_LCSSA2]], %inner_loop_exit.loopexit1 ], [ %[[A_INNER_US_PHI]], %inner_loop_exit.loopexit ]
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_exit, label %loop_begin
loop_exit:
@@ -1219,7 +1219,7 @@ loop_exit:
; Same pattern as @test8a but where the original loop looses an exit block and
; needs to be hoisted up the nest.
-define i32 @test8b(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test8b(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test8b(
entry:
br label %loop_begin
@@ -1227,30 +1227,30 @@ entry:
; CHECK-NEXT: br label %loop_begin
loop_begin:
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br label %inner_loop_begin
; CHECK: loop_begin:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %inner_loop_begin
inner_loop_begin:
%a.phi = phi i32 [ %a, %loop_begin ], [ %a2, %inner_inner_loop_exit ]
- %cond = load i1, i1* %cond.ptr
- %b = load i32, i32* %b.ptr
+ %cond = load i1, ptr %cond.ptr
+ %b = load i32, ptr %b.ptr
br label %inner_inner_loop_begin
; CHECK: inner_loop_begin:
; CHECK-NEXT: %[[A_INNER_PHI:.*]] = phi i32 [ %[[A]], %loop_begin ], [ %[[A2:.*]], %inner_inner_loop_exit ]
-; CHECK-NEXT: %[[COND:.*]] = load i1, i1* %cond.ptr
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
+; CHECK-NEXT: %[[COND:.*]] = load i1, ptr %cond.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
; CHECK-NEXT: %[[FROZEN:.+]] = freeze i1 %[[COND]]
; CHECK-NEXT: br i1 %[[FROZEN]], label %inner_loop_begin.split.us, label %inner_loop_begin.split
inner_inner_loop_begin:
- %v1 = load i1, i1* %ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %inner_inner_loop_a, label %inner_inner_loop_b
inner_inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %inner_inner_loop_latch, label %inner_loop_exit
inner_inner_loop_b:
@@ -1264,14 +1264,14 @@ inner_inner_loop_latch:
; CHECK-NEXT: br label %inner_inner_loop_begin.us
;
; CHECK: inner_inner_loop_begin.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_a.us, label %inner_inner_loop_b.us
;
; CHECK: inner_inner_loop_b.us:
; CHECK-NEXT: br label %inner_inner_loop_exit.split.us
;
; CHECK: inner_inner_loop_a.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_latch.us, label %inner_loop_exit.loopexit.split.us
;
; CHECK: inner_inner_loop_latch.us:
@@ -1291,11 +1291,11 @@ inner_inner_loop_latch:
; CHECK-NEXT: br label %inner_inner_loop_begin
;
; CHECK: inner_inner_loop_begin:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_a, label %inner_inner_loop_b
;
; CHECK: inner_inner_loop_a:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_latch, label %inner_loop_exit.loopexit.split
;
; CHECK: inner_inner_loop_b:
@@ -1305,16 +1305,16 @@ inner_inner_loop_latch:
; CHECK-NEXT: br label %inner_inner_loop_begin
inner_inner_loop_exit:
- %a2 = load i32, i32* %a.ptr
- %v4 = load i1, i1* %ptr
+ %a2 = load i32, ptr %a.ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %inner_loop_exit, label %inner_loop_begin
; CHECK: inner_inner_loop_exit:
-; CHECK-NEXT: %[[A2]] = load i32, i32* %a.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[A2]] = load i32, ptr %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_loop_exit.loopexit1, label %inner_loop_begin
inner_loop_exit:
- %v5 = load i1, i1* %ptr
+ %v5 = load i1, ptr %ptr
br i1 %v5, label %loop_exit, label %loop_begin
; CHECK: inner_loop_exit.loopexit.split:
; CHECK-NEXT: %[[A_INNER_LCSSA:.*]] = phi i32 [ %[[A_INNER_INNER_LCSSA]], %inner_inner_loop_a ]
@@ -1330,7 +1330,7 @@ inner_loop_exit:
;
; CHECK: inner_loop_exit:
; CHECK-NEXT: %[[A_INNER_PHI:.*]] = phi i32 [ %[[A_INNER_LCSSA2]], %inner_loop_exit.loopexit1 ], [ %[[A_INNER_US_PHI]], %inner_loop_exit.loopexit ]
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_exit, label %loop_begin
loop_exit:
@@ -1345,7 +1345,7 @@ loop_exit:
; the clone no longer has an exiting edge *at all* and loops infinitely.
; Because it doesn't ever exit to the outer loop it is no longer an inner loop
; but needs to be hoisted up the nest to be a top-level loop.
-define i32 @test9a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test9a(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test9a(
entry:
br label %loop_begin
@@ -1353,16 +1353,16 @@ entry:
; CHECK-NEXT: br label %loop_begin
loop_begin:
- %b = load i32, i32* %b.ptr
- %cond = load i1, i1* %cond.ptr
+ %b = load i32, ptr %b.ptr
+ %cond = load i1, ptr %cond.ptr
br label %inner_loop_begin
; CHECK: loop_begin:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
-; CHECK-NEXT: %[[COND:.*]] = load i1, i1* %cond.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
+; CHECK-NEXT: %[[COND:.*]] = load i1, ptr %cond.ptr
; CHECK-NEXT: br i1 %[[COND]], label %loop_begin.split.us, label %loop_begin.split
inner_loop_begin:
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond, label %inner_loop_latch, label %inner_loop_exit
inner_loop_latch:
@@ -1376,7 +1376,7 @@ inner_loop_latch:
; CHECK-NEXT: br label %inner_loop_begin.us
;
; CHECK: inner_loop_begin.us:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %inner_loop_latch.us
;
; CHECK: inner_loop_latch.us:
@@ -1389,16 +1389,16 @@ inner_loop_latch:
; CHECK-NEXT: br label %inner_loop_begin
;
; CHECK: inner_loop_begin:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %inner_loop_exit
inner_loop_exit:
%a.inner_lcssa = phi i32 [ %a, %inner_loop_begin ]
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
; CHECK: inner_loop_exit:
; CHECK-NEXT: %[[A_INNER_LCSSA:.*]] = phi i32 [ %[[A]], %inner_loop_begin ]
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin, label %loop_exit
loop_exit:
@@ -1412,7 +1412,7 @@ loop_exit:
; The same core pattern as @test9a, but instead of the cloned loop becoming an
; infinite loop, the original loop has its only exit unswitched and the
; original loop becomes infinite and must be hoisted out of the loop nest.
-define i32 @test9b(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test9b(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test9b(
entry:
br label %loop_begin
@@ -1420,16 +1420,16 @@ entry:
; CHECK-NEXT: br label %loop_begin
loop_begin:
- %b = load i32, i32* %b.ptr
- %cond = load i1, i1* %cond.ptr
+ %b = load i32, ptr %b.ptr
+ %cond = load i1, ptr %cond.ptr
br label %inner_loop_begin
; CHECK: loop_begin:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
-; CHECK-NEXT: %[[COND:.*]] = load i1, i1* %cond.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
+; CHECK-NEXT: %[[COND:.*]] = load i1, ptr %cond.ptr
; CHECK-NEXT: br i1 %[[COND]], label %loop_begin.split.us, label %loop_begin.split
inner_loop_begin:
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond, label %inner_loop_exit, label %inner_loop_latch
inner_loop_latch:
@@ -1441,7 +1441,7 @@ inner_loop_latch:
; CHECK-NEXT: br label %inner_loop_begin.us
;
; CHECK: inner_loop_begin.us:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %inner_loop_exit.split.us
;
; CHECK: inner_loop_exit.split.us
@@ -1456,7 +1456,7 @@ inner_loop_latch:
; CHECK-NEXT: br label %inner_loop_begin
;
; CHECK: inner_loop_begin:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %inner_loop_latch
;
; CHECK: inner_loop_latch:
@@ -1465,10 +1465,10 @@ inner_loop_latch:
inner_loop_exit:
%a.inner_lcssa = phi i32 [ %a, %inner_loop_begin ]
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
; CHECK: inner_loop_exit:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin, label %loop_exit
loop_exit:
@@ -1480,7 +1480,7 @@ loop_exit:
}
; Test that requires re-forming dedicated exits for the cloned loop.
-define i32 @test10a(i1* %ptr, i1 %cond, i32* %a.ptr) {
+define i32 @test10a(ptr %ptr, i1 %cond, ptr %a.ptr) {
; CHECK-LABEL: @test10a(
entry:
br label %loop_begin
@@ -1489,12 +1489,12 @@ entry:
; CHECK-NEXT: br i1 %[[FROZEN]], label %entry.split.us, label %entry.split
loop_begin:
- %a = load i32, i32* %a.ptr
- %v1 = load i1, i1* %ptr
+ %a = load i32, ptr %a.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_a, label %loop_b
loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_exit, label %loop_begin
loop_b:
@@ -1505,8 +1505,8 @@ loop_b:
; CHECK-NEXT: br label %loop_begin.us
;
; CHECK: loop_begin.us:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_a.us, label %loop_b.us
;
; CHECK: loop_b.us:
@@ -1514,7 +1514,7 @@ loop_b:
; CHECK-NEXT: br label %loop_exit.split.us
;
; CHECK: loop_a.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_exit.split.us.loopexit, label %loop_begin.backedge.us
;
; CHECK: loop_begin.backedge.us:
@@ -1534,12 +1534,12 @@ loop_b:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_a, label %loop_b
;
; CHECK: loop_a:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_exit.split, label %loop_begin.backedge
;
; CHECK: loop_begin.backedge:
@@ -1561,7 +1561,7 @@ loop_exit:
}
; Test that requires re-forming dedicated exits for the original loop.
-define i32 @test10b(i1* %ptr, i1 %cond, i32* %a.ptr) {
+define i32 @test10b(ptr %ptr, i1 %cond, ptr %a.ptr) {
; CHECK-LABEL: @test10b(
entry:
br label %loop_begin
@@ -1570,12 +1570,12 @@ entry:
; CHECK-NEXT: br i1 %[[FROZEN]], label %entry.split.us, label %entry.split
loop_begin:
- %a = load i32, i32* %a.ptr
- %v1 = load i1, i1* %ptr
+ %a = load i32, ptr %a.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_a, label %loop_b
loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_begin, label %loop_exit
loop_b:
@@ -1586,15 +1586,15 @@ loop_b:
; CHECK-NEXT: br label %loop_begin.us
;
; CHECK: loop_begin.us:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_a.us, label %loop_b.us
;
; CHECK: loop_b.us:
; CHECK-NEXT: br label %loop_begin.backedge.us
;
; CHECK: loop_a.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin.backedge.us, label %loop_exit.split.us
;
; CHECK: loop_begin.backedge.us:
@@ -1610,12 +1610,12 @@ loop_b:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_a, label %loop_b
;
; CHECK: loop_a:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin.backedge, label %loop_exit.split.loopexit
;
; CHECK: loop_begin.backedge:
@@ -1645,7 +1645,7 @@ loop_exit:
; exits even an outer loop, we don't add the cloned preheader to the outer
; loop and do add the needed LCSSA phi nodes for the new exit block from the
; outer loop.
-define i32 @test11a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test11a(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test11a(
entry:
br label %loop_begin
@@ -1653,29 +1653,29 @@ entry:
; CHECK-NEXT: br label %loop_begin
loop_begin:
- %b = load i32, i32* %b.ptr
- %v1 = load i1, i1* %ptr
+ %b = load i32, ptr %b.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_latch, label %inner_loop_ph
; CHECK: loop_begin:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_latch, label %inner_loop_ph
inner_loop_ph:
- %cond = load i1, i1* %cond.ptr
+ %cond = load i1, ptr %cond.ptr
br label %inner_loop_begin
; CHECK: inner_loop_ph:
-; CHECK-NEXT: %[[COND:.*]] = load i1, i1* %cond.ptr
+; CHECK-NEXT: %[[COND:.*]] = load i1, ptr %cond.ptr
; CHECK-NEXT: %[[FROZEN:.+]] = freeze i1 %[[COND]]
; CHECK-NEXT: br i1 %[[FROZEN]], label %inner_loop_ph.split.us, label %inner_loop_ph.split
inner_loop_begin:
call void @sink1(i32 %b)
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond, label %loop_exit, label %inner_loop_a
inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %inner_loop_exit, label %inner_loop_begin
; The cloned path doesn't actually loop and is an exit from the outer loop as
; well.
@@ -1686,7 +1686,7 @@ inner_loop_a:
;
; CHECK: inner_loop_begin.us:
; CHECK-NEXT: call void @sink1(i32 %[[B_LCSSA]])
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %loop_exit.loopexit.split.us
;
; CHECK: loop_exit.loopexit.split.us:
@@ -1700,20 +1700,20 @@ inner_loop_a:
;
; CHECK: inner_loop_begin:
; CHECK-NEXT: call void @sink1(i32 %[[B]])
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %inner_loop_a
;
; CHECK: inner_loop_a:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_loop_exit, label %inner_loop_begin
inner_loop_exit:
%a.inner_lcssa = phi i32 [ %a, %inner_loop_a ]
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %loop_latch, label %loop_exit
; CHECK: inner_loop_exit:
; CHECK-NEXT: %[[A_INNER_LCSSA:.*]] = phi i32 [ %[[A]], %inner_loop_a ]
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_latch, label %loop_exit.loopexit1
loop_latch:
@@ -1740,7 +1740,7 @@ loop_exit:
; directly exits even an outer loop, we remove the original preheader from the
; outer loop and add needed LCSSA phi nodes for the new exit block from the
; outer loop.
-define i32 @test11b(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test11b(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test11b(
entry:
br label %loop_begin
@@ -1748,29 +1748,29 @@ entry:
; CHECK-NEXT: br label %loop_begin
loop_begin:
- %b = load i32, i32* %b.ptr
- %v1 = load i1, i1* %ptr
+ %b = load i32, ptr %b.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_latch, label %inner_loop_ph
; CHECK: loop_begin:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_latch, label %inner_loop_ph
inner_loop_ph:
- %cond = load i1, i1* %cond.ptr
+ %cond = load i1, ptr %cond.ptr
br label %inner_loop_begin
; CHECK: inner_loop_ph:
-; CHECK-NEXT: %[[COND:.*]] = load i1, i1* %cond.ptr
+; CHECK-NEXT: %[[COND:.*]] = load i1, ptr %cond.ptr
; CHECK-NEXT: %[[FROZEN:.+]] = freeze i1 %[[COND]]
; CHECK-NEXT: br i1 %[[FROZEN]], label %inner_loop_ph.split.us, label %inner_loop_ph.split
inner_loop_begin:
call void @sink1(i32 %b)
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond, label %inner_loop_a, label %loop_exit
inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %inner_loop_exit, label %inner_loop_begin
; The cloned path continues to loop without the exit out of the entire nest.
;
@@ -1779,11 +1779,11 @@ inner_loop_a:
;
; CHECK: inner_loop_begin.us:
; CHECK-NEXT: call void @sink1(i32 %[[B]])
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %inner_loop_a.us
;
; CHECK: inner_loop_a.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_loop_exit.split.us, label %inner_loop_begin.us
;
; CHECK: inner_loop_exit.split.us:
@@ -1798,15 +1798,15 @@ inner_loop_a:
;
; CHECK: inner_loop_begin:
; CHECK-NEXT: call void @sink1(i32 %[[B_LCSSA]])
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %loop_exit.loopexit
inner_loop_exit:
%a.inner_lcssa = phi i32 [ %a, %inner_loop_a ]
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %loop_latch, label %loop_exit
; CHECK: inner_loop_exit:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_latch, label %loop_exit.loopexit1
loop_latch:
@@ -1834,7 +1834,7 @@ loop_exit:
; another loop, we correctly attribute the cloned preheader to that outermost
; loop rather than only handling the case where the preheader is not in any loop
; at all.
-define i32 @test12a(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test12a(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test12a(
entry:
br label %loop_begin
@@ -1847,29 +1847,29 @@ loop_begin:
; CHECK-NEXT: br label %inner_loop_begin
inner_loop_begin:
- %b = load i32, i32* %b.ptr
- %v1 = load i1, i1* %ptr
+ %b = load i32, ptr %b.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %inner_loop_latch, label %inner_inner_loop_ph
; CHECK: inner_loop_begin:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_loop_latch, label %inner_inner_loop_ph
inner_inner_loop_ph:
- %cond = load i1, i1* %cond.ptr
+ %cond = load i1, ptr %cond.ptr
br label %inner_inner_loop_begin
; CHECK: inner_inner_loop_ph:
-; CHECK-NEXT: %[[COND:.*]] = load i1, i1* %cond.ptr
+; CHECK-NEXT: %[[COND:.*]] = load i1, ptr %cond.ptr
; CHECK-NEXT: %[[FROZEN:.+]] = freeze i1 %[[COND]]
; CHECK-NEXT: br i1 %[[FROZEN]], label %inner_inner_loop_ph.split.us, label %inner_inner_loop_ph.split
inner_inner_loop_begin:
call void @sink1(i32 %b)
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond, label %inner_loop_exit, label %inner_inner_loop_a
inner_inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %inner_inner_loop_exit, label %inner_inner_loop_begin
; The cloned path doesn't actually loop and is an exit from the outer loop as
; well.
@@ -1880,7 +1880,7 @@ inner_inner_loop_a:
;
; CHECK: inner_inner_loop_begin.us:
; CHECK-NEXT: call void @sink1(i32 %[[B_LCSSA]])
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %inner_loop_exit.loopexit.split.us
;
; CHECK: inner_loop_exit.loopexit.split.us:
@@ -1894,20 +1894,20 @@ inner_inner_loop_a:
;
; CHECK: inner_inner_loop_begin:
; CHECK-NEXT: call void @sink1(i32 %[[B]])
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %inner_inner_loop_a
;
; CHECK: inner_inner_loop_a:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_exit, label %inner_inner_loop_begin
inner_inner_loop_exit:
%a.inner_inner_lcssa = phi i32 [ %a, %inner_inner_loop_a ]
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %inner_loop_latch, label %inner_loop_exit
; CHECK: inner_inner_loop_exit:
; CHECK-NEXT: %[[A_INNER_INNER_LCSSA:.*]] = phi i32 [ %[[A]], %inner_inner_loop_a ]
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_loop_latch, label %inner_loop_exit.loopexit1
inner_loop_latch:
@@ -1917,7 +1917,7 @@ inner_loop_latch:
inner_loop_exit:
%a.inner_lcssa = phi i32 [ %a, %inner_inner_loop_begin ], [ %a.inner_inner_lcssa, %inner_inner_loop_exit ]
- %v4 = load i1, i1* %ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %loop_begin, label %loop_exit
; CHECK: inner_loop_exit.loopexit:
; CHECK-NEXT: br label %inner_loop_exit
@@ -1928,7 +1928,7 @@ inner_loop_exit:
;
; CHECK: inner_loop_exit:
; CHECK-NEXT: %[[A_INNER_PHI:.*]] = phi i32 [ %[[A_INNER_INNER_LCSSA_US]], %inner_loop_exit.loopexit ], [ %[[A_INNER_LCSSA]], %inner_loop_exit.loopexit1 ]
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin, label %loop_exit
loop_exit:
@@ -1943,7 +1943,7 @@ loop_exit:
; another loop, we correctly sink the preheader to the outermost loop rather
; than only handling the case where the preheader is completely removed from
; a loop.
-define i32 @test12b(i1* %ptr, i1* %cond.ptr, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test12b(ptr %ptr, ptr %cond.ptr, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test12b(
entry:
br label %loop_begin
@@ -1956,29 +1956,29 @@ loop_begin:
; CHECK-NEXT: br label %inner_loop_begin
inner_loop_begin:
- %b = load i32, i32* %b.ptr
- %v1 = load i1, i1* %ptr
+ %b = load i32, ptr %b.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %inner_loop_latch, label %inner_inner_loop_ph
; CHECK: inner_loop_begin:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_loop_latch, label %inner_inner_loop_ph
inner_inner_loop_ph:
- %cond = load i1, i1* %cond.ptr
+ %cond = load i1, ptr %cond.ptr
br label %inner_inner_loop_begin
; CHECK: inner_inner_loop_ph:
-; CHECK-NEXT: %[[COND:.*]] = load i1, i1* %cond.ptr
+; CHECK-NEXT: %[[COND:.*]] = load i1, ptr %cond.ptr
; CHECK-NEXT: %[[FROZEN:.+]] = freeze i1 %[[COND]]
; CHECK-NEXT: br i1 %[[FROZEN]], label %inner_inner_loop_ph.split.us, label %inner_inner_loop_ph.split
inner_inner_loop_begin:
call void @sink1(i32 %b)
- %a = load i32, i32* %a.ptr
+ %a = load i32, ptr %a.ptr
br i1 %cond, label %inner_inner_loop_a, label %inner_loop_exit
inner_inner_loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %inner_inner_loop_exit, label %inner_inner_loop_begin
; The cloned path continues to loop without the exit out of the entire nest.
;
@@ -1987,11 +1987,11 @@ inner_inner_loop_a:
;
; CHECK: inner_inner_loop_begin.us:
; CHECK-NEXT: call void @sink1(i32 %[[B]])
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %inner_inner_loop_a.us
;
; CHECK: inner_inner_loop_a.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_inner_loop_exit.split.us, label %inner_inner_loop_begin.us
;
; CHECK: inner_inner_loop_exit.split.us:
@@ -2006,15 +2006,15 @@ inner_inner_loop_a:
;
; CHECK: inner_inner_loop_begin:
; CHECK-NEXT: call void @sink1(i32 %[[B_LCSSA]])
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
; CHECK-NEXT: br label %inner_loop_exit.loopexit
inner_inner_loop_exit:
%a.inner_inner_lcssa = phi i32 [ %a, %inner_inner_loop_a ]
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %inner_loop_latch, label %inner_loop_exit
; CHECK: inner_inner_loop_exit:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %inner_loop_latch, label %inner_loop_exit.loopexit1
inner_loop_latch:
@@ -2024,7 +2024,7 @@ inner_loop_latch:
inner_loop_exit:
%a.inner_lcssa = phi i32 [ %a, %inner_inner_loop_begin ], [ %a.inner_inner_lcssa, %inner_inner_loop_exit ]
- %v4 = load i1, i1* %ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %loop_begin, label %loop_exit
; CHECK: inner_loop_exit.loopexit:
; CHECK-NEXT: %[[A_INNER_LCSSA:.*]] = phi i32 [ %[[A]], %inner_inner_loop_begin ]
@@ -2036,7 +2036,7 @@ inner_loop_exit:
;
; CHECK: inner_loop_exit:
; CHECK-NEXT: %[[A_INNER_PHI:.*]] = phi i32 [ %[[A_INNER_LCSSA]], %inner_loop_exit.loopexit ], [ %[[A_INNER_LCSSA_US]], %inner_loop_exit.loopexit1 ]
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin, label %loop_exit
loop_exit:
@@ -2052,7 +2052,7 @@ loop_exit:
; exiting block that connects the inner loop to the cloned loop is not the header
; block. This ensures that we correctly handle interesting corner cases of
; traversing back to the header when establishing the cloned loop.
-define i32 @test13a(i1* %ptr, i1 %cond, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test13a(ptr %ptr, i1 %cond, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test13a(
entry:
br label %loop_begin
@@ -2061,27 +2061,27 @@ entry:
; CHECK-NEXT: br i1 %[[FROZEN]], label %entry.split.us, label %entry.split
loop_begin:
- %a = load i32, i32* %a.ptr
- %v1 = load i1, i1* %ptr
+ %a = load i32, ptr %a.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_a, label %loop_b
loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_exit, label %loop_latch
loop_b:
- %b = load i32, i32* %b.ptr
+ %b = load i32, ptr %b.ptr
br i1 %cond, label %loop_b_inner_ph, label %loop_exit
loop_b_inner_ph:
br label %loop_b_inner_header
loop_b_inner_header:
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %loop_b_inner_latch, label %loop_b_inner_body
loop_b_inner_body:
- %v4 = load i1, i1* %ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %loop_b_inner_latch, label %loop_b_inner_exit
loop_b_inner_latch:
@@ -2098,23 +2098,23 @@ loop_latch:
; CHECK-NEXT: br label %loop_begin.us
;
; CHECK: loop_begin.us:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_a.us, label %loop_b.us
;
; CHECK: loop_b.us:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
; CHECK-NEXT: br label %loop_b_inner_ph.us
;
; CHECK: loop_b_inner_ph.us:
; CHECK-NEXT: br label %loop_b_inner_header.us
;
; CHECK: loop_b_inner_header.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_b_inner_latch.us, label %loop_b_inner_body.us
;
; CHECK: loop_b_inner_body.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_b_inner_latch.us, label %loop_b_inner_exit.us
;
; CHECK: loop_b_inner_exit.us:
@@ -2124,7 +2124,7 @@ loop_latch:
; CHECK-NEXT: br label %loop_b_inner_header.us
;
; CHECK: loop_a.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_exit.split.us, label %loop_latch.us
;
; CHECK: loop_latch.us:
@@ -2140,16 +2140,16 @@ loop_latch:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_a, label %loop_b
;
; CHECK: loop_a:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_exit.split.loopexit, label %loop_latch
;
; CHECK: loop_b:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
; CHECK-NEXT: br label %loop_exit.split
;
; CHECK: loop_latch:
@@ -2177,7 +2177,7 @@ loop_exit:
; the header block. This ensures that we correctly handle interesting corner
; cases of traversing back to the header when re-establishing the original loop
; still exists after unswitching.
-define i32 @test13b(i1* %ptr, i1 %cond, i32* %a.ptr, i32* %b.ptr) {
+define i32 @test13b(ptr %ptr, i1 %cond, ptr %a.ptr, ptr %b.ptr) {
; CHECK-LABEL: @test13b(
entry:
br label %loop_begin
@@ -2186,27 +2186,27 @@ entry:
; CHECK-NEXT: br i1 %[[FROZEN]], label %entry.split.us, label %entry.split
loop_begin:
- %a = load i32, i32* %a.ptr
- %v1 = load i1, i1* %ptr
+ %a = load i32, ptr %a.ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_a, label %loop_b
loop_a:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_exit, label %loop_latch
loop_b:
- %b = load i32, i32* %b.ptr
+ %b = load i32, ptr %b.ptr
br i1 %cond, label %loop_exit, label %loop_b_inner_ph
loop_b_inner_ph:
br label %loop_b_inner_header
loop_b_inner_header:
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %loop_b_inner_latch, label %loop_b_inner_body
loop_b_inner_body:
- %v4 = load i1, i1* %ptr
+ %v4 = load i1, ptr %ptr
br i1 %v4, label %loop_b_inner_latch, label %loop_b_inner_exit
loop_b_inner_latch:
@@ -2223,16 +2223,16 @@ loop_latch:
; CHECK-NEXT: br label %loop_begin.us
;
; CHECK: loop_begin.us:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_a.us, label %loop_b.us
;
; CHECK: loop_b.us:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
; CHECK-NEXT: br label %loop_exit.split.us
;
; CHECK: loop_a.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_exit.split.us.loopexit, label %loop_latch.us
;
; CHECK: loop_latch.us:
@@ -2252,27 +2252,27 @@ loop_latch:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[A:.*]] = load i32, i32* %a.ptr
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[A:.*]] = load i32, ptr %a.ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_a, label %loop_b
;
; CHECK: loop_a:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_exit.split, label %loop_latch
;
; CHECK: loop_b:
-; CHECK-NEXT: %[[B:.*]] = load i32, i32* %b.ptr
+; CHECK-NEXT: %[[B:.*]] = load i32, ptr %b.ptr
; CHECK-NEXT: br label %loop_b_inner_ph
;
; CHECK: loop_b_inner_ph:
; CHECK-NEXT: br label %loop_b_inner_header
;
; CHECK: loop_b_inner_header:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_b_inner_latch, label %loop_b_inner_body
;
; CHECK: loop_b_inner_body:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_b_inner_latch, label %loop_b_inner_exit
;
; CHECK: loop_b_inner_latch:
@@ -2296,7 +2296,7 @@ loop_exit:
; CHECK-NEXT: ret i32 %[[AB_PHI]]
}
-define i32 @test20(i32* %var, i32 %cond1, i32 %cond2) {
+define i32 @test20(ptr %var, i32 %cond1, i32 %cond2) {
; CHECK-LABEL: @test20(
entry:
br label %loop_begin
@@ -2310,7 +2310,7 @@ entry:
; CHECK-NEXT: ]
loop_begin:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
switch i32 %cond2, label %loop_exit [
i32 0, label %loop_a
i32 1, label %loop_a
@@ -2328,7 +2328,7 @@ loop_a:
; CHECK-NEXT: br label %[[LOOP_BEGIN_A:.*]]
;
; CHECK: [[LOOP_BEGIN_A]]:
-; CHECK-NEXT: %{{.*}} = load i32, i32* %var
+; CHECK-NEXT: %{{.*}} = load i32, ptr %var
; CHECK-NEXT: br label %[[LOOP_A:.*]]
;
; CHECK: [[LOOP_A]]:
@@ -2347,7 +2347,7 @@ loop_b:
; CHECK-NEXT: br label %[[LOOP_BEGIN_B:.*]]
;
; CHECK: [[LOOP_BEGIN_B]]:
-; CHECK-NEXT: %{{.*}} = load i32, i32* %var
+; CHECK-NEXT: %{{.*}} = load i32, ptr %var
; CHECK-NEXT: br label %[[LOOP_B:.*]]
;
; CHECK: [[LOOP_B]]:
@@ -2366,7 +2366,7 @@ loop_c:
; CHECK-NEXT: br label %[[LOOP_BEGIN_C:.*]]
;
; CHECK: [[LOOP_BEGIN_C]]:
-; CHECK-NEXT: %{{.*}} = load i32, i32* %var
+; CHECK-NEXT: %{{.*}} = load i32, ptr %var
; CHECK-NEXT: br label %[[LOOP_C:.*]]
;
; CHECK: [[LOOP_C]]:
@@ -2388,7 +2388,7 @@ loop_exit:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[V:.*]] = load i32, i32* %var
+; CHECK-NEXT: %[[V:.*]] = load i32, ptr %var
; CHECK-NEXT: br label %loop_exit
;
; CHECK: loop_exit:
@@ -2399,7 +2399,7 @@ loop_exit:
; Negative test: we do not switch when the loop contains unstructured control
; flows as it would significantly complicate the process as novel loops might
; be formed, etc.
-define void @test_no_unswitch_unstructured_cfg(i1* %ptr, i1 %cond) {
+define void @test_no_unswitch_unstructured_cfg(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test_no_unswitch_unstructured_cfg(
entry:
br label %loop_begin
@@ -2408,15 +2408,15 @@ loop_begin:
br i1 %cond, label %loop_left, label %loop_right
loop_left:
- %v1 = load i1, i1* %ptr
+ %v1 = load i1, ptr %ptr
br i1 %v1, label %loop_right, label %loop_merge
loop_right:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_left, label %loop_merge
loop_merge:
- %v3 = load i1, i1* %ptr
+ %v3 = load i1, ptr %ptr
br i1 %v3, label %loop_latch, label %loop_exit
loop_latch:
@@ -2560,7 +2560,7 @@ loop1.exit:
; skip whole subregions of the outer loop blocks but just because the header of
; the outer loop is also the preheader of an inner loop shouldn't confuse this
; walk.
-define void @test23(i1 %arg, i1* %ptr) {
+define void @test23(i1 %arg, ptr %ptr) {
; CHECK-LABEL: define void @test23(
entry:
br label %outer.header
@@ -2588,7 +2588,7 @@ inner.header:
br label %inner.latch
inner.latch:
- %inner.cond = load i1, i1* %ptr
+ %inner.cond = load i1, ptr %ptr
br i1 %inner.cond, label %inner.header, label %outer.body
outer.body:
@@ -2603,7 +2603,7 @@ outer.body.right:
br label %outer.latch
outer.latch:
- %outer.cond = load i1, i1* %ptr
+ %outer.cond = load i1, ptr %ptr
br i1 %outer.cond, label %outer.header, label %exit
exit:
@@ -2612,7 +2612,7 @@ exit:
; Non-trivial loop unswitching where there are two invariant conditions, but the
; second one is only in the cloned copy of the loop after unswitching.
-define i32 @test24(i1* %ptr, i1 %cond1, i1 %cond2) {
+define i32 @test24(ptr %ptr, i1 %cond1, i1 %cond2) {
; CHECK-LABEL: @test24(
entry:
br label %loop_begin
@@ -2648,7 +2648,7 @@ loop_a_a:
; CHECK-NEXT: br label %latch.us.us
;
; CHECK: latch.us.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin.us.us, label %loop_exit.split.us.split.us
;
; CHECK: loop_exit.split.us.split.us:
@@ -2673,7 +2673,7 @@ loop_a_c:
; CHECK-NEXT: br label %latch
;
; CHECK: latch.us:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin.us, label %loop_exit.split.us.split
;
; CHECK: loop_exit.split.us.split:
@@ -2695,14 +2695,14 @@ loop_b:
; CHECK-NEXT: br label %latch
;
; CHECK: latch:
-; CHECK-NEXT: %[[V:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V]], label %loop_begin, label %loop_exit.split
;
; CHECK: loop_exit.split:
; CHECK-NEXT: br label %loop_exit
latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
@@ -2712,7 +2712,7 @@ loop_exit:
}
; Non-trivial partial loop unswitching of an invariant input to an 'or'.
-define i32 @test25(i1* %ptr, i1 %cond) {
+define i32 @test25(ptr %ptr, i1 %cond) {
; CHECK-LABEL: @test25(
entry:
br label %loop_begin
@@ -2721,7 +2721,7 @@ entry:
; CHECK-NEXT: br i1 [[FROZEN]], label %entry.split.us, label %entry.split
loop_begin:
- %v1 = load i1, i1* %ptr
+ %v1 = load i1, ptr %ptr
%cond_or = or i1 %v1, %cond
br i1 %cond_or, label %loop_a, label %loop_b
@@ -2741,7 +2741,7 @@ loop_a:
; CHECK-NEXT: br label %latch.us
;
; CHECK: latch.us:
-; CHECK-NEXT: %[[V2_US:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V2_US:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V2_US]], label %loop_begin.us, label %loop_exit.split.us
;
; CHECK: loop_exit.split.us:
@@ -2756,7 +2756,7 @@ loop_b:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[V1:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V1:.*]] = load i1, ptr %ptr
; CHECK-NEXT: %[[OR:.*]] = or i1 %[[V1]], false
; CHECK-NEXT: br i1 %[[OR]], label %loop_a, label %loop_b
;
@@ -2769,10 +2769,10 @@ loop_b:
; CHECK-NEXT: br label %latch
latch:
- %v2 = load i1, i1* %ptr
+ %v2 = load i1, ptr %ptr
br i1 %v2, label %loop_begin, label %loop_exit
; CHECK: latch:
-; CHECK-NEXT: %[[V2:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V2:.*]] = load i1, ptr %ptr
; CHECK-NEXT: br i1 %[[V2]], label %loop_begin, label %loop_exit.split
loop_exit:
@@ -2786,7 +2786,7 @@ loop_exit:
; Non-trivial partial loop unswitching of multiple invariant inputs to an `and`
; chain.
-define i32 @test26(i1* %ptr1, i1* %ptr2, i1* %ptr3, i1 %cond1, i1 %cond2, i1 %cond3) {
+define i32 @test26(ptr %ptr1, ptr %ptr2, ptr %ptr3, i1 %cond1, i1 %cond2, i1 %cond3) {
; CHECK-LABEL: @test26(
entry:
br label %loop_begin
@@ -2797,8 +2797,8 @@ entry:
; CHECK-NEXT: br i1 %[[INV_AND]], label %entry.split, label %entry.split.us
loop_begin:
- %v1 = load i1, i1* %ptr1
- %v2 = load i1, i1* %ptr2
+ %v1 = load i1, ptr %ptr1
+ %v2 = load i1, ptr %ptr2
%cond_and1 = and i1 %v1, %cond1
%cond_or1 = or i1 %v2, %cond2
%cond_and2 = and i1 %cond_and1, %cond_or1
@@ -2817,7 +2817,7 @@ loop_begin:
; CHECK-NEXT: br label %latch.us
;
; CHECK: latch.us:
-; CHECK-NEXT: %[[V3_US:.*]] = load i1, i1* %ptr3
+; CHECK-NEXT: %[[V3_US:.*]] = load i1, ptr %ptr3
; CHECK-NEXT: br i1 %[[V3_US]], label %loop_begin.us, label %loop_exit.split.us
;
; CHECK: loop_exit.split.us:
@@ -2829,8 +2829,8 @@ loop_begin:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[V1:.*]] = load i1, i1* %ptr1
-; CHECK-NEXT: %[[V2:.*]] = load i1, i1* %ptr2
+; CHECK-NEXT: %[[V1:.*]] = load i1, ptr %ptr1
+; CHECK-NEXT: %[[V2:.*]] = load i1, ptr %ptr2
; CHECK-NEXT: %[[AND1:.*]] = and i1 %[[V1]], true
; CHECK-NEXT: %[[OR1:.*]] = or i1 %[[V2]], %cond2
; CHECK-NEXT: %[[AND2:.*]] = and i1 %[[AND1]], %[[OR1]]
@@ -2852,10 +2852,10 @@ loop_b:
; CHECK-NEXT: br label %latch
latch:
- %v3 = load i1, i1* %ptr3
+ %v3 = load i1, ptr %ptr3
br i1 %v3, label %loop_begin, label %loop_exit
; CHECK: latch:
-; CHECK-NEXT: %[[V3:.*]] = load i1, i1* %ptr3
+; CHECK-NEXT: %[[V3:.*]] = load i1, ptr %ptr3
; CHECK-NEXT: br i1 %[[V3]], label %loop_begin, label %loop_exit.split
loop_exit:
@@ -2869,7 +2869,7 @@ loop_exit:
; Non-trivial partial loop unswitching of multiple invariant inputs to an `or`
; chain. Basically an inverted version of corresponding `and` test (test26).
-define i32 @test27(i1* %ptr1, i1* %ptr2, i1* %ptr3, i1 %cond1, i1 %cond2, i1 %cond3) {
+define i32 @test27(ptr %ptr1, ptr %ptr2, ptr %ptr3, i1 %cond1, i1 %cond2, i1 %cond3) {
; CHECK-LABEL: @test27(
entry:
br label %loop_begin
@@ -2880,8 +2880,8 @@ entry:
; CHECK-NEXT: br i1 %[[INV_OR]], label %entry.split.us, label %entry.split
loop_begin:
- %v1 = load i1, i1* %ptr1
- %v2 = load i1, i1* %ptr2
+ %v1 = load i1, ptr %ptr1
+ %v2 = load i1, ptr %ptr2
%cond_or1 = or i1 %v1, %cond1
%cond_and1 = and i1 %v2, %cond2
%cond_or2 = or i1 %cond_or1, %cond_and1
@@ -2900,7 +2900,7 @@ loop_begin:
; CHECK-NEXT: br label %latch.us
;
; CHECK: latch.us:
-; CHECK-NEXT: %[[V3_US:.*]] = load i1, i1* %ptr3
+; CHECK-NEXT: %[[V3_US:.*]] = load i1, ptr %ptr3
; CHECK-NEXT: br i1 %[[V3_US]], label %loop_begin.us, label %loop_exit.split.us
;
; CHECK: loop_exit.split.us:
@@ -2912,8 +2912,8 @@ loop_begin:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[V1:.*]] = load i1, i1* %ptr1
-; CHECK-NEXT: %[[V2:.*]] = load i1, i1* %ptr2
+; CHECK-NEXT: %[[V1:.*]] = load i1, ptr %ptr1
+; CHECK-NEXT: %[[V2:.*]] = load i1, ptr %ptr2
; CHECK-NEXT: %[[OR1:.*]] = or i1 %[[V1]], false
; CHECK-NEXT: %[[AND1:.*]] = and i1 %[[V2]], %cond2
; CHECK-NEXT: %[[OR2:.*]] = or i1 %[[OR1]], %[[AND1]]
@@ -2935,10 +2935,10 @@ loop_b:
; CHECK-NEXT: br label %latch
latch:
- %v3 = load i1, i1* %ptr3
+ %v3 = load i1, ptr %ptr3
br i1 %v3, label %loop_begin, label %loop_exit
; CHECK: latch:
-; CHECK-NEXT: %[[V3:.*]] = load i1, i1* %ptr3
+; CHECK-NEXT: %[[V3:.*]] = load i1, ptr %ptr3
; CHECK-NEXT: br i1 %[[V3]], label %loop_begin, label %loop_exit.split
loop_exit:
@@ -2951,7 +2951,7 @@ loop_exit:
}
; Non-trivial unswitching of a switch.
-define i32 @test28(i1* %ptr, i32 %cond) {
+define i32 @test28(ptr %ptr, i32 %cond) {
; CHECK-LABEL: @test28(
entry:
br label %loop_begin
@@ -2985,7 +2985,7 @@ loop_a:
; CHECK-NEXT: br label %[[LOOP_LATCH_A:.*]]
;
; CHECK: [[LOOP_LATCH_A]]:
-; CHECK-NEXT: %[[V_A:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V_A:.*]] = load i1, ptr %ptr
; CHECK: br i1 %[[V_A]], label %[[LOOP_BEGIN_A]], label %[[LOOP_EXIT_A:.*]]
;
; CHECK: [[LOOP_EXIT_A]]:
@@ -3007,7 +3007,7 @@ loop_b:
; CHECK-NEXT: br label %[[LOOP_LATCH_B:.*]]
;
; CHECK: [[LOOP_LATCH_B]]:
-; CHECK-NEXT: %[[V_B:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V_B:.*]] = load i1, ptr %ptr
; CHECK: br i1 %[[V_B]], label %[[LOOP_BEGIN_B]], label %[[LOOP_EXIT_B:.*]]
;
; CHECK: [[LOOP_EXIT_B]]:
@@ -3029,14 +3029,14 @@ loop_c:
; CHECK-NEXT: br label %[[LOOP_LATCH_C:.*]]
;
; CHECK: [[LOOP_LATCH_C]]:
-; CHECK-NEXT: %[[V_C:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V_C:.*]] = load i1, ptr %ptr
; CHECK: br i1 %[[V_C]], label %[[LOOP_BEGIN_C]], label %[[LOOP_EXIT_C:.*]]
;
; CHECK: [[LOOP_EXIT_C]]:
; CHECK-NEXT: br label %loop_exit
latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
; Unswitched the 'latch' only loop.
;
@@ -3047,7 +3047,7 @@ latch:
; CHECK-NEXT: br label %[[LOOP_LATCH_LATCH:.*]]
;
; CHECK: [[LOOP_LATCH_LATCH]]:
-; CHECK-NEXT: %[[V_LATCH:.*]] = load i1, i1* %ptr
+; CHECK-NEXT: %[[V_LATCH:.*]] = load i1, ptr %ptr
; CHECK: br i1 %[[V_LATCH]], label %[[LOOP_BEGIN_LATCH]], label %[[LOOP_EXIT_LATCH:.*]]
;
; CHECK: [[LOOP_EXIT_LATCH]]:
@@ -3487,7 +3487,7 @@ exit:
; A < B < C
; into
; A < (B, C)
-define void @hoist_inner_loop1(i32* %ptr) {
+define void @hoist_inner_loop1(ptr %ptr) {
; CHECK-LABEL: define void @hoist_inner_loop1(
entry:
br label %a.header
@@ -3495,18 +3495,18 @@ entry:
; CHECK-NEXT: br label %a.header
a.header:
- %x.a = load i32, i32* %ptr
+ %x.a = load i32, ptr %ptr
br label %b.header
; CHECK: a.header:
-; CHECK-NEXT: %x.a = load i32, i32* %ptr
+; CHECK-NEXT: %x.a = load i32, ptr %ptr
; CHECK-NEXT: br label %b.header
b.header:
- %x.b = load i32, i32* %ptr
+ %x.b = load i32, ptr %ptr
%v1 = call i1 @cond()
br label %c.header
; CHECK: b.header:
-; CHECK-NEXT: %x.b = load i32, i32* %ptr
+; CHECK-NEXT: %x.b = load i32, ptr %ptr
; CHECK-NEXT: %v1 = call i1 @cond()
; CHECK-NEXT: %[[FROZEN:.+]] = freeze i1 %v1
; CHECK-NEXT: br i1 %[[FROZEN]], label %[[B_HEADER_SPLIT_US:.*]], label %[[B_HEADER_SPLIT:.*]]
@@ -3534,13 +3534,13 @@ c.header:
c.latch:
; Use values from other loops to check LCSSA form.
- store i32 %x.a, i32* %ptr
- store i32 %x.b, i32* %ptr
+ store i32 %x.a, ptr %ptr
+ store i32 %x.b, ptr %ptr
%v2 = call i1 @cond()
br i1 %v2, label %c.header, label %a.exit.c
; CHECK: c.latch:
-; CHECK-NEXT: store i32 %x.a, i32* %ptr
-; CHECK-NEXT: store i32 %[[X_B_LCSSA]], i32* %ptr
+; CHECK-NEXT: store i32 %x.a, ptr %ptr
+; CHECK-NEXT: store i32 %[[X_B_LCSSA]], ptr %ptr
; CHECK-NEXT: %v2 = call i1 @cond()
; CHECK-NEXT: br i1 %v2, label %c.header, label %a.exit.c
@@ -3576,7 +3576,7 @@ exit:
; A < B < C
; into
; (A < B), C
-define void @hoist_inner_loop2(i32* %ptr) {
+define void @hoist_inner_loop2(ptr %ptr) {
; CHECK-LABEL: define void @hoist_inner_loop2(
entry:
br label %a.header
@@ -3584,18 +3584,18 @@ entry:
; CHECK-NEXT: br label %a.header
a.header:
- %x.a = load i32, i32* %ptr
+ %x.a = load i32, ptr %ptr
br label %b.header
; CHECK: a.header:
-; CHECK-NEXT: %x.a = load i32, i32* %ptr
+; CHECK-NEXT: %x.a = load i32, ptr %ptr
; CHECK-NEXT: br label %b.header
b.header:
- %x.b = load i32, i32* %ptr
+ %x.b = load i32, ptr %ptr
%v1 = call i1 @cond()
br label %c.header
; CHECK: b.header:
-; CHECK-NEXT: %x.b = load i32, i32* %ptr
+; CHECK-NEXT: %x.b = load i32, ptr %ptr
; CHECK-NEXT: %v1 = call i1 @cond()
; CHECK-NEXT: %[[FROZEN:.+]] = freeze i1 %v1
; CHECK-NEXT: br i1 %[[FROZEN]], label %[[B_HEADER_SPLIT_US:.*]], label %[[B_HEADER_SPLIT:.*]]
@@ -3624,13 +3624,13 @@ c.header:
c.latch:
; Use values from other loops to check LCSSA form.
- store i32 %x.a, i32* %ptr
- store i32 %x.b, i32* %ptr
+ store i32 %x.a, ptr %ptr
+ store i32 %x.b, ptr %ptr
%v2 = call i1 @cond()
br i1 %v2, label %c.header, label %exit
; CHECK: c.latch:
-; CHECK-NEXT: store i32 %[[X_A_LCSSA]], i32* %ptr
-; CHECK-NEXT: store i32 %[[X_B_LCSSA]], i32* %ptr
+; CHECK-NEXT: store i32 %[[X_A_LCSSA]], ptr %ptr
+; CHECK-NEXT: store i32 %[[X_B_LCSSA]], ptr %ptr
; CHECK-NEXT: %v2 = call i1 @cond()
; CHECK-NEXT: br i1 %v2, label %c.header, label %exit
@@ -3657,7 +3657,7 @@ exit:
; A < B < C < D
; into
; (A < B), (C < D)
-define void @hoist_inner_loop3(i32* %ptr) {
+define void @hoist_inner_loop3(ptr %ptr) {
; CHECK-LABEL: define void @hoist_inner_loop3(
entry:
br label %a.header
@@ -3665,18 +3665,18 @@ entry:
; CHECK-NEXT: br label %a.header
a.header:
- %x.a = load i32, i32* %ptr
+ %x.a = load i32, ptr %ptr
br label %b.header
; CHECK: a.header:
-; CHECK-NEXT: %x.a = load i32, i32* %ptr
+; CHECK-NEXT: %x.a = load i32, ptr %ptr
; CHECK-NEXT: br label %b.header
b.header:
- %x.b = load i32, i32* %ptr
+ %x.b = load i32, ptr %ptr
%v1 = call i1 @cond()
br label %c.header
; CHECK: b.header:
-; CHECK-NEXT: %x.b = load i32, i32* %ptr
+; CHECK-NEXT: %x.b = load i32, ptr %ptr
; CHECK-NEXT: %v1 = call i1 @cond()
; CHECK-NEXT: %[[FROZEN:.+]] = freeze i1 %v1
; CHECK-NEXT: br i1 %[[FROZEN]], label %[[B_HEADER_SPLIT_US:.*]], label %[[B_HEADER_SPLIT:.*]]
@@ -3704,23 +3704,23 @@ c.header:
; CHECK-NEXT: br label %c.body
c.body:
- %x.c = load i32, i32* %ptr
+ %x.c = load i32, ptr %ptr
br label %d.header
; CHECK: c.body:
-; CHECK-NEXT: %x.c = load i32, i32* %ptr
+; CHECK-NEXT: %x.c = load i32, ptr %ptr
; CHECK-NEXT: br label %d.header
d.header:
; Use values from other loops to check LCSSA form.
- store i32 %x.a, i32* %ptr
- store i32 %x.b, i32* %ptr
- store i32 %x.c, i32* %ptr
+ store i32 %x.a, ptr %ptr
+ store i32 %x.b, ptr %ptr
+ store i32 %x.c, ptr %ptr
%v2 = call i1 @cond()
br i1 %v2, label %d.header, label %c.latch
; CHECK: d.header:
-; CHECK-NEXT: store i32 %[[X_A_LCSSA]], i32* %ptr
-; CHECK-NEXT: store i32 %[[X_B_LCSSA]], i32* %ptr
-; CHECK-NEXT: store i32 %x.c, i32* %ptr
+; CHECK-NEXT: store i32 %[[X_A_LCSSA]], ptr %ptr
+; CHECK-NEXT: store i32 %[[X_B_LCSSA]], ptr %ptr
+; CHECK-NEXT: store i32 %x.c, ptr %ptr
; CHECK-NEXT: %v2 = call i1 @cond()
; CHECK-NEXT: br i1 %v2, label %d.header, label %c.latch
@@ -3863,7 +3863,7 @@ exit:
; A < B < C < D
; into
; A < ((B < C), D)
-define void @hoist_inner_loop5(i32* %ptr) {
+define void @hoist_inner_loop5(ptr %ptr) {
; CHECK-LABEL: define void @hoist_inner_loop5(
entry:
br label %a.header
@@ -3871,25 +3871,25 @@ entry:
; CHECK-NEXT: br label %a.header
a.header:
- %x.a = load i32, i32* %ptr
+ %x.a = load i32, ptr %ptr
br label %b.header
; CHECK: a.header:
-; CHECK-NEXT: %x.a = load i32, i32* %ptr
+; CHECK-NEXT: %x.a = load i32, ptr %ptr
; CHECK-NEXT: br label %b.header
b.header:
- %x.b = load i32, i32* %ptr
+ %x.b = load i32, ptr %ptr
br label %c.header
; CHECK: b.header:
-; CHECK-NEXT: %x.b = load i32, i32* %ptr
+; CHECK-NEXT: %x.b = load i32, ptr %ptr
; CHECK-NEXT: br label %c.header
c.header:
- %x.c = load i32, i32* %ptr
+ %x.c = load i32, ptr %ptr
%v1 = call i1 @cond()
br label %d.header
; CHECK: c.header:
-; CHECK-NEXT: %x.c = load i32, i32* %ptr
+; CHECK-NEXT: %x.c = load i32, ptr %ptr
; CHECK-NEXT: %v1 = call i1 @cond()
; CHECK-NEXT: [[FROZEN:%.+]] = freeze i1 %v1
; CHECK-NEXT: br i1 [[FROZEN]], label %[[C_HEADER_SPLIT_US:.*]], label %[[C_HEADER_SPLIT:.*]]
@@ -3918,15 +3918,15 @@ d.header:
d.latch:
; Use values from other loops to check LCSSA form.
- store i32 %x.a, i32* %ptr
- store i32 %x.b, i32* %ptr
- store i32 %x.c, i32* %ptr
+ store i32 %x.a, ptr %ptr
+ store i32 %x.b, ptr %ptr
+ store i32 %x.c, ptr %ptr
%v2 = call i1 @cond()
br i1 %v2, label %d.header, label %a.latch
; CHECK: d.latch:
-; CHECK-NEXT: store i32 %x.a, i32* %ptr
-; CHECK-NEXT: store i32 %[[X_B_LCSSA]], i32* %ptr
-; CHECK-NEXT: store i32 %[[X_C_LCSSA]], i32* %ptr
+; CHECK-NEXT: store i32 %x.a, ptr %ptr
+; CHECK-NEXT: store i32 %[[X_B_LCSSA]], ptr %ptr
+; CHECK-NEXT: store i32 %[[X_C_LCSSA]], ptr %ptr
; CHECK-NEXT: %v2 = call i1 @cond()
; CHECK-NEXT: br i1 %v2, label %d.header, label %a.latch
@@ -3953,7 +3953,7 @@ exit:
; CHECK-NEXT: ret void
}
-define void @hoist_inner_loop_switch(i32* %ptr) {
+define void @hoist_inner_loop_switch(ptr %ptr) {
; CHECK-LABEL: define void @hoist_inner_loop_switch(
entry:
br label %a.header
@@ -3961,18 +3961,18 @@ entry:
; CHECK-NEXT: br label %a.header
a.header:
- %x.a = load i32, i32* %ptr
+ %x.a = load i32, ptr %ptr
br label %b.header
; CHECK: a.header:
-; CHECK-NEXT: %x.a = load i32, i32* %ptr
+; CHECK-NEXT: %x.a = load i32, ptr %ptr
; CHECK-NEXT: br label %b.header
b.header:
- %x.b = load i32, i32* %ptr
+ %x.b = load i32, ptr %ptr
%v1 = call i32 @cond.i32()
br label %c.header
; CHECK: b.header:
-; CHECK-NEXT: %x.b = load i32, i32* %ptr
+; CHECK-NEXT: %x.b = load i32, ptr %ptr
; CHECK-NEXT: %v1 = call i32 @cond.i32()
; CHECK-NEXT: [[FROZEN:%.+]] = freeze i32 %v1
; CHECK-NEXT: switch i32 [[FROZEN]], label %[[B_HEADER_SPLIT:.*]] [
@@ -4009,13 +4009,13 @@ c.header:
c.latch:
; Use values from other loops to check LCSSA form.
- store i32 %x.a, i32* %ptr
- store i32 %x.b, i32* %ptr
+ store i32 %x.a, ptr %ptr
+ store i32 %x.b, ptr %ptr
%v2 = call i1 @cond()
br i1 %v2, label %c.header, label %exit
; CHECK: c.latch:
-; CHECK-NEXT: store i32 %[[X_A_LCSSA]], i32* %ptr
-; CHECK-NEXT: store i32 %[[X_B_LCSSA]], i32* %ptr
+; CHECK-NEXT: store i32 %[[X_A_LCSSA]], ptr %ptr
+; CHECK-NEXT: store i32 %[[X_B_LCSSA]], ptr %ptr
; CHECK-NEXT: %v2 = call i1 @cond()
; CHECK-NEXT: br i1 %v2, label %c.header, label %exit
@@ -4231,7 +4231,7 @@ exit:
; Non-trivial partial loop unswitching of multiple invariant inputs to an `and`
; chain (select version).
-define i32 @test32(i1* %ptr1, i1* %ptr2, i1* %ptr3, i1 %cond1, i1 %cond2) {
+define i32 @test32(ptr %ptr1, ptr %ptr2, ptr %ptr3, i1 %cond1, i1 %cond2) {
; CHECK-LABEL: @test32(
entry:
br label %loop_begin
@@ -4242,8 +4242,8 @@ entry:
; CHECK-NEXT: br i1 %[[INV_AND]], label %entry.split, label %entry.split.us
loop_begin:
- %v1 = load i1, i1* %ptr1
- %v2 = load i1, i1* %ptr2
+ %v1 = load i1, ptr %ptr1
+ %v2 = load i1, ptr %ptr2
%cond_and1 = select i1 %v1, i1 %cond1, i1 false
%cond_and2 = select i1 %cond_and1, i1 %cond2, i1 false
br i1 %cond_and2, label %loop_a, label %loop_b
@@ -4253,7 +4253,7 @@ loop_begin:
; CHECK-NEXT: br label %loop_begin.us
;
; CHECK: loop_begin.us:
-; CHECK-NEXT: %[[V2_US]] = load i1, i1* %ptr2, align 1
+; CHECK-NEXT: %[[V2_US]] = load i1, ptr %ptr2, align 1
; CHECK-NEXT: br label %loop_b.us
;
; CHECK: loop_b.us:
@@ -4261,7 +4261,7 @@ loop_begin:
; CHECK-NEXT: br label %latch.us
;
; CHECK: latch.us:
-; CHECK-NEXT: %[[V3_US:.*]] = load i1, i1* %ptr3, align 1
+; CHECK-NEXT: %[[V3_US:.*]] = load i1, ptr %ptr3, align 1
; CHECK-NEXT: br i1 %[[V3_US]], label %loop_begin.us, label %loop_exit.split.us
;
; CHECK: loop_exit.split.us:
@@ -4273,8 +4273,8 @@ loop_begin:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[V1:.*]] = load i1, i1* %ptr1
-; CHECK-NEXT: %[[V2:.*]] = load i1, i1* %ptr2
+; CHECK-NEXT: %[[V1:.*]] = load i1, ptr %ptr1
+; CHECK-NEXT: %[[V2:.*]] = load i1, ptr %ptr2
; CHECK-NEXT: %[[AND1:.*]] = select i1 %[[V1]], i1 true, i1 false
; CHECK-NEXT: %[[AND2:.*]] = select i1 %[[AND1]], i1 true, i1 false
; CHECK-NEXT: br i1 %[[AND2]], label %loop_a, label %loop_b
@@ -4294,10 +4294,10 @@ loop_b:
; CHECK-NEXT: br label %latch
latch:
- %v3 = load i1, i1* %ptr3
+ %v3 = load i1, ptr %ptr3
br i1 %v3, label %loop_begin, label %loop_exit
; CHECK: latch:
-; CHECK-NEXT: %[[V3:.*]] = load i1, i1* %ptr3, align 1
+; CHECK-NEXT: %[[V3:.*]] = load i1, ptr %ptr3, align 1
; CHECK-NEXT: br i1 %[[V3]], label %loop_begin, label %loop_exit.split
loop_exit:
@@ -4311,7 +4311,7 @@ loop_exit:
; Non-trivial partial loop unswitching of multiple invariant inputs to an `or`
; chain (select version).
-define i32 @test33(i1* %ptr1, i1* %ptr2, i1* %ptr3, i1 %cond1, i1 %cond2) {
+define i32 @test33(ptr %ptr1, ptr %ptr2, ptr %ptr3, i1 %cond1, i1 %cond2) {
; CHECK-LABEL: @test33(
entry:
br label %loop_begin
@@ -4322,8 +4322,8 @@ entry:
; CHECK-NEXT: br i1 %[[INV_OR]], label %entry.split.us, label %entry.split
loop_begin:
- %v1 = load i1, i1* %ptr1
- %v2 = load i1, i1* %ptr2
+ %v1 = load i1, ptr %ptr1
+ %v2 = load i1, ptr %ptr2
%cond_and1 = select i1 %v1, i1 true, i1 %cond1
%cond_and2 = select i1 %cond_and1, i1 true, i1 %cond2
br i1 %cond_and2, label %loop_b, label %loop_a
@@ -4333,7 +4333,7 @@ loop_begin:
; CHECK-NEXT: br label %loop_begin.us
;
; CHECK: loop_begin.us:
-; CHECK-NEXT: %[[V2_US]] = load i1, i1* %ptr2, align 1
+; CHECK-NEXT: %[[V2_US]] = load i1, ptr %ptr2, align 1
; CHECK-NEXT: br label %loop_b.us
;
; CHECK: loop_b.us:
@@ -4341,7 +4341,7 @@ loop_begin:
; CHECK-NEXT: br label %latch.us
;
; CHECK: latch.us:
-; CHECK-NEXT: %[[V3_US:.*]] = load i1, i1* %ptr3, align 1
+; CHECK-NEXT: %[[V3_US:.*]] = load i1, ptr %ptr3, align 1
; CHECK-NEXT: br i1 %[[V3_US]], label %loop_begin.us, label %loop_exit.split.us
;
; CHECK: loop_exit.split.us:
@@ -4353,8 +4353,8 @@ loop_begin:
; CHECK-NEXT: br label %loop_begin
;
; CHECK: loop_begin:
-; CHECK-NEXT: %[[V1:.*]] = load i1, i1* %ptr1
-; CHECK-NEXT: %[[V2:.*]] = load i1, i1* %ptr2
+; CHECK-NEXT: %[[V1:.*]] = load i1, ptr %ptr1
+; CHECK-NEXT: %[[V2:.*]] = load i1, ptr %ptr2
; CHECK-NEXT: %[[AND1:.*]] = select i1 %[[V1]], i1 true, i1 false
; CHECK-NEXT: %[[AND2:.*]] = select i1 %[[AND1]], i1 true, i1 false
; CHECK-NEXT: br i1 %[[AND2]], label %loop_b, label %loop_a
@@ -4374,10 +4374,10 @@ loop_b:
; CHECK-NEXT: br label %latch
latch:
- %v3 = load i1, i1* %ptr3
+ %v3 = load i1, ptr %ptr3
br i1 %v3, label %loop_begin, label %loop_exit
; CHECK: latch:
-; CHECK-NEXT: %[[V3:.*]] = load i1, i1* %ptr3, align 1
+; CHECK-NEXT: %[[V3:.*]] = load i1, ptr %ptr3, align 1
; CHECK-NEXT: br i1 %[[V3]], label %loop_begin, label %loop_exit.split
loop_exit:
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/options.ll b/llvm/test/Transforms/SimpleLoopUnswitch/options.ll
index 754bd7e922446..7faff4d300055 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/options.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/options.ll
@@ -6,7 +6,7 @@ declare void @some_func() noreturn
; NOTRIVIAL-NOT: split
; TRIVIAL: split
-define i32 @test1(i32* %var, i1 %cond1, i1 %cond2) {
+define i32 @test1(ptr %var, i1 %cond1, i1 %cond2) {
entry:
br label %loop_begin
@@ -14,7 +14,7 @@ loop_begin:
br i1 %cond1, label %continue, label %loop_exit ; first trivial condition
continue:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
br i1 %cond2, label %do_something, label %loop_exit ; second trivial condition
do_something:
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/partial-unswitch-mssa-threshold.ll b/llvm/test/Transforms/SimpleLoopUnswitch/partial-unswitch-mssa-threshold.ll
index 37232d3133246..2c7582f874eb8 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/partial-unswitch-mssa-threshold.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/partial-unswitch-mssa-threshold.ll
@@ -9,14 +9,14 @@ declare void @clobber()
; Partial unswitching is possible, because the store in %noclobber does not
; alias the load of the condition.
-define i32 @partial_unswitch_true_successor_noclobber(i32* noalias %ptr.1, i32* noalias %ptr.2, i32 %N) {
+define i32 @partial_unswitch_true_successor_noclobber(ptr noalias %ptr.1, ptr noalias %ptr.2, i32 %N) {
; THRESHOLD-0-LABEL: @partial_unswitch_true_successor
; THRESHOLD-0: entry:
; THRESHOLD-0: br label %loop.header
;
; THRESHOLD-DEFAULT-LABEL: @partial_unswitch_true_successor
; THRESHOLD-DEFAULT-NEXT: entry:
-; THRESHOLD-DEFAULT-NEXT: [[LV:%[0-9]+]] = load i32, i32* %ptr.1, align 4
+; THRESHOLD-DEFAULT-NEXT: [[LV:%[0-9]+]] = load i32, ptr %ptr.1, align 4
; THRESHOLD-DEFAULT-NEXT: [[C:%[0-9]+]] = icmp eq i32 [[LV]], 100
; THRESHOLD-DEFAULT-NEXT: br i1 [[C]]
;
@@ -25,13 +25,13 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %lv = load i32, i32* %ptr.1
+ %lv = load i32, ptr %ptr.1
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %clobber
noclobber:
- %gep.1 = getelementptr i32, i32* %ptr.2, i32 %iv
- store i32 %lv, i32* %gep.1
+ %gep.1 = getelementptr i32, ptr %ptr.2, i32 %iv
+ store i32 %lv, ptr %gep.1
br label %loop.latch
clobber:
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/partial-unswitch-update-memoryssa.ll b/llvm/test/Transforms/SimpleLoopUnswitch/partial-unswitch-update-memoryssa.ll
index aa57e9a49ccdf..bfaf75436d8be 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/partial-unswitch-update-memoryssa.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/partial-unswitch-update-memoryssa.ll
@@ -5,10 +5,10 @@ declare void @clobber()
; Check that MemorySSA updating can deal with a clobbering access of a
; duplicated load being a MemoryPHI outside the loop.
-define void @partial_unswitch_memssa_update(i32* noalias %ptr, i1 %c) {
+define void @partial_unswitch_memssa_update(ptr noalias %ptr, i1 %c) {
; CHECK-LABEL: @partial_unswitch_memssa_update(
; CHECK-LABEL: loop.ph:
-; CHECK-NEXT: [[LV:%[a-z0-9]+]] = load i32, i32* %ptr, align 4
+; CHECK-NEXT: [[LV:%[a-z0-9]+]] = load i32, ptr %ptr, align 4
; CHECK-NEXT: [[C:%[a-z0-9]+]] = icmp eq i32 [[LV]], 0
; CHECK-NEXT: br i1 [[C]]
entry:
@@ -22,7 +22,7 @@ loop.ph:
br label %loop.header
loop.header:
- %lv = load i32, i32* %ptr, align 4
+ %lv = load i32, ptr %ptr, align 4
%hc = icmp eq i32 %lv, 0
br i1 %hc, label %if, label %then
@@ -41,24 +41,24 @@ exit:
; Check that MemorySSA updating can deal with skipping defining accesses in the
; loop body until it finds the first defining access outside the loop.
-define void @partial_unswitch_inloop_stores_beteween_outside_defining_access(i64* noalias %ptr, i16* noalias %src) {
+define void @partial_unswitch_inloop_stores_beteween_outside_defining_access(ptr noalias %ptr, ptr noalias %src) {
; CHECK-LABEL: @partial_unswitch_inloop_stores_beteween_outside_defining_access
; CHECK-LABEL: entry:
-; CHECK-NEXT: store i64 0, i64* %ptr, align 1
-; CHECK-NEXT: store i64 1, i64* %ptr, align 1
-; CHECK-NEXT: [[LV:%[a-z0-9]+]] = load i16, i16* %src, align 1
+; CHECK-NEXT: store i64 0, ptr %ptr, align 1
+; CHECK-NEXT: store i64 1, ptr %ptr, align 1
+; CHECK-NEXT: [[LV:%[a-z0-9]+]] = load i16, ptr %src, align 1
; CHECK-NEXT: [[C:%[a-z0-9]+]] = icmp eq i16 [[LV]], 0
; CHECK-NEXT: br i1 [[C]]
;
entry:
- store i64 0, i64* %ptr, align 1
- store i64 1, i64* %ptr, align 1
+ store i64 0, ptr %ptr, align 1
+ store i64 1, ptr %ptr, align 1
br label %loop
loop:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- store i64 2, i64* %ptr, align 1
- %lv = load i16, i16* %src, align 1
+ store i64 2, ptr %ptr, align 1
+ %lv = load i16, ptr %src, align 1
%invar.cond = icmp eq i16 %lv, 0
br i1 %invar.cond, label %noclobber, label %loop.latch
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/partial-unswitch.ll b/llvm/test/Transforms/SimpleLoopUnswitch/partial-unswitch.ll
index edad7a4ce9546..f97e5c3eec9d4 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/partial-unswitch.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/partial-unswitch.ll
@@ -3,10 +3,10 @@
declare void @clobber()
-define i32 @partial_unswitch_true_successor(i32* %ptr, i32 %N) {
+define i32 @partial_unswitch_true_successor(ptr %ptr, i32 %N) {
; CHECK-LABEL: @partial_unswitch_true_successor(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 100
; CHECK-NEXT: br i1 [[TMP1]], label [[ENTRY_SPLIT_US:%.*]], label [[ENTRY_SPLIT:%.*]]
; CHECK: entry.split.us:
@@ -26,7 +26,7 @@ define i32 @partial_unswitch_true_successor(i32* %ptr, i32 %N) {
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[PTR]], align 4
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[PTR]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[NOCLOBBER:%.*]], label [[CLOBBER:%.*]]
; CHECK: noclobber:
@@ -48,7 +48,7 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %lv = load i32, i32* %ptr
+ %lv = load i32, ptr %ptr
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %clobber
@@ -68,10 +68,10 @@ exit:
ret i32 10
}
-define i32 @partial_unswitch_false_successor(i32* %ptr, i32 %N) {
+define i32 @partial_unswitch_false_successor(ptr %ptr, i32 %N) {
; CHECK-LABEL: @partial_unswitch_false_successor(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 100
; CHECK-NEXT: br i1 [[TMP1]], label [[ENTRY_SPLIT:%.*]], label [[ENTRY_SPLIT_US:%.*]]
; CHECK: entry.split.us:
@@ -91,7 +91,7 @@ define i32 @partial_unswitch_false_successor(i32* %ptr, i32 %N) {
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[PTR]], align 4
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[PTR]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[CLOBBER:%.*]], label [[NOCLOBBER:%.*]]
; CHECK: clobber:
@@ -113,7 +113,7 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %lv = load i32, i32* %ptr
+ %lv = load i32, ptr %ptr
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %clobber, label %noclobber
@@ -133,12 +133,12 @@ exit:
ret i32 10
}
-define i32 @partial_unswtich_gep_load_icmp(i32** %ptr, i32 %N) {
+define i32 @partial_unswtich_gep_load_icmp(ptr %ptr, i32 %N) {
; CHECK-LABEL: @partial_unswtich_gep_load_icmp(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[TMP0:%.*]] = getelementptr i32*, i32** [[PTR:%.*]], i32 1
-; CHECK-NEXT: [[TMP1:%.*]] = load i32*, i32** [[TMP0]], align 8
-; CHECK-NEXT: [[TMP2:%.*]] = load i32, i32* [[TMP1]], align 4
+; CHECK-NEXT: [[TMP0:%.*]] = getelementptr ptr, ptr [[PTR:%.*]], i32 1
+; CHECK-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8
+; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[TMP1]], align 4
; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 100
; CHECK-NEXT: br i1 [[TMP3]], label [[ENTRY_SPLIT_US:%.*]], label [[ENTRY_SPLIT:%.*]]
; CHECK: entry.split.us:
@@ -158,9 +158,9 @@ define i32 @partial_unswtich_gep_load_icmp(i32** %ptr, i32 %N) {
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[GEP:%.*]] = getelementptr i32*, i32** [[PTR]], i32 1
-; CHECK-NEXT: [[LV_1:%.*]] = load i32*, i32** [[GEP]], align 8
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[LV_1]], align 4
+; CHECK-NEXT: [[GEP:%.*]] = getelementptr ptr, ptr [[PTR]], i32 1
+; CHECK-NEXT: [[LV_1:%.*]] = load ptr, ptr [[GEP]], align 8
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[LV_1]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[NOCLOBBER:%.*]], label [[CLOBBER:%.*]]
; CHECK: noclobber:
@@ -182,9 +182,9 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %gep = getelementptr i32*, i32** %ptr, i32 1
- %lv.1 = load i32*, i32** %gep
- %lv = load i32, i32* %lv.1
+ %gep = getelementptr ptr, ptr %ptr, i32 1
+ %lv.1 = load ptr, ptr %gep
+ %lv = load i32, ptr %lv.1
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %clobber
@@ -204,10 +204,10 @@ exit:
ret i32 10
}
-define i32 @partial_unswitch_reduction_phi(i32* %ptr, i32 %N) {
+define i32 @partial_unswitch_reduction_phi(ptr %ptr, i32 %N) {
; CHECK-LABEL: @partial_unswitch_reduction_phi(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 100
; CHECK-NEXT: br i1 [[TMP1]], label [[ENTRY_SPLIT:%.*]], label [[ENTRY_SPLIT_US:%.*]]
; CHECK: entry.split.us:
@@ -232,7 +232,7 @@ define i32 @partial_unswitch_reduction_phi(i32* %ptr, i32 %N) {
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
; CHECK-NEXT: [[RED:%.*]] = phi i32 [ 20, [[ENTRY_SPLIT]] ], [ [[RED_NEXT:%.*]], [[LOOP_LATCH]] ]
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[PTR]], align 4
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[PTR]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[CLOBBER:%.*]], label [[NOCLOBBER:%.*]]
; CHECK: clobber:
@@ -260,7 +260,7 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
%red = phi i32 [ 20, %entry ], [ %red.next, %loop.latch ]
- %lv = load i32, i32* %ptr
+ %lv = load i32, ptr %ptr
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %clobber, label %noclobber
@@ -286,21 +286,21 @@ exit:
; Partial unswitching is possible, because the store in %noclobber does not
; alias the load of the condition.
-define i32 @partial_unswitch_true_successor_noclobber(i32* noalias %ptr.1, i32* noalias %ptr.2, i32 %N) {
+define i32 @partial_unswitch_true_successor_noclobber(ptr noalias %ptr.1, ptr noalias %ptr.2, i32 %N) {
; CHECK-LABEL: @partial_unswitch_true_successor_noclobber(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[PTR_1:%.*]], align 4
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[PTR_1:%.*]], align 4
; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 100
; CHECK-NEXT: br i1 [[TMP1]], label [[ENTRY_SPLIT_US:%.*]], label [[ENTRY_SPLIT:%.*]]
; CHECK: entry.split.us:
; CHECK-NEXT: br label [[LOOP_HEADER_US:%.*]]
; CHECK: loop.header.us:
; CHECK-NEXT: [[IV_US:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT_US]] ], [ [[IV_NEXT_US:%.*]], [[LOOP_LATCH_US:%.*]] ]
-; CHECK-NEXT: [[LV_US:%.*]] = load i32, i32* [[PTR_1]], align 4
+; CHECK-NEXT: [[LV_US:%.*]] = load i32, ptr [[PTR_1]], align 4
; CHECK-NEXT: br label [[NOCLOBBER_US:%.*]]
; CHECK: noclobber.us:
-; CHECK-NEXT: [[GEP_1_US:%.*]] = getelementptr i32, i32* [[PTR_2:%.*]], i32 [[IV_US]]
-; CHECK-NEXT: store i32 [[LV_US]], i32* [[GEP_1_US]], align 4
+; CHECK-NEXT: [[GEP_1_US:%.*]] = getelementptr i32, ptr [[PTR_2:%.*]], i32 [[IV_US]]
+; CHECK-NEXT: store i32 [[LV_US]], ptr [[GEP_1_US]], align 4
; CHECK-NEXT: br label [[LOOP_LATCH_US]]
; CHECK: loop.latch.us:
; CHECK-NEXT: [[C_US:%.*]] = icmp ult i32 [[IV_US]], [[N:%.*]]
@@ -312,12 +312,12 @@ define i32 @partial_unswitch_true_successor_noclobber(i32* noalias %ptr.1, i32*
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[PTR_1]], align 4
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[PTR_1]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[NOCLOBBER:%.*]], label [[CLOBBER:%.*]]
; CHECK: noclobber:
-; CHECK-NEXT: [[GEP_1:%.*]] = getelementptr i32, i32* [[PTR_2]], i32 [[IV]]
-; CHECK-NEXT: store i32 [[LV]], i32* [[GEP_1]], align 4
+; CHECK-NEXT: [[GEP_1:%.*]] = getelementptr i32, ptr [[PTR_2]], i32 [[IV]]
+; CHECK-NEXT: store i32 [[LV]], ptr [[GEP_1]], align 4
; CHECK-NEXT: br label [[LOOP_LATCH]]
; CHECK: clobber:
; CHECK-NEXT: call void @clobber()
@@ -336,13 +336,13 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %lv = load i32, i32* %ptr.1
+ %lv = load i32, ptr %ptr.1
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %clobber
noclobber:
- %gep.1 = getelementptr i32, i32* %ptr.2, i32 %iv
- store i32 %lv, i32* %gep.1
+ %gep.1 = getelementptr i32, ptr %ptr.2, i32 %iv
+ store i32 %lv, ptr %gep.1
br label %loop.latch
clobber:
@@ -402,13 +402,13 @@ exit:
ret void
}
-define void @no_partial_unswitch_clobber_latch(i32* %ptr, i32 %N) {
+define void @no_partial_unswitch_clobber_latch(ptr %ptr, i32 %N) {
; CHECK-LABEL: @no_partial_unswitch_clobber_latch(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[NOCLOBBER:%.*]], label [[CLOBBER:%.*]]
; CHECK: noclobber:
@@ -429,7 +429,7 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %lv = load i32, i32* %ptr
+ %lv = load i32, ptr %ptr
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %clobber
@@ -450,14 +450,14 @@ exit:
ret void
}
-define void @no_partial_unswitch_clobber_header(i32* %ptr, i32 %N) {
+define void @no_partial_unswitch_clobber_header(ptr %ptr, i32 %N) {
; CHECK-LABEL: @no_partial_unswitch_clobber_header(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
; CHECK-NEXT: call void @clobber()
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[NOCLOBBER:%.*]], label [[CLOBBER:%.*]]
; CHECK: noclobber:
@@ -478,7 +478,7 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
call void @clobber()
- %lv = load i32, i32* %ptr
+ %lv = load i32, ptr %ptr
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %clobber
@@ -498,13 +498,13 @@ exit:
ret void
}
-define void @no_partial_unswitch_clobber_both(i32* %ptr, i32 %N) {
+define void @no_partial_unswitch_clobber_both(ptr %ptr, i32 %N) {
; CHECK-LABEL: @no_partial_unswitch_clobber_both(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[NOCLOBBER:%.*]], label [[CLOBBER:%.*]]
; CHECK: noclobber:
@@ -525,7 +525,7 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %lv = load i32, i32* %ptr
+ %lv = load i32, ptr %ptr
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %clobber
@@ -546,18 +546,18 @@ exit:
ret void
}
-define i32 @no_partial_unswitch_true_successor_storeclobber(i32* %ptr.1, i32* %ptr.2, i32 %N) {
+define i32 @no_partial_unswitch_true_successor_storeclobber(ptr %ptr.1, ptr %ptr.2, i32 %N) {
; CHECK-LABEL: @no_partial_unswitch_true_successor_storeclobber(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[PTR_1:%.*]], align 4
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[PTR_1:%.*]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[NOCLOBBER:%.*]], label [[CLOBBER:%.*]]
; CHECK: noclobber:
-; CHECK-NEXT: [[GEP_1:%.*]] = getelementptr i32, i32* [[PTR_2:%.*]], i32 [[IV]]
-; CHECK-NEXT: store i32 [[LV]], i32* [[GEP_1]], align 4
+; CHECK-NEXT: [[GEP_1:%.*]] = getelementptr i32, ptr [[PTR_2:%.*]], i32 [[IV]]
+; CHECK-NEXT: store i32 [[LV]], ptr [[GEP_1]], align 4
; CHECK-NEXT: br label [[LOOP_LATCH]]
; CHECK: clobber:
; CHECK-NEXT: call void @clobber()
@@ -574,13 +574,13 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %lv = load i32, i32* %ptr.1
+ %lv = load i32, ptr %ptr.1
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %clobber
noclobber:
- %gep.1 = getelementptr i32, i32* %ptr.2, i32 %iv
- store i32 %lv, i32* %gep.1
+ %gep.1 = getelementptr i32, ptr %ptr.2, i32 %iv
+ store i32 %lv, ptr %gep.1
br label %loop.latch
clobber:
@@ -600,13 +600,13 @@ exit:
; executes when the loop body also executes. Do not check the unswitched code,
; because it is already checked in the @partial_unswitch_true_successor test
; case.
-define i32 @partial_unswitch_true_successor_preheader_insertion(i32* %ptr, i32 %N) {
+define i32 @partial_unswitch_true_successor_preheader_insertion(ptr %ptr, i32 %N) {
; CHECK-LABEL: @partial_unswitch_true_successor_preheader_insertion(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[EC:%.*]] = icmp ne i32* [[PTR:%.*]], null
+; CHECK-NEXT: [[EC:%.*]] = icmp ne ptr [[PTR:%.*]], null
; CHECK-NEXT: br i1 [[EC]], label [[LOOP_PH:%.*]], label [[EXIT:%.*]]
; CHECK: loop.ph:
-; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[PTR]], align 4
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[PTR]], align 4
; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 100
; CHECK-NEXT: br i1 [[TMP1]], label [[LOOP_PH_SPLIT_US:%.*]], label [[LOOP_PH_SPLIT:%.*]]
; CHECK: loop.ph.split.us:
@@ -626,7 +626,7 @@ define i32 @partial_unswitch_true_successor_preheader_insertion(i32* %ptr, i32 %
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[LOOP_PH_SPLIT]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[PTR]], align 4
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[PTR]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[NOCLOBBER:%.*]], label [[CLOBBER:%.*]]
; CHECK: noclobber:
@@ -647,7 +647,7 @@ define i32 @partial_unswitch_true_successor_preheader_insertion(i32* %ptr, i32 %
;
entry:
- %ec = icmp ne i32* %ptr, null
+ %ec = icmp ne ptr %ptr, null
br i1 %ec, label %loop.ph, label %exit
loop.ph:
@@ -655,7 +655,7 @@ loop.ph:
loop.header:
%iv = phi i32 [ 0, %loop.ph ], [ %iv.next, %loop.latch ]
- %lv = load i32, i32* %ptr
+ %lv = load i32, ptr %ptr
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %clobber
@@ -678,11 +678,11 @@ exit:
; Make sure the duplicated instructions are hoisted just before the branch of
; the preheader. Do not check the unswitched code, because it is already checked
; in the @partial_unswitch_true_successor test case
-define i32 @partial_unswitch_true_successor_insert_point(i32* %ptr, i32 %N) {
+define i32 @partial_unswitch_true_successor_insert_point(ptr %ptr, i32 %N) {
; CHECK-LABEL: @partial_unswitch_true_successor_insert_point(
; CHECK-NEXT: entry:
; CHECK-NEXT: call void @clobber()
-; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 100
; CHECK-NEXT: br i1 [[TMP1]], label [[ENTRY_SPLIT_US:%.*]], label [[ENTRY_SPLIT:%.*]]
; CHECK: entry.split.us:
@@ -702,7 +702,7 @@ define i32 @partial_unswitch_true_successor_insert_point(i32* %ptr, i32 %N) {
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[PTR]], align 4
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[PTR]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[NOCLOBBER:%.*]], label [[CLOBBER:%.*]]
; CHECK: noclobber:
@@ -725,7 +725,7 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %lv = load i32, i32* %ptr
+ %lv = load i32, ptr %ptr
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %clobber
@@ -748,11 +748,11 @@ exit:
; Make sure invariant instructions in the loop are also hoisted to the preheader.
; Do not check the unswitched code, because it is already checked in the
; @partial_unswitch_true_successor test case
-define i32 @partial_unswitch_true_successor_hoist_invariant(i32* %ptr, i32 %N) {
+define i32 @partial_unswitch_true_successor_hoist_invariant(ptr %ptr, i32 %N) {
; CHECK-LABEL: @partial_unswitch_true_successor_hoist_invariant(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[TMP0:%.*]] = getelementptr i32, i32* [[PTR:%.*]], i64 1
-; CHECK-NEXT: [[TMP1:%.*]] = load i32, i32* [[TMP0]], align 4
+; CHECK-NEXT: [[TMP0:%.*]] = getelementptr i32, ptr [[PTR:%.*]], i64 1
+; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[TMP0]], align 4
; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 100
; CHECK-NEXT: br i1 [[TMP2]], label [[ENTRY_SPLIT_US:%.*]], label [[ENTRY_SPLIT:%.*]]
; CHECK: entry.split.us:
@@ -772,8 +772,8 @@ define i32 @partial_unswitch_true_successor_hoist_invariant(i32* %ptr, i32 %N) {
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[GEP:%.*]] = getelementptr i32, i32* [[PTR]], i64 1
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[GEP]], align 4
+; CHECK-NEXT: [[GEP:%.*]] = getelementptr i32, ptr [[PTR]], i64 1
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[GEP]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[NOCLOBBER:%.*]], label [[CLOBBER:%.*]]
; CHECK: noclobber:
@@ -795,8 +795,8 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %gep = getelementptr i32, i32* %ptr, i64 1
- %lv = load i32, i32* %gep
+ %gep = getelementptr i32, ptr %ptr, i64 1
+ %lv = load i32, ptr %gep
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %clobber
@@ -818,13 +818,13 @@ exit:
; Do not unswitch if the condition depends on an atomic load. Duplicating such
; loads is not safe.
-define i32 @no_partial_unswitch_atomic_load_unordered(i32* %ptr, i32 %N) {
+define i32 @no_partial_unswitch_atomic_load_unordered(ptr %ptr, i32 %N) {
; CHECK-LABEL: @no_partial_unswitch_atomic_load_unordered(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[LV:%.*]] = load atomic i32, i32* [[PTR:%.*]] unordered, align 4
+; CHECK-NEXT: [[LV:%.*]] = load atomic i32, ptr [[PTR:%.*]] unordered, align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[NOCLOBBER:%.*]], label [[CLOBBER:%.*]]
; CHECK: noclobber:
@@ -844,7 +844,7 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %lv = load atomic i32, i32* %ptr unordered, align 4
+ %lv = load atomic i32, ptr %ptr unordered, align 4
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %clobber
@@ -866,13 +866,13 @@ exit:
; Do not unswitch if the condition depends on an atomic load. Duplicating such
; loads is not safe.
-define i32 @no_partial_unswitch_atomic_load_monotonic(i32* %ptr, i32 %N) {
+define i32 @no_partial_unswitch_atomic_load_monotonic(ptr %ptr, i32 %N) {
; CHECK-LABEL: @no_partial_unswitch_atomic_load_monotonic(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[LV:%.*]] = load atomic i32, i32* [[PTR:%.*]] monotonic, align 4
+; CHECK-NEXT: [[LV:%.*]] = load atomic i32, ptr [[PTR:%.*]] monotonic, align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[NOCLOBBER:%.*]], label [[CLOBBER:%.*]]
; CHECK: noclobber:
@@ -892,7 +892,7 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %lv = load atomic i32, i32* %ptr monotonic, align 4
+ %lv = load atomic i32, ptr %ptr monotonic, align 4
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %clobber
@@ -917,7 +917,7 @@ declare i32 @get_value()
; Do not unswitch if the condition depends on a call, that may clobber memory.
; Duplicating such a call is not safe.
-define i32 @no_partial_unswitch_cond_call(i32* %ptr, i32 %N) {
+define i32 @no_partial_unswitch_cond_call(ptr %ptr, i32 %N) {
; CHECK-LABEL: @no_partial_unswitch_cond_call(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
@@ -963,13 +963,13 @@ exit:
ret i32 10
}
-define i32 @no_partial_unswitch_true_successor_exit(i32* %ptr, i32 %N) {
+define i32 @no_partial_unswitch_true_successor_exit(ptr %ptr, i32 %N) {
; CHECK-LABEL: @no_partial_unswitch_true_successor_exit(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[EXIT:%.*]], label [[CLOBBER:%.*]]
; CHECK: clobber:
@@ -987,7 +987,7 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %lv = load i32, i32* %ptr
+ %lv = load i32, ptr %ptr
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %exit, label %clobber
@@ -1004,13 +1004,13 @@ exit:
ret i32 10
}
-define i32 @no_partial_unswitch_true_same_successor(i32* %ptr, i32 %N) {
+define i32 @no_partial_unswitch_true_same_successor(ptr %ptr, i32 %N) {
; CHECK-LABEL: @no_partial_unswitch_true_same_successor(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[NOCLOBBER:%.*]], label [[NOCLOBBER]]
; CHECK: noclobber:
@@ -1027,7 +1027,7 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %lv = load i32, i32* %ptr
+ %lv = load i32, ptr %ptr
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %noclobber
@@ -1043,10 +1043,10 @@ exit:
ret i32 10
}
-define i32 @partial_unswitch_true_to_latch(i32* %ptr, i32 %N) {
+define i32 @partial_unswitch_true_to_latch(ptr %ptr, i32 %N) {
; CHECK-LABEL: @partial_unswitch_true_to_latch(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 100
; CHECK-NEXT: br i1 [[TMP1]], label [[ENTRY_SPLIT_US:%.*]], label [[ENTRY_SPLIT:%.*]]
; CHECK: entry.split.us:
@@ -1064,7 +1064,7 @@ define i32 @partial_unswitch_true_to_latch(i32* %ptr, i32 %N) {
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[PTR]], align 4
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[PTR]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[LOOP_LATCH]], label [[CLOBBER:%.*]]
; CHECK: clobber:
@@ -1084,7 +1084,7 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %lv = load i32, i32* %ptr
+ %lv = load i32, ptr %ptr
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %loop.latch, label %clobber
@@ -1104,11 +1104,11 @@ exit:
; There could be multiple unswitch candidates which include partially invariant
; condition. When the exiting block is selected as best unswitch one, clone loop
; blocks.
-define i32 @partial_unswitch_exiting_block_with_multiple_unswitch_candidates(i32 %0, i32 %1, i32* %ptr) {
+define i32 @partial_unswitch_exiting_block_with_multiple_unswitch_candidates(i32 %0, i32 %1, ptr %ptr) {
; CHECK-LABEL: @partial_unswitch_exiting_block_with_multiple_unswitch_candidates(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[EXIT_COND:%.*]] = icmp ne i32 [[TMP0:%.*]], 0
-; CHECK-NEXT: [[TMP2:%.*]] = load i32, i32* [[PTR:%.*]], align 16
+; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[PTR:%.*]], align 16
; CHECK-NEXT: [[TMP3:%.*]] = icmp ult i32 [[TMP2]], 41
; CHECK-NEXT: br i1 [[TMP3]], label [[ENTRY_SPLIT:%.*]], label [[ENTRY_SPLIT_US:%.*]]
; CHECK: entry.split.us:
@@ -1131,11 +1131,11 @@ define i32 @partial_unswitch_exiting_block_with_multiple_unswitch_candidates(i32
; CHECK: entry.split:
; CHECK-NEXT: br label [[LOOP:%.*]]
; CHECK: loop:
-; CHECK-NEXT: [[VAL:%.*]] = load i32, i32* [[PTR]], align 16
+; CHECK-NEXT: [[VAL:%.*]] = load i32, ptr [[PTR]], align 16
; CHECK-NEXT: [[IF_COND:%.*]] = icmp ult i32 [[VAL]], 41
; CHECK-NEXT: br i1 [[IF_COND]], label [[IF_THEN:%.*]], label [[EXITING:%.*]]
; CHECK: if.then:
-; CHECK-NEXT: store i32 [[TMP1:%.*]], i32* [[PTR]], align 16
+; CHECK-NEXT: store i32 [[TMP1:%.*]], ptr [[PTR]], align 16
; CHECK-NEXT: br label [[EXITING]]
; CHECK: exiting:
; CHECK-NEXT: br i1 [[EXIT_COND]], label [[LOOP]], label [[EXIT_SPLIT:%.*]], !llvm.loop [[LOOP10:![0-9]+]]
@@ -1151,12 +1151,12 @@ entry:
br label %loop
loop:
- %val = load i32, i32* %ptr, align 16
+ %val = load i32, ptr %ptr, align 16
%if.cond = icmp ult i32 %val, 41
br i1 %if.cond, label %if.then, label %exiting
if.then:
- store i32 %1, i32* %ptr, align 16
+ store i32 %1, ptr %ptr, align 16
br label %exiting
exiting:
@@ -1169,10 +1169,10 @@ exit:
; The path with noclobber block is only duplicated so we need to calculate only
; the cost of the path with noclobber.
-define i32 @partial_unswitch_true_successor_for_cost_calculation(i32* %ptr, i32 %N) {
+define i32 @partial_unswitch_true_successor_for_cost_calculation(ptr %ptr, i32 %N) {
; CHECK-LABEL: @partial_unswitch_true_successor_for_cost_calculation(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[PTR:%.*]], align 4
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[PTR:%.*]], align 4
; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 100
; CHECK-NEXT: br i1 [[TMP1]], label [[ENTRY_SPLIT_US:%.*]], label [[ENTRY_SPLIT:%.*]]
; CHECK: entry.split.us:
@@ -1192,7 +1192,7 @@ define i32 @partial_unswitch_true_successor_for_cost_calculation(i32* %ptr, i32
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
; CHECK: loop.header:
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY_SPLIT]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
-; CHECK-NEXT: [[LV:%.*]] = load i32, i32* [[PTR]], align 4
+; CHECK-NEXT: [[LV:%.*]] = load i32, ptr [[PTR]], align 4
; CHECK-NEXT: [[SC:%.*]] = icmp eq i32 [[LV]], 100
; CHECK-NEXT: br i1 [[SC]], label [[NOCLOBBER:%.*]], label [[CLOBBER:%.*]]
; CHECK: noclobber:
@@ -1260,7 +1260,7 @@ entry:
loop.header:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %lv = load i32, i32* %ptr
+ %lv = load i32, ptr %ptr
%sc = icmp eq i32 %lv, 100
br i1 %sc, label %noclobber, label %clobber
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/pipeline.ll b/llvm/test/Transforms/SimpleLoopUnswitch/pipeline.ll
index 7fd3b1d28d6da..3aab25f0cd2bf 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/pipeline.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/pipeline.ll
@@ -12,7 +12,7 @@ declare i32 @c()
; TRIVIAL-NOT: loop_begin.us:
; NONTRIVIAL: loop_begin.us:
-define i32 @test1(i1* %ptr, i1 %cond1, i1 %cond2) {
+define i32 @test1(ptr %ptr, i1 %cond1, i1 %cond2) {
entry:
br label %loop_begin
@@ -35,7 +35,7 @@ loop_b_b:
br label %latch
latch:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop_begin, label %loop_exit
loop_exit:
@@ -43,7 +43,7 @@ loop_exit:
}
; CHECK-NOT: loop2_begin.us:
-define i32 @test2(i1* %ptr, i1 %cond1, i1 %cond2) optsize {
+define i32 @test2(ptr %ptr, i1 %cond1, i1 %cond2) optsize {
entry:
br label %loop2_begin
@@ -66,7 +66,7 @@ loop2_b_b:
br label %latch2
latch2:
- %v = load i1, i1* %ptr
+ %v = load i1, ptr %ptr
br i1 %v, label %loop2_begin, label %loop2_exit
loop2_exit:
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/preserve-analyses.ll b/llvm/test/Transforms/SimpleLoopUnswitch/preserve-analyses.ll
index 0a9dc31b1112d..d4544ba6f4a29 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/preserve-analyses.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/preserve-analyses.ll
@@ -6,21 +6,21 @@
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:64"
target triple = "armv6-apple-darwin9"
- at delim1 = external global i32 ; <i32*> [#uses=1]
- at delim2 = external global i32 ; <i32*> [#uses=1]
+ at delim1 = external global i32 ; <ptr> [#uses=1]
+ at delim2 = external global i32 ; <ptr> [#uses=1]
-define i32 @ineqn(i8* %s, i8* %p) nounwind readonly {
+define i32 @ineqn(ptr %s, ptr %p) nounwind readonly {
entry:
- %0 = load i32, i32* @delim1, align 4 ; <i32> [#uses=1]
- %1 = load i32, i32* @delim2, align 4 ; <i32> [#uses=1]
+ %0 = load i32, ptr @delim1, align 4 ; <i32> [#uses=1]
+ %1 = load i32, ptr @delim2, align 4 ; <i32> [#uses=1]
br label %bb8.outer
bb: ; preds = %bb8
- %2 = icmp eq i8* %p_addr.0, %s ; <i1> [#uses=1]
+ %2 = icmp eq ptr %p_addr.0, %s ; <i1> [#uses=1]
br i1 %2, label %bb10, label %bb2
bb2: ; preds = %bb
- %3 = getelementptr inbounds i8, i8* %p_addr.0, i32 1 ; <i8*> [#uses=3]
+ %3 = getelementptr inbounds i8, ptr %p_addr.0, i32 1 ; <ptr> [#uses=3]
switch i32 %ineq.0.ph, label %bb8.backedge [
i32 0, label %bb3
i32 1, label %bb6
@@ -41,27 +41,27 @@ bb6: ; preds = %bb5, %bb2
br i1 %5, label %bb7, label %bb8.backedge
bb7: ; preds = %bb6
- %.lcssa1 = phi i8* [ %3, %bb6 ] ; <i8*> [#uses=1]
+ %.lcssa1 = phi ptr [ %3, %bb6 ] ; <ptr> [#uses=1]
br label %bb8.outer.backedge
bb8.outer.backedge: ; preds = %bb8.outer.loopexit, %bb7
- %.lcssa2 = phi i8* [ %.lcssa1, %bb7 ], [ %.lcssa, %bb8.outer.loopexit ] ; <i8*> [#uses=1]
+ %.lcssa2 = phi ptr [ %.lcssa1, %bb7 ], [ %.lcssa, %bb8.outer.loopexit ] ; <ptr> [#uses=1]
%ineq.0.ph.be = phi i32 [ 0, %bb7 ], [ 1, %bb8.outer.loopexit ] ; <i32> [#uses=1]
br label %bb8.outer
bb8.outer.loopexit: ; preds = %bb3
- %.lcssa = phi i8* [ %3, %bb3 ] ; <i8*> [#uses=1]
+ %.lcssa = phi ptr [ %3, %bb3 ] ; <ptr> [#uses=1]
br label %bb8.outer.backedge
bb8.outer: ; preds = %bb8.outer.backedge, %entry
%ineq.0.ph = phi i32 [ 0, %entry ], [ %ineq.0.ph.be, %bb8.outer.backedge ] ; <i32> [#uses=3]
- %p_addr.0.ph = phi i8* [ %p, %entry ], [ %.lcssa2, %bb8.outer.backedge ] ; <i8*> [#uses=1]
+ %p_addr.0.ph = phi ptr [ %p, %entry ], [ %.lcssa2, %bb8.outer.backedge ] ; <ptr> [#uses=1]
%6 = icmp eq i32 %ineq.0.ph, 1 ; <i1> [#uses=1]
br label %bb8
bb8: ; preds = %bb8.outer, %bb8.backedge
- %p_addr.0 = phi i8* [ %p_addr.0.ph, %bb8.outer ], [ %3, %bb8.backedge ] ; <i8*> [#uses=3]
- %7 = load i8, i8* %p_addr.0, align 1 ; <i8> [#uses=2]
+ %p_addr.0 = phi ptr [ %p_addr.0.ph, %bb8.outer ], [ %3, %bb8.backedge ] ; <ptr> [#uses=3]
+ %7 = load i8, ptr %p_addr.0, align 1 ; <i8> [#uses=2]
%8 = sext i8 %7 to i32 ; <i32> [#uses=2]
%9 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
br i1 %9, label %bb10, label %bb
@@ -103,7 +103,7 @@ entry:
br label %while.cond.i
while.cond.i: ; preds = %while.cond.i.backedge, %entry
- %call.i25 = call i8* @pci_get_device() nounwind noredzone ; <i8*> [#uses=2]
+ %call.i25 = call ptr @pci_get_device() nounwind noredzone ; <ptr> [#uses=2]
br i1 undef, label %if.then65, label %while.body.i
while.body.i: ; preds = %while.cond.i
@@ -119,11 +119,11 @@ if.then31.i.i: ; preds = %while.body.i
]
if.then42.i.i: ; preds = %if.then31.i.i, %if.then31.i.i
- %call.i25.lcssa48 = phi i8* [ %call.i25, %if.then31.i.i ], [ %call.i25, %if.then31.i.i ] ; <i8*> [#uses=0]
+ %call.i25.lcssa48 = phi ptr [ %call.i25, %if.then31.i.i ], [ %call.i25, %if.then31.i.i ] ; <ptr> [#uses=0]
unreachable
if.then65: ; preds = %while.cond.i
unreachable
}
-declare i8* @pci_get_device() noredzone
+declare ptr @pci_get_device() noredzone
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-iteration.ll b/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-iteration.ll
index 914af26f10a76..463acb3806ec2 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-iteration.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-iteration.ll
@@ -3,7 +3,7 @@
declare void @some_func() noreturn
-define i32 @test1(i32* %var, i1 %cond1, i1 %cond2) {
+define i32 @test1(ptr %var, i1 %cond1, i1 %cond2) {
; CHECK-LABEL: @test1(
entry:
br label %loop_begin
@@ -20,7 +20,7 @@ loop_begin:
br i1 %cond1, label %continue, label %loop_exit ; first trivial condition
continue:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
%var_cond = trunc i32 %var_val to i1
%maybe_cond = select i1 %cond1, i1 %cond2, i1 %var_cond
br i1 %maybe_cond, label %do_something, label %loop_exit ; second trivial condition
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-logical-and-or.ll b/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-logical-and-or.ll
index 64d8742e6112c..0719b5579d0a4 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-logical-and-or.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-logical-and-or.ll
@@ -137,7 +137,7 @@ exit:
}
; Check that loop unswitch looks through a combination of or and select instructions.
-define i32 @test_partial_condition_unswitch_or_select(i32* %var, i1 %cond1, i1 %cond2, i1 %cond3, i1 %cond4, i1 %cond5, i1 %cond6) {
+define i32 @test_partial_condition_unswitch_or_select(ptr %var, i1 %cond1, i1 %cond2, i1 %cond3, i1 %cond4, i1 %cond5, i1 %cond6) {
; CHECK-LABEL: @test_partial_condition_unswitch_or_select(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[COND4_FR:%.*]] = freeze i1 [[COND4:%.*]]
@@ -151,7 +151,7 @@ define i32 @test_partial_condition_unswitch_or_select(i32* %var, i1 %cond1, i1 %
; CHECK: entry.split:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
-; CHECK-NEXT: [[VAR_VAL:%.*]] = load i32, i32* [[VAR:%.*]], align 4
+; CHECK-NEXT: [[VAR_VAL:%.*]] = load i32, ptr [[VAR:%.*]], align 4
; CHECK-NEXT: [[VAR_COND:%.*]] = trunc i32 [[VAR_VAL]] to i1
; CHECK-NEXT: [[COND_OR1:%.*]] = or i1 [[VAR_COND]], false
; CHECK-NEXT: [[COND_OR2:%.*]] = or i1 false, false
@@ -174,7 +174,7 @@ entry:
br label %loop_begin
loop_begin:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
%var_cond = trunc i32 %var_val to i1
%cond_or1 = or i1 %var_cond, %cond1
%cond_or2 = or i1 %cond2, %cond3
@@ -196,7 +196,7 @@ loop_exit:
; Same as test_partial_condition_unswitch_or_select, but with arguments marked
; as noundef.
-define i32 @test_partial_condition_unswitch_or_select_noundef(i32* noundef %var, i1 noundef %cond1, i1 noundef %cond2, i1 noundef %cond3, i1 noundef %cond4, i1 noundef %cond5, i1 noundef %cond6) {
+define i32 @test_partial_condition_unswitch_or_select_noundef(ptr noundef %var, i1 noundef %cond1, i1 noundef %cond2, i1 noundef %cond3, i1 noundef %cond4, i1 noundef %cond5, i1 noundef %cond6) {
; CHECK-LABEL: @test_partial_condition_unswitch_or_select_noundef(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.*]] = or i1 [[COND4:%.*]], [[COND2:%.*]]
@@ -206,7 +206,7 @@ define i32 @test_partial_condition_unswitch_or_select_noundef(i32* noundef %var,
; CHECK: entry.split:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
-; CHECK-NEXT: [[VAR_VAL:%.*]] = load i32, i32* [[VAR:%.*]], align 4
+; CHECK-NEXT: [[VAR_VAL:%.*]] = load i32, ptr [[VAR:%.*]], align 4
; CHECK-NEXT: [[VAR_COND:%.*]] = trunc i32 [[VAR_VAL]] to i1
; CHECK-NEXT: [[COND_OR1:%.*]] = or i1 [[VAR_COND]], false
; CHECK-NEXT: [[COND_OR2:%.*]] = or i1 false, false
@@ -229,7 +229,7 @@ entry:
br label %loop_begin
loop_begin:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
%var_cond = trunc i32 %var_val to i1
%cond_or1 = or i1 %var_cond, %cond1
%cond_or2 = or i1 %cond2, %cond3
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-profmd.ll b/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-profmd.ll
index a8773b648d5d3..34257ffdc3699 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-profmd.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch-profmd.ll
@@ -6,7 +6,7 @@
declare void @some_func()
; Test for a trivially unswitchable switch with non-default case exiting.
-define i32 @test2(i32* %var, i32 %cond1, i32 %cond2) {
+define i32 @test2(ptr %var, i32 %cond1, i32 %cond2) {
; CHECK-LABEL: @test2(
; CHECK-NEXT: entry:
; CHECK-NEXT: switch i32 [[COND2:%.*]], label [[ENTRY_SPLIT:%.*]] [
@@ -15,7 +15,7 @@ define i32 @test2(i32* %var, i32 %cond1, i32 %cond2) {
; CHECK: entry.split:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
-; CHECK-NEXT: [[VAR_VAL:%.*]] = load i32, i32* [[VAR:%.*]]
+; CHECK-NEXT: [[VAR_VAL:%.*]] = load i32, ptr [[VAR:%.*]]
; CHECK-NEXT: switch i32 [[COND2]], label [[LOOP2:%.*]] [
; CHECK-NEXT: i32 0, label [[LOOP0:%.*]]
; CHECK-NEXT: i32 1, label [[LOOP1:%.*]]
@@ -42,7 +42,7 @@ entry:
br label %loop_begin
loop_begin:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
switch i32 %cond2, label %loop2 [
i32 0, label %loop0
i32 1, label %loop1
@@ -75,7 +75,7 @@ loop_exit3:
}
; Test for a trivially unswitchable switch with only the default case exiting.
-define i32 @test3(i32* %var, i32 %cond1, i32 %cond2) {
+define i32 @test3(ptr %var, i32 %cond1, i32 %cond2) {
; CHECK-LABEL: @test3(
; CHECK-NEXT: entry:
; CHECK-NEXT: switch i32 [[COND2:%.*]], label [[LOOP_EXIT2:%.*]] [
@@ -86,7 +86,7 @@ define i32 @test3(i32* %var, i32 %cond1, i32 %cond2) {
; CHECK: entry.split:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
-; CHECK-NEXT: [[VAR_VAL:%.*]] = load i32, i32* [[VAR:%.*]]
+; CHECK-NEXT: [[VAR_VAL:%.*]] = load i32, ptr [[VAR:%.*]]
; CHECK-NEXT: switch i32 [[COND2]], label [[LOOP2:%.*]] [
; CHECK-NEXT: i32 0, label [[LOOP0:%.*]]
; CHECK-NEXT: i32 1, label [[LOOP1:%.*]]
@@ -113,7 +113,7 @@ entry:
br label %loop_begin
loop_begin:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
switch i32 %cond2, label %loop_exit2 [
i32 0, label %loop0
i32 1, label %loop1
@@ -147,7 +147,7 @@ loop_exit3:
; Test for a trivially unswitchable switch with multiple exiting cases and
; multiple looping cases.
-define i32 @test4(i32* %var, i32 %cond1, i32 %cond2) {
+define i32 @test4(ptr %var, i32 %cond1, i32 %cond2) {
; CHECK-LABEL: @test4(
; CHECK-NEXT: entry:
; CHECK-NEXT: switch i32 [[COND2:%.*]], label [[LOOP_EXIT2:%.*]] [
@@ -160,7 +160,7 @@ define i32 @test4(i32* %var, i32 %cond1, i32 %cond2) {
; CHECK: entry.split:
; CHECK-NEXT: br label [[LOOP_BEGIN:%.*]]
; CHECK: loop_begin:
-; CHECK-NEXT: [[VAR_VAL:%.*]] = load i32, i32* [[VAR:%.*]]
+; CHECK-NEXT: [[VAR_VAL:%.*]] = load i32, ptr [[VAR:%.*]]
; CHECK-NEXT: switch i32 [[COND2]], label [[LOOP2:%.*]] [
; CHECK-NEXT: i32 0, label [[LOOP0:%.*]]
; CHECK-NEXT: i32 1, label [[LOOP1:%.*]]
@@ -187,7 +187,7 @@ entry:
br label %loop_begin
loop_begin:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
switch i32 %cond2, label %loop_exit2 [
i32 0, label %loop0
i32 1, label %loop1
diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch.ll b/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch.ll
index 4bb5fc288e1ec..9201880324bff 100644
--- a/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch.ll
+++ b/llvm/test/Transforms/SimpleLoopUnswitch/trivial-unswitch.ll
@@ -10,7 +10,7 @@ declare i32 @cond.i32()
; This test contains two trivial unswitch condition in one loop.
; LoopUnswitch pass should be able to unswitch the second one
; after unswitching the first one.
-define i32 @test1(i32* %var, i1 %cond1, i1 %cond2) {
+define i32 @test1(ptr %var, i1 %cond1, i1 %cond2) {
; CHECK-LABEL: @test1(
entry:
br label %loop_begin
@@ -29,7 +29,7 @@ loop_begin:
; CHECK-NEXT: br label %continue
continue:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
br i1 %cond2, label %do_something, label %loop_exit ; second trivial condition
; CHECK: continue:
; CHECK-NEXT: load
@@ -52,7 +52,7 @@ loop_exit:
}
; Test for two trivially unswitchable switches.
-define i32 @test3(i32* %var, i32 %cond1, i32 %cond2) {
+define i32 @test3(ptr %var, i32 %cond1, i32 %cond2) {
; CHECK-LABEL: @test3(
entry:
br label %loop_begin
@@ -78,7 +78,7 @@ loop_begin:
; CHECK-NEXT: br label %continue
continue:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
switch i32 %cond2, label %loop_exit2 [
i32 0, label %do_something
i32 42, label %loop_exit2
@@ -111,7 +111,7 @@ loop_exit2:
; Test for a trivially unswitchable switch with multiple exiting cases and
; multiple looping cases.
-define i32 @test4(i32* %var, i32 %cond1, i32 %cond2) {
+define i32 @test4(ptr %var, i32 %cond1, i32 %cond2) {
; CHECK-LABEL: @test4(
entry:
br label %loop_begin
@@ -128,7 +128,7 @@ entry:
; CHECK-NEXT: br label %loop_begin
loop_begin:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
switch i32 %cond2, label %loop_exit2 [
i32 0, label %loop0
i32 1, label %loop1
@@ -224,7 +224,7 @@ loop_exit:
; This test contains a trivially unswitchable branch with a real phi node in LCSSA
; position in a shared exit block where a
diff erent path through the loop
; produces a non-invariant input to the PHI node.
-define i32 @test6(i32* %var, i1 %cond1, i1 %cond2, i32 %x, i32 %y) {
+define i32 @test6(ptr %var, i1 %cond1, i1 %cond2, i32 %x, i32 %y) {
; CHECK-LABEL: @test6(
entry:
br label %loop_begin
@@ -240,7 +240,7 @@ loop_begin:
; CHECK-NEXT: br label %continue
continue:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
br i1 %cond2, label %latch, label %loop_exit
; CHECK: continue:
; CHECK-NEXT: load
@@ -315,7 +315,7 @@ loop_exit:
; This test contains a trivially unswitchable switch with a real phi node in
; LCSSA position in a shared exit block where a
diff erent path through the loop
; produces a non-invariant input to the PHI node.
-define i32 @test8(i32* %var, i32 %cond1, i32 %cond2, i32 %x, i32 %y) {
+define i32 @test8(ptr %var, i32 %cond1, i32 %cond2, i32 %x, i32 %y) {
; CHECK-LABEL: @test8(
entry:
br label %loop_begin
@@ -339,7 +339,7 @@ loop_begin:
; CHECK-NEXT: br label %continue
continue:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
switch i32 %cond2, label %latch [
i32 0, label %loop_exit
]
@@ -387,7 +387,7 @@ loop_exit2:
; This test, extracted from the LLVM test suite, has an interesting dominator
; tree to update as there are edges to sibling domtree nodes within child
; domtree nodes of the unswitched node.
-define void @xgets(i1 %cond1, i1* %cond2.ptr) {
+define void @xgets(i1 %cond1, ptr %cond2.ptr) {
; CHECK-LABEL: @xgets(
entry:
br label %for.cond.preheader
@@ -413,10 +413,10 @@ land.lhs.true:
; CHECK-NEXT: br label %if.then20
if.then20:
- %cond2 = load volatile i1, i1* %cond2.ptr
+ %cond2 = load volatile i1, ptr %cond2.ptr
br i1 %cond2, label %if.then23, label %if.else
; CHECK: if.then20:
-; CHECK-NEXT: %[[COND2:.*]] = load volatile i1, i1* %cond2.ptr
+; CHECK-NEXT: %[[COND2:.*]] = load volatile i1, ptr %cond2.ptr
; CHECK-NEXT: br i1 %[[COND2]], label %if.then23, label %if.else
if.else:
@@ -445,7 +445,7 @@ cleanup:
; CHECK-NEXT: ret void
}
-define i32 @test_partial_condition_unswitch_and(i32* %var, i1 %cond1, i1 %cond2) {
+define i32 @test_partial_condition_unswitch_and(ptr %var, i1 %cond1, i1 %cond2) {
; CHECK-LABEL: @test_partial_condition_unswitch_and(
entry:
br label %loop_begin
@@ -465,7 +465,7 @@ loop_begin:
; CHECK-NEXT: br label %continue
continue:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
%var_cond = trunc i32 %var_val to i1
%cond_and = and i1 %var_cond, %cond2
br i1 %cond_and, label %do_something, label %loop_exit
@@ -491,7 +491,7 @@ loop_exit:
; CHECK-NEXT: ret
}
-define i32 @test_partial_condition_unswitch_and_select(i32* %var, i1 %cond1, i1 %cond2) {
+define i32 @test_partial_condition_unswitch_and_select(ptr %var, i1 %cond1, i1 %cond2) {
; CHECK-LABEL: @test_partial_condition_unswitch_and_select(
entry:
br label %loop_begin
@@ -511,7 +511,7 @@ loop_begin:
; CHECK-NEXT: br label %continue
continue:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
%var_cond = trunc i32 %var_val to i1
%cond_and = select i1 %var_cond, i1 %cond2, i1 false
br i1 %cond_and, label %do_something, label %loop_exit
@@ -537,7 +537,7 @@ loop_exit:
; CHECK-NEXT: ret
}
-define i32 @test_partial_condition_unswitch_or_simple_select(i32* %var, i1 %cond1, i1 %cond2) {
+define i32 @test_partial_condition_unswitch_or_simple_select(ptr %var, i1 %cond1, i1 %cond2) {
; CHECK-LABEL: @test_partial_condition_unswitch_or_simple_select(
entry:
br label %loop_begin
@@ -557,7 +557,7 @@ loop_begin:
; CHECK-NEXT: br label %continue
continue:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
%var_cond = trunc i32 %var_val to i1
%cond_or = select i1 %var_cond, i1 true, i1 %cond2
br i1 %cond_or, label %loop_exit, label %do_something
@@ -586,7 +586,7 @@ loop_exit:
; CHECK-NEXT: ret
}
-define i32 @test_partial_condition_unswitch_or(i32* %var, i1 %cond1, i1 %cond2, i1 %cond3, i1 %cond4, i1 %cond5, i1 %cond6) {
+define i32 @test_partial_condition_unswitch_or(ptr %var, i1 %cond1, i1 %cond2, i1 %cond3, i1 %cond4, i1 %cond5, i1 %cond6) {
; CHECK-LABEL: @test_partial_condition_unswitch_or(
entry:
br label %loop_begin
@@ -604,7 +604,7 @@ entry:
; CHECK-NEXT: br label %loop_begin
loop_begin:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
%var_cond = trunc i32 %var_val to i1
%cond_or1 = or i1 %var_cond, %cond1
%cond_or2 = or i1 %cond2, %cond3
@@ -641,7 +641,7 @@ loop_exit:
; CHECK-NEXT: ret
}
-define i32 @test_partial_condition_unswitch_with_lcssa_phi1(i32* %var, i1 %cond, i32 %x) {
+define i32 @test_partial_condition_unswitch_with_lcssa_phi1(ptr %var, i1 %cond, i32 %x) {
; CHECK-LABEL: @test_partial_condition_unswitch_with_lcssa_phi1(
entry:
br label %loop_begin
@@ -653,7 +653,7 @@ entry:
; CHECK-NEXT: br label %loop_begin
loop_begin:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
%var_cond = trunc i32 %var_val to i1
%cond_and = and i1 %var_cond, %cond
br i1 %cond_and, label %do_something, label %loop_exit
@@ -682,7 +682,7 @@ loop_exit:
; CHECK-NEXT: ret i32 %[[LCSSA_SPLIT]]
}
-define i32 @test_partial_condition_unswitch_with_lcssa_phi2(i32* %var, i1 %cond, i32 %x, i32 %y) {
+define i32 @test_partial_condition_unswitch_with_lcssa_phi2(ptr %var, i1 %cond, i32 %x, i32 %y) {
; CHECK-LABEL: @test_partial_condition_unswitch_with_lcssa_phi2(
entry:
br label %loop_begin
@@ -694,7 +694,7 @@ entry:
; CHECK-NEXT: br label %loop_begin
loop_begin:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
%var_cond = trunc i32 %var_val to i1
%cond_and = and i1 %var_cond, %cond
br i1 %cond_and, label %do_something, label %loop_exit
@@ -784,7 +784,7 @@ exit:
; A < B < C
; into
; A < (B, C)
-define void @hoist_inner_loop1(i32* %ptr) {
+define void @hoist_inner_loop1(ptr %ptr) {
; CHECK-LABEL: define void @hoist_inner_loop1(
entry:
br label %a.header
@@ -792,18 +792,18 @@ entry:
; CHECK-NEXT: br label %a.header
a.header:
- %x.a = load i32, i32* %ptr
+ %x.a = load i32, ptr %ptr
br label %b.header
; CHECK: a.header:
-; CHECK-NEXT: %x.a = load i32, i32* %ptr
+; CHECK-NEXT: %x.a = load i32, ptr %ptr
; CHECK-NEXT: br label %b.header
b.header:
- %x.b = load i32, i32* %ptr
+ %x.b = load i32, ptr %ptr
%v1 = call i1 @cond()
br label %c.header
; CHECK: b.header:
-; CHECK-NEXT: %x.b = load i32, i32* %ptr
+; CHECK-NEXT: %x.b = load i32, ptr %ptr
; CHECK-NEXT: %v1 = call i1 @cond()
; CHECK-NEXT: br i1 %v1, label %b.latch, label %[[B_HEADER_SPLIT:.*]]
;
@@ -818,13 +818,13 @@ c.header:
c.latch:
; Use values from other loops to check LCSSA form.
- store i32 %x.a, i32* %ptr
- store i32 %x.b, i32* %ptr
+ store i32 %x.a, ptr %ptr
+ store i32 %x.b, ptr %ptr
%v2 = call i1 @cond()
br i1 %v2, label %c.header, label %a.exit.c
; CHECK: c.latch:
-; CHECK-NEXT: store i32 %x.a, i32* %ptr
-; CHECK-NEXT: store i32 %[[X_B_LCSSA]], i32* %ptr
+; CHECK-NEXT: store i32 %x.a, ptr %ptr
+; CHECK-NEXT: store i32 %[[X_B_LCSSA]], ptr %ptr
; CHECK-NEXT: %v2 = call i1 @cond()
; CHECK-NEXT: br i1 %v2, label %c.header, label %a.exit.c
@@ -860,7 +860,7 @@ exit:
; A < B < C
; into
; (A < B), C
-define void @hoist_inner_loop2(i32* %ptr) {
+define void @hoist_inner_loop2(ptr %ptr) {
; CHECK-LABEL: define void @hoist_inner_loop2(
entry:
br label %a.header
@@ -868,18 +868,18 @@ entry:
; CHECK-NEXT: br label %a.header
a.header:
- %x.a = load i32, i32* %ptr
+ %x.a = load i32, ptr %ptr
br label %b.header
; CHECK: a.header:
-; CHECK-NEXT: %x.a = load i32, i32* %ptr
+; CHECK-NEXT: %x.a = load i32, ptr %ptr
; CHECK-NEXT: br label %b.header
b.header:
- %x.b = load i32, i32* %ptr
+ %x.b = load i32, ptr %ptr
%v1 = call i1 @cond()
br label %c.header
; CHECK: b.header:
-; CHECK-NEXT: %x.b = load i32, i32* %ptr
+; CHECK-NEXT: %x.b = load i32, ptr %ptr
; CHECK-NEXT: %v1 = call i1 @cond()
; CHECK-NEXT: br i1 %v1, label %b.latch, label %[[B_HEADER_SPLIT:.*]]
;
@@ -895,13 +895,13 @@ c.header:
c.latch:
; Use values from other loops to check LCSSA form.
- store i32 %x.a, i32* %ptr
- store i32 %x.b, i32* %ptr
+ store i32 %x.a, ptr %ptr
+ store i32 %x.b, ptr %ptr
%v2 = call i1 @cond()
br i1 %v2, label %c.header, label %exit
; CHECK: c.latch:
-; CHECK-NEXT: store i32 %[[X_A_LCSSA]], i32* %ptr
-; CHECK-NEXT: store i32 %[[X_B_LCSSA]], i32* %ptr
+; CHECK-NEXT: store i32 %[[X_A_LCSSA]], ptr %ptr
+; CHECK-NEXT: store i32 %[[X_B_LCSSA]], ptr %ptr
; CHECK-NEXT: %v2 = call i1 @cond()
; CHECK-NEXT: br i1 %v2, label %c.header, label %exit
@@ -928,7 +928,7 @@ exit:
; A < B < C < D
; into
; (A < B), (C < D)
-define void @hoist_inner_loop3(i32* %ptr) {
+define void @hoist_inner_loop3(ptr %ptr) {
; CHECK-LABEL: define void @hoist_inner_loop3(
entry:
br label %a.header
@@ -936,18 +936,18 @@ entry:
; CHECK-NEXT: br label %a.header
a.header:
- %x.a = load i32, i32* %ptr
+ %x.a = load i32, ptr %ptr
br label %b.header
; CHECK: a.header:
-; CHECK-NEXT: %x.a = load i32, i32* %ptr
+; CHECK-NEXT: %x.a = load i32, ptr %ptr
; CHECK-NEXT: br label %b.header
b.header:
- %x.b = load i32, i32* %ptr
+ %x.b = load i32, ptr %ptr
%v1 = call i1 @cond()
br label %c.header
; CHECK: b.header:
-; CHECK-NEXT: %x.b = load i32, i32* %ptr
+; CHECK-NEXT: %x.b = load i32, ptr %ptr
; CHECK-NEXT: %v1 = call i1 @cond()
; CHECK-NEXT: br i1 %v1, label %b.latch, label %[[B_HEADER_SPLIT:.*]]
;
@@ -962,23 +962,23 @@ c.header:
; CHECK-NEXT: br label %c.body
c.body:
- %x.c = load i32, i32* %ptr
+ %x.c = load i32, ptr %ptr
br label %d.header
; CHECK: c.body:
-; CHECK-NEXT: %x.c = load i32, i32* %ptr
+; CHECK-NEXT: %x.c = load i32, ptr %ptr
; CHECK-NEXT: br label %d.header
d.header:
; Use values from other loops to check LCSSA form.
- store i32 %x.a, i32* %ptr
- store i32 %x.b, i32* %ptr
- store i32 %x.c, i32* %ptr
+ store i32 %x.a, ptr %ptr
+ store i32 %x.b, ptr %ptr
+ store i32 %x.c, ptr %ptr
%v2 = call i1 @cond()
br i1 %v2, label %d.header, label %c.latch
; CHECK: d.header:
-; CHECK-NEXT: store i32 %[[X_A_LCSSA]], i32* %ptr
-; CHECK-NEXT: store i32 %[[X_B_LCSSA]], i32* %ptr
-; CHECK-NEXT: store i32 %x.c, i32* %ptr
+; CHECK-NEXT: store i32 %[[X_A_LCSSA]], ptr %ptr
+; CHECK-NEXT: store i32 %[[X_B_LCSSA]], ptr %ptr
+; CHECK-NEXT: store i32 %x.c, ptr %ptr
; CHECK-NEXT: %v2 = call i1 @cond()
; CHECK-NEXT: br i1 %v2, label %d.header, label %c.latch
@@ -1108,7 +1108,7 @@ exit:
; A < B < C < D
; into
; A < ((B < C), D)
-define void @hoist_inner_loop5(i32* %ptr) {
+define void @hoist_inner_loop5(ptr %ptr) {
; CHECK-LABEL: define void @hoist_inner_loop5(
entry:
br label %a.header
@@ -1116,25 +1116,25 @@ entry:
; CHECK-NEXT: br label %a.header
a.header:
- %x.a = load i32, i32* %ptr
+ %x.a = load i32, ptr %ptr
br label %b.header
; CHECK: a.header:
-; CHECK-NEXT: %x.a = load i32, i32* %ptr
+; CHECK-NEXT: %x.a = load i32, ptr %ptr
; CHECK-NEXT: br label %b.header
b.header:
- %x.b = load i32, i32* %ptr
+ %x.b = load i32, ptr %ptr
br label %c.header
; CHECK: b.header:
-; CHECK-NEXT: %x.b = load i32, i32* %ptr
+; CHECK-NEXT: %x.b = load i32, ptr %ptr
; CHECK-NEXT: br label %c.header
c.header:
- %x.c = load i32, i32* %ptr
+ %x.c = load i32, ptr %ptr
%v1 = call i1 @cond()
br label %d.header
; CHECK: c.header:
-; CHECK-NEXT: %x.c = load i32, i32* %ptr
+; CHECK-NEXT: %x.c = load i32, ptr %ptr
; CHECK-NEXT: %v1 = call i1 @cond()
; CHECK-NEXT: br i1 %v1, label %c.latch, label %[[C_HEADER_SPLIT:.*]]
;
@@ -1150,15 +1150,15 @@ d.header:
d.latch:
; Use values from other loops to check LCSSA form.
- store i32 %x.a, i32* %ptr
- store i32 %x.b, i32* %ptr
- store i32 %x.c, i32* %ptr
+ store i32 %x.a, ptr %ptr
+ store i32 %x.b, ptr %ptr
+ store i32 %x.c, ptr %ptr
%v2 = call i1 @cond()
br i1 %v2, label %d.header, label %a.latch
; CHECK: d.latch:
-; CHECK-NEXT: store i32 %x.a, i32* %ptr
-; CHECK-NEXT: store i32 %[[X_B_LCSSA]], i32* %ptr
-; CHECK-NEXT: store i32 %[[X_C_LCSSA]], i32* %ptr
+; CHECK-NEXT: store i32 %x.a, ptr %ptr
+; CHECK-NEXT: store i32 %[[X_B_LCSSA]], ptr %ptr
+; CHECK-NEXT: store i32 %[[X_C_LCSSA]], ptr %ptr
; CHECK-NEXT: %v2 = call i1 @cond()
; CHECK-NEXT: br i1 %v2, label %d.header, label %a.latch
@@ -1190,7 +1190,7 @@ exit:
; A < B < C
; into
; (A < B), C
-define void @hoist_inner_loop_switch(i32* %ptr) {
+define void @hoist_inner_loop_switch(ptr %ptr) {
; CHECK-LABEL: define void @hoist_inner_loop_switch(
entry:
br label %a.header
@@ -1198,18 +1198,18 @@ entry:
; CHECK-NEXT: br label %a.header
a.header:
- %x.a = load i32, i32* %ptr
+ %x.a = load i32, ptr %ptr
br label %b.header
; CHECK: a.header:
-; CHECK-NEXT: %x.a = load i32, i32* %ptr
+; CHECK-NEXT: %x.a = load i32, ptr %ptr
; CHECK-NEXT: br label %b.header
b.header:
- %x.b = load i32, i32* %ptr
+ %x.b = load i32, ptr %ptr
%v1 = call i32 @cond.i32()
br label %c.header
; CHECK: b.header:
-; CHECK-NEXT: %x.b = load i32, i32* %ptr
+; CHECK-NEXT: %x.b = load i32, ptr %ptr
; CHECK-NEXT: %v1 = call i32 @cond.i32()
; CHECK-NEXT: switch i32 %v1, label %[[B_HEADER_SPLIT:.*]] [
; CHECK-NEXT: i32 1, label %b.latch
@@ -1233,13 +1233,13 @@ c.header:
c.latch:
; Use values from other loops to check LCSSA form.
- store i32 %x.a, i32* %ptr
- store i32 %x.b, i32* %ptr
+ store i32 %x.a, ptr %ptr
+ store i32 %x.b, ptr %ptr
%v2 = call i1 @cond()
br i1 %v2, label %c.header, label %exit
; CHECK: c.latch:
-; CHECK-NEXT: store i32 %[[X_A_LCSSA]], i32* %ptr
-; CHECK-NEXT: store i32 %[[X_B_LCSSA]], i32* %ptr
+; CHECK-NEXT: store i32 %[[X_A_LCSSA]], ptr %ptr
+; CHECK-NEXT: store i32 %[[X_B_LCSSA]], ptr %ptr
; CHECK-NEXT: %v2 = call i1 @cond()
; CHECK-NEXT: br i1 %v2, label %c.header, label %exit
@@ -1261,7 +1261,7 @@ exit:
; CHECK-NEXT: ret void
}
-define void @test_unswitch_to_common_succ_with_phis(i32* %var, i32 %cond) {
+define void @test_unswitch_to_common_succ_with_phis(ptr %var, i32 %cond) {
; CHECK-LABEL: @test_unswitch_to_common_succ_with_phis(
entry:
br label %header
@@ -1276,7 +1276,7 @@ entry:
; CHECK-NEXT: br label %header
header:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
switch i32 %cond, label %loopexit1 [
i32 0, label %latch
i32 1, label %latch
@@ -1307,7 +1307,7 @@ loopexit2:
; CHECK-NEXT: ret
}
-define void @test_unswitch_to_default_common_succ_with_phis(i32* %var, i32 %cond) {
+define void @test_unswitch_to_default_common_succ_with_phis(ptr %var, i32 %cond) {
; CHECK-LABEL: @test_unswitch_to_default_common_succ_with_phis(
entry:
br label %header
@@ -1320,7 +1320,7 @@ entry:
; CHECK-NEXT: br label %header
header:
- %var_val = load i32, i32* %var
+ %var_val = load i32, ptr %var
switch i32 %cond, label %latch [
i32 0, label %latch
i32 1, label %latch
More information about the llvm-commits
mailing list