[llvm] e730e7d - [LoopRotate] Convert tests to opaque pointers (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 2 08:00:49 PST 2023


Author: Nikita Popov
Date: 2023-01-02T17:00:26+01:00
New Revision: e730e7d2aa403cc87cc7ce9021ad035b385f4357

URL: https://github.com/llvm/llvm-project/commit/e730e7d2aa403cc87cc7ce9021ad035b385f4357
DIFF: https://github.com/llvm/llvm-project/commit/e730e7d2aa403cc87cc7ce9021ad035b385f4357.diff

LOG: [LoopRotate] Convert tests to opaque pointers (NFC)

Added: 
    

Modified: 
    llvm/test/Transforms/LoopRotate/2009-01-25-SingleEntryPhi.ll
    llvm/test/Transforms/LoopRotate/PhiRename-1.ll
    llvm/test/Transforms/LoopRotate/PhiSelfReference-1.ll
    llvm/test/Transforms/LoopRotate/RISCV/invalid-cost.ll
    llvm/test/Transforms/LoopRotate/alloca.ll
    llvm/test/Transforms/LoopRotate/basic.ll
    llvm/test/Transforms/LoopRotate/call-prepare-for-lto.ll
    llvm/test/Transforms/LoopRotate/callbr.ll
    llvm/test/Transforms/LoopRotate/catchret.ll
    llvm/test/Transforms/LoopRotate/crash.ll
    llvm/test/Transforms/LoopRotate/dbg-value-duplicates.ll
    llvm/test/Transforms/LoopRotate/dbgvalue.ll
    llvm/test/Transforms/LoopRotate/freeze-crash.ll
    llvm/test/Transforms/LoopRotate/indirectbr.ll
    llvm/test/Transforms/LoopRotate/loopexitinglatch.ll
    llvm/test/Transforms/LoopRotate/multiple-deopt-exits.ll
    llvm/test/Transforms/LoopRotate/multiple-exits.ll
    llvm/test/Transforms/LoopRotate/noalias.ll
    llvm/test/Transforms/LoopRotate/nosimplifylatch.ll
    llvm/test/Transforms/LoopRotate/oz-disable.ll
    llvm/test/Transforms/LoopRotate/phi-duplicate.ll
    llvm/test/Transforms/LoopRotate/pr22337.ll
    llvm/test/Transforms/LoopRotate/pr2639.ll
    llvm/test/Transforms/LoopRotate/pr51981-scev-problem.ll
    llvm/test/Transforms/LoopRotate/preserve-mssa.ll
    llvm/test/Transforms/LoopRotate/preserve-scev.ll
    llvm/test/Transforms/LoopRotate/simplifylatch.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/LoopRotate/2009-01-25-SingleEntryPhi.ll b/llvm/test/Transforms/LoopRotate/2009-01-25-SingleEntryPhi.ll
index 4fe35035ab851..f1d7568516f83 100644
--- a/llvm/test/Transforms/LoopRotate/2009-01-25-SingleEntryPhi.ll
+++ b/llvm/test/Transforms/LoopRotate/2009-01-25-SingleEntryPhi.ll
@@ -2,10 +2,10 @@
 ; PR3408
 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"
 target triple = "x86_64-unknown-linux-gnu"
-	%struct.Cls = type { i32, i8, [2 x %struct.Cls*], [2 x %struct.Lit*] }
+	%struct.Cls = type { i32, i8, [2 x ptr], [2 x ptr] }
 	%struct.Lit = type { i8 }
 
-define void @picosat_main_bb13.i.i71.outer_bb132.i.i.i.outer(%struct.Cls**, %struct.Cls**, i32 %collect.i.i.i.1.lcssa, i32 %lcollect.i.i.i.2.lcssa, %struct.Cls*** %rhead.tmp.0236.out, i32* %collect.i.i.i.2.out, i32* %lcollect.i.i.i.3.ph.ph.ph.out) nounwind {
+define void @picosat_main_bb13.i.i71.outer_bb132.i.i.i.outer(ptr, ptr, i32 %collect.i.i.i.1.lcssa, i32 %lcollect.i.i.i.2.lcssa, ptr %rhead.tmp.0236.out, ptr %collect.i.i.i.2.out, ptr %lcollect.i.i.i.3.ph.ph.ph.out) nounwind {
 newFuncRoot:
 	br label %codeRepl
 
@@ -13,7 +13,7 @@ bb133.i.i.i.exitStub:		; preds = %codeRepl
 	ret void
 
 bb130.i.i.i:		; preds = %codeRepl
-	%rhead.tmp.0236.lcssa82 = phi %struct.Cls** [ null, %codeRepl ]		; <%struct.Cls**> [#uses=0]
+	%rhead.tmp.0236.lcssa82 = phi ptr [ null, %codeRepl ]		; <ptr> [#uses=0]
 	br label %codeRepl
 
 codeRepl:		; preds = %bb130.i.i.i, %newFuncRoot

diff  --git a/llvm/test/Transforms/LoopRotate/PhiRename-1.ll b/llvm/test/Transforms/LoopRotate/PhiRename-1.ll
index 1fd9aad3c41c6..042aa42e57706 100644
--- a/llvm/test/Transforms/LoopRotate/PhiRename-1.ll
+++ b/llvm/test/Transforms/LoopRotate/PhiRename-1.ll
@@ -3,93 +3,92 @@
 
 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"
 
-	%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
-	%struct.Index_Map = type { i32, %struct.item_set** }
-	%struct.Item = type { [4 x i16], %struct.rule* }
+	%struct.FILE = type { ptr, i32, i32, i16, i16, %struct.__sbuf, i32, ptr, ptr, ptr, ptr, ptr, %struct.__sbuf, ptr, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
+	%struct.Index_Map = type { i32, ptr }
+	%struct.Item = type { [4 x i16], ptr }
 	%struct.__sFILEX = type opaque
-	%struct.__sbuf = type { i8*, i32 }
-	%struct.dimension = type { i16*, %struct.Index_Map, %struct.mapping*, i32, %struct.plankMap* }
-	%struct.item_set = type { i32, i32, %struct.operator*, [2 x %struct.item_set*], %struct.item_set*, i16*, %struct.Item*, %struct.Item* }
-	%struct.list = type { i8*, %struct.list* }
-	%struct.mapping = type { %struct.list**, i32, i32, i32, %struct.item_set** }
-	%struct.nonterminal = type { i8*, i32, i32, i32, %struct.plankMap*, %struct.rule* }
-	%struct.operator = type { i8*, i8, i32, i32, i32, i32, %struct.table* }
-	%struct.pattern = type { %struct.nonterminal*, %struct.operator*, [2 x %struct.nonterminal*] }
-	%struct.plank = type { i8*, %struct.list*, i32 }
-	%struct.plankMap = type { %struct.list*, i32, %struct.stateMap* }
-	%struct.rule = type { [4 x i16], i32, i32, i32, %struct.nonterminal*, %struct.pattern*, i8 }
-	%struct.stateMap = type { i8*, %struct.plank*, i32, i16* }
-	%struct.table = type { %struct.operator*, %struct.list*, i16*, [2 x %struct.dimension*], %struct.item_set** }
- at outfile = external global %struct.FILE*		; <%struct.FILE**> [#uses=1]
- at str1 = external constant [11 x i8]		; <[11 x i8]*> [#uses=1]
- at operators = weak global %struct.list* null		; <%struct.list**> [#uses=1]
+	%struct.__sbuf = type { ptr, i32 }
+	%struct.dimension = type { ptr, %struct.Index_Map, ptr, i32, ptr }
+	%struct.item_set = type { i32, i32, ptr, [2 x ptr], ptr, ptr, ptr, ptr }
+	%struct.list = type { ptr, ptr }
+	%struct.mapping = type { ptr, i32, i32, i32, ptr }
+	%struct.nonterminal = type { ptr, i32, i32, i32, ptr, ptr }
+	%struct.operator = type { ptr, i8, i32, i32, i32, i32, ptr }
+	%struct.pattern = type { ptr, ptr, [2 x ptr] }
+	%struct.plank = type { ptr, ptr, i32 }
+	%struct.plankMap = type { ptr, i32, ptr }
+	%struct.rule = type { [4 x i16], i32, i32, i32, ptr, ptr, i8 }
+	%struct.stateMap = type { ptr, ptr, i32, ptr }
+	%struct.table = type { ptr, ptr, ptr, [2 x ptr], ptr }
+ at outfile = external global ptr		; <ptr> [#uses=1]
+ at str1 = external constant [11 x i8]		; <ptr> [#uses=1]
+ at operators = weak global ptr null		; <ptr> [#uses=1]
 
 
 
 define i32 @opsOfArity(i32 %arity) {
 entry:
-	%arity_addr = alloca i32		; <i32*> [#uses=2]
-	%retval = alloca i32, align 4		; <i32*> [#uses=2]
-	%tmp = alloca i32, align 4		; <i32*> [#uses=2]
-	%c = alloca i32, align 4		; <i32*> [#uses=4]
-	%l = alloca %struct.list*, align 4		; <%struct.list**> [#uses=5]
-	%op = alloca %struct.operator*, align 4		; <%struct.operator**> [#uses=3]
-	store i32 %arity, i32* %arity_addr
-	store i32 0, i32* %c
-	%tmp1 = load %struct.list*, %struct.list** @operators		; <%struct.list*> [#uses=1]
-	store %struct.list* %tmp1, %struct.list** %l
+	%arity_addr = alloca i32		; <ptr> [#uses=2]
+	%retval = alloca i32, align 4		; <ptr> [#uses=2]
+	%tmp = alloca i32, align 4		; <ptr> [#uses=2]
+	%c = alloca i32, align 4		; <ptr> [#uses=4]
+	%l = alloca ptr, align 4		; <ptr> [#uses=5]
+	%op = alloca ptr, align 4		; <ptr> [#uses=3]
+	store i32 %arity, ptr %arity_addr
+	store i32 0, ptr %c
+	%tmp1 = load ptr, ptr @operators		; <ptr> [#uses=1]
+	store ptr %tmp1, ptr %l
 	br label %bb21
 
 bb:		; preds = %bb21
-	%tmp3 = getelementptr %struct.list, %struct.list* %tmp22, i32 0, i32 0		; <i8**> [#uses=1]
-	%tmp4 = load i8*, i8** %tmp3		; <i8*> [#uses=1]
-	%tmp45 = bitcast i8* %tmp4 to %struct.operator*		; <%struct.operator*> [#uses=1]
-	store %struct.operator* %tmp45, %struct.operator** %op
-	%tmp6 = load %struct.operator*, %struct.operator** %op		; <%struct.operator*> [#uses=1]
-	%tmp7 = getelementptr %struct.operator, %struct.operator* %tmp6, i32 0, i32 5		; <i32*> [#uses=1]
-	%tmp8 = load i32, i32* %tmp7		; <i32> [#uses=1]
-	%tmp9 = load i32, i32* %arity_addr		; <i32> [#uses=1]
+	%tmp3 = getelementptr %struct.list, ptr %tmp22, i32 0, i32 0		; <ptr> [#uses=1]
+	%tmp4 = load ptr, ptr %tmp3		; <ptr> [#uses=1]
+	store ptr %tmp4, ptr %op
+	%tmp6 = load ptr, ptr %op		; <ptr> [#uses=1]
+	%tmp7 = getelementptr %struct.operator, ptr %tmp6, i32 0, i32 5		; <ptr> [#uses=1]
+	%tmp8 = load i32, ptr %tmp7		; <i32> [#uses=1]
+	%tmp9 = load i32, ptr %arity_addr		; <i32> [#uses=1]
 	icmp eq i32 %tmp8, %tmp9		; <i1>:0 [#uses=1]
 	zext i1 %0 to i8		; <i8>:1 [#uses=1]
 	icmp ne i8 %1, 0		; <i1>:2 [#uses=1]
 	br i1 %2, label %cond_true, label %cond_next
 
 cond_true:		; preds = %bb
-	%tmp10 = load %struct.operator*, %struct.operator** %op		; <%struct.operator*> [#uses=1]
-	%tmp11 = getelementptr %struct.operator, %struct.operator* %tmp10, i32 0, i32 2		; <i32*> [#uses=1]
-	%tmp12 = load i32, i32* %tmp11		; <i32> [#uses=1]
-	%tmp13 = load %struct.FILE*, %struct.FILE** @outfile		; <%struct.FILE*> [#uses=1]
-	%tmp14 = getelementptr [11 x i8], [11 x i8]* @str1, i32 0, i32 0		; <i8*> [#uses=1]
-	%tmp15 = call i32 (%struct.FILE*, i8*, ...) @fprintf( %struct.FILE* %tmp13, i8* %tmp14, i32 %tmp12 )		; <i32> [#uses=0]
-	%tmp16 = load i32, i32* %c		; <i32> [#uses=1]
+	%tmp10 = load ptr, ptr %op		; <ptr> [#uses=1]
+	%tmp11 = getelementptr %struct.operator, ptr %tmp10, i32 0, i32 2		; <ptr> [#uses=1]
+	%tmp12 = load i32, ptr %tmp11		; <i32> [#uses=1]
+	%tmp13 = load ptr, ptr @outfile		; <ptr> [#uses=1]
+	%tmp14 = getelementptr [11 x i8], ptr @str1, i32 0, i32 0		; <ptr> [#uses=1]
+	%tmp15 = call i32 (ptr, ptr, ...) @fprintf( ptr %tmp13, ptr %tmp14, i32 %tmp12 )		; <i32> [#uses=0]
+	%tmp16 = load i32, ptr %c		; <i32> [#uses=1]
 	%tmp17 = add i32 %tmp16, 1		; <i32> [#uses=1]
-	store i32 %tmp17, i32* %c
+	store i32 %tmp17, ptr %c
 	br label %cond_next
 
 cond_next:		; preds = %cond_true, %bb
-	%tmp19 = getelementptr %struct.list, %struct.list* %tmp22, i32 0, i32 1		; <%struct.list**> [#uses=1]
-	%tmp20 = load %struct.list*, %struct.list** %tmp19		; <%struct.list*> [#uses=1]
-	store %struct.list* %tmp20, %struct.list** %l
+	%tmp19 = getelementptr %struct.list, ptr %tmp22, i32 0, i32 1		; <ptr> [#uses=1]
+	%tmp20 = load ptr, ptr %tmp19		; <ptr> [#uses=1]
+	store ptr %tmp20, ptr %l
 	br label %bb21
 
 bb21:		; preds = %cond_next, %entry
-        %l.in = phi %struct.list** [ @operators, %entry ], [ %tmp19, %cond_next ]
-	%tmp22 = load %struct.list*, %struct.list** %l.in		; <%struct.list*> [#uses=1]
-	icmp ne %struct.list* %tmp22, null		; <i1>:3 [#uses=1]
+        %l.in = phi ptr [ @operators, %entry ], [ %tmp19, %cond_next ]
+	%tmp22 = load ptr, ptr %l.in		; <ptr> [#uses=1]
+	icmp ne ptr %tmp22, null		; <i1>:3 [#uses=1]
 	zext i1 %3 to i8		; <i8>:4 [#uses=1]
 	icmp ne i8 %4, 0		; <i1>:5 [#uses=1]
 	br i1 %5, label %bb, label %bb23
 
 bb23:		; preds = %bb21
-	%tmp24 = load i32, i32* %c		; <i32> [#uses=1]
-	store i32 %tmp24, i32* %tmp
-	%tmp25 = load i32, i32* %tmp		; <i32> [#uses=1]
-	store i32 %tmp25, i32* %retval
+	%tmp24 = load i32, ptr %c		; <i32> [#uses=1]
+	store i32 %tmp24, ptr %tmp
+	%tmp25 = load i32, ptr %tmp		; <i32> [#uses=1]
+	store i32 %tmp25, ptr %retval
 	br label %return
 
 return:		; preds = %bb23
-	%retval26 = load i32, i32* %retval		; <i32> [#uses=1]
+	%retval26 = load i32, ptr %retval		; <i32> [#uses=1]
 	ret i32 %retval26
 }
 
-declare i32 @fprintf(%struct.FILE*, i8*, ...)
+declare i32 @fprintf(ptr, ptr, ...)

diff  --git a/llvm/test/Transforms/LoopRotate/PhiSelfReference-1.ll b/llvm/test/Transforms/LoopRotate/PhiSelfReference-1.ll
index 91ff9914c1493..254e03da57324 100644
--- a/llvm/test/Transforms/LoopRotate/PhiSelfReference-1.ll
+++ b/llvm/test/Transforms/LoopRotate/PhiSelfReference-1.ll
@@ -27,8 +27,8 @@ bb243:		; preds = %bb307
 	br label %bb307
 
 bb307:		; preds = %bb243, %bb52
-	%sx_addr.2.pn = phi float* [ %sx_addr.5, %bb243 ], [ null, %bb52 ]		; <float*> [#uses=1]
-	%sx_addr.5 = getelementptr float, float* %sx_addr.2.pn, i32 %incx		; <float*> [#uses=1]
+	%sx_addr.2.pn = phi ptr [ %sx_addr.5, %bb243 ], [ null, %bb52 ]		; <ptr> [#uses=1]
+	%sx_addr.5 = getelementptr float, ptr %sx_addr.2.pn, i32 %incx		; <ptr> [#uses=1]
 	br i1 false, label %bb243, label %bb310
 
 bb310:		; preds = %bb307

diff  --git a/llvm/test/Transforms/LoopRotate/RISCV/invalid-cost.ll b/llvm/test/Transforms/LoopRotate/RISCV/invalid-cost.ll
index f10370d9853ae..5f04bb15c1a26 100644
--- a/llvm/test/Transforms/LoopRotate/RISCV/invalid-cost.ll
+++ b/llvm/test/Transforms/LoopRotate/RISCV/invalid-cost.ll
@@ -41,15 +41,15 @@ for.end:                                          ; preds = %for.cond
 
 ; Despite having an invalid cost, we can rotate this because we don't
 ; need to duplicate any instructions or execute them more frequently.
-define void @invalid_no_dup(<vscale x 1 x i8>* %p) nounwind ssp {
+define void @invalid_no_dup(ptr %p) nounwind ssp {
 ; CHECK-LABEL: @invalid_no_dup(
 ; CHECK-NEXT:  entry:
 ; CHECK-NEXT:    br label [[FOR_BODY:%.*]]
 ; CHECK:       for.body:
 ; CHECK-NEXT:    [[I_01:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[INC:%.*]], [[FOR_BODY]] ]
-; CHECK-NEXT:    [[A:%.*]] = load <vscale x 1 x i8>, <vscale x 1 x i8>* [[P:%.*]], align 1
+; CHECK-NEXT:    [[A:%.*]] = load <vscale x 1 x i8>, ptr [[P:%.*]], align 1
 ; CHECK-NEXT:    [[B:%.*]] = add <vscale x 1 x i8> [[A]], [[A]]
-; CHECK-NEXT:    store <vscale x 1 x i8> [[B]], <vscale x 1 x i8>* [[P]], align 1
+; CHECK-NEXT:    store <vscale x 1 x i8> [[B]], ptr [[P]], align 1
 ; CHECK-NEXT:    [[INC]] = add nsw i32 [[I_01]], 1
 ; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[INC]], 100
 ; CHECK-NEXT:    br i1 [[CMP]], label [[FOR_BODY]], label [[FOR_END:%.*]]
@@ -66,9 +66,9 @@ for.cond:                                         ; preds = %for.body, %entry
 
 
 for.body:                                         ; preds = %for.cond
-  %a = load <vscale x 1 x i8>, <vscale x 1 x i8>* %p
+  %a = load <vscale x 1 x i8>, ptr %p
   %b = add <vscale x 1 x i8> %a, %a
-  store <vscale x 1 x i8> %b, <vscale x 1 x i8>* %p
+  store <vscale x 1 x i8> %b, ptr %p
   %inc = add nsw i32 %i.0, 1
   br label %for.cond
 
@@ -79,15 +79,15 @@ for.end:                                          ; preds = %for.cond
 ; This demonstrates a case where a) loop rotate needs a cost estimate to
 ; know if rotation is profitable, and b) there is no cost estimate available
 ; due to invalid costs in the loop.  We can't rotate this loop.
-define void @invalid_dup_required(<vscale x 1 x i8>* %p) nounwind ssp {
+define void @invalid_dup_required(ptr %p) nounwind ssp {
 ; CHECK-LABEL: @invalid_dup_required(
 ; CHECK-NEXT:  entry:
 ; CHECK-NEXT:    br label [[FOR_COND:%.*]]
 ; CHECK:       for.cond:
 ; CHECK-NEXT:    [[I_0:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[INC:%.*]], [[FOR_BODY:%.*]] ]
-; CHECK-NEXT:    [[A:%.*]] = load <vscale x 1 x i8>, <vscale x 1 x i8>* [[P:%.*]], align 1
+; CHECK-NEXT:    [[A:%.*]] = load <vscale x 1 x i8>, ptr [[P:%.*]], align 1
 ; CHECK-NEXT:    [[B:%.*]] = add <vscale x 1 x i8> [[A]], [[A]]
-; CHECK-NEXT:    store <vscale x 1 x i8> [[B]], <vscale x 1 x i8>* [[P]], align 1
+; CHECK-NEXT:    store <vscale x 1 x i8> [[B]], ptr [[P]], align 1
 ; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[I_0]], 100
 ; CHECK-NEXT:    br i1 [[CMP]], label [[FOR_BODY]], label [[FOR_END:%.*]]
 ; CHECK:       for.body:
@@ -102,9 +102,9 @@ entry:
 
 for.cond:                                         ; preds = %for.body, %entry
   %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
-  %a = load <vscale x 1 x i8>, <vscale x 1 x i8>* %p
+  %a = load <vscale x 1 x i8>, ptr %p
   %b = add <vscale x 1 x i8> %a, %a
-  store <vscale x 1 x i8> %b, <vscale x 1 x i8>* %p
+  store <vscale x 1 x i8> %b, ptr %p
   %cmp = icmp slt i32 %i.0, 100
   br i1 %cmp, label %for.body, label %for.end
 

diff  --git a/llvm/test/Transforms/LoopRotate/alloca.ll b/llvm/test/Transforms/LoopRotate/alloca.ll
index 273ba73d18a1d..2ef24de39a35c 100644
--- a/llvm/test/Transforms/LoopRotate/alloca.ll
+++ b/llvm/test/Transforms/LoopRotate/alloca.ll
@@ -5,16 +5,16 @@
 ; We expect a 
diff erent value for %ptr each iteration (according to the
 ; definition of alloca). I.e. each @use must be paired with an alloca.
 
-; CHECK: call void @use(i8* %
+; CHECK: call void @use(ptr %
 ; CHECK: %ptr = alloca i8
 
 @e = global i16 10
 
-declare void @use(i8*)
+declare void @use(ptr)
 
 define void @test() {
 entry:
-  %end = load i16, i16* @e
+  %end = load i16, ptr @e
   br label %loop
 
 loop:
@@ -25,7 +25,7 @@ loop:
 
 loop.fin:
   %n = add i16 %n.phi, 1
-  call void @use(i8* %ptr)
+  call void @use(ptr %ptr)
   br label %loop
 
 exit:

diff  --git a/llvm/test/Transforms/LoopRotate/basic.ll b/llvm/test/Transforms/LoopRotate/basic.ll
index cae3c7d236b44..aa9f510c82630 100644
--- a/llvm/test/Transforms/LoopRotate/basic.ll
+++ b/llvm/test/Transforms/LoopRotate/basic.ll
@@ -16,7 +16,6 @@ entry:
 for.cond:                                         ; preds = %for.body, %entry
   %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
   %cmp = icmp slt i32 %i.0, 100
-  %arrayidx = getelementptr inbounds [20 x i32], [20 x i32]* %array, i64 0, i64 0
   br i1 %cmp, label %for.body, label %for.end
 
 ; CHECK: for.body:
@@ -24,17 +23,17 @@ for.cond:                                         ; preds = %for.body, %entry
 ; CHECK-NEXT: store i32 0
 
 for.body:                                         ; preds = %for.cond
-  store i32 0, i32* %arrayidx, align 16
+  store i32 0, ptr %array, align 16
   %inc = add nsw i32 %i.0, 1
   br label %for.cond
 
 for.end:                                          ; preds = %for.cond
-  %arrayidx.lcssa = phi i32* [ %arrayidx, %for.cond ]
-  call void @g(i32* %arrayidx.lcssa) nounwind
+  %arrayidx.lcssa = phi ptr [ %array, %for.cond ]
+  call void @g(ptr %arrayidx.lcssa) nounwind
   ret void
 }
 
-declare void @g(i32*)
+declare void @g(ptr)
 
 ; CHECK-LABEL: @test2(
 define void @test2() nounwind ssp {

diff  --git a/llvm/test/Transforms/LoopRotate/call-prepare-for-lto.ll b/llvm/test/Transforms/LoopRotate/call-prepare-for-lto.ll
index c62ed0b258b77..e4be918aed609 100644
--- a/llvm/test/Transforms/LoopRotate/call-prepare-for-lto.ll
+++ b/llvm/test/Transforms/LoopRotate/call-prepare-for-lto.ll
@@ -9,7 +9,6 @@ define void @test_prepare_for_lto() {
 ; FULL-LABEL: @test_prepare_for_lto(
 ; FULL-NEXT:  entry:
 ; FULL-NEXT:    %array = alloca [20 x i32], align 16
-; FULL-NEXT:    %arrayidx = getelementptr inbounds [20 x i32], [20 x i32]* %array, i64 0, i64 0
 ; FULL-NEXT:    call void @may_be_inlined()
 ; FULL-NEXT:    br label %for.body
 ;
@@ -25,12 +24,11 @@ entry:
 for.cond:                                         ; preds = %for.body, %entry
   %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
   %cmp = icmp slt i32 %i.0, 100
-  %arrayidx = getelementptr inbounds [20 x i32], [20 x i32]* %array, i64 0, i64 0
   call void @may_be_inlined()
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  store i32 0, i32* %arrayidx, align 16
+  store i32 0, ptr %array, align 16
   %inc = add nsw i32 %i.0, 1
   br label %for.cond
 
@@ -49,14 +47,12 @@ define void @test_prepare_for_lto_intrinsic() !dbg !7 {
 ; FULL-NEXT:  entry:
 ; FULL-NEXT:    %array = alloca [20 x i32], align 16
 ; FULL-NEXT:    call void @llvm.dbg.value(metadata i32 0, metadata !12, metadata !DIExpression()), !dbg !13
-; FULL-NEXT:    %arrayidx = getelementptr inbounds [20 x i32], [20 x i32]* %array, i64 0, i64 0
 ; FULL-NEXT:    br label %for.body
 ;
 ; PREPARE-LABEL: @test_prepare_for_lto_intrinsic(
 ; PREPARE-NEXT:  entry:
 ; PREPARE-NEXT:    %array = alloca [20 x i32], align 16
 ; PREPARE-NEXT:    call void @llvm.dbg.value(metadata i32 0, metadata !12, metadata !DIExpression()), !dbg !13
-; PREPARE-NEXT:    %arrayidx = getelementptr inbounds [20 x i32], [20 x i32]* %array, i64 0, i64 0
 ; PREPARE-NEXT:    br label %for.body
 ;
 entry:
@@ -67,11 +63,10 @@ for.cond:                                         ; preds = %for.body, %entry
   %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
   call void @llvm.dbg.value(metadata i32 %i.0, metadata !12, metadata !DIExpression()), !dbg !13
   %cmp = icmp slt i32 %i.0, 100
-  %arrayidx = getelementptr inbounds [20 x i32], [20 x i32]* %array, i64 0, i64 0
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  store i32 0, i32* %arrayidx, align 16
+  store i32 0, ptr %array, align 16
   %inc = add nsw i32 %i.0, 1
   br label %for.cond
 

diff  --git a/llvm/test/Transforms/LoopRotate/callbr.ll b/llvm/test/Transforms/LoopRotate/callbr.ll
index bdc415d36c97a..abe3479135e7a 100644
--- a/llvm/test/Transforms/LoopRotate/callbr.ll
+++ b/llvm/test/Transforms/LoopRotate/callbr.ll
@@ -11,8 +11,8 @@ define i32 @o() #0 {
 ; CHECK-LABEL: @o(
 ; CHECK-NEXT:  bb:
 ; CHECK-NEXT:    [[I:%.*]] = alloca [1 x i32], align 4
-; CHECK-NEXT:    [[I1:%.*]] = load i8*, i8** bitcast (i64* @d to i8**), align 8
-; CHECK-NEXT:    [[I33:%.*]] = load i32, i32* @f, align 4
+; CHECK-NEXT:    [[I1:%.*]] = load ptr, ptr @d, align 8
+; CHECK-NEXT:    [[I33:%.*]] = load i32, ptr @f, align 4
 ; CHECK-NEXT:    [[I44:%.*]] = icmp eq i32 [[I33]], 0
 ; CHECK-NEXT:    br i1 [[I44]], label [[BB15:%.*]], label [[BB5_LR_PH:%.*]]
 ; CHECK:       bb5.lr.ph:
@@ -21,13 +21,12 @@ define i32 @o() #0 {
 ; CHECK-NEXT:    [[I35:%.*]] = phi i32 [ [[I33]], [[BB5_LR_PH]] ], [ [[I3:%.*]], [[M_EXIT:%.*]] ]
 ; CHECK-NEXT:    [[I6:%.*]] = icmp ult i32 [[I35]], 4
 ; CHECK-NEXT:    [[I7:%.*]] = zext i1 [[I6]] to i32
-; CHECK-NEXT:    store i32 [[I7]], i32* @g, align 4
-; CHECK-NEXT:    [[I8:%.*]] = bitcast [1 x i32]* [[I]] to i8*
-; CHECK-NEXT:    [[I9:%.*]] = call i32 @n(i8* nonnull [[I8]], i8* [[I1]])
+; CHECK-NEXT:    store i32 [[I7]], ptr @g, align 4
+; CHECK-NEXT:    [[I9:%.*]] = call i32 @n(ptr nonnull [[I]], ptr [[I1]])
 ; CHECK-NEXT:    [[I10:%.*]] = icmp eq i32 [[I9]], 0
 ; CHECK-NEXT:    br i1 [[I10]], label [[THREAD_PRE_SPLIT:%.*]], label [[BB5_BB15_CRIT_EDGE:%.*]]
 ; CHECK:       thread-pre-split:
-; CHECK-NEXT:    [[DOTPR:%.*]] = load i32, i32* @i, align 4
+; CHECK-NEXT:    [[DOTPR:%.*]] = load i32, ptr @i, align 4
 ; CHECK-NEXT:    [[I12:%.*]] = icmp eq i32 [[DOTPR]], 0
 ; CHECK-NEXT:    br i1 [[I12]], label [[M_EXIT]], label [[BB13_LR_PH:%.*]]
 ; CHECK:       bb13.lr.ph:
@@ -47,8 +46,8 @@ define i32 @o() #0 {
 ; CHECK-NEXT:    br label [[M_EXIT]]
 ; CHECK:       m.exit:
 ; CHECK-NEXT:    [[DOT1_LCSSA:%.*]] = phi i32 [ [[SPLIT]], [[BB13_M_EXIT_CRIT_EDGE:%.*]] ], [ [[SPLIT2]], [[BB11_M_EXIT_CRIT_EDGE]] ], [ undef, [[THREAD_PRE_SPLIT]] ]
-; CHECK-NEXT:    store i32 [[DOT1_LCSSA]], i32* @h, align 4
-; CHECK-NEXT:    [[I3]] = load i32, i32* @f, align 4
+; CHECK-NEXT:    store i32 [[DOT1_LCSSA]], ptr @h, align 4
+; CHECK-NEXT:    [[I3]] = load i32, ptr @f, align 4
 ; CHECK-NEXT:    [[I4:%.*]] = icmp eq i32 [[I3]], 0
 ; CHECK-NEXT:    br i1 [[I4]], label [[BB2_BB15_CRIT_EDGE:%.*]], label [[BB5]]
 ; CHECK:       bb5.bb15_crit_edge:
@@ -60,25 +59,24 @@ define i32 @o() #0 {
 ;
 bb:
   %i = alloca [1 x i32], align 4
-  %i1 = load i8*, i8** bitcast (i64* @d to i8**), align 8
+  %i1 = load ptr, ptr @d, align 8
   br label %bb2
 
 bb2:                                              ; preds = %m.exit, %bb
-  %i3 = load i32, i32* @f, align 4
+  %i3 = load i32, ptr @f, align 4
   %i4 = icmp eq i32 %i3, 0
   br i1 %i4, label %bb15, label %bb5
 
 bb5:                                              ; preds = %bb2
   %i6 = icmp ult i32 %i3, 4
   %i7 = zext i1 %i6 to i32
-  store i32 %i7, i32* @g, align 4
-  %i8 = bitcast [1 x i32]* %i to i8*
-  %i9 = call i32 @n(i8* nonnull %i8, i8* %i1)
+  store i32 %i7, ptr @g, align 4
+  %i9 = call i32 @n(ptr nonnull %i, ptr %i1)
   %i10 = icmp eq i32 %i9, 0
   br i1 %i10, label %thread-pre-split, label %bb15
 
 thread-pre-split:                                 ; preds = %bb5
-  %.pr = load i32, i32* @i, align 4
+  %.pr = load i32, ptr @i, align 4
   br label %bb11
 
 bb11:                                             ; preds = %j.exit.i, %thread-pre-split
@@ -96,14 +94,14 @@ j.exit.i:                                         ; preds = %bb13
 
 m.exit:                                           ; preds = %bb13, %bb11
   %.1.lcssa = phi i32 [ %.1, %bb13 ], [ %.1, %bb11 ]
-  store i32 %.1.lcssa, i32* @h, align 4
+  store i32 %.1.lcssa, ptr @h, align 4
   br label %bb2
 
 bb15:                                             ; preds = %bb5, %bb2
   ret i32 undef
 }
 
-declare i32 @n(i8*, i8*)  #0
+declare i32 @n(ptr, ptr)  #0
 
 attributes #0 = { "use-soft-float"="false" }
 attributes #1 = { nounwind }

diff  --git a/llvm/test/Transforms/LoopRotate/catchret.ll b/llvm/test/Transforms/LoopRotate/catchret.ll
index f4eb1b5f0cf5a..9dc17709ec5bd 100644
--- a/llvm/test/Transforms/LoopRotate/catchret.ll
+++ b/llvm/test/Transforms/LoopRotate/catchret.ll
@@ -4,7 +4,7 @@ target triple = "x86_64-pc-windows-msvc"
 
 declare void @always_throws()
 
-define i32 @test() personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*) {
+define i32 @test() personality ptr @__CxxFrameHandler3 {
 entry:
   invoke void @always_throws()
           to label %continue unwind label %catch.dispatch
@@ -16,7 +16,7 @@ catch.dispatch:
   %t0 = catchswitch within none [label %catch] unwind to caller
 
 catch:
-  %t1 = catchpad within %t0 [i8* null, i32 64, i8* null]
+  %t1 = catchpad within %t0 [ptr null, i32 64, ptr null]
   catchret from %t1 to label %for.cond
 
 for.cond:

diff  --git a/llvm/test/Transforms/LoopRotate/crash.ll b/llvm/test/Transforms/LoopRotate/crash.ll
index 0ff05406d92b1..8ca5f6c58d515 100644
--- a/llvm/test/Transforms/LoopRotate/crash.ll
+++ b/llvm/test/Transforms/LoopRotate/crash.ll
@@ -42,7 +42,7 @@ bb127:          ; preds = %bb139
 bb139:          ; preds = %bb127, %entry
         br i1 false, label %bb127, label %bb142
 bb142:          ; preds = %bb139
-        %r91.0.lcssa = phi %struct.relation* [ null, %bb139 ]           ; <%struct.relation*> [#uses=0]
+        %r91.0.lcssa = phi ptr [ null, %bb139 ]           ; <ptr> [#uses=0]
         ret void
 }
 
@@ -97,19 +97,19 @@ bb835:		; preds = %bb830
 }
 
 	%struct.NSArray = type { %struct.NSObject }
-	%struct.NSObject = type { %struct.objc_class* }
+	%struct.NSObject = type { ptr }
 	%struct.NSRange = type { i64, i64 }
-	%struct._message_ref_t = type { %struct.NSObject* (%struct.NSObject*, %struct._message_ref_t*, ...)*, %struct.objc_selector* }
+	%struct._message_ref_t = type { ptr, ptr }
 	%struct.objc_class = type opaque
 	%struct.objc_selector = type opaque
-@"\01L_OBJC_MESSAGE_REF_26" = external global %struct._message_ref_t		; <%struct._message_ref_t*> [#uses=1]
+@"\01L_OBJC_MESSAGE_REF_26" = external global %struct._message_ref_t		; <ptr> [#uses=1]
 
-define %struct.NSArray* @test5(%struct.NSArray* %self, %struct._message_ref_t* %_cmd) {
+define ptr @test5(ptr %self, ptr %_cmd) {
 entry:
 	br label %bb116
 
 bb116:		; preds = %bb131, %entry
-	%tmp123 = call %struct.NSRange null( %struct.NSObject* null, %struct._message_ref_t* @"\01L_OBJC_MESSAGE_REF_26", %struct.NSArray* null )		; <%struct.NSRange> [#uses=1]
+	%tmp123 = call %struct.NSRange null( ptr null, ptr @"\01L_OBJC_MESSAGE_REF_26", ptr null )		; <%struct.NSRange> [#uses=1]
 	br i1 false, label %bb141, label %bb131
 
 bb131:		; preds = %bb116
@@ -117,15 +117,15 @@ bb131:		; preds = %bb116
 	br label %bb116
 
 bb141:		; preds = %bb116
-	ret %struct.NSArray* null
+	ret ptr null
 }
 
-define void @test6(i8* %msg) {
+define void @test6(ptr %msg) {
 entry:
 	br label %bb15
 bb6:		; preds = %bb15
 	%gep.upgrd.1 = zext i32 %offset.1 to i64		; <i64> [#uses=1]
-	%tmp11 = getelementptr i8, i8* %msg, i64 %gep.upgrd.1		; <i8*> [#uses=0]
+	%tmp11 = getelementptr i8, ptr %msg, i64 %gep.upgrd.1		; <ptr> [#uses=0]
 	br label %bb15
 bb15:		; preds = %bb6, %entry
 	%offset.1 = add i32 0, 1		; <i32> [#uses=2]
@@ -140,9 +140,9 @@ bb17:		; preds = %bb15
 
 
 ; PR9523 - Non-canonical loop.
-define void @test7(i8* %P) nounwind {
+define void @test7(ptr %P) nounwind {
 entry:
-  indirectbr i8* %P, [label %"3", label %"5"]
+  indirectbr ptr %P, [label %"3", label %"5"]
 
 "3":                                              ; preds = %"4", %entry
   br i1 undef, label %"5", label %"4"
@@ -155,7 +155,7 @@ entry:
 }
 
 ; PR21968
-define void @test8(i1 %C, i8* %P) #0 {
+define void @test8(i1 %C, ptr %P) #0 {
 entry:
   br label %for.cond
 
@@ -163,7 +163,7 @@ for.cond:                                         ; preds = %for.inc, %entry
   br i1 %C, label %l_bad, label %for.body
 
 for.body:                                         ; preds = %for.cond
-  indirectbr i8* %P, [label %for.inc, label %l_bad]
+  indirectbr ptr %P, [label %for.inc, label %l_bad]
 
 for.inc:                                          ; preds = %for.body
   br label %for.cond

diff  --git a/llvm/test/Transforms/LoopRotate/dbg-value-duplicates.ll b/llvm/test/Transforms/LoopRotate/dbg-value-duplicates.ll
index 456f6be85f96f..59a8328090834 100644
--- a/llvm/test/Transforms/LoopRotate/dbg-value-duplicates.ll
+++ b/llvm/test/Transforms/LoopRotate/dbg-value-duplicates.ll
@@ -4,9 +4,9 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-apple-macosx10.13.0"
 
 ; Function Attrs: nounwind ssp uwtable
-define void @f(float* %input, i64 %n, i64 %s) local_unnamed_addr #0 !dbg !8 {
+define void @f(ptr %input, i64 %n, i64 %s) local_unnamed_addr #0 !dbg !8 {
 entry:
-  call void @llvm.dbg.value(metadata float* %input, metadata !15, metadata !DIExpression()), !dbg !20
+  call void @llvm.dbg.value(metadata ptr %input, metadata !15, metadata !DIExpression()), !dbg !20
   call void @llvm.dbg.value(metadata i64 %n, metadata !16, metadata !DIExpression()), !dbg !21
   call void @llvm.dbg.value(metadata i64 %s, metadata !17, metadata !DIExpression()), !dbg !22
   call void @llvm.dbg.value(metadata i64 0, metadata !18, metadata !DIExpression()), !dbg !23
@@ -25,8 +25,8 @@ for.cond.cleanup:                                 ; preds = %for.cond
   ret void, !dbg !28
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds float, float* %input, i64 %i.0, !dbg !29
-  %0 = load float, float* %arrayidx, align 4, !dbg !29, !tbaa !30
+  %arrayidx = getelementptr inbounds float, ptr %input, i64 %i.0, !dbg !29
+  %0 = load float, ptr %arrayidx, align 4, !dbg !29, !tbaa !30
   call void @bar(float %0), !dbg !34
   %add = add nsw i64 %i.0, %s, !dbg !35
   call void @llvm.dbg.value(metadata i64 %add, metadata !18, metadata !DIExpression()), !dbg !23

diff  --git a/llvm/test/Transforms/LoopRotate/dbgvalue.ll b/llvm/test/Transforms/LoopRotate/dbgvalue.ll
index a062eb1db6ead..96168898dfd73 100644
--- a/llvm/test/Transforms/LoopRotate/dbgvalue.ll
+++ b/llvm/test/Transforms/LoopRotate/dbgvalue.ll
@@ -77,9 +77,9 @@ return:                                           ; preds = %if.end
 }
 
 @channelColumns = external global i64
- at horzPlane = external global i8*, align 8
+ at horzPlane = external global ptr, align 8
 
-define void @FindFreeHorzSeg(i64 %startCol, i64 %row, i64* %rowStart) {
+define void @FindFreeHorzSeg(i64 %startCol, i64 %row, ptr %rowStart) {
 ; Ensure that the loop increment basic block is rotated into the tail of the
 ; body, even though it contains a debug intrinsic call.
 ; CHECK-LABEL: define void @FindFreeHorzSeg(
@@ -100,12 +100,12 @@ for.cond:
   br i1 %cmp, label %for.end, label %for.body
 
 for.body:
-  %0 = load i64, i64* @channelColumns, align 8
+  %0 = load i64, ptr @channelColumns, align 8
   %mul = mul i64 %0, %row
   %add = add i64 %mul, %i.0
-  %1 = load i8*, i8** @horzPlane, align 8
-  %arrayidx = getelementptr inbounds i8, i8* %1, i64 %add
-  %2 = load i8, i8* %arrayidx, align 1
+  %1 = load ptr, ptr @horzPlane, align 8
+  %arrayidx = getelementptr inbounds i8, ptr %1, i64 %add
+  %2 = load i8, ptr %arrayidx, align 1
   %tobool = icmp eq i8 %2, 0
   br i1 %tobool, label %for.inc, label %for.end
 
@@ -116,7 +116,7 @@ for.inc:
 
 for.end:
   %add1 = add i64 %i.0, 1
-  store i64 %add1, i64* %rowStart, align 8
+  store i64 %add1, ptr %rowStart, align 8
   ret void
 }
 

diff  --git a/llvm/test/Transforms/LoopRotate/freeze-crash.ll b/llvm/test/Transforms/LoopRotate/freeze-crash.ll
index ae631f642bd1f..a4a52b90292b7 100644
--- a/llvm/test/Transforms/LoopRotate/freeze-crash.ll
+++ b/llvm/test/Transforms/LoopRotate/freeze-crash.ll
@@ -1,9 +1,9 @@
 ; RUN: opt -passes=loop-rotate -disable-output %s
 
 ; Make sure we don't crash on this test.
-define void @foo(i32* %arg) {
+define void @foo(ptr %arg) {
 bb:
-  %tmp = load i32, i32* %arg, align 4
+  %tmp = load i32, ptr %arg, align 4
   br label %bb1
 
 bb1:                                              ; preds = %bb7, %bb
@@ -17,7 +17,7 @@ bb6:                                              ; preds = %bb1
   ret void
 
 bb7:                                              ; preds = %bb1
-  %tmp8 = getelementptr inbounds i8, i8* undef, i64 8
+  %tmp8 = getelementptr inbounds i8, ptr undef, i64 8
   br label %bb1
 }
 

diff  --git a/llvm/test/Transforms/LoopRotate/indirectbr.ll b/llvm/test/Transforms/LoopRotate/indirectbr.ll
index 37050a99e1f27..baa91a63bacf6 100644
--- a/llvm/test/Transforms/LoopRotate/indirectbr.ll
+++ b/llvm/test/Transforms/LoopRotate/indirectbr.ll
@@ -12,7 +12,7 @@ while.body:                                       ; preds = %while.cond
   br label %indirectgoto
 
 run_opcode:                                       ; preds = %indirectgoto
-  %tmp276 = load i8, i8* undef                        ; <i8> [#uses=1]
+  %tmp276 = load i8, ptr undef                        ; <i8> [#uses=1]
   br label %indirectgoto
 
 if.else295:                                       ; preds = %divide_late
@@ -39,11 +39,11 @@ sw.default42406:                                  ; preds = %sw.bb30351
 
 indirectgoto:                                     ; preds = %run_opcode, %while.body
   %opcode.0 = phi i8 [ undef, %while.body ], [ %tmp276, %run_opcode ] ; <i8> [#uses=2]
-  indirectbr i8* undef, [label %run_opcode, label %if.else295, label %end_opcode]
+  indirectbr ptr undef, [label %run_opcode, label %if.else295, label %end_opcode]
 }
 
 ; CHECK-LABEL: @foo
-define void @foo(i1 %a, i1 %b, i8* %c) {
+define void @foo(i1 %a, i1 %b, ptr %c) {
 ; CHECK: entry
 ; CHECK-NEXT: br i1 %a, label %return, label %preheader
 entry:
@@ -60,9 +60,9 @@ header:
   br i1 %b, label %return, label %body
 
 ; CHECK: body:
-; CHECK-NEXT:  indirectbr i8* %c, [label %return, label %latch]
+; CHECK-NEXT:  indirectbr ptr %c, [label %return, label %latch]
 body:
-  indirectbr i8* %c, [label %return, label %latch]
+  indirectbr ptr %c, [label %return, label %latch]
 
 ; CHECK: latch:
 ; CHECK-NEXT:  br label %header

diff  --git a/llvm/test/Transforms/LoopRotate/loopexitinglatch.ll b/llvm/test/Transforms/LoopRotate/loopexitinglatch.ll
index 2ff5628412451..dbc51fb132b37 100644
--- a/llvm/test/Transforms/LoopRotate/loopexitinglatch.ll
+++ b/llvm/test/Transforms/LoopRotate/loopexitinglatch.ll
@@ -4,129 +4,115 @@
 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
 target triple = "thumbv8m.base-arm-none-eabi"
 
-%struct.List = type { %struct.List*, i32 }
+%struct.List = type { ptr, i32 }
 
-define void @list_add(%struct.List** nocapture %list, %struct.List* %data) {
+define void @list_add(ptr nocapture %list, ptr %data) {
 ; CHECK-LABEL: @list_add(
 ; CHECK-NEXT:  entry:
-; CHECK-NEXT:    [[TMP0:%.*]] = load %struct.List*, %struct.List** [[LIST:%.*]], align 4
-; CHECK-NEXT:    [[VAL2:%.*]] = getelementptr inbounds [[STRUCT_LIST:%.*]], %struct.List* [[TMP0]], i32 0, i32 1
-; CHECK-NEXT:    [[TMP1:%.*]] = load i32, i32* [[VAL2]], align 4
-; CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_LIST]], %struct.List* [[DATA:%.*]], i32 0, i32 1
-; CHECK-NEXT:    [[TMP2:%.*]] = load i32, i32* [[VAL1]], align 4
+; CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[LIST:%.*]], align 4
+; CHECK-NEXT:    [[VAL2:%.*]] = getelementptr inbounds [[STRUCT_LIST:%.*]], ptr [[TMP0]], i32 0, i32 1
+; CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr [[VAL2]], align 4
+; CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_LIST]], ptr [[DATA:%.*]], i32 0, i32 1
+; CHECK-NEXT:    [[TMP2:%.*]] = load i32, ptr [[VAL1]], align 4
 ; CHECK-NEXT:    [[CMP3:%.*]] = icmp slt i32 [[TMP1]], [[TMP2]]
 ; CHECK-NEXT:    br i1 [[CMP3]], label [[IF_THEN_LR_PH:%.*]], label [[IF_ELSE6:%.*]]
 ; CHECK:       if.then.lr.ph:
 ; CHECK-NEXT:    br label [[IF_THEN:%.*]]
 ; CHECK:       for.cond:
-; CHECK-NEXT:    [[CURR_0:%.*]] = phi %struct.List* [ [[TMP5:%.*]], [[IF_THEN]] ]
-; CHECK-NEXT:    [[PREV_0:%.*]] = phi %struct.List* [ [[CURR_04:%.*]], [[IF_THEN]] ]
-; CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_LIST]], %struct.List* [[CURR_0]], i32 0, i32 1
-; CHECK-NEXT:    [[TMP3:%.*]] = load i32, i32* [[VAL]], align 4
-; CHECK-NEXT:    [[TMP4:%.*]] = load i32, i32* [[VAL1]], align 4
+; CHECK-NEXT:    [[CURR_0:%.*]] = phi ptr [ [[TMP5:%.*]], [[IF_THEN]] ]
+; CHECK-NEXT:    [[PREV_0:%.*]] = phi ptr [ [[CURR_04:%.*]], [[IF_THEN]] ]
+; CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_LIST]], ptr [[CURR_0]], i32 0, i32 1
+; CHECK-NEXT:    [[TMP3:%.*]] = load i32, ptr [[VAL]], align 4
+; CHECK-NEXT:    [[TMP4:%.*]] = load i32, ptr [[VAL1]], align 4
 ; CHECK-NEXT:    [[CMP:%.*]] = icmp slt i32 [[TMP3]], [[TMP4]]
 ; CHECK-NEXT:    br i1 [[CMP]], label [[IF_THEN]], label [[FOR_COND_IF_ELSE6_CRIT_EDGE:%.*]]
 ; CHECK:       if.then:
-; CHECK-NEXT:    [[CURR_04]] = phi %struct.List* [ [[TMP0]], [[IF_THEN_LR_PH]] ], [ [[CURR_0]], [[FOR_COND:%.*]] ]
-; CHECK-NEXT:    [[NEXT:%.*]] = getelementptr inbounds [[STRUCT_LIST]], %struct.List* [[CURR_04]], i32 0, i32 0
-; CHECK-NEXT:    [[TMP5]] = load %struct.List*, %struct.List** [[NEXT]], align 4
-; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp eq %struct.List* [[TMP5]], null
+; CHECK-NEXT:    [[CURR_04]] = phi ptr [ [[TMP0]], [[IF_THEN_LR_PH]] ], [ [[CURR_0]], [[FOR_COND:%.*]] ]
+; CHECK-NEXT:    [[TMP5]] = load ptr, ptr [[CURR_04]], align 4
+; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp eq ptr [[TMP5]], null
 ; CHECK-NEXT:    br i1 [[TOBOOL]], label [[IF_ELSE:%.*]], label [[FOR_COND]]
 ; CHECK:       if.else:
-; CHECK-NEXT:    [[NEXT_LCSSA:%.*]] = phi %struct.List** [ [[NEXT]], [[IF_THEN]] ]
-; CHECK-NEXT:    store %struct.List* [[DATA]], %struct.List** [[NEXT_LCSSA]], align 4
-; CHECK-NEXT:    [[NEXT5:%.*]] = getelementptr inbounds [[STRUCT_LIST]], %struct.List* [[DATA]], i32 0, i32 0
-; CHECK-NEXT:    store %struct.List* null, %struct.List** [[NEXT5]], align 4
+; CHECK-NEXT:    [[NEXT_LCSSA:%.*]] = phi ptr [ [[CURR_04]], [[IF_THEN]] ]
+; CHECK-NEXT:    store ptr [[DATA]], ptr [[NEXT_LCSSA]], align 4
+; CHECK-NEXT:    store ptr null, ptr [[DATA]], align 4
 ; CHECK-NEXT:    br label [[FOR_END:%.*]]
 ; CHECK:       for.cond.if.else6_crit_edge:
-; CHECK-NEXT:    [[SPLIT:%.*]] = phi %struct.List* [ [[PREV_0]], [[FOR_COND]] ]
+; CHECK-NEXT:    [[SPLIT:%.*]] = phi ptr [ [[PREV_0]], [[FOR_COND]] ]
 ; CHECK-NEXT:    br label [[IF_ELSE6]]
 ; CHECK:       if.else6:
-; CHECK-NEXT:    [[PREV_0_LCSSA:%.*]] = phi %struct.List* [ [[SPLIT]], [[FOR_COND_IF_ELSE6_CRIT_EDGE]] ], [ null, [[ENTRY:%.*]] ]
-; CHECK-NEXT:    [[TOBOOL7:%.*]] = icmp eq %struct.List* [[PREV_0_LCSSA]], null
+; CHECK-NEXT:    [[PREV_0_LCSSA:%.*]] = phi ptr [ [[SPLIT]], [[FOR_COND_IF_ELSE6_CRIT_EDGE]] ], [ null, [[ENTRY:%.*]] ]
+; CHECK-NEXT:    [[TOBOOL7:%.*]] = icmp eq ptr [[PREV_0_LCSSA]], null
 ; CHECK-NEXT:    br i1 [[TOBOOL7]], label [[IF_ELSE12:%.*]], label [[IF_THEN8:%.*]]
 ; CHECK:       if.then8:
-; CHECK-NEXT:    [[NEXT9:%.*]] = getelementptr inbounds [[STRUCT_LIST]], %struct.List* [[PREV_0_LCSSA]], i32 0, i32 0
-; CHECK-NEXT:    [[TMP6:%.*]] = bitcast %struct.List* [[PREV_0_LCSSA]] to i32*
-; CHECK-NEXT:    [[TMP7:%.*]] = load i32, i32* [[TMP6]], align 4
-; CHECK-NEXT:    [[TMP8:%.*]] = bitcast %struct.List* [[DATA]] to i32*
-; CHECK-NEXT:    store i32 [[TMP7]], i32* [[TMP8]], align 4
-; CHECK-NEXT:    store %struct.List* [[DATA]], %struct.List** [[NEXT9]], align 4
+; CHECK-NEXT:    [[TMP7:%.*]] = load i32, ptr [[PREV_0_LCSSA]], align 4
+; CHECK-NEXT:    store i32 [[TMP7]], ptr [[DATA]], align 4
+; CHECK-NEXT:    store ptr [[DATA]], ptr [[PREV_0_LCSSA]], align 4
 ; CHECK-NEXT:    br label [[FOR_END]]
 ; CHECK:       if.else12:
-; CHECK-NEXT:    [[TMP9:%.*]] = bitcast %struct.List** [[LIST]] to i32*
-; CHECK-NEXT:    [[TMP10:%.*]] = load i32, i32* [[TMP9]], align 4
-; CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.List* [[DATA]] to i32*
-; CHECK-NEXT:    store i32 [[TMP10]], i32* [[TMP11]], align 4
-; CHECK-NEXT:    store %struct.List* [[DATA]], %struct.List** [[LIST]], align 4
+; CHECK-NEXT:    [[TMP10:%.*]] = load i32, ptr [[LIST]], align 4
+; CHECK-NEXT:    store i32 [[TMP10]], ptr [[DATA]], align 4
+; CHECK-NEXT:    store ptr [[DATA]], ptr [[LIST]], align 4
 ; CHECK-NEXT:    br label [[FOR_END]]
 ; CHECK:       for.end:
 ; CHECK-NEXT:    ret void
 ;
 entry:
-  %0 = load %struct.List*, %struct.List** %list, align 4
+  %0 = load ptr, ptr %list, align 4
   br label %for.cond
 
 for.cond:                                         ; preds = %if.then, %entry
-  %curr.0 = phi %struct.List* [ %0, %entry ], [ %3, %if.then ]
-  %prev.0 = phi %struct.List* [ null, %entry ], [ %curr.0, %if.then ]
-  %val = getelementptr inbounds %struct.List, %struct.List* %curr.0, i32 0, i32 1
-  %1 = load i32, i32* %val, align 4
-  %val1 = getelementptr inbounds %struct.List, %struct.List* %data, i32 0, i32 1
-  %2 = load i32, i32* %val1, align 4
+  %curr.0 = phi ptr [ %0, %entry ], [ %3, %if.then ]
+  %prev.0 = phi ptr [ null, %entry ], [ %curr.0, %if.then ]
+  %val = getelementptr inbounds %struct.List, ptr %curr.0, i32 0, i32 1
+  %1 = load i32, ptr %val, align 4
+  %val1 = getelementptr inbounds %struct.List, ptr %data, i32 0, i32 1
+  %2 = load i32, ptr %val1, align 4
   %cmp = icmp slt i32 %1, %2
   br i1 %cmp, label %if.then, label %if.else6
 
 if.then:                                          ; preds = %for.cond
-  %next = getelementptr inbounds %struct.List, %struct.List* %curr.0, i32 0, i32 0
-  %3 = load %struct.List*, %struct.List** %next, align 4
-  %tobool = icmp eq %struct.List* %3, null
+  %3 = load ptr, ptr %curr.0, align 4
+  %tobool = icmp eq ptr %3, null
   br i1 %tobool, label %if.else, label %for.cond
 
 if.else:                                          ; preds = %if.then
-  %next.lcssa = phi %struct.List** [ %next, %if.then ]
-  store %struct.List* %data, %struct.List** %next.lcssa, align 4
-  %next5 = getelementptr inbounds %struct.List, %struct.List* %data, i32 0, i32 0
-  store %struct.List* null, %struct.List** %next5, align 4
+  %next.lcssa = phi ptr [ %curr.0, %if.then ]
+  store ptr %data, ptr %next.lcssa, align 4
+  store ptr null, ptr %data, align 4
   br label %for.end
 
 if.else6:                                         ; preds = %for.cond
-  %prev.0.lcssa = phi %struct.List* [ %prev.0, %for.cond ]
-  %tobool7 = icmp eq %struct.List* %prev.0.lcssa, null
+  %prev.0.lcssa = phi ptr [ %prev.0, %for.cond ]
+  %tobool7 = icmp eq ptr %prev.0.lcssa, null
   br i1 %tobool7, label %if.else12, label %if.then8
 
 if.then8:                                         ; preds = %if.else6
-  %next9 = getelementptr inbounds %struct.List, %struct.List* %prev.0.lcssa, i32 0, i32 0
-  %4 = bitcast %struct.List* %prev.0.lcssa to i32*
-  %5 = load i32, i32* %4, align 4
-  %6 = bitcast %struct.List* %data to i32*
-  store i32 %5, i32* %6, align 4
-  store %struct.List* %data, %struct.List** %next9, align 4
+  %4 = load i32, ptr %prev.0.lcssa, align 4
+  store i32 %4, ptr %data, align 4
+  store ptr %data, ptr %prev.0.lcssa, align 4
   br label %for.end
 
 if.else12:                                        ; preds = %if.else6
-  %7 = bitcast %struct.List** %list to i32*
-  %8 = load i32, i32* %7, align 4
-  %9 = bitcast %struct.List* %data to i32*
-  store i32 %8, i32* %9, align 4
-  store %struct.List* %data, %struct.List** %list, align 4
+  %5 = load i32, ptr %list, align 4
+  store i32 %5, ptr %data, align 4
+  store ptr %data, ptr %list, align 4
   br label %for.end
 
 for.end:                                          ; preds = %if.else12, %if.then8, %if.else
   ret void
 }
 
-define i32 @test2(i32* %l) {
+define i32 @test2(ptr %l) {
 ; CHECK-LABEL: @test2(
 ; CHECK-NEXT:  entry:
-; CHECK-NEXT:    [[TMP0:%.*]] = load i32, i32* [[L:%.*]], align 4
+; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[L:%.*]], align 4
 ; CHECK-NEXT:    [[TOBOOL2:%.*]] = icmp eq i32 [[TMP0]], 0
 ; CHECK-NEXT:    br i1 [[TOBOOL2]], label [[CLEANUP:%.*]], label [[DO_COND_LR_PH:%.*]]
 ; CHECK:       do.cond.lr.ph:
 ; CHECK-NEXT:    br label [[DO_COND:%.*]]
 ; CHECK:       do.body:
 ; CHECK-NEXT:    [[A_0:%.*]] = phi i32 [ [[REM:%.*]], [[DO_COND]] ]
-; CHECK-NEXT:    [[TMP1:%.*]] = load i32, i32* [[L]], align 4
+; CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr [[L]], align 4
 ; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp eq i32 [[TMP1]], 0
 ; CHECK-NEXT:    br i1 [[TOBOOL]], label [[DO_BODY_CLEANUP_CRIT_EDGE:%.*]], label [[DO_COND]]
 ; CHECK:       do.body.cleanup_crit_edge:
@@ -134,13 +120,13 @@ define i32 @test2(i32* %l) {
 ; CHECK-NEXT:    br label [[CLEANUP]]
 ; CHECK:       cleanup:
 ; CHECK-NEXT:    [[A_0_LCSSA:%.*]] = phi i32 [ [[SPLIT]], [[DO_BODY_CLEANUP_CRIT_EDGE]] ], [ 100, [[ENTRY:%.*]] ]
-; CHECK-NEXT:    store i32 10, i32* [[L]], align 4
+; CHECK-NEXT:    store i32 10, ptr [[L]], align 4
 ; CHECK-NEXT:    br label [[CLEANUP2:%.*]]
 ; CHECK:       do.cond:
 ; CHECK-NEXT:    [[TMP2:%.*]] = phi i32 [ [[TMP0]], [[DO_COND_LR_PH]] ], [ [[TMP1]], [[DO_BODY]] ]
 ; CHECK-NEXT:    [[MUL:%.*]] = mul nsw i32 [[TMP2]], 13
 ; CHECK-NEXT:    [[REM]] = srem i32 [[MUL]], 27
-; CHECK-NEXT:    [[TMP3:%.*]] = load i32, i32* [[L]], align 4
+; CHECK-NEXT:    [[TMP3:%.*]] = load i32, ptr [[L]], align 4
 ; CHECK-NEXT:    [[TOBOOL1:%.*]] = icmp eq i32 [[TMP3]], 0
 ; CHECK-NEXT:    br i1 [[TOBOOL1]], label [[CLEANUP2_LOOPEXIT:%.*]], label [[DO_BODY]]
 ; CHECK:       cleanup2.loopexit:
@@ -154,19 +140,19 @@ entry:
 
 do.body:                                          ; preds = %do.cond, %entry
   %a.0 = phi i32 [ 100, %entry ], [ %rem, %do.cond ]
-  %0 = load i32, i32* %l, align 4
+  %0 = load i32, ptr %l, align 4
   %tobool = icmp eq i32 %0, 0
   br i1 %tobool, label %cleanup, label %do.cond
 
 cleanup:                                          ; preds = %do.body
   %a.0.lcssa = phi i32 [ %a.0, %do.body ]
-  store i32 10, i32* %l, align 4
+  store i32 10, ptr %l, align 4
   br label %cleanup2
 
 do.cond:                                          ; preds = %do.body
   %mul = mul nsw i32 %0, 13
   %rem = srem i32 %mul, 27
-  %1 = load i32, i32* %l, align 4
+  %1 = load i32, ptr %l, align 4
   %tobool1 = icmp eq i32 %1, 0
   br i1 %tobool1, label %cleanup2.loopexit, label %do.body
 
@@ -178,23 +164,23 @@ cleanup2:                                         ; preds = %cleanup2.loopexit,
   ret i32 %retval.2
 }
 
-define i32 @no_rotate(i32* %l) {
+define i32 @no_rotate(ptr %l) {
 ; CHECK-LABEL: @no_rotate(
 ; CHECK-NEXT:  entry:
 ; CHECK-NEXT:    br label [[DO_BODY:%.*]]
 ; CHECK:       do.body:
 ; CHECK-NEXT:    [[A_0:%.*]] = phi i32 [ 100, [[ENTRY:%.*]] ], [ [[REM:%.*]], [[DO_COND:%.*]] ]
-; CHECK-NEXT:    [[TMP0:%.*]] = load i32, i32* [[L:%.*]], align 4
+; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[L:%.*]], align 4
 ; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp eq i32 [[TMP0]], 0
 ; CHECK-NEXT:    br i1 [[TOBOOL]], label [[CLEANUP:%.*]], label [[DO_COND]]
 ; CHECK:       cleanup:
 ; CHECK-NEXT:    [[A_0_LCSSA:%.*]] = phi i32 [ [[A_0]], [[DO_BODY]] ]
-; CHECK-NEXT:    store i32 10, i32* [[L]], align 4
+; CHECK-NEXT:    store i32 10, ptr [[L]], align 4
 ; CHECK-NEXT:    br label [[CLEANUP2:%.*]]
 ; CHECK:       do.cond:
 ; CHECK-NEXT:    [[MUL:%.*]] = mul nsw i32 [[A_0]], 13
 ; CHECK-NEXT:    [[REM]] = srem i32 [[MUL]], 27
-; CHECK-NEXT:    [[TMP1:%.*]] = load i32, i32* [[L]], align 4
+; CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr [[L]], align 4
 ; CHECK-NEXT:    [[TOBOOL1:%.*]] = icmp eq i32 [[TMP1]], 0
 ; CHECK-NEXT:    br i1 [[TOBOOL1]], label [[CLEANUP2_LOOPEXIT:%.*]], label [[DO_BODY]]
 ; CHECK:       cleanup2.loopexit:
@@ -208,19 +194,19 @@ entry:
 
 do.body:                                          ; preds = %do.cond, %entry
   %a.0 = phi i32 [ 100, %entry ], [ %rem, %do.cond ]
-  %0 = load i32, i32* %l, align 4
+  %0 = load i32, ptr %l, align 4
   %tobool = icmp eq i32 %0, 0
   br i1 %tobool, label %cleanup, label %do.cond
 
 cleanup:                                          ; preds = %do.body
   %a.0.lcssa = phi i32 [ %a.0, %do.body ]
-  store i32 10, i32* %l, align 4
+  store i32 10, ptr %l, align 4
   br label %cleanup2
 
 do.cond:                                          ; preds = %do.body
   %mul = mul nsw i32 %a.0, 13
   %rem = srem i32 %mul, 27
-  %1 = load i32, i32* %l, align 4
+  %1 = load i32, ptr %l, align 4
   %tobool1 = icmp eq i32 %1, 0
   br i1 %tobool1, label %cleanup2.loopexit, label %do.body
 

diff  --git a/llvm/test/Transforms/LoopRotate/multiple-deopt-exits.ll b/llvm/test/Transforms/LoopRotate/multiple-deopt-exits.ll
index e6b12d6e1dcb8..72bc5434e2bed 100644
--- a/llvm/test/Transforms/LoopRotate/multiple-deopt-exits.ll
+++ b/llvm/test/Transforms/LoopRotate/multiple-deopt-exits.ll
@@ -7,13 +7,13 @@
 
 declare i32 @llvm.experimental.deoptimize.i32(...)
 
-define i32 @test_cond_with_one_deopt_exit(i32 * nonnull %a, i64 %x) {
+define i32 @test_cond_with_one_deopt_exit(ptr nonnull %a, i64 %x) {
 ; Rotation done twice.
 ; Latch should be at the 2nd condition (for.cond2), exiting to %return.
 ;
 ; CHECK-LABEL: @test_cond_with_one_deopt_exit(
 ; CHECK-NEXT:  entry:
-; CHECK-NEXT:    [[VAL_A_IDX3:%.*]] = load i32, i32* %a, align 4
+; CHECK-NEXT:    [[VAL_A_IDX3:%.*]] = load i32, ptr %a, align 4
 ; CHECK-NEXT:    [[ZERO_CHECK4:%.*]] = icmp eq i32 [[VAL_A_IDX3]], 0
 ; CHECK-NEXT:    br i1 [[ZERO_CHECK4]], label %deopt.exit, label %for.cond2.lr.ph
 ; CHECK:       for.cond2.lr.ph:
@@ -27,7 +27,7 @@ define i32 @test_cond_with_one_deopt_exit(i32 * nonnull %a, i64 %x) {
 ; CHECK:       for.body:
 ; CHECK:         br label %for.tail
 ; CHECK:       for.tail:
-; CHECK:         [[VAL_A_IDX:%.*]] = load i32, i32*
+; CHECK:         [[VAL_A_IDX:%.*]] = load i32, ptr
 ; CHECK-NEXT:    [[ZERO_CHECK:%.*]] = icmp eq i32 [[VAL_A_IDX]], 0
 ; CHECK-NEXT:    br i1 [[ZERO_CHECK]], label %for.cond1.deopt.exit_crit_edge, label %for.cond2
 ; CHECK:       for.cond2.return_crit_edge:
@@ -49,8 +49,8 @@ entry:
 for.cond1:
   %idx = phi i64 [ 0, %entry ], [ %idx.next, %for.tail ]
   %sum = phi i32 [ 0, %entry ], [ %sum.next, %for.tail ]
-  %a.idx = getelementptr inbounds i32, i32 *%a, i64 %idx
-  %val.a.idx = load i32, i32* %a.idx, align 4
+  %a.idx = getelementptr inbounds i32, ptr %a, i64 %idx
+  %val.a.idx = load i32, ptr %a.idx, align 4
   %zero.check = icmp eq i32 %val.a.idx, 0
   br i1 %zero.check, label %deopt.exit, label %for.cond2
 
@@ -74,17 +74,17 @@ deopt.exit:
   ret i32 %deopt.val
 }
 
-define i32 @test_cond_with_two_deopt_exits(i32 ** nonnull %a, i64 %x) {
+define i32 @test_cond_with_two_deopt_exits(ptr nonnull %a, i64 %x) {
 ; Rotation done three times.
 ; Latch should be at the 3rd condition (for.cond3), exiting to %return.
 ;
 ; CHECK-LABEL: @test_cond_with_two_deopt_exits(
 ; CHECK-NEXT:  entry:
-; CHECK-NEXT:    [[A_IDX_DEREF4:%.*]] = load i32*, i32** %a
-; CHECK-NEXT:    [[NULL_CHECK5:%.*]] = icmp eq i32* [[A_IDX_DEREF4]], null
+; CHECK-NEXT:    [[A_IDX_DEREF4:%.*]] = load ptr, ptr %a
+; CHECK-NEXT:    [[NULL_CHECK5:%.*]] = icmp eq ptr [[A_IDX_DEREF4]], null
 ; CHECK-NEXT:    br i1 [[NULL_CHECK5]], label %deopt.exit1, label %for.cond2.lr.ph
 ; CHECK:       for.cond2.lr.ph:
-; CHECK-NEXT:    [[VAL_A_IDX9:%.*]] = load i32, i32* [[A_IDX_DEREF4]], align 4
+; CHECK-NEXT:    [[VAL_A_IDX9:%.*]] = load i32, ptr [[A_IDX_DEREF4]], align 4
 ; CHECK-NEXT:    [[ZERO_CHECK10:%.*]] = icmp eq i32 [[VAL_A_IDX9]], 0
 ; CHECK-NEXT:    br i1 [[ZERO_CHECK10]], label %deopt.exit2, label %for.cond3.lr.ph
 ; CHECK:       for.cond3.lr.ph:
@@ -93,7 +93,7 @@ define i32 @test_cond_with_two_deopt_exits(i32 ** nonnull %a, i64 %x) {
 ; CHECK:       for.body.lr.ph:
 ; CHECK-NEXT:    br label %for.body
 ; CHECK:       for.cond2:
-; CHECK:         [[VAL_A_IDX:%.*]] = load i32, i32*
+; CHECK:         [[VAL_A_IDX:%.*]] = load i32, ptr
 ; CHECK-NEXT:    [[ZERO_CHECK:%.*]] = icmp eq i32 [[VAL_A_IDX]], 0
 ; CHECK-NEXT:    br i1 [[ZERO_CHECK]], label %for.cond2.deopt.exit2_crit_edge, label %for.cond3
 ; CHECK:       for.cond3:
@@ -103,7 +103,7 @@ define i32 @test_cond_with_two_deopt_exits(i32 ** nonnull %a, i64 %x) {
 ; CHECK:         br label %for.tail
 ; CHECK:       for.tail:
 ; CHECK:         [[IDX_NEXT:%.*]] = add nuw nsw i64 {{%.*}}, 1
-; CHECK:         [[NULL_CHECK:%.*]] = icmp eq i32* {{%.*}}, null
+; CHECK:         [[NULL_CHECK:%.*]] = icmp eq ptr {{%.*}}, null
 ; CHECK-NEXT:    br i1 [[NULL_CHECK]], label %for.cond1.deopt.exit1_crit_edge, label %for.cond2
 ; CHECK:       for.cond3.return_crit_edge:
 ; CHECK-NEXT:    [[SPLIT18:%.*]] = phi i32
@@ -130,13 +130,13 @@ entry:
 for.cond1:
   %idx = phi i64 [ 0, %entry ], [ %idx.next, %for.tail ]
   %sum = phi i32 [ 0, %entry ], [ %sum.next, %for.tail ]
-  %a.idx = getelementptr inbounds i32*, i32 **%a, i64 %idx
-  %a.idx.deref = load i32*, i32** %a.idx
-  %null.check = icmp eq i32* %a.idx.deref, null
+  %a.idx = getelementptr inbounds ptr, ptr %a, i64 %idx
+  %a.idx.deref = load ptr, ptr %a.idx
+  %null.check = icmp eq ptr %a.idx.deref, null
   br i1 %null.check, label %deopt.exit1, label %for.cond2
 
 for.cond2:
-  %val.a.idx = load i32, i32* %a.idx.deref, align 4
+  %val.a.idx = load i32, ptr %a.idx.deref, align 4
   %zero.check = icmp eq i32 %val.a.idx, 0
   br i1 %zero.check, label %deopt.exit2, label %for.cond3
 

diff  --git a/llvm/test/Transforms/LoopRotate/multiple-exits.ll b/llvm/test/Transforms/LoopRotate/multiple-exits.ll
index a874d12fd29f8..5832c7613dd14 100644
--- a/llvm/test/Transforms/LoopRotate/multiple-exits.ll
+++ b/llvm/test/Transforms/LoopRotate/multiple-exits.ll
@@ -4,7 +4,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 target triple = "x86_64-apple-macosx10.8.0"
 
 ; PR7447
-define i32 @test1([100 x i32]* nocapture %a) nounwind readonly {
+define i32 @test1(ptr nocapture %a) nounwind readonly {
 entry:
   br label %for.cond
 
@@ -21,8 +21,8 @@ for.cond1:                                        ; preds = %for.cond, %land.rhs
 
 land.rhs:                                         ; preds = %for.cond1
   %conv = zext i32 %i.1 to i64
-  %arrayidx = getelementptr inbounds [100 x i32], [100 x i32]* %a, i64 0, i64 %conv
-  %0 = load i32, i32* %arrayidx, align 4
+  %arrayidx = getelementptr inbounds [100 x i32], ptr %a, i64 0, i64 %conv
+  %0 = load i32, ptr %arrayidx, align 4
   %add = add i32 %0, %sum.1
   %cmp4 = icmp ugt i32 %add, 1000
   %inc = add i32 %i.1, 1
@@ -84,10 +84,10 @@ declare i32 @foo(i32)
 
 declare i32 @bar(i32)
 
- at _ZTIi = external constant i8*
+ at _ZTIi = external constant ptr
 
 ; Verify dominators.
-define void @test3(i32 %x) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
+define void @test3(i32 %x) personality ptr @__gxx_personality_v0 {
 entry:
   %cmp2 = icmp eq i32 0, %x
   br i1 %cmp2, label %try.cont.loopexit, label %for.body.lr.ph
@@ -106,16 +106,16 @@ for.inc:                                          ; preds = %for.body
   br i1 %cmp, label %for.cond.try.cont.loopexit_crit_edge, label %for.body
 
 lpad:                                             ; preds = %for.body
-  %0 = landingpad { i8*, i32 }
-          catch i8* bitcast (i8** @_ZTIi to i8*)
-  %1 = extractvalue { i8*, i32 } %0, 0
-  %2 = extractvalue { i8*, i32 } %0, 1
-  %3 = tail call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIi to i8*)) nounwind
+  %0 = landingpad { ptr, i32 }
+          catch ptr @_ZTIi
+  %1 = extractvalue { ptr, i32 } %0, 0
+  %2 = extractvalue { ptr, i32 } %0, 1
+  %3 = tail call i32 @llvm.eh.typeid.for(ptr @_ZTIi) nounwind
   %matches = icmp eq i32 %2, %3
   br i1 %matches, label %catch, label %eh.resume
 
 catch:                                            ; preds = %lpad
-  %4 = tail call i8* @__cxa_begin_catch(i8* %1) nounwind
+  %4 = tail call ptr @__cxa_begin_catch(ptr %1) nounwind
   br i1 true, label %invoke.cont2.loopexit, label %for.body.i.lr.ph
 
 for.body.i.lr.ph:                                 ; preds = %catch
@@ -132,15 +132,15 @@ for.inc.i:                                        ; preds = %for.body.i
   br i1 %cmp.i, label %for.cond.i.invoke.cont2.loopexit_crit_edge, label %for.body.i
 
 lpad.i:                                           ; preds = %for.body.i
-  %5 = landingpad { i8*, i32 }
-          catch i8* bitcast (i8** @_ZTIi to i8*)
-  %6 = extractvalue { i8*, i32 } %5, 0
-  %7 = extractvalue { i8*, i32 } %5, 1
+  %5 = landingpad { ptr, i32 }
+          catch ptr @_ZTIi
+  %6 = extractvalue { ptr, i32 } %5, 0
+  %7 = extractvalue { ptr, i32 } %5, 1
   %matches.i = icmp eq i32 %7, %3
   br i1 %matches.i, label %catch.i, label %lpad1.body
 
 catch.i:                                          ; preds = %lpad.i
-  %8 = tail call i8* @__cxa_begin_catch(i8* %6) nounwind
+  %8 = tail call ptr @__cxa_begin_catch(ptr %6) nounwind
   invoke void @test3(i32 0)
           to label %invoke.cont2.i unwind label %lpad1.i
 
@@ -149,10 +149,10 @@ invoke.cont2.i:                                   ; preds = %catch.i
   br label %invoke.cont2
 
 lpad1.i:                                          ; preds = %catch.i
-  %9 = landingpad { i8*, i32 }
+  %9 = landingpad { ptr, i32 }
           cleanup
-  %10 = extractvalue { i8*, i32 } %9, 0
-  %11 = extractvalue { i8*, i32 } %9, 1
+  %10 = extractvalue { ptr, i32 } %9, 0
+  %11 = extractvalue { ptr, i32 } %9, 1
   tail call void @__cxa_end_catch() nounwind
   br label %lpad1.body
 
@@ -176,26 +176,26 @@ try.cont:                                         ; preds = %try.cont.loopexit,
   ret void
 
 lpad1.body:                                       ; preds = %lpad1.i, %lpad.i
-  %exn.slot.0.i = phi i8* [ %10, %lpad1.i ], [ %6, %lpad.i ]
+  %exn.slot.0.i = phi ptr [ %10, %lpad1.i ], [ %6, %lpad.i ]
   %ehselector.slot.0.i = phi i32 [ %11, %lpad1.i ], [ %7, %lpad.i ]
   tail call void @__cxa_end_catch() nounwind
   br label %eh.resume
 
 eh.resume:                                        ; preds = %lpad1.body, %lpad
-  %exn.slot.0 = phi i8* [ %exn.slot.0.i, %lpad1.body ], [ %1, %lpad ]
+  %exn.slot.0 = phi ptr [ %exn.slot.0.i, %lpad1.body ], [ %1, %lpad ]
   %ehselector.slot.0 = phi i32 [ %ehselector.slot.0.i, %lpad1.body ], [ %2, %lpad ]
-  %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn.slot.0, 0
-  %lpad.val5 = insertvalue { i8*, i32 } %lpad.val, i32 %ehselector.slot.0, 1
-  resume { i8*, i32 } %lpad.val5
+  %lpad.val = insertvalue { ptr, i32 } undef, ptr %exn.slot.0, 0
+  %lpad.val5 = insertvalue { ptr, i32 } %lpad.val, i32 %ehselector.slot.0, 1
+  resume { ptr, i32 } %lpad.val5
 }
 
 declare void @_Z3fooi(i32)
 
 declare i32 @__gxx_personality_v0(...)
 
-declare i32 @llvm.eh.typeid.for(i8*) nounwind readnone
+declare i32 @llvm.eh.typeid.for(ptr) nounwind readnone
 
-declare i8* @__cxa_begin_catch(i8*)
+declare ptr @__cxa_begin_catch(ptr)
 
 declare void @__cxa_end_catch()
 

diff  --git a/llvm/test/Transforms/LoopRotate/noalias.ll b/llvm/test/Transforms/LoopRotate/noalias.ll
index e85df4d994b7f..da72a5f8b57a3 100644
--- a/llvm/test/Transforms/LoopRotate/noalias.ll
+++ b/llvm/test/Transforms/LoopRotate/noalias.ll
@@ -5,18 +5,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-unknown-linux-gnu"
 
-declare void @g(i32*)
+declare void @g(ptr)
 
-define void @test_02(i32* nocapture %_pA) nounwind ssp {
+define void @test_02(ptr nocapture %_pA) nounwind ssp {
 ; CHECK-LABEL: @test_02(
 ; CHECK: entry:
 ; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !2)
-; CHECK:   store i32 42, i32* %_pA, align 16, !alias.scope !2
+; CHECK:   store i32 42, ptr %_pA, align 16, !alias.scope !2
 ; CHECK: for.body:
 ; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !5)
-; CHECK:   store i32 0, i32* %arrayidx, align 16, !noalias !5
+; CHECK:   store i32 0, ptr %array, align 16, !noalias !5
 ; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !7)
-; CHECK:   store i32 42, i32* %_pA, align 16, !alias.scope !7
+; CHECK:   store i32 42, ptr %_pA, align 16, !alias.scope !7
 ; CHECK: for.end:
 
 entry:
@@ -26,29 +26,28 @@ entry:
 for.cond:                                         ; preds = %for.body, %entry
   %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
   tail call void @llvm.experimental.noalias.scope.decl(metadata !2)
-  store i32 42, i32* %_pA, align 16, !alias.scope !2
+  store i32 42, ptr %_pA, align 16, !alias.scope !2
   %cmp = icmp slt i32 %i.0, 100
-  %arrayidx = getelementptr inbounds [20 x i32], [20 x i32]* %array, i64 0, i64 0
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  store i32 0, i32* %arrayidx, align 16, !noalias !2
+  store i32 0, ptr %array, align 16, !noalias !2
   %inc = add nsw i32 %i.0, 1
   br label %for.cond
 
 for.end:                                          ; preds = %for.cond
-  %arrayidx.lcssa = phi i32* [ %arrayidx, %for.cond ]
-  call void @g(i32* %arrayidx.lcssa) nounwind
+  %arrayidx.lcssa = phi ptr [ %array, %for.cond ]
+  call void @g(ptr %arrayidx.lcssa) nounwind
   ret void
 }
 
-define void @test_03(i32* nocapture %_pA) nounwind ssp {
+define void @test_03(ptr nocapture %_pA) nounwind ssp {
 ; CHECK-LABEL: @test_03(
 ; CHECK: entry:
 ; CHECK: for.body:
 ; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !5)
-; CHECK:   store i32 42, i32* %_pA, align 16, !alias.scope !5
-; CHECK:   store i32 0, i32* %arrayidx, align 16, !noalias !5
+; CHECK:   store i32 42, ptr %_pA, align 16, !alias.scope !5
+; CHECK:   store i32 0, ptr %array, align 16, !noalias !5
 ; CHECK: for.end:
 
 entry:
@@ -58,33 +57,32 @@ entry:
 for.cond:                                         ; preds = %for.body, %entry
   %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
   %cmp = icmp slt i32 %i.0, 100
-  %arrayidx = getelementptr inbounds [20 x i32], [20 x i32]* %array, i64 0, i64 0
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
   tail call void @llvm.experimental.noalias.scope.decl(metadata !2)
-  store i32 42, i32* %_pA, align 16, !alias.scope !2
-  store i32 0, i32* %arrayidx, align 16, !noalias !2
+  store i32 42, ptr %_pA, align 16, !alias.scope !2
+  store i32 0, ptr %array, align 16, !noalias !2
   %inc = add nsw i32 %i.0, 1
   br label %for.cond
 
 for.end:                                          ; preds = %for.cond
-  %arrayidx.lcssa = phi i32* [ %arrayidx, %for.cond ]
-  call void @g(i32* %arrayidx.lcssa) nounwind
+  %arrayidx.lcssa = phi ptr [ %array, %for.cond ]
+  call void @g(ptr %arrayidx.lcssa) nounwind
   ret void
 }
 
-define void @test_04(i32* nocapture %_pA) nounwind ssp {
+define void @test_04(ptr nocapture %_pA) nounwind ssp {
 ; CHECK-LABEL: @test_04(
 ; CHECK: entry:
 ; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !9)
-; CHECK:   store i32 42, i32* %_pA, align 16, !alias.scope !9
+; CHECK:   store i32 42, ptr %_pA, align 16, !alias.scope !9
 ; CHECK: for.body:
 ; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !5)
-; CHECK:   store i32 0, i32* %arrayidx, align 16, !noalias !5
-; CHECK:   store i32 43, i32* %_pA, align 16, !alias.scope !5
+; CHECK:   store i32 0, ptr %array, align 16, !noalias !5
+; CHECK:   store i32 43, ptr %_pA, align 16, !alias.scope !5
 ; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !11)
-; CHECK:   store i32 42, i32* %_pA, align 16, !alias.scope !11
+; CHECK:   store i32 42, ptr %_pA, align 16, !alias.scope !11
 ; CHECK: for.end:
 entry:
   %array = alloca [20 x i32], align 16
@@ -93,36 +91,35 @@ entry:
 for.cond:                                         ; preds = %for.body, %entry
   %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
   tail call void @llvm.experimental.noalias.scope.decl(metadata !2)
-  store i32 42, i32* %_pA, align 16, !alias.scope !2
+  store i32 42, ptr %_pA, align 16, !alias.scope !2
   %cmp = icmp slt i32 %i.0, 100
-  %arrayidx = getelementptr inbounds [20 x i32], [20 x i32]* %array, i64 0, i64 0
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  store i32 0, i32* %arrayidx, align 16, !noalias !2
-  store i32 43, i32* %_pA, align 16, !alias.scope !2
+  store i32 0, ptr %array, align 16, !noalias !2
+  store i32 43, ptr %_pA, align 16, !alias.scope !2
   %inc = add nsw i32 %i.0, 1
   br label %for.cond
 
 for.end:                                          ; preds = %for.cond
-  %arrayidx.lcssa = phi i32* [ %arrayidx, %for.cond ]
-  call void @g(i32* %arrayidx.lcssa) nounwind
+  %arrayidx.lcssa = phi ptr [ %array, %for.cond ]
+  call void @g(ptr %arrayidx.lcssa) nounwind
   ret void
 }
 
-define void @test_05(i32* nocapture %_pA) nounwind ssp {
+define void @test_05(ptr nocapture %_pA) nounwind ssp {
 ; CHECK-LABEL: @test_05(
 ; CHECK: entry:
 ; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !13)
-; CHECK:   store i32 42, i32* %_pA, align 16, !alias.scope !13
+; CHECK:   store i32 42, ptr %_pA, align 16, !alias.scope !13
 ; CHECK: for.body:
 ; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !5)
-; CHECK:   store i32 0, i32* %arrayidx, align 16, !noalias !5
-; CHECK:   store i32 43, i32* %_pA, align 16, !alias.scope !5
+; CHECK:   store i32 0, ptr %array, align 16, !noalias !5
+; CHECK:   store i32 43, ptr %_pA, align 16, !alias.scope !5
 ; CHECK:   tail call void @llvm.experimental.noalias.scope.decl(metadata !15)
-; CHECK:   store i32 42, i32* %_pA, align 16, !alias.scope !15
+; CHECK:   store i32 42, ptr %_pA, align 16, !alias.scope !15
 ; CHECK: for.end:
-; CHECK:   store i32 44, i32* %_pA, align 16, !alias.scope !5
+; CHECK:   store i32 44, ptr %_pA, align 16, !alias.scope !5
 
 entry:
   %array = alloca [20 x i32], align 16
@@ -131,21 +128,20 @@ entry:
 for.cond:                                         ; preds = %for.body, %entry
   %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
   tail call void @llvm.experimental.noalias.scope.decl(metadata !2)
-  store i32 42, i32* %_pA, align 16, !alias.scope !2
+  store i32 42, ptr %_pA, align 16, !alias.scope !2
   %cmp = icmp slt i32 %i.0, 100
-  %arrayidx = getelementptr inbounds [20 x i32], [20 x i32]* %array, i64 0, i64 0
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  store i32 0, i32* %arrayidx, align 16, !noalias !2
-  store i32 43, i32* %_pA, align 16, !alias.scope !2
+  store i32 0, ptr %array, align 16, !noalias !2
+  store i32 43, ptr %_pA, align 16, !alias.scope !2
   %inc = add nsw i32 %i.0, 1
   br label %for.cond
 
 for.end:                                          ; preds = %for.cond
-  %arrayidx.lcssa = phi i32* [ %arrayidx, %for.cond ]
-  store i32 44, i32* %_pA, align 16, !alias.scope !2
-  call void @g(i32* %arrayidx.lcssa) nounwind
+  %arrayidx.lcssa = phi ptr [ %array, %for.cond ]
+  store i32 44, ptr %_pA, align 16, !alias.scope !2
+  call void @g(ptr %arrayidx.lcssa) nounwind
   ret void
 }
 

diff  --git a/llvm/test/Transforms/LoopRotate/nosimplifylatch.ll b/llvm/test/Transforms/LoopRotate/nosimplifylatch.ll
index d4d2112b82018..61b5178013698 100644
--- a/llvm/test/Transforms/LoopRotate/nosimplifylatch.ll
+++ b/llvm/test/Transforms/LoopRotate/nosimplifylatch.ll
@@ -6,29 +6,29 @@ target triple = "arm64-apple-ios8.0.0"
 ;CHECK-NEXT: %incdec.ptr.i = getelementptr
 
 ; Function Attrs: alwaysinline inlinehint nounwind readonly ssp
-define linkonce_odr hidden i64 @_ZNSt3__14findINS_11__wrap_iterIPiEEiEET_S4_S4_RKT0_(i64 %__first.coerce, i64 %__last.coerce, i32* nocapture readonly dereferenceable(4) %__value_) {
+define linkonce_odr hidden i64 @_ZNSt3__14findINS_11__wrap_iterIPiEEiEET_S4_S4_RKT0_(i64 %__first.coerce, i64 %__last.coerce, ptr nocapture readonly dereferenceable(4) %__value_) {
 entry:
-  %coerce.val.ip = inttoptr i64 %__first.coerce to i32*
-  %coerce.val.ip2 = inttoptr i64 %__last.coerce to i32*
+  %coerce.val.ip = inttoptr i64 %__first.coerce to ptr
+  %coerce.val.ip2 = inttoptr i64 %__last.coerce to ptr
   br label %for.cond
 
 for.cond:                                         ; preds = %for.inc, %entry
-  %coerce.val.ip9 = phi i32* [ %incdec.ptr.i, %for.inc ], [ %coerce.val.ip, %entry ]
-  %lnot.i = icmp eq i32* %coerce.val.ip9, %coerce.val.ip2
+  %coerce.val.ip9 = phi ptr [ %incdec.ptr.i, %for.inc ], [ %coerce.val.ip, %entry ]
+  %lnot.i = icmp eq ptr %coerce.val.ip9, %coerce.val.ip2
   br i1 %lnot.i, label %for.end, label %for.body
 
 for.body:                                         ; preds = %for.cond
-  %0 = load i32, i32* %coerce.val.ip9, align 4
-  %1 = load i32, i32* %__value_, align 4
+  %0 = load i32, ptr %coerce.val.ip9, align 4
+  %1 = load i32, ptr %__value_, align 4
   %cmp = icmp eq i32 %0, %1
   br i1 %cmp, label %for.end, label %for.inc
 
 for.inc:                                          ; preds = %for.body
-  %incdec.ptr.i = getelementptr inbounds i32, i32* %coerce.val.ip9, i64 1
+  %incdec.ptr.i = getelementptr inbounds i32, ptr %coerce.val.ip9, i64 1
   br label %for.cond
 
 for.end:                                          ; preds = %for.cond, %for.body
-  %coerce.val.ip9.lcssa = phi i32* [ %coerce.val.ip9, %for.cond ], [ %coerce.val.ip9, %for.body ]
-  %coerce.val.pi = ptrtoint i32* %coerce.val.ip9.lcssa to i64
+  %coerce.val.ip9.lcssa = phi ptr [ %coerce.val.ip9, %for.cond ], [ %coerce.val.ip9, %for.body ]
+  %coerce.val.pi = ptrtoint ptr %coerce.val.ip9.lcssa to i64
   ret i64 %coerce.val.pi
 }

diff  --git a/llvm/test/Transforms/LoopRotate/oz-disable.ll b/llvm/test/Transforms/LoopRotate/oz-disable.ll
index 5ac7864b33aa3..6a7847ac0ff21 100644
--- a/llvm/test/Transforms/LoopRotate/oz-disable.ll
+++ b/llvm/test/Transforms/LoopRotate/oz-disable.ll
@@ -14,7 +14,7 @@ declare void @use(i32)
 
 define void @test() {
 entry:
-  %end = load i32, i32* @e
+  %end = load i32, ptr @e
   br label %loop
 
 loop:

diff  --git a/llvm/test/Transforms/LoopRotate/phi-duplicate.ll b/llvm/test/Transforms/LoopRotate/phi-duplicate.ll
index b7ef7b4cd1e8c..f3a36dfcf5de0 100644
--- a/llvm/test/Transforms/LoopRotate/phi-duplicate.ll
+++ b/llvm/test/Transforms/LoopRotate/phi-duplicate.ll
@@ -3,7 +3,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
 target triple = "x86_64-apple-darwin10.0"
 
 ; PR5837
-define void @test(i32 %N, double* %G) nounwind ssp {
+define void @test(i32 %N, ptr %G) nounwind ssp {
 entry:
   br label %for.cond
 
@@ -13,14 +13,14 @@ for.cond:                                         ; preds = %for.body, %entry
   br i1 %cmp, label %for.body, label %for.end
 
 for.body:                                         ; preds = %for.cond
-  %arrayidx = getelementptr inbounds double, double* %G, i64 %j.0 ; <double*> [#uses=1]
-  %tmp3 = load double, double* %arrayidx                  ; <double> [#uses=1]
+  %arrayidx = getelementptr inbounds double, ptr %G, i64 %j.0 ; <ptr> [#uses=1]
+  %tmp3 = load double, ptr %arrayidx                  ; <double> [#uses=1]
   %sub = sub i64 %j.0, 1                          ; <i64> [#uses=1]
-  %arrayidx6 = getelementptr inbounds double, double* %G, i64 %sub ; <double*> [#uses=1]
-  %tmp7 = load double, double* %arrayidx6                 ; <double> [#uses=1]
+  %arrayidx6 = getelementptr inbounds double, ptr %G, i64 %sub ; <ptr> [#uses=1]
+  %tmp7 = load double, ptr %arrayidx6                 ; <double> [#uses=1]
   %add = fadd double %tmp3, %tmp7                 ; <double> [#uses=1]
-  %arrayidx10 = getelementptr inbounds double, double* %G, i64 %j.0 ; <double*> [#uses=1]
-  store double %add, double* %arrayidx10
+  %arrayidx10 = getelementptr inbounds double, ptr %G, i64 %j.0 ; <ptr> [#uses=1]
+  store double %add, ptr %arrayidx10
   %inc = add nsw i64 %j.0, 1                      ; <i64> [#uses=1]
   br label %for.cond
 

diff  --git a/llvm/test/Transforms/LoopRotate/pr22337.ll b/llvm/test/Transforms/LoopRotate/pr22337.ll
index 13b782e3b872f..95468e0019bee 100644
--- a/llvm/test/Transforms/LoopRotate/pr22337.ll
+++ b/llvm/test/Transforms/LoopRotate/pr22337.ll
@@ -1,11 +1,11 @@
 ; RUN: opt < %s -passes=loop-rotate -verify-memoryssa -S | FileCheck %s
 
 @a = external global i8, align 4
- at tmp = global i8* @a
+ at tmp = global ptr @a
 
 define void @f() {
 ; CHECK-LABEL: define void @f(
-; CHECK: getelementptr i8, i8* @a, i32 1
+; CHECK: getelementptr i8, ptr @a, i32 1
 entry:
   br label %for.preheader
 
@@ -16,7 +16,7 @@ for.body:
   br i1 undef, label %if.end, label %if.then8
 
 if.end:
-  %arrayidx = getelementptr i8, i8* @a, i32 1
+  %arrayidx = getelementptr i8, ptr @a, i32 1
   br label %for.preheader
 
 if.then8:

diff  --git a/llvm/test/Transforms/LoopRotate/pr2639.ll b/llvm/test/Transforms/LoopRotate/pr2639.ll
index f33174c444ba2..edb7f5284121a 100644
--- a/llvm/test/Transforms/LoopRotate/pr2639.ll
+++ b/llvm/test/Transforms/LoopRotate/pr2639.ll
@@ -24,7 +24,7 @@ bb5:		; preds = %bb4, %bb3
 	br i1 %exitcond, label %bb7, label %bb4
 
 bb7:		; preds = %bb5
-	store %struct.HexxagonMove* null, %struct.HexxagonMove** null, align 4
+	store ptr null, ptr null, align 4
 	br label %bb8
 
 bb8:		; preds = %bb7, %bb1

diff  --git a/llvm/test/Transforms/LoopRotate/pr51981-scev-problem.ll b/llvm/test/Transforms/LoopRotate/pr51981-scev-problem.ll
index 2df3023b37ad0..dd5031c56722f 100644
--- a/llvm/test/Transforms/LoopRotate/pr51981-scev-problem.ll
+++ b/llvm/test/Transforms/LoopRotate/pr51981-scev-problem.ll
@@ -17,7 +17,7 @@
 ; %div2102 to i16).
 ;
 ; CHECK-SCEV: Classifying expressions for: @test_function
-; CHECK-SCEV:   %wide = load i32, i32* @offset, align 1
+; CHECK-SCEV:   %wide = load i32, ptr @offset, align 1
 ; CHECK-SCEV:   -->  %wide U: full-set S: full-set          Exits: <<Unknown>>              LoopDispositions: { %loop.outer.header: Variant, %loop.inner: Invariant }
 ; CHECK-SCEV:   %narrow = trunc i32 %wide to i16
 ; CHECK-SCEV:   -->  (trunc i32 %wide to i16) U: full-set S: full-set               Exits: <<Unknown>>              LoopDispositions: { %loop.outer.header: Variant, %loop.inner: Invariant }
@@ -25,7 +25,7 @@
 ; CHECK-SCEV:   -->  {(trunc i32 %wide to i16),+,1}<%loop.inner> U: full-set S: full-set           Exits: (-1 + (700 umax (1 + (trunc i32 %wide to i16))))               LoopDispositions: { %loop.inner: Computable, %loop.outer.header: Variant }
 ;
 ; CHECK-SCEV: Classifying expressions for: @test_function
-; CHECK-SCEV:   %wide1 = load i32, i32* @offset, align 1
+; CHECK-SCEV:   %wide1 = load i32, ptr @offset, align 1
 ; CHECK-SCEV:   -->  %wide1 U: full-set S: full-set
 ; CHECK-SCEV:   %wide2 = phi i32 [ %wide1, %loop.inner.ph.lr.ph ], [ %wide, %loop.outer.latch ]
 ; CHECK-SCEV:   -->  %wide2 U: full-set S: full-set         Exits: <<Unknown>>              LoopDispositions: { %loop.inner.ph: Variant, %loop.inner: Invariant }
@@ -43,7 +43,7 @@ entry:
   br label %loop.outer.header
 
 loop.outer.header:                                ; preds = %loop.outer.latch, %entry
-  %wide = load i32, i32* @offset, align 1
+  %wide = load i32, ptr @offset, align 1
   br i1 %cond, label %exit, label %loop.inner.ph
 
 loop.inner.ph:                                    ; preds = %loop.outer.header
@@ -53,8 +53,8 @@ loop.inner.ph:                                    ; preds = %loop.outer.header
 loop.inner:                                       ; preds = %loop.inner, %loop.inner.ph
   %iv = phi i16 [ %narrow, %loop.inner.ph ], [ %iv.plus, %loop.inner ]
   %iv.promoted = zext i16 %iv to i32
-  %gep = getelementptr inbounds [11263 x i32], [11263 x i32]* @array, i32 0, i32 %iv.promoted
-  store i32 7, i32* %gep, align 1
+  %gep = getelementptr inbounds [11263 x i32], ptr @array, i32 0, i32 %iv.promoted
+  store i32 7, ptr %gep, align 1
   %iv.plus = add i16 %iv, 1
   %cmp = icmp ult i16 %iv.plus, 700
   br i1 %cmp, label %loop.inner, label %loop.outer.latch

diff  --git a/llvm/test/Transforms/LoopRotate/preserve-mssa.ll b/llvm/test/Transforms/LoopRotate/preserve-mssa.ll
index f0915edce356b..f8d0ed8b44201 100644
--- a/llvm/test/Transforms/LoopRotate/preserve-mssa.ll
+++ b/llvm/test/Transforms/LoopRotate/preserve-mssa.ll
@@ -24,26 +24,26 @@ cleanup:                                          ; preds = %if.end, %if.end, %i
 }
 
 ; CHECK-LABEL: @read_line(
-define internal fastcc i32 @read_line(i8* nocapture %f) unnamed_addr {
+define internal fastcc i32 @read_line(ptr nocapture %f) unnamed_addr {
 entry:
   br label %for.cond
 
 for.cond:                                         ; preds = %if.end, %entry
-  %call = call i8* @prepbuffer(i8* nonnull undef)
-  %call1 = call i8* @fgets(i8* %call, i32 8192, i8* %f)
+  %call = call ptr @prepbuffer(ptr nonnull undef)
+  %call1 = call ptr @fgets(ptr %call, i32 8192, ptr %f)
   br i1 undef, label %if.then, label %if.end
 
 if.then:                                          ; preds = %for.cond
   ret i32 undef
 
 if.end:                                           ; preds = %for.cond
-  %call4 = call i64 @strlen(i8* %call)
+  %call4 = call i64 @strlen(ptr %call)
   br label %for.cond
 }
 
-declare dso_local i8* @prepbuffer(i8*) local_unnamed_addr
-declare dso_local i8* @fgets(i8*, i32, i8* nocapture) local_unnamed_addr
-declare dso_local i64 @strlen(i8* nocapture) local_unnamed_addr
+declare dso_local ptr @prepbuffer(ptr) local_unnamed_addr
+declare dso_local ptr @fgets(ptr, i32, ptr nocapture) local_unnamed_addr
+declare dso_local i64 @strlen(ptr nocapture) local_unnamed_addr
 
 
 ; CHECK-LABEL: @loop3
@@ -55,7 +55,7 @@ for.cond:                                         ; preds = %for.body, %entry
   br i1 undef, label %for.body, label %for.end81
 
 for.body:                                         ; preds = %for.cond
-  %.idx122.val = load i32, i32* undef, align 8
+  %.idx122.val = load i32, ptr undef, align 8
   call fastcc void @cont()
   br label %for.cond
 
@@ -96,12 +96,12 @@ do.cond:                          ; preds = %for.body
 
 for.body:                               ; preds = %if.end, %entry
   %indvar = phi i64 [ %indvar.next, %if.end ], [ 0, %entry ]
-  %array = getelementptr inbounds [3 x i32], [3 x i32]* @glob_array, i64 0, i64 %indvar
-  %0 = load i32, i32* %array, align 4
+  %array = getelementptr inbounds [3 x i32], ptr @glob_array, i64 0, i64 %indvar
+  %0 = load i32, ptr %array, align 4
   br i1 undef, label %do.cond, label %if.end
 
 if.end:                                 ; preds = %for.body
-  store i32 undef, i32* undef, align 4
+  store i32 undef, ptr undef, align 4
   %indvar.next = add nuw nsw i64 %indvar, 1
   br label %for.body
 }

diff  --git a/llvm/test/Transforms/LoopRotate/preserve-scev.ll b/llvm/test/Transforms/LoopRotate/preserve-scev.ll
index 83ac9dac6bb59..2164f46f1927c 100644
--- a/llvm/test/Transforms/LoopRotate/preserve-scev.ll
+++ b/llvm/test/Transforms/LoopRotate/preserve-scev.ll
@@ -1,47 +1,47 @@
 ; RUN: opt < %s -passes=loop-rotate,loop-reduce -verify-memoryssa -verify-dom-info -verify-loop-info -disable-output
 
-define fastcc void @foo(i32* %A, i64 %i) nounwind {
+define fastcc void @foo(ptr %A, i64 %i) nounwind {
 BB:
   br label %BB1
 
 BB1:                                              ; preds = %BB19, %BB
-  %tttmp1 = getelementptr i32, i32* %A, i64 %i
-  %tttmp2 = load i32, i32* %tttmp1
+  %tttmp1 = getelementptr i32, ptr %A, i64 %i
+  %tttmp2 = load i32, ptr %tttmp1
   %tttmp3 = add i32 %tttmp2, 1
-  store i32 %tttmp3, i32* %tttmp1
+  store i32 %tttmp3, ptr %tttmp1
   br label %BB4
 
 BB2:                                              ; preds = %BB4
   %tmp = bitcast i32 undef to i32                 ; <i32> [#uses=1]
-  %tttmp7 = getelementptr i32, i32* %A, i64 %i
-  %tttmp8 = load i32, i32* %tttmp7
+  %tttmp7 = getelementptr i32, ptr %A, i64 %i
+  %tttmp8 = load i32, ptr %tttmp7
   %tttmp9 = add i32 %tttmp8, 3
-  store i32 %tttmp9, i32* %tttmp7
+  store i32 %tttmp9, ptr %tttmp7
   br label %BB4
 
 BB4:                                              ; preds = %BB2, %BB1
   %tmp5 = phi i32 [ undef, %BB1 ], [ %tmp, %BB2 ] ; <i32> [#uses=1]
-  %tttmp4 = getelementptr i32, i32* %A, i64 %i
-  %tttmp5 = load i32, i32* %tttmp4
+  %tttmp4 = getelementptr i32, ptr %A, i64 %i
+  %tttmp5 = load i32, ptr %tttmp4
   %tttmp6 = add i32 %tttmp5, 3
-  store i32 %tttmp6, i32* %tttmp4
+  store i32 %tttmp6, ptr %tttmp4
   br i1 false, label %BB8, label %BB2
 
 BB8:                                              ; preds = %BB6
   %tmp7 = bitcast i32 %tmp5 to i32                ; <i32> [#uses=2]
-  %tttmp10 = getelementptr i32, i32* %A, i64 %i
-  %tttmp11 = load i32, i32* %tttmp10
+  %tttmp10 = getelementptr i32, ptr %A, i64 %i
+  %tttmp11 = load i32, ptr %tttmp10
   %tttmp12 = add i32 %tttmp11, 3
-  store i32 %tttmp12, i32* %tttmp10
+  store i32 %tttmp12, ptr %tttmp10
   br i1 false, label %BB9, label %BB13
 
 BB9:                                              ; preds = %BB12, %BB8
   %tmp10 = phi i32 [ %tmp11, %BB12 ], [ %tmp7, %BB8 ] ; <i32> [#uses=2]
   %tmp11 = add i32 %tmp10, 1                      ; <i32> [#uses=1]
-  %tttmp13 = getelementptr i32, i32* %A, i64 %i
-  %tttmp14 = load i32, i32* %tttmp13
+  %tttmp13 = getelementptr i32, ptr %A, i64 %i
+  %tttmp14 = load i32, ptr %tttmp13
   %tttmp15 = add i32 %tttmp14, 3
-  store i32 %tttmp15, i32* %tttmp13
+  store i32 %tttmp15, ptr %tttmp13
   br label %BB12
 
 BB12:                                             ; preds = %BB9
@@ -49,28 +49,28 @@ BB12:                                             ; preds = %BB9
 
 BB13:                                             ; preds = %BB15, %BB8
   %tmp14 = phi i32 [ %tmp16, %BB15 ], [ %tmp7, %BB8 ] ; <i32> [#uses=1]
-  %tttmp16 = getelementptr i32, i32* %A, i64 %i
-  %tttmp17 = load i32, i32* %tttmp16
+  %tttmp16 = getelementptr i32, ptr %A, i64 %i
+  %tttmp17 = load i32, ptr %tttmp16
   %tttmp18 = add i32 %tttmp17, 3
-  store i32 %tttmp18, i32* %tttmp16
+  store i32 %tttmp18, ptr %tttmp16
   br label %BB15
 
 BB15:                                             ; preds = %BB13
   %tmp16 = add i32 %tmp14, -1                     ; <i32> [#uses=1]
-  %tttmp19 = getelementptr i32, i32* %A, i64 %i
-  %tttmp20 = load i32, i32* %tttmp19
+  %tttmp19 = getelementptr i32, ptr %A, i64 %i
+  %tttmp20 = load i32, ptr %tttmp19
   %tttmp21 = add i32 %tttmp20, 3
-  store i32 %tttmp21, i32* %tttmp19
+  store i32 %tttmp21, ptr %tttmp19
   br i1 false, label %BB13, label %BB18
 
 BB17:                                             ; preds = %BB12
   br label %BB19
 
 BB18:                                             ; preds = %BB15
-  %tttmp22 = getelementptr i32, i32* %A, i64 %i
-  %tttmp23 = load i32, i32* %tttmp22
+  %tttmp22 = getelementptr i32, ptr %A, i64 %i
+  %tttmp23 = load i32, ptr %tttmp22
   %tttmp24 = add i32 %tttmp23, 3
-  store i32 %tttmp24, i32* %tttmp22
+  store i32 %tttmp24, ptr %tttmp22
   br label %BB19
 
 BB19:                                             ; preds = %BB18, %BB17

diff  --git a/llvm/test/Transforms/LoopRotate/simplifylatch.ll b/llvm/test/Transforms/LoopRotate/simplifylatch.ll
index dc149bdc9e5d7..4219ab76bc976 100644
--- a/llvm/test/Transforms/LoopRotate/simplifylatch.ll
+++ b/llvm/test/Transforms/LoopRotate/simplifylatch.ll
@@ -1,7 +1,7 @@
 ; RUN: opt -S < %s -passes='loop-mssa(loop-rotate,licm)'  -verify-dom-info -verify-loop-info | FileCheck %s
 ; PR2624 unroll multiple exits
 
- at mode_table = global [4 x i32] zeroinitializer		; <[4 x i32]*> [#uses=1]
+ at mode_table = global [4 x i32] zeroinitializer		; <ptr> [#uses=1]
 
 ; CHECK-LABEL: @f(
 ; CHECK-NOT: bb:
@@ -13,8 +13,8 @@ entry:
 bb:		; preds = %bb4, %entry
 	%mode.0 = phi i8 [ 0, %entry ], [ %indvar.next, %bb4 ]		; <i8> [#uses=4]
 	zext i8 %mode.0 to i32		; <i32>:1 [#uses=1]
-	getelementptr [4 x i32], [4 x i32]* @mode_table, i32 0, i32 %1		; <i32*>:2 [#uses=1]
-	load i32, i32* %2, align 4		; <i32>:3 [#uses=1]
+	getelementptr [4 x i32], ptr @mode_table, i32 0, i32 %1		; <ptr>:2 [#uses=1]
+	load i32, ptr %2, align 4		; <i32>:3 [#uses=1]
 	icmp eq i32 %3, %0		; <i1>:4 [#uses=1]
 	br i1 %4, label %bb1, label %bb2
 
@@ -39,12 +39,11 @@ declare i32 @fegetround()
 declare void @raise_exception() noreturn
 
 ;CHECK: for.body.lr.ph:
-;CHECK-NEXT:  %arrayidx1 = getelementptr inbounds i8, i8* %CurPtr, i64 0
-;CHECK-NEXT:  %0 = load i8, i8* %arrayidx1, align 1
+;CHECK-NEXT:  %0 = load i8, ptr %CurPtr, align 1
 ;CHECK-NEXT:  %conv2 = sext i8 %0 to i32
 ;CHECK-NEXT:  br label %for.body
 
-define i32 @foo(i8* %CurPtr, i32 %a) #0 {
+define i32 @foo(ptr %CurPtr, i32 %a) #0 {
 entry:
   br label %for.cond
 
@@ -55,11 +54,10 @@ for.cond:					  ; preds = %for.inc, %entry
 
 for.body:					  ; preds = %for.cond
   %idxprom = zext i32 %i.0 to i64
-  %arrayidx = getelementptr inbounds i8, i8* %CurPtr, i64 %idxprom
-  %0 = load i8, i8* %arrayidx, align 1
+  %arrayidx = getelementptr inbounds i8, ptr %CurPtr, i64 %idxprom
+  %0 = load i8, ptr %arrayidx, align 1
   %conv = sext i8 %0 to i32
-  %arrayidx1 = getelementptr inbounds i8, i8* %CurPtr, i64 0
-  %1 = load i8, i8* %arrayidx1, align 1
+  %1 = load i8, ptr %CurPtr, align 1
   %conv2 = sext i8 %1 to i32
   %cmp3 = icmp ne i32 %conv, %conv2
   br i1 %cmp3, label %return, label %for.inc


        


More information about the llvm-commits mailing list