diff --git a/llvm/test/Transforms/SimpleLoopUnswitch/2006-06-13-SingleEntryPHI.ll b/llvm/test/Transforms/SimpleLoopUnswitch/2006-06-13-SingleEntryPHI.ll index 06dc92e44f830c..05303b987171d4 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 ] ; [#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 ] ; [#uses=1] %tmp1098 = icmp eq i32 0, 0 ; [#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 ] ; [#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 ] ; [#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 9a4c9887724fba..d7c8fa0f7d7280 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 8b5d0b7a7f6755..bd44e897e78f18 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 -@str3 = external constant [3 x i8] ; <[3 x i8]*> [#uses=1] +@str3 = external constant [3 x i8] ; [#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 ; [#uses=1] - %ttmp6 = icmp eq i8* null, null ; [#uses=1] - %tmp31 = call i32 @strcspn( i8* null, i8* getelementptr ([3 x i8], [3 x i8]* @str3, i64 0, i64 0) ) ; [#uses=1] + %ttmp8 = icmp eq ptr null, null ; [#uses=1] + %ttmp6 = icmp eq ptr null, null ; [#uses=1] + %tmp31 = call i32 @strcspn( ptr null, ptr @str3 ) ; [#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 2c695a5fa3e46f..2ce0398c7908fe 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 ; [#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 2bf085a948eb3a..0151d8d2677b1a 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 ] ; [#uses=1] + %b.10.ph.ph = phi ptr [ null, %cond_true1849 ], [ null, %bb1734 ] ; [#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 ] ; [#uses=1] - %tmp1837 = icmp eq i8* null, null ; [#uses=2] + %b.10.ph = phi ptr [ null, %cond_next1844 ], [ %b.10.ph.ph, %bb1855.outer.outer ] ; [#uses=1] + %tmp1837 = icmp eq ptr null, null ; [#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 ; [#uses=0] + %tmp1992 = getelementptr i8, ptr %b.10.ph, i32 0 ; [#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 143772cce84c1d..c89741ade15f84 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 591b840519a78a..ca2423d19d169c 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", %"struct.QList", i8, i8, %"struct.QList", %"struct.QList", %"struct.QList", %"struct.QList", %"struct.QList", %"struct.QList", %"struct.QMap", %"struct.QList", %"struct.QMap", 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", %struct.QByteArray, %"struct.QList" } + %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", %struct.QByteArray, %"struct.QList" } %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" = type { %"struct.QList::._19" } %"struct.QList::._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" = type { %"struct.QMap::._56" } - %"struct.QMap::._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 } -@.str9 = external constant [1 x i8] ; <[1 x i8]*> [#uses=1] + %"struct.QMap::._56" = type { ptr } + %struct.QMapData = type { ptr, [12 x ptr], %struct.QBasicAtomic, i32, i32, i32, i8 } + %struct._IO_marker = type { ptr, ptr, i32 } +@.str9 = external constant [1 x i8] ; [#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 ; [#uses=2] - %tmp122 = icmp eq i8* %s_addr.0, null ; [#uses=1] + %s_addr.0 = select i1 false, ptr @.str9, ptr %s ; [#uses=2] + %tmp122 = icmp eq ptr %s_addr.0, null ; [#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 ) ; [#uses=1] + %tmp138 = call i32 @strcmp( ptr null, ptr %s_addr.0 ) ; [#uses=1] %iftmp.37.0.in4 = icmp eq i32 %tmp138, 0 ; [#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 6854ae47abfcf2..f4c1ff39b5282b 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 -@resonant = external global i32 ; [#uses=2] +@resonant = external global i32 ; [#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 054a7d1b92e2cd..9ac26a80c3ece6 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 -@g_56 = external global i16 ; [#uses=2] +@g_56 = external global i16 ; [#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 ; [#uses=0] + %tmp46 = load i16, ptr @g_56, align 2 ; [#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 96199728a66e43..37aabe273eed22 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 108db7f547c2b1..86f6e7c1129378 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 82395ca862df6b..ea4aa21b81bf04 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 d61aff1ad282da..8ad869015f44e8 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 3d9474b257ead5..eef32ad271d266 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 a9cf3c0435ff8e..ce767f14cf073d 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 1a537d6d43135e..adf118ba7ea14d 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 eeb5014cb47f9f..daff716edea8d2 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 452b4d876d9370..2f7acac885f45b 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 f2e49737f5b43b..e313728491249a 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' -S < %s | FileCheck %s ; RUN: opt -verify-memoryssa -passes='loop-mssa(simple-loop-unswitch),verify' -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 ] ; [#uses=3] %gep.upgrd.1 = zext i32 %i.0.0 to i64 ; [#uses=1] - %tmp.7 = getelementptr i32, i32* %A, i64 %gep.upgrd.1 ; [#uses=4] - %tmp.13 = load i32, i32* %tmp.7 ; [#uses=2] + %tmp.7 = getelementptr i32, ptr %A, i64 %gep.upgrd.1 ; [#uses=4] + %tmp.13 = load i32, ptr %tmp.7 ; [#uses=2] %tmp.14 = add i32 %tmp.13, 1 ; [#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 ; [#uses=1] + %tmp.29 = load i32, ptr %tmp.7 ; [#uses=1] %tmp.30 = add i32 %tmp.29, 2 ; [#uses=1] - store i32 %tmp.30, i32* %tmp.7 + store i32 %tmp.30, ptr %tmp.7 %inc9 = add i32 %i.0.0, 1 ; [#uses=2] %tmp.112 = icmp ult i32 %inc9, 100000 ; [#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 f0bc312badfd27..303de221b005c4 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 f9dc2804645be4..3fd9ced64d7655 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 9bf061efb9f475..a7f4c08ef874b8 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 ; [#uses=1] + %tmp49.not = icmp eq ptr %S2, null ; [#uses=1] br label %bb44 return.loopexit: ; preds = %cond_next68, %bb62 %retval.0.ph = phi i32 [ 1, %cond_next68 ], [ 0, %bb62 ] ; [#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 313748d67f3e01..0d3aa8b243109e 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 2a6954a2259d1a..2aa6b682ac4061 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 54b0eb2f080d72..f82d7309f6d07d 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 036fc0fb2456b6..63d2789da5a824 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 96df0b7012d577..a2a745f46bca7c 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 907bd204d8b327..283958d01ae927 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 725873867a626f..96fe899d69c3ba 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 41725204082fd6..0123d2246ad23b 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 9fe52925c3868d..94ad65738804a4 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 3f04bcd82f81ff..3b65eefdf67d57 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 f7224d310ea0e1..10bd04f784985e 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 e5c2fee7b2f78a..e511dac7fdca72 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 different 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 different 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 b3cc69398028e5..b2c7226dba6a94 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 09ae3b87581727..b32e2dcd695012 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)' -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 968854722991e0..887f1eb11bf07d 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 different 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 different 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 different 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 754bd7e9224460..7faff4d3000554 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 37232d31332461..2c7582f874eb8d 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 aa57e9a49ccdfb..bfaf75436d8be4 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 edad7a4ce95465..f97e5c3eec9d46 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 7fd3b1d28d6da8..3aab25f0cd2bf1 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 0a9dc31b1112d5..d4544ba6f4a29a 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" -@delim1 = external global i32 ; [#uses=1] -@delim2 = external global i32 ; [#uses=1] +@delim1 = external global i32 ; [#uses=1] +@delim2 = external global i32 ; [#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 ; [#uses=1] - %1 = load i32, i32* @delim2, align 4 ; [#uses=1] + %0 = load i32, ptr @delim1, align 4 ; [#uses=1] + %1 = load i32, ptr @delim2, align 4 ; [#uses=1] br label %bb8.outer bb: ; preds = %bb8 - %2 = icmp eq i8* %p_addr.0, %s ; [#uses=1] + %2 = icmp eq ptr %p_addr.0, %s ; [#uses=1] br i1 %2, label %bb10, label %bb2 bb2: ; preds = %bb - %3 = getelementptr inbounds i8, i8* %p_addr.0, i32 1 ; [#uses=3] + %3 = getelementptr inbounds i8, ptr %p_addr.0, i32 1 ; [#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 ] ; [#uses=1] + %.lcssa1 = phi ptr [ %3, %bb6 ] ; [#uses=1] br label %bb8.outer.backedge bb8.outer.backedge: ; preds = %bb8.outer.loopexit, %bb7 - %.lcssa2 = phi i8* [ %.lcssa1, %bb7 ], [ %.lcssa, %bb8.outer.loopexit ] ; [#uses=1] + %.lcssa2 = phi ptr [ %.lcssa1, %bb7 ], [ %.lcssa, %bb8.outer.loopexit ] ; [#uses=1] %ineq.0.ph.be = phi i32 [ 0, %bb7 ], [ 1, %bb8.outer.loopexit ] ; [#uses=1] br label %bb8.outer bb8.outer.loopexit: ; preds = %bb3 - %.lcssa = phi i8* [ %3, %bb3 ] ; [#uses=1] + %.lcssa = phi ptr [ %3, %bb3 ] ; [#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 ] ; [#uses=3] - %p_addr.0.ph = phi i8* [ %p, %entry ], [ %.lcssa2, %bb8.outer.backedge ] ; [#uses=1] + %p_addr.0.ph = phi ptr [ %p, %entry ], [ %.lcssa2, %bb8.outer.backedge ] ; [#uses=1] %6 = icmp eq i32 %ineq.0.ph, 1 ; [#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 ] ; [#uses=3] - %7 = load i8, i8* %p_addr.0, align 1 ; [#uses=2] + %p_addr.0 = phi ptr [ %p_addr.0.ph, %bb8.outer ], [ %3, %bb8.backedge ] ; [#uses=3] + %7 = load i8, ptr %p_addr.0, align 1 ; [#uses=2] %8 = sext i8 %7 to i32 ; [#uses=2] %9 = icmp eq i8 %7, 0 ; [#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 ; [#uses=2] + %call.i25 = call ptr @pci_get_device() nounwind noredzone ; [#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 ] ; [#uses=0] + %call.i25.lcssa48 = phi ptr [ %call.i25, %if.then31.i.i ], [ %call.i25, %if.then31.i.i ] ; [#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 914af26f10a764..463acb3806ec25 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 64d8742e6112cb..0719b5579d0a4f 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 a8773b648d5d31..34257ffdc36994 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 4bb5fc288e1ec2..9201880324bffc 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 different 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 different 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