[llvm] ebdf5ae - FunctionSpecialization: Convert tests to opaque pointers
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 28 06:48:02 PST 2022
Author: Matt Arsenault
Date: 2022-11-28T09:35:48-05:00
New Revision: ebdf5aefcb75ed52f44227a85b190bd26a01dddd
URL: https://github.com/llvm/llvm-project/commit/ebdf5aefcb75ed52f44227a85b190bd26a01dddd
DIFF: https://github.com/llvm/llvm-project/commit/ebdf5aefcb75ed52f44227a85b190bd26a01dddd.diff
LOG: FunctionSpecialization: Convert tests to opaque pointers
Added:
Modified:
llvm/test/Transforms/FunctionSpecialization/bug52821-use-after-free.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-always-inline.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression2.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression3.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression4.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression5.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-loop.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize2.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize3.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-nodup.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-nodup2.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-noexec.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-nonconst-glob.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-nothing-todo.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-poison.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive2.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive3.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive4.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization-stats.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization2.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization3.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization4.ll
llvm/test/Transforms/FunctionSpecialization/function-specialization5.ll
llvm/test/Transforms/FunctionSpecialization/identical-specializations.ll
llvm/test/Transforms/FunctionSpecialization/remove-dead-recursive-function.ll
llvm/test/Transforms/FunctionSpecialization/specialize-multiple-arguments.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/FunctionSpecialization/bug52821-use-after-free.ll b/llvm/test/Transforms/FunctionSpecialization/bug52821-use-after-free.ll
index 32bd29f167fce..d752841279644 100644
--- a/llvm/test/Transforms/FunctionSpecialization/bug52821-use-after-free.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/bug52821-use-after-free.ll
@@ -3,56 +3,56 @@
%mystruct = type { i32, [2 x i64] }
-define internal %mystruct* @myfunc(%mystruct* %arg) {
+define internal ptr @myfunc(ptr %arg) {
; CHECK-LABEL: @myfunc(
; CHECK-NEXT: entry:
; CHECK-NEXT: br label [[FOR_COND:%.*]]
; CHECK: for.cond:
; CHECK-NEXT: br i1 true, label [[FOR_COND2:%.*]], label [[FOR_BODY:%.*]]
; CHECK: for.body:
-; CHECK-NEXT: call void @callee(%mystruct* nonnull null)
+; CHECK-NEXT: call void @callee(ptr nonnull null)
; CHECK-NEXT: br label [[FOR_COND]]
; CHECK: for.cond2:
; CHECK-NEXT: br i1 false, label [[FOR_END:%.*]], label [[FOR_BODY2:%.*]]
; CHECK: for.body2:
-; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [[MYSTRUCT:%.*]], %mystruct* null, i64 0, i32 1, i64 3
+; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [[MYSTRUCT:%.*]], ptr null, i64 0, i32 1, i64 3
; CHECK-NEXT: br label [[FOR_COND2]]
; CHECK: for.end:
-; CHECK-NEXT: ret %mystruct* [[ARG:%.*]]
+; CHECK-NEXT: ret ptr [[ARG:%.*]]
;
entry:
br label %for.cond
for.cond: ; preds = %for.body, %entry
- %phi = phi %mystruct* [ undef, %for.body ], [ null, %entry ]
- %cond = icmp eq %mystruct* %phi, null
+ %phi = phi ptr [ undef, %for.body ], [ null, %entry ]
+ %cond = icmp eq ptr %phi, null
br i1 %cond, label %for.cond2, label %for.body
for.body: ; preds = %for.cond
- call void @callee(%mystruct* nonnull %phi)
+ call void @callee(ptr nonnull %phi)
br label %for.cond
for.cond2: ; preds = %for.body2, %for.cond
- %phi2 = phi %mystruct* [ undef, %for.body2 ], [ null, %for.cond ]
+ %phi2 = phi ptr [ undef, %for.body2 ], [ null, %for.cond ]
br i1 false, label %for.end, label %for.body2
for.body2: ; preds = %for.cond2
- %arrayidx = getelementptr inbounds %mystruct, %mystruct* %phi2, i64 0, i32 1, i64 3
+ %arrayidx = getelementptr inbounds %mystruct, ptr %phi2, i64 0, i32 1, i64 3
br label %for.cond2
for.end: ; preds = %for.cond2
- ret %mystruct* %arg
+ ret ptr %arg
}
-define %mystruct* @caller() {
+define ptr @caller() {
; CHECK-LABEL: @caller(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[CALL:%.*]] = call %mystruct* @myfunc(%mystruct* undef)
-; CHECK-NEXT: ret %mystruct* [[CALL]]
+; CHECK-NEXT: [[CALL:%.*]] = call ptr @myfunc(ptr undef)
+; CHECK-NEXT: ret ptr [[CALL]]
;
entry:
- %call = call %mystruct* @myfunc(%mystruct* undef)
- ret %mystruct* %call
+ %call = call ptr @myfunc(ptr undef)
+ ret ptr %call
}
-declare void @callee(%mystruct*)
+declare void @callee(ptr)
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-always-inline.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-always-inline.ll
index ff5816c3e1008..f93b4cdf5f23e 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-always-inline.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-always-inline.ll
@@ -13,7 +13,7 @@ declare i1 @cond_begin()
declare i1 @cond_end()
declare i1 @getCond()
-define internal i32 @foo(i32 %x, i32* %b, i32* %c) alwaysinline {
+define internal i32 @foo(i32 %x, ptr %b, ptr %c) alwaysinline {
entry:
br label %loop.entry
@@ -24,8 +24,8 @@ loop2.entry:
br label %loop2.body
loop2.body:
- %0 = load i32, i32* %b, align 4
- %1 = load i32, i32* %c, align 4
+ %0 = load i32, ptr %b, align 4
+ %1 = load i32, ptr %c, align 4
%add.0 = add nsw i32 %0, %1
%add = add nsw i32 %add.0, %x
br label %loop2.end
@@ -48,11 +48,11 @@ entry:
br i1 %tobool, label %if.then, label %if.else
if.then:
- %call = call i32 @foo(i32 %x, i32* @A, i32* @C)
+ %call = call i32 @foo(i32 %x, ptr @A, ptr @C)
br label %return
if.else:
- %call1 = call i32 @foo(i32 %y, i32* @B, i32* @D)
+ %call1 = call i32 @foo(i32 %y, ptr @B, ptr @D)
br label %return
return:
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression.ll
index 94a7c864222d6..0bb253b2215cb 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression.ll
@@ -9,20 +9,20 @@
%struct = type { i8, i16, i32, i64, i64}
@Global = internal constant %struct {i8 0, i16 1, i32 2, i64 3, i64 4}
-define internal i64 @func2(i64 *%x) {
+define internal i64 @func2(ptr %x) {
entry:
- %val = ptrtoint i64* %x to i64
+ %val = ptrtoint ptr %x to i64
ret i64 %val
}
-define internal i64 @func(i64 *%x, i64 (i64*)* %binop) {
+define internal i64 @func(ptr %x, ptr %binop) {
; CHECK-LABEL: @func(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[TMP0:%.*]] = call i64 [[BINOP:%.*]](i64* [[X:%.*]])
+; CHECK-NEXT: [[TMP0:%.*]] = call i64 [[BINOP:%.*]](ptr [[X:%.*]])
; CHECK-NEXT: ret i64 [[TMP0]]
;
entry:
- %tmp0 = call i64 %binop(i64* %x)
+ %tmp0 = call i64 %binop(ptr %x)
ret i64 %tmp0
}
@@ -31,10 +31,10 @@ define internal i64 @zoo(i1 %flag) {
; CHECK-NEXT: entry:
; CHECK-NEXT: br i1 [[FLAG:%.*]], label [[PLUS:%.*]], label [[MINUS:%.*]]
; CHECK: plus:
-; CHECK-NEXT: [[TMP0:%.*]] = call i64 @func2.2(i64* getelementptr inbounds ([[STRUCT:%.*]], %struct* @Global, i32 0, i32 3))
+; CHECK-NEXT: [[TMP0:%.*]] = call i64 @func2.2(ptr getelementptr inbounds ([[STRUCT:%.*]], ptr @Global, i32 0, i32 3))
; CHECK-NEXT: br label [[MERGE:%.*]]
; CHECK: minus:
-; CHECK-NEXT: [[TMP1:%.*]] = call i64 @func2.1(i64* getelementptr inbounds ([[STRUCT]], %struct* @Global, i32 0, i32 4))
+; CHECK-NEXT: [[TMP1:%.*]] = call i64 @func2.1(ptr getelementptr inbounds ([[STRUCT]], ptr @Global, i32 0, i32 4))
; CHECK-NEXT: br label [[MERGE]]
; CHECK: merge:
; CHECK-NEXT: [[TMP2:%.*]] = phi i64 [ [[TMP0]], [[PLUS]] ], [ [[TMP1]], [[MINUS]] ]
@@ -44,13 +44,13 @@ entry:
br i1 %flag, label %plus, label %minus
plus:
- %arg = getelementptr %struct, %struct* @Global, i32 0, i32 3
- %tmp0 = call i64 @func2(i64* %arg)
+ %arg = getelementptr %struct, ptr @Global, i32 0, i32 3
+ %tmp0 = call i64 @func2(ptr %arg)
br label %merge
minus:
- %arg2 = getelementptr %struct, %struct* @Global, i32 0, i32 4
- %tmp1 = call i64 @func2(i64* %arg2)
+ %arg2 = getelementptr %struct, ptr @Global, i32 0, i32 4
+ %tmp1 = call i64 @func2(ptr %arg2)
br label %merge
merge:
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression2.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression2.ll
index 0f3c79cb8e9f1..07bd690ed1ccc 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression2.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression2.ll
@@ -10,25 +10,23 @@
@global.5 = external dso_local global [4 x %struct.pluto], align 1
@global.12 = external global %struct.quux, align 1
-define internal i16 @wobble.972(%struct.quux* byval(%struct.quux) align 1 %arg, i16 %arg1, %struct.spam* byval(%struct.spam) align 1 %arg2, %struct.quux* byval(%struct.quux) align 1 %arg3) #4 {
+define internal i16 @wobble.972(ptr byval(%struct.quux) align 1 %arg, i16 %arg1, ptr byval(%struct.spam) align 1 %arg2, ptr byval(%struct.quux) align 1 %arg3) #4 {
; CHECK-LABEL: @wobble.972(
; CHECK-NEXT: bb:
-; CHECK-NEXT: [[TMP34:%.*]] = bitcast %struct.spam* [[ARG2:%.*]] to i16*
; CHECK-NEXT: unreachable
;
bb:
- %tmp34 = bitcast %struct.spam* %arg2 to i16*
unreachable
}
define internal i16 @snork() {
; CHECK-LABEL: @snork(
; CHECK-NEXT: bb4:
-; CHECK-NEXT: [[TMP:%.*]] = call i16 @wobble.972(%struct.quux* byval([[STRUCT_QUUX:%.*]]) align 1 undef, i16 undef, %struct.spam* byval([[STRUCT_SPAM:%.*]]) align 1 getelementptr inbounds ([4 x %struct.pluto], [4 x %struct.pluto]* @global.5, i32 0, i32 3, i32 0), %struct.quux* byval([[STRUCT_QUUX]]) align 1 @global.12)
+; CHECK-NEXT: [[TMP:%.*]] = call i16 @wobble.972(ptr byval([[STRUCT_QUUX:%.*]]) align 1 undef, i16 undef, ptr byval([[STRUCT_SPAM:%.*]]) align 1 getelementptr inbounds ([4 x %struct.pluto], ptr @global.5, i32 0, i32 3, i32 0), ptr byval([[STRUCT_QUUX]]) align 1 @global.12)
; CHECK-NEXT: unreachable
;
bb4:
- %tmp = call i16 @wobble.972(%struct.quux* byval(%struct.quux) align 1 undef, i16 undef, %struct.spam* byval(%struct.spam) align 1 getelementptr inbounds ([4 x %struct.pluto], [4 x %struct.pluto]* @global.5, i32 0, i32 3, i32 0), %struct.quux* byval(%struct.quux) align 1 @global.12)
+ %tmp = call i16 @wobble.972(ptr byval(%struct.quux) align 1 undef, i16 undef, ptr byval(%struct.spam) align 1 getelementptr inbounds ([4 x %struct.pluto], ptr @global.5, i32 0, i32 3, i32 0), ptr byval(%struct.quux) align 1 @global.12)
unreachable
}
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression3.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression3.ll
index 3f691839a3df8..d8924c2489e8a 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression3.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression3.ll
@@ -4,21 +4,21 @@
define i32 @main() {
; CHECK-LABEL: @main(
; CHECK-NEXT: bb:
-; CHECK-NEXT: tail call void @wombat.1(i8* undef, i64 undef, i64 undef, i32 (i8*, i8*)* bitcast (i32 ()* @quux to i32 (i8*, i8*)*))
-; CHECK-NEXT: tail call void @wombat.2(i8* undef, i64 undef, i64 undef, i32 (i8*, i8*)* bitcast (i32 ()* @eggs to i32 (i8*, i8*)*))
+; CHECK-NEXT: tail call void @wombat.1(ptr undef, i64 undef, i64 undef, ptr @quux)
+; CHECK-NEXT: tail call void @wombat.2(ptr undef, i64 undef, i64 undef, ptr @eggs)
; CHECK-NEXT: ret i32 undef
;
bb:
- tail call void @wombat(i8* undef, i64 undef, i64 undef, i32 (i8*, i8*)* bitcast (i32 ()* @quux to i32 (i8*, i8*)*))
- tail call void @wombat(i8* undef, i64 undef, i64 undef, i32 (i8*, i8*)* bitcast (i32 ()* @eggs to i32 (i8*, i8*)*))
+ tail call void @wombat(ptr undef, i64 undef, i64 undef, ptr @quux)
+ tail call void @wombat(ptr undef, i64 undef, i64 undef, ptr @eggs)
ret i32 undef
}
declare i32 @quux()
declare i32 @eggs()
-define internal void @wombat(i8* %arg, i64 %arg1, i64 %arg2, i32 (i8*, i8*)* %arg3) {
+define internal void @wombat(ptr %arg, i64 %arg1, i64 %arg2, ptr %arg3) {
bb4:
- %tmp = tail call i32 %arg3(i8* undef, i8* undef)
+ %tmp = tail call i32 %arg3(ptr undef, ptr undef)
ret void
}
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression4.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression4.ll
index 93f695d14f6cf..a7df6cbde05a5 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression4.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression4.ll
@@ -4,29 +4,27 @@
; CHECK-NOT: wombat.{{[0-9]+}}
-declare i32* @quux()
-declare i32* @eggs()
+declare ptr @quux()
+declare ptr @eggs()
define i32 @main() {
; CHECK: bb:
-; CHECK-NEXT: tail call void @wombat(i8* undef, i64 undef, i64 undef, i32* byval(i32) bitcast (i32* ()* @quux to i32*))
-; CHECK-NEXT: tail call void @wombat(i8* undef, i64 undef, i64 undef, i32* byval(i32) bitcast (i32* ()* @eggs to i32*))
+; CHECK-NEXT: tail call void @wombat(ptr undef, i64 undef, i64 undef, ptr byval(i32) @quux)
+; CHECK-NEXT: tail call void @wombat(ptr undef, i64 undef, i64 undef, ptr byval(i32) @eggs)
; CHECK-NEXT: ret i32 undef
;
bb:
- tail call void @wombat(i8* undef, i64 undef, i64 undef, i32* byval(i32) bitcast (i32* ()* @quux to i32*))
- tail call void @wombat(i8* undef, i64 undef, i64 undef, i32* byval(i32) bitcast (i32* ()* @eggs to i32*))
+ tail call void @wombat(ptr undef, i64 undef, i64 undef, ptr byval(i32) @quux)
+ tail call void @wombat(ptr undef, i64 undef, i64 undef, ptr byval(i32) @eggs)
ret i32 undef
}
-define internal void @wombat(i8* %arg, i64 %arg1, i64 %arg2, i32* byval(i32) %func) {
+define internal void @wombat(ptr %arg, i64 %arg1, i64 %arg2, ptr byval(i32) %func) {
; CHECK: bb2:
-; CHECK-NEXT: [[FUNPTR:%.*]] = bitcast i32* %func to i32* (i8*, i8*)*
-; CHECK-NEXT: [[TMP:%.*]] = tail call i32* [[FUNPTR]](i8* undef, i8* undef)
+; CHECK-NEXT: [[TMP:%.*]] = tail call ptr %func(ptr undef, ptr undef)
; CHECK-NEXT: ret void
;
bb2:
- %mycall = bitcast i32* %func to i32* (i8*, i8*)*
- %tmp = tail call i32* %mycall(i8* undef, i8* undef)
+ %tmp = tail call ptr %func(ptr undef, ptr undef)
ret void
}
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression5.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression5.ll
index 01228984842f5..1a3a2c0fbac8a 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression5.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-constant-expression5.ll
@@ -12,25 +12,23 @@
@global.5 = external dso_local global i128
@global.12 = external global %struct.quux
-define internal i16 @wobble(%struct.quux* %arg, i16 %arg1, i128* byval(i128) %arg2, %struct.quux* %arg3) {
+define internal i16 @wobble(ptr %arg, i16 %arg1, ptr byval(i128) %arg2, ptr %arg3) {
; CHECK-LABEL: @wobble(
; CHECK-NEXT: bb:
-; CHECK-NEXT: [[TMP34:%.*]] = bitcast i128* [[ARG2:%.*]] to i16*
; CHECK-NEXT: unreachable
;
bb:
- %tmp34 = bitcast i128* %arg2 to i16*
unreachable
}
define internal i16 @snork() {
; CHECK-LABEL: @snork(
; CHECK-NEXT: bb4:
-; CHECK-NEXT: [[TMP35:%.*]] = call i16 @wobble(%struct.quux* undef, i16 2, i128* byval(i128) @global.5, %struct.quux* @global.12)
+; CHECK-NEXT: [[TMP35:%.*]] = call i16 @wobble(ptr undef, i16 2, ptr byval(i128) @global.5, ptr @global.12)
; CHECK-NEXT: unreachable
;
bb4:
- %tmp35 = call i16 @wobble(%struct.quux* undef, i16 2, i128* byval(i128) @global.5, %struct.quux* @global.12)
+ %tmp35 = call i16 @wobble(ptr undef, i16 2, ptr byval(i128) @global.5, ptr @global.12)
unreachable
}
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-loop.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-loop.ll
index 919f583b27a83..d3af3c44e6a58 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-loop.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-loop.ll
@@ -15,7 +15,7 @@ declare i1 @cond_begin()
declare i1 @cond_end()
declare i1 @getCond()
-define internal i32 @foo(i32 %x, i32* %b, i32* %c) {
+define internal i32 @foo(i32 %x, ptr %b, ptr %c) {
entry:
br label %loop.entry
@@ -26,8 +26,8 @@ loop2.entry:
br label %loop2.body
loop2.body:
- %0 = load i32, i32* %b, align 4
- %1 = load i32, i32* %c, align 4
+ %0 = load i32, ptr %b, align 4
+ %1 = load i32, ptr %c, align 4
%add.0 = add nsw i32 %0, %1
%add = add nsw i32 %add.0, %x
br label %loop2.end
@@ -50,11 +50,11 @@ entry:
br i1 %tobool, label %if.then, label %if.else
if.then:
- %call = call i32 @foo(i32 %x, i32* @A, i32* @C)
+ %call = call i32 @foo(i32 %x, ptr @A, ptr @C)
br label %return
if.else:
- %call1 = call i32 @foo(i32 %y, i32* @B, i32* @D)
+ %call1 = call i32 @foo(i32 %y, ptr @B, ptr @D)
br label %return
return:
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize.ll
index 8fc5438b2e42c..7df997c6e93bf 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize.ll
@@ -8,11 +8,11 @@ entry:
br i1 %flag, label %plus, label %minus
plus:
- %tmp0 = call i64 @compute(i64 %x, i64 (i64)* @plus)
+ %tmp0 = call i64 @compute(i64 %x, ptr @plus)
br label %merge
minus:
- %tmp1 = call i64 @compute(i64 %x, i64 (i64)* @minus)
+ %tmp1 = call i64 @compute(i64 %x, ptr @minus)
br label %merge
merge:
@@ -20,7 +20,7 @@ merge:
ret i64 %tmp2
}
-define internal i64 @compute(i64 %x, i64 (i64)* %binop) minsize {
+define internal i64 @compute(i64 %x, ptr %binop) minsize {
entry:
%tmp0 = call i64 %binop(i64 %x)
ret i64 %tmp0
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize2.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize2.ll
index 80ea1a47954e5..cc6661da59d3b 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize2.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize2.ll
@@ -11,11 +11,11 @@ entry:
br i1 %flag, label %plus, label %minus
plus:
- %tmp0 = call i64 @compute(i64 %x, i64 (i64)* @plus) #0
+ %tmp0 = call i64 @compute(i64 %x, ptr @plus) #0
br label %merge
minus:
- %tmp1 = call i64 @compute(i64 %x, i64 (i64)* @minus) #0
+ %tmp1 = call i64 @compute(i64 %x, ptr @minus) #0
br label %merge
merge:
@@ -23,7 +23,7 @@ merge:
ret i64 %tmp2
}
-define internal i64 @compute(i64 %x, i64 (i64)* %binop) {
+define internal i64 @compute(i64 %x, ptr %binop) {
entry:
%tmp0 = call i64 %binop(i64 %x)
ret i64 %tmp0
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize3.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize3.ll
index 4321b2fecc3cd..32f452e29fb5c 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize3.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-minsize3.ll
@@ -4,10 +4,10 @@
; specialisation for the call that does not have the attribute:
;
; CHECK: plus:
-; CHECK: %tmp0 = call i64 @compute.1(i64 %x, i64 (i64)* @plus)
+; CHECK: %tmp0 = call i64 @compute.1(i64 %x, ptr @plus)
; CHECK: br label %merge
; CHECK: minus:
-; CHECK: %tmp1 = call i64 @compute(i64 %x, i64 (i64)* @minus) #0
+; CHECK: %tmp1 = call i64 @compute(i64 %x, ptr @minus) #0
; CHECK: br label %merge
;
define i64 @main(i64 %x, i1 %flag) {
@@ -15,11 +15,11 @@ entry:
br i1 %flag, label %plus, label %minus
plus:
- %tmp0 = call i64 @compute(i64 %x, i64 (i64)* @plus)
+ %tmp0 = call i64 @compute(i64 %x, ptr @plus)
br label %merge
minus:
- %tmp1 = call i64 @compute(i64 %x, i64 (i64)* @minus) #0
+ %tmp1 = call i64 @compute(i64 %x, ptr @minus) #0
br label %merge
merge:
@@ -27,7 +27,7 @@ merge:
ret i64 %tmp2
}
-define internal i64 @compute(i64 %x, i64 (i64)* %binop) {
+define internal i64 @compute(i64 %x, ptr %binop) {
entry:
%tmp0 = call i64 %binop(i64 %x)
ret i64 %tmp0
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-nodup.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-nodup.ll
index fa726b66fe596..60ec256d90a66 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-nodup.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-nodup.ll
@@ -17,11 +17,11 @@ entry:
br i1 %tobool, label %if.then, label %if.else
if.then:
- %call = call i32 @foo(i32 %x, i32* @A)
+ %call = call i32 @foo(i32 %x, ptr @A)
br label %return
if.else:
- %call1 = call i32 @foo(i32 %y, i32* @B)
+ %call1 = call i32 @foo(i32 %y, ptr @B)
br label %return
return:
@@ -29,9 +29,9 @@ return:
ret i32 %retval.0
}
-define internal i32 @foo(i32 %x, i32* %b) #0 {
+define internal i32 @foo(i32 %x, ptr %b) #0 {
entry:
- %0 = load i32, i32* %b, align 4
+ %0 = load i32, ptr %b, align 4
%add = add nsw i32 %x, %0
ret i32 %add
}
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-nodup2.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-nodup2.ll
index 84d5dd81bf3c2..22a31b0bf886e 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-nodup2.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-nodup2.ll
@@ -19,11 +19,11 @@ entry:
br i1 %tobool, label %if.then, label %if.else
if.then:
- %call = call i32 @foo(i32 %x, i32* @A)
+ %call = call i32 @foo(i32 %x, ptr @A)
br label %return
if.else:
- %call1 = call i32 @foo(i32 %y, i32* @B)
+ %call1 = call i32 @foo(i32 %y, ptr @B)
br label %return
return:
@@ -31,9 +31,9 @@ return:
ret i32 %retval.0
}
-define internal i32 @foo(i32 %x, i32* %b) {
+define internal i32 @foo(i32 %x, ptr %b) {
entry:
- %0 = load i32, i32* %b, align 4
+ %0 = load i32, ptr %b, align 4
%add = add nsw i32 %x, %0
%cmp = call i1 @llvm.test.set.loop.iterations.i32(i32 42)
ret i32 %add
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-noexec.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-noexec.ll
index 8e205965f4bc3..3b39b35d825cb 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-noexec.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-noexec.ll
@@ -16,11 +16,11 @@ entry:
br i1 false, label %if.then, label %if.else
if.then:
- %call = call i32 @foo(i32 %x, i32* @A)
+ %call = call i32 @foo(i32 %x, ptr @A)
br label %return
if.else:
- %call1 = call i32 @foo(i32 %y, i32* @B)
+ %call1 = call i32 @foo(i32 %y, ptr @B)
br label %return
return:
@@ -28,9 +28,9 @@ return:
ret i32 %retval.0
}
-define internal i32 @foo(i32 %x, i32* %b) {
+define internal i32 @foo(i32 %x, ptr %b) {
entry:
- %0 = load i32, i32* %b, align 4
+ %0 = load i32, ptr %b, align 4
%add = add nsw i32 %x, %0
ret i32 %add
}
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-nonconst-glob.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-nonconst-glob.ll
index 42a7dc6f5af03..7879b414fe530 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-nonconst-glob.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-nonconst-glob.ll
@@ -7,8 +7,8 @@
; Global B is not constant. We do not specialise on addresses unless we
; enable that:
-; ON-ADDRESS: call i32 @foo.1(i32 %x, i32* @A)
-; ON-ADDRESS: call i32 @foo.2(i32 %y, i32* @B)
+; ON-ADDRESS: call i32 @foo.1(i32 %x, ptr @A)
+; ON-ADDRESS: call i32 @foo.2(i32 %y, ptr @B)
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
@@ -21,10 +21,10 @@ define dso_local i32 @bar(i32 %x, i32 %y) {
; CHECK-NEXT: [[TOBOOL:%.*]] = icmp ne i32 [[X:%.*]], 0
; CHECK-NEXT: br i1 [[TOBOOL]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]]
; CHECK: if.then:
-; CHECK-NEXT: [[CALL:%.*]] = call i32 @foo.1(i32 [[X]], i32* @A)
+; CHECK-NEXT: [[CALL:%.*]] = call i32 @foo.1(i32 [[X]], ptr @A)
; CHECK-NEXT: br label [[RETURN:%.*]]
; CHECK: if.else:
-; CHECK-NEXT: [[CALL1:%.*]] = call i32 @foo(i32 [[Y:%.*]], i32* @B)
+; CHECK-NEXT: [[CALL1:%.*]] = call i32 @foo(i32 [[Y:%.*]], ptr @B)
; CHECK-NEXT: br label [[RETURN]]
; CHECK: return:
; CHECK-NEXT: [[RETVAL_0:%.*]] = phi i32 [ [[CALL]], [[IF_THEN]] ], [ [[CALL1]], [[IF_ELSE]] ]
@@ -35,11 +35,11 @@ entry:
br i1 %tobool, label %if.then, label %if.else
if.then:
- %call = call i32 @foo(i32 %x, i32* @A)
+ %call = call i32 @foo(i32 %x, ptr @A)
br label %return
if.else:
- %call1 = call i32 @foo(i32 %y, i32* @B)
+ %call1 = call i32 @foo(i32 %y, ptr @B)
br label %return
return:
@@ -47,22 +47,22 @@ return:
ret i32 %retval.0
}
-define internal i32 @foo(i32 %x, i32* %b) {
+define internal i32 @foo(i32 %x, ptr %b) {
; CHECK-LABEL: define internal i32 @foo(
; CHECK-NEXT: entry:
-; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[B:%.*]], align 4
+; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[B:%.*]], align 4
; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[X:%.*]], [[TMP0]]
; CHECK-NEXT: ret i32 [[ADD]]
;
entry:
- %0 = load i32, i32* %b, align 4
+ %0 = load i32, ptr %b, align 4
%add = add nsw i32 %x, %0
ret i32 %add
}
-; CHECK-LABEL: define internal i32 @foo.1(i32 %x, i32* %b) {
+; CHECK-LABEL: define internal i32 @foo.1(i32 %x, ptr %b) {
; CHECK-NEXT: entry:
-; CHECK-NEXT: %0 = load i32, i32* @A, align 4
+; CHECK-NEXT: %0 = load i32, ptr @A, align 4
; CHECK-NEXT: %add = add nsw i32 %x, %0
; CHECK-NEXT: ret i32 %add
; CHECK-NEXT: }
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-nothing-todo.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-nothing-todo.ll
index b707eca22360d..22cacb136a1ed 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-nothing-todo.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-nothing-todo.ll
@@ -22,8 +22,8 @@
; CHECK-NOT: call i32 @llvm.ssa.copy.i32
@N = external dso_local global i32, align 4
- at B = external dso_local global i32*, align 8
- at A = external dso_local global i32*, align 8
+ at B = external dso_local global ptr, align 8
+ at A = external dso_local global ptr, align 8
define dso_local i32 @foo() {
entry:
@@ -31,7 +31,7 @@ entry:
for.cond:
%i.0 = phi i32 [ 0, %entry ], [ %inc, %for.body ]
- %0 = load i32, i32* @N, align 4
+ %0 = load i32, ptr @N, align 4
%cmp = icmp slt i32 %i.0, %0
br i1 %cmp, label %for.body, label %for.cond.cleanup
@@ -39,13 +39,13 @@ for.cond.cleanup:
ret i32 undef
for.body:
- %1 = load i32*, i32** @B, align 8
+ %1 = load ptr, ptr @B, align 8
%idxprom = sext i32 %i.0 to i64
- %arrayidx = getelementptr inbounds i32, i32* %1, i64 %idxprom
- %2 = load i32, i32* %arrayidx, align 4
- %3 = load i32*, i32** @A, align 8
- %arrayidx2 = getelementptr inbounds i32, i32* %3, i64 %idxprom
- store i32 %2, i32* %arrayidx2, align 4
+ %arrayidx = getelementptr inbounds i32, ptr %1, i64 %idxprom
+ %2 = load i32, ptr %arrayidx, align 4
+ %3 = load ptr, ptr @A, align 8
+ %arrayidx2 = getelementptr inbounds i32, ptr %3, i64 %idxprom
+ store i32 %2, ptr %arrayidx2, align 4
%inc = add nsw i32 %i.0, 1
br label %for.cond
}
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-poison.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-poison.ll
index d359deedcc496..e605e0fbbaef2 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-poison.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-poison.ll
@@ -8,25 +8,23 @@
@global.12 = external global %struct.quux, align 1
-define internal i16 @wobble(%struct.spam* byval(%struct.spam) %arg2) {
+define internal i16 @wobble(ptr byval(%struct.spam) %arg2) {
; CHECK-LABEL: @wobble(
; CHECK-NEXT: bb:
-; CHECK-NEXT: [[C:%.*]] = bitcast %struct.spam* [[ARG2:%.*]] to i16*
; CHECK-NEXT: unreachable
;
bb:
- %C = bitcast %struct.spam* %arg2 to i16*
unreachable
}
define internal i16 @snork() {
; CHECK-LABEL: @snork(
; CHECK-NEXT: bb4:
-; CHECK-NEXT: [[B:%.*]] = call i16 @wobble(%struct.spam* poison)
+; CHECK-NEXT: [[B:%.*]] = call i16 @wobble(ptr poison)
; CHECK-NEXT: unreachable
;
bb4:
- %B = call i16 @wobble(%struct.spam* poison)
+ %B = call i16 @wobble(ptr poison)
unreachable
}
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive.ll
index 82020edec442f..5cea9f1d62f24 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive.ll
@@ -5,11 +5,11 @@
@low = internal constant i32 0, align 4
@high = internal constant i32 6, align 4
-define internal void @recursiveFunc(i32* nocapture readonly %lo, i32 %step, i32* nocapture readonly %hi) {
+define internal void @recursiveFunc(ptr nocapture readonly %lo, i32 %step, ptr nocapture readonly %hi) {
%lo.temp = alloca i32, align 4
%hi.temp = alloca i32, align 4
- %lo.load = load i32, i32* %lo, align 4
- %hi.load = load i32, i32* %hi, align 4
+ %lo.load = load i32, ptr %lo, align 4
+ %hi.load = load i32, ptr %hi, align 4
%cmp = icmp ne i32 %lo.load, %hi.load
br i1 %cmp, label %block6, label %ret.block
@@ -17,9 +17,9 @@ block6:
call void @print_val(i32 %lo.load, i32 %hi.load)
%add = add nsw i32 %lo.load, %step
%sub = sub nsw i32 %hi.load, %step
- store i32 %add, i32* %lo.temp, align 4
- store i32 %sub, i32* %hi.temp, align 4
- call void @recursiveFunc(i32* nonnull %lo.temp, i32 %step, i32* nonnull %hi.temp)
+ store i32 %add, ptr %lo.temp, align 4
+ store i32 %sub, ptr %hi.temp, align 4
+ call void @recursiveFunc(ptr nonnull %lo.temp, i32 %step, ptr nonnull %hi.temp)
br label %ret.block
ret.block:
@@ -36,14 +36,14 @@ define i32 @main() {
; ITERS2-LABEL: @main(
; ITERS2-NEXT: call void @print_val(i32 0, i32 6)
; ITERS2-NEXT: call void @print_val(i32 1, i32 5)
-; ITERS2-NEXT: call void @recursiveFunc(i32* nonnull @funcspec.arg.4, i32 1, i32* nonnull @funcspec.arg.5)
+; ITERS2-NEXT: call void @recursiveFunc(ptr nonnull @funcspec.arg.4, i32 1, ptr nonnull @funcspec.arg.5)
; ITERS2-NEXT: ret i32 0
;
; ITERS3-LABEL: @main(
; ITERS3-NEXT: call void @print_val(i32 0, i32 6)
; ITERS3-NEXT: call void @print_val(i32 1, i32 5)
; ITERS3-NEXT: call void @print_val(i32 2, i32 4)
-; ITERS3-NEXT: call void @recursiveFunc(i32* nonnull @funcspec.arg.7, i32 1, i32* nonnull @funcspec.arg.8)
+; ITERS3-NEXT: call void @recursiveFunc(ptr nonnull @funcspec.arg.7, i32 1, ptr nonnull @funcspec.arg.8)
; ITERS3-NEXT: ret i32 0
;
; ITERS4-LABEL: @main(
@@ -52,7 +52,7 @@ define i32 @main() {
; ITERS4-NEXT: call void @print_val(i32 2, i32 4)
; ITERS4-NEXT: ret i32 0
;
- call void @recursiveFunc(i32* nonnull @low, i32 1, i32* nonnull @high)
+ call void @recursiveFunc(ptr nonnull @low, i32 1, ptr nonnull @high)
ret i32 0
}
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive2.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive2.ll
index 8bac3cf26f4bd..d62cc6fb3fa2e 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive2.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive2.ll
@@ -7,17 +7,17 @@
@Global = internal constant i32 1, align 4
-define internal void @recursiveFunc(i32* nocapture readonly %arg) {
+define internal void @recursiveFunc(ptr nocapture readonly %arg) {
%temp = alloca i32, align 4
- %arg.load = load i32, i32* %arg, align 4
+ %arg.load = load i32, ptr %arg, align 4
%arg.cmp = icmp slt i32 %arg.load, 4
br i1 %arg.cmp, label %block6, label %ret.block
block6:
call void @print_val(i32 %arg.load)
%arg.add = add nsw i32 %arg.load, 1
- store volatile i32 %arg.add, i32* %temp, align 4
- call void @recursiveFunc(i32* nonnull %temp)
+ store volatile i32 %arg.add, ptr %temp, align 4
+ call void @recursiveFunc(ptr nonnull %temp)
br label %ret.block
ret.block:
@@ -25,7 +25,7 @@ ret.block:
}
define i32 @main() {
- call void @recursiveFunc(i32* nonnull @Global)
+ call void @recursiveFunc(ptr nonnull @Global)
ret i32 0
}
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive3.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive3.ll
index 46b7761e9d707..e234b003d2d44 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive3.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive3.ll
@@ -7,18 +7,18 @@
@Global = internal constant i32 1, align 4
-define internal void @recursiveFunc(i32* nocapture readonly %arg) {
+define internal void @recursiveFunc(ptr nocapture readonly %arg) {
%temp = alloca i32, align 4
- %arg.load = load i32, i32* %arg, align 4
+ %arg.load = load i32, ptr %arg, align 4
%arg.cmp = icmp slt i32 %arg.load, 4
br i1 %arg.cmp, label %block6, label %ret.block
block6:
call void @print_val(i32 %arg.load)
%arg.add = add nsw i32 %arg.load, 1
- store i32 %arg.add, i32* %temp, align 4
- store i32 %arg.add, i32* %temp, align 4
- call void @recursiveFunc(i32* nonnull %temp)
+ store i32 %arg.add, ptr %temp, align 4
+ store i32 %arg.add, ptr %temp, align 4
+ call void @recursiveFunc(ptr nonnull %temp)
br label %ret.block
ret.block:
@@ -27,7 +27,7 @@ ret.block:
define i32 @main() {
- call void @recursiveFunc(i32* nonnull @Global)
+ call void @recursiveFunc(ptr nonnull @Global)
ret i32 0
}
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive4.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive4.ll
index 294c6e00f38a9..d46b12153ea43 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive4.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-recursive4.ll
@@ -7,17 +7,16 @@
@Global = internal constant i32 1, align 4
-define internal void @recursiveFunc(i32* nocapture readonly %arg) {
+define internal void @recursiveFunc(ptr nocapture readonly %arg) {
%temp = alloca float, align 4
- %arg.load = load i32, i32* %arg, align 4
+ %arg.load = load i32, ptr %arg, align 4
%arg.cmp = icmp slt i32 %arg.load, 4
br i1 %arg.cmp, label %block6, label %ret.block
block6:
call void @print_val(i32 %arg.load)
%arg.add = add nsw i32 %arg.load, 1
- %bc = bitcast float* %temp to i32*
- call void @recursiveFunc(i32* nonnull %bc)
+ call void @recursiveFunc(ptr nonnull %temp)
br label %ret.block
ret.block:
@@ -25,7 +24,7 @@ ret.block:
}
define i32 @main() {
- call void @recursiveFunc(i32* nonnull @Global)
+ call void @recursiveFunc(ptr nonnull @Global)
ret i32 0
}
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization-stats.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization-stats.ll
index a3959561dc151..9dd7ed0a2ab9a 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization-stats.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization-stats.ll
@@ -8,11 +8,11 @@ entry:
br i1 %flag, label %plus, label %minus
plus:
- %tmp0 = call i64 @compute(i64 %x, i64 (i64)* @plus)
+ %tmp0 = call i64 @compute(i64 %x, ptr @plus)
br label %merge
minus:
- %tmp1 = call i64 @compute(i64 %x, i64 (i64)* @minus)
+ %tmp1 = call i64 @compute(i64 %x, ptr @minus)
br label %merge
merge:
@@ -20,7 +20,7 @@ merge:
ret i64 %tmp2
}
-define internal i64 @compute(i64 %x, i64 (i64)* %binop) {
+define internal i64 @compute(i64 %x, ptr %binop) {
entry:
%tmp0 = call i64 %binop(i64 %x)
ret i64 %tmp0
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization.ll
index 17349172be7b3..ae0c530a612f2 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization.ll
@@ -6,10 +6,10 @@ define i64 @main(i64 %x, i1 %flag) {
; CHECK: entry:
; CHECK-NEXT: br i1 %flag, label %plus, label %minus
; CHECK: plus:
-; CHECK-NEXT: [[TMP0:%.+]] = call i64 @compute.1(i64 %x, i64 (i64)* @plus)
+; CHECK-NEXT: [[TMP0:%.+]] = call i64 @compute.1(i64 %x, ptr @plus)
; CHECK-NEXT: br label %merge
; CHECK: minus:
-; CHECK-NEXT: [[TMP1:%.+]] = call i64 @compute.2(i64 %x, i64 (i64)* @minus)
+; CHECK-NEXT: [[TMP1:%.+]] = call i64 @compute.2(i64 %x, ptr @minus)
; CHECK-NEXT: br label %merge
; CHECK: merge:
; CHECK-NEXT: [[TMP2:%.+]] = phi i64 [ [[TMP0]], %plus ], [ [[TMP1]], %minus ]
@@ -20,11 +20,11 @@ entry:
br i1 %flag, label %plus, label %minus
plus:
- %tmp0 = call i64 @compute(i64 %x, i64 (i64)* @plus)
+ %tmp0 = call i64 @compute(i64 %x, ptr @plus)
br label %merge
minus:
- %tmp1 = call i64 @compute(i64 %x, i64 (i64)* @minus)
+ %tmp1 = call i64 @compute(i64 %x, ptr @minus)
br label %merge
merge:
@@ -34,19 +34,19 @@ merge:
; CHECK-NOT: define internal i64 @compute(
;
-; CHECK-LABEL: define internal i64 @compute.1(i64 %x, i64 (i64)* %binop) {
+; CHECK-LABEL: define internal i64 @compute.1(i64 %x, ptr %binop) {
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.+]] = call i64 @plus(i64 %x)
; CHECK-NEXT: ret i64 [[TMP0]]
; CHECK-NEXT: }
;
-; CHECK-LABEL: define internal i64 @compute.2(i64 %x, i64 (i64)* %binop) {
+; CHECK-LABEL: define internal i64 @compute.2(i64 %x, ptr %binop) {
; CHECK-NEXT: entry:
; CHECK-NEXT: [[TMP0:%.+]] = call i64 @minus(i64 %x)
; CHECK-NEXT: ret i64 [[TMP0]]
; CHECK-NEXT: }
;
-define internal i64 @compute(i64 %x, i64 (i64)* %binop) {
+define internal i64 @compute(i64 %x, ptr %binop) {
entry:
%tmp0 = call i64 %binop(i64 %x)
ret i64 %tmp0
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization2.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization2.ll
index c7bceed3bd91c..c80e3f702ab37 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization2.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization2.ll
@@ -7,63 +7,63 @@
; DISABLED-NOT: @func.1(
; DISABLED-NOT: @func.2(
-define internal i32 @func(i32* %0, i32 %1, void (i32*)* nocapture %2) {
+define internal i32 @func(ptr %0, i32 %1, ptr nocapture %2) {
%4 = alloca i32, align 4
- store i32 %1, i32* %4, align 4
- %5 = load i32, i32* %4, align 4
+ store i32 %1, ptr %4, align 4
+ %5 = load i32, ptr %4, align 4
%6 = icmp slt i32 %5, 1
br i1 %6, label %14, label %7
7: ; preds = %3
- %8 = load i32, i32* %4, align 4
+ %8 = load i32, ptr %4, align 4
%9 = sext i32 %8 to i64
- %10 = getelementptr inbounds i32, i32* %0, i64 %9
- call void %2(i32* %10)
- %11 = load i32, i32* %4, align 4
+ %10 = getelementptr inbounds i32, ptr %0, i64 %9
+ call void %2(ptr %10)
+ %11 = load i32, ptr %4, align 4
%12 = add nsw i32 %11, -1
- %13 = call i32 @func(i32* %0, i32 %12, void (i32*)* %2)
+ %13 = call i32 @func(ptr %0, i32 %12, ptr %2)
br label %14
14: ; preds = %3, %7
ret i32 0
}
-define internal void @increment(i32* nocapture %0) {
- %2 = load i32, i32* %0, align 4
+define internal void @increment(ptr nocapture %0) {
+ %2 = load i32, ptr %0, align 4
%3 = add nsw i32 %2, 1
- store i32 %3, i32* %0, align 4
+ store i32 %3, ptr %0, align 4
ret void
}
-define internal void @decrement(i32* nocapture %0) {
- %2 = load i32, i32* %0, align 4
+define internal void @decrement(ptr nocapture %0) {
+ %2 = load i32, ptr %0, align 4
%3 = add nsw i32 %2, -1
- store i32 %3, i32* %0, align 4
+ store i32 %3, ptr %0, align 4
ret void
}
-define i32 @main(i32* %0, i32 %1) {
-; CHECK: [[TMP3:%.*]] = call i32 @func.2(i32* [[TMP0:%.*]], i32 [[TMP1:%.*]])
- %3 = call i32 @func(i32* %0, i32 %1, void (i32*)* nonnull @increment)
-; CHECK: [[TMP4:%.*]] = call i32 @func.1(i32* [[TMP0]], i32 [[TMP3]])
- %4 = call i32 @func(i32* %0, i32 %3, void (i32*)* nonnull @decrement)
+define i32 @main(ptr %0, i32 %1) {
+; CHECK: [[TMP3:%.*]] = call i32 @func.2(ptr [[TMP0:%.*]], i32 [[TMP1:%.*]])
+ %3 = call i32 @func(ptr %0, i32 %1, ptr nonnull @increment)
+; CHECK: [[TMP4:%.*]] = call i32 @func.1(ptr [[TMP0]], i32 [[TMP3]])
+ %4 = call i32 @func(ptr %0, i32 %3, ptr nonnull @decrement)
ret i32 %4
}
; CHECK: @func.1(
; CHECK: [[TMP3:%.*]] = alloca i32, align 4
-; CHECK: store i32 [[TMP1:%.*]], i32* [[TMP3]], align 4
-; CHECK: [[TMP4:%.*]] = load i32, i32* [[TMP3]], align 4
+; CHECK: store i32 [[TMP1:%.*]], ptr [[TMP3]], align 4
+; CHECK: [[TMP4:%.*]] = load i32, ptr [[TMP3]], align 4
; CHECK: [[TMP5:%.*]] = icmp slt i32 [[TMP4]], 1
; CHECK: br i1 [[TMP5]], label [[TMP13:%.*]], label [[TMP6:%.*]]
; CHECK: 6:
-; CHECK: [[TMP7:%.*]] = load i32, i32* [[TMP3]], align 4
+; CHECK: [[TMP7:%.*]] = load i32, ptr [[TMP3]], align 4
; CHECK: [[TMP8:%.*]] = sext i32 [[TMP7]] to i64
-; CHECK: [[TMP9:%.*]] = getelementptr inbounds i32, i32* [[TMP0:%.*]], i64 [[TMP8]]
-; CHECK: call void @decrement(i32* [[TMP9]])
-; CHECK: [[TMP10:%.*]] = load i32, i32* [[TMP3]], align 4
+; CHECK: [[TMP9:%.*]] = getelementptr inbounds i32, ptr [[TMP0:%.*]], i64 [[TMP8]]
+; CHECK: call void @decrement(ptr [[TMP9]])
+; CHECK: [[TMP10:%.*]] = load i32, ptr [[TMP3]], align 4
; CHECK: [[TMP11:%.*]] = add nsw i32 [[TMP10]], -1
-; CHECK: [[TMP12:%.*]] = call i32 @func.1(i32* [[TMP0]], i32 [[TMP11]])
+; CHECK: [[TMP12:%.*]] = call i32 @func.1(ptr [[TMP0]], i32 [[TMP11]])
; CHECK: br label [[TMP13]]
; CHECK: 13:
; CHECK: ret i32 0
@@ -71,17 +71,17 @@ define i32 @main(i32* %0, i32 %1) {
;
; CHECK: @func.2(
; CHECK: [[TMP3:%.*]] = alloca i32, align 4
-; CHECK: store i32 [[TMP1:%.*]], i32* [[TMP3]], align 4
-; CHECK: [[TMP4:%.*]] = load i32, i32* [[TMP3]], align 4
+; CHECK: store i32 [[TMP1:%.*]], ptr [[TMP3]], align 4
+; CHECK: [[TMP4:%.*]] = load i32, ptr [[TMP3]], align 4
; CHECK: [[TMP5:%.*]] = icmp slt i32 [[TMP4]], 1
; CHECK: br i1 [[TMP5]], label [[TMP13:%.*]], label [[TMP6:%.*]]
; CHECK: 6:
-; CHECK: [[TMP7:%.*]] = load i32, i32* [[TMP3]], align 4
+; CHECK: [[TMP7:%.*]] = load i32, ptr [[TMP3]], align 4
; CHECK: [[TMP8:%.*]] = sext i32 [[TMP7]] to i64
-; CHECK: [[TMP9:%.*]] = getelementptr inbounds i32, i32* [[TMP0:%.*]], i64 [[TMP8]]
-; CHECK: call void @increment(i32* [[TMP9]])
-; CHECK: [[TMP10:%.*]] = load i32, i32* [[TMP3]], align 4
+; CHECK: [[TMP9:%.*]] = getelementptr inbounds i32, ptr [[TMP0:%.*]], i64 [[TMP8]]
+; CHECK: call void @increment(ptr [[TMP9]])
+; CHECK: [[TMP10:%.*]] = load i32, ptr [[TMP3]], align 4
; CHECK: [[TMP11:%.*]] = add nsw i32 [[TMP10]], -1
-; CHECK: [[TMP12:%.*]] = call i32 @func.2(i32* [[TMP0]], i32 [[TMP11]])
+; CHECK: [[TMP12:%.*]] = call i32 @func.2(ptr [[TMP0]], i32 [[TMP11]])
; CHECK: br label [[TMP13]]
; CHECK: ret i32 0
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization3.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization3.ll
index 6b65e66697c6c..f20fd6c7acd0c 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization3.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization3.ll
@@ -14,19 +14,19 @@ target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
define dso_local i32 @bar(i32 %x, i32 %y) {
; COMMON-LABEL: @bar
-; FORCE: %call = call i32 @foo.1(i32 %x, i32* @A)
-; FORCE: %call1 = call i32 @foo.2(i32 %y, i32* @B)
+; FORCE: %call = call i32 @foo.1(i32 %x, ptr @A)
+; FORCE: %call1 = call i32 @foo.2(i32 %y, ptr @B)
; DISABLED-NOT: %call1 = call i32 @foo.1(
entry:
%tobool = icmp ne i32 %x, 0
br i1 %tobool, label %if.then, label %if.else
if.then:
- %call = call i32 @foo(i32 %x, i32* @A)
+ %call = call i32 @foo(i32 %x, ptr @A)
br label %return
if.else:
- %call1 = call i32 @foo(i32 %y, i32* @B)
+ %call1 = call i32 @foo(i32 %y, ptr @B)
br label %return
return:
@@ -36,23 +36,23 @@ return:
; FORCE-NOT: define internal i32 @foo(
;
-; FORCE: define internal i32 @foo.1(i32 %x, i32* %b) {
+; FORCE: define internal i32 @foo.1(i32 %x, ptr %b) {
; FORCE-NEXT: entry:
-; FORCE-NEXT: %0 = load i32, i32* @A, align 4
+; FORCE-NEXT: %0 = load i32, ptr @A, align 4
; FORCE-NEXT: %add = add nsw i32 %x, %0
; FORCE-NEXT: ret i32 %add
; FORCE-NEXT: }
;
-; FORCE: define internal i32 @foo.2(i32 %x, i32* %b) {
+; FORCE: define internal i32 @foo.2(i32 %x, ptr %b) {
; FORCE-NEXT: entry:
-; FORCE-NEXT: %0 = load i32, i32* @B, align 4
+; FORCE-NEXT: %0 = load i32, ptr @B, align 4
; FORCE-NEXT: %add = add nsw i32 %x, %0
; FORCE-NEXT: ret i32 %add
; FORCE-NEXT: }
;
-define internal i32 @foo(i32 %x, i32* %b) {
+define internal i32 @foo(i32 %x, ptr %b) {
entry:
- %0 = load i32, i32* %b, align 4
+ %0 = load i32, ptr %b, align 4
%add = add nsw i32 %x, %0
ret i32 %add
}
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization4.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization4.ll
index 787e6e6c87d53..4348fe32a771f 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization4.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization4.ll
@@ -17,11 +17,11 @@ entry:
br i1 %tobool, label %if.then, label %if.else
if.then:
- %call = call i32 @foo(i32 %x, i32* @A, i32* @C)
+ %call = call i32 @foo(i32 %x, ptr @A, ptr @C)
br label %return
if.else:
- %call1 = call i32 @foo(i32 %y, i32* @B, i32* @D)
+ %call1 = call i32 @foo(i32 %y, ptr @B, ptr @D)
br label %return
return:
@@ -30,32 +30,32 @@ return:
}
; CHECK-NOT: define internal i32 @foo(
-define internal i32 @foo(i32 %x, i32* %b, i32* %c) {
+define internal i32 @foo(i32 %x, ptr %b, ptr %c) {
entry:
- %0 = load i32, i32* %b, align 4
+ %0 = load i32, ptr %b, align 4
%add = add nsw i32 %x, %0
- %1 = load i32, i32* %c, align 4
+ %1 = load i32, ptr %c, align 4
%add1 = add nsw i32 %add, %1
ret i32 %add1
}
-; CONST1: define internal i32 @foo.1(i32 %x, i32* %b, i32* %c)
-; CONST1-NOT: define internal i32 @foo.2(i32 %x, i32* %b, i32* %c)
+; CONST1: define internal i32 @foo.1(i32 %x, ptr %b, ptr %c)
+; CONST1-NOT: define internal i32 @foo.2(i32 %x, ptr %b, ptr %c)
-; CHECK: define internal i32 @foo.1(i32 %x, i32* %b, i32* %c) {
+; CHECK: define internal i32 @foo.1(i32 %x, ptr %b, ptr %c) {
; CHECK-NEXT: entry:
-; CHECK-NEXT: %0 = load i32, i32* @A, align 4
+; CHECK-NEXT: %0 = load i32, ptr @A, align 4
; CHECK-NEXT: %add = add nsw i32 %x, %0
-; CHECK-NEXT: %1 = load i32, i32* @C, align 4
+; CHECK-NEXT: %1 = load i32, ptr @C, align 4
; CHECK-NEXT: %add1 = add nsw i32 %add, %1
; CHECK-NEXT: ret i32 %add1
; CHECK-NEXT: }
-; CHECK: define internal i32 @foo.2(i32 %x, i32* %b, i32* %c) {
+; CHECK: define internal i32 @foo.2(i32 %x, ptr %b, ptr %c) {
; CHECK-NEXT: entry:
-; CHECK-NEXT: %0 = load i32, i32* @B, align 4
+; CHECK-NEXT: %0 = load i32, ptr @B, align 4
; CHECK-NEXT: %add = add nsw i32 %x, %0
-; CHECK-NEXT: %1 = load i32, i32* @D, align 4
+; CHECK-NEXT: %1 = load i32, ptr @D, align 4
; CHECK-NEXT: %add1 = add nsw i32 %add, %1
; CHECK-NEXT: ret i32 %add1
; CHECK-NEXT: }
diff --git a/llvm/test/Transforms/FunctionSpecialization/function-specialization5.ll b/llvm/test/Transforms/FunctionSpecialization/function-specialization5.ll
index a18a9a0fa5c34..f4e09b3fa5f3f 100644
--- a/llvm/test/Transforms/FunctionSpecialization/function-specialization5.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/function-specialization5.ll
@@ -18,11 +18,11 @@ entry:
br i1 %tobool, label %if.then, label %if.else
if.then:
- %call = call i32 @foo(i32 %x, i32* @A, i32* @C)
+ %call = call i32 @foo(i32 %x, ptr @A, ptr @C)
br label %return
if.else:
- %call1 = call i32 @foo(i32 %y, i32* @A, i32* @C)
+ %call1 = call i32 @foo(i32 %y, ptr @A, ptr @C)
br label %return
return:
@@ -30,11 +30,11 @@ return:
ret i32 %retval.0
}
-define internal i32 @foo(i32 %x, i32* %b, i32* %c) {
+define internal i32 @foo(i32 %x, ptr %b, ptr %c) {
entry:
- %0 = load i32, i32* %b, align 4
+ %0 = load i32, ptr %b, align 4
%add = add nsw i32 %x, %0
- %1 = load i32, i32* %c, align 4
+ %1 = load i32, ptr %c, align 4
%add1 = add nsw i32 %add, %1
ret i32 %add1
}
diff --git a/llvm/test/Transforms/FunctionSpecialization/identical-specializations.ll b/llvm/test/Transforms/FunctionSpecialization/identical-specializations.ll
index 711248ba04102..e67f9d68b7b6c 100644
--- a/llvm/test/Transforms/FunctionSpecialization/identical-specializations.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/identical-specializations.ll
@@ -6,38 +6,38 @@ define i64 @main(i64 %x, i64 %y, i1 %flag) {
; CHECK-NEXT: entry:
; CHECK-NEXT: br i1 [[FLAG:%.*]], label [[PLUS:%.*]], label [[MINUS:%.*]]
; CHECK: plus:
-; CHECK-NEXT: [[CMP0:%.*]] = call i64 @compute.1(i64 [[X:%.*]], i64 [[Y:%.*]], i64 (i64, i64)* @plus, i64 (i64, i64)* @minus)
+; CHECK-NEXT: [[CMP0:%.*]] = call i64 @compute.1(i64 [[X:%.*]], i64 [[Y:%.*]], ptr @plus, ptr @minus)
; CHECK-NEXT: br label [[MERGE:%.*]]
; CHECK: minus:
-; CHECK-NEXT: [[CMP1:%.*]] = call i64 @compute.2(i64 [[X]], i64 [[Y]], i64 (i64, i64)* @minus, i64 (i64, i64)* @plus)
+; CHECK-NEXT: [[CMP1:%.*]] = call i64 @compute.2(i64 [[X]], i64 [[Y]], ptr @minus, ptr @plus)
; CHECK-NEXT: br label [[MERGE]]
; CHECK: merge:
; CHECK-NEXT: [[PH:%.*]] = phi i64 [ [[CMP0]], [[PLUS]] ], [ [[CMP1]], [[MINUS]] ]
-; CHECK-NEXT: [[CMP2:%.*]] = call i64 @compute.1(i64 [[PH]], i64 42, i64 (i64, i64)* @plus, i64 (i64, i64)* @minus)
+; CHECK-NEXT: [[CMP2:%.*]] = call i64 @compute.1(i64 [[PH]], i64 42, ptr @plus, ptr @minus)
; CHECK-NEXT: ret i64 [[CMP2]]
;
entry:
br i1 %flag, label %plus, label %minus
plus:
- %cmp0 = call i64 @compute(i64 %x, i64 %y, i64 (i64, i64)* @plus, i64 (i64, i64)* @minus)
+ %cmp0 = call i64 @compute(i64 %x, i64 %y, ptr @plus, ptr @minus)
br label %merge
minus:
- %cmp1 = call i64 @compute(i64 %x, i64 %y, i64 (i64, i64)* @minus, i64 (i64, i64)* @plus)
+ %cmp1 = call i64 @compute(i64 %x, i64 %y, ptr @minus, ptr @plus)
br label %merge
merge:
%ph = phi i64 [ %cmp0, %plus ], [ %cmp1, %minus]
- %cmp2 = call i64 @compute(i64 %ph, i64 42, i64 (i64, i64)* @plus, i64 (i64, i64)* @minus)
+ %cmp2 = call i64 @compute(i64 %ph, i64 42, ptr @plus, ptr @minus)
ret i64 %cmp2
}
-define internal i64 @compute(i64 %x, i64 %y, i64 (i64, i64)* %binop1, i64 (i64, i64)* %binop2) {
+define internal i64 @compute(i64 %x, i64 %y, ptr %binop1, ptr %binop2) {
entry:
%op0 = call i64 %binop1(i64 %x, i64 %y)
%op1 = call i64 %binop2(i64 %x, i64 %y)
- %op2 = call i64 @compute(i64 %x, i64 %y, i64 (i64, i64)* %binop1, i64 (i64, i64)* @plus)
+ %op2 = call i64 @compute(i64 %x, i64 %y, ptr %binop1, ptr @plus)
%add0 = add i64 %op0, %op1
%add1 = add i64 %add0, %op2
%div = sdiv i64 %add1, %x
@@ -64,16 +64,16 @@ entry:
; CHECK-NEXT: entry:
; CHECK-NEXT: [[CMP0:%.*]] = call i64 @plus(i64 [[X:%.*]], i64 [[Y:%.*]])
; CHECK-NEXT: [[CMP1:%.*]] = call i64 @minus(i64 [[X]], i64 [[Y]])
-; CHECK-NEXT: [[CMP2:%.*]] = call i64 @compute(i64 [[X]], i64 [[Y]], i64 (i64, i64)* @plus, i64 (i64, i64)* @plus)
+; CHECK-NEXT: [[CMP2:%.*]] = call i64 @compute(i64 [[X]], i64 [[Y]], ptr @plus, ptr @plus)
; CHECK-LABEL: @compute.2
; CHECK-NEXT: entry:
; CHECK-NEXT: [[CMP0:%.*]] = call i64 @minus(i64 [[X:%.*]], i64 [[Y:%.*]])
; CHECK-NEXT: [[CMP1:%.*]] = call i64 @plus(i64 [[X]], i64 [[Y]])
-; CHECK-NEXT: [[CMP2:%.*]] = call i64 @compute(i64 [[X]], i64 [[Y]], i64 (i64, i64)* @minus, i64 (i64, i64)* @plus)
+; CHECK-NEXT: [[CMP2:%.*]] = call i64 @compute(i64 [[X]], i64 [[Y]], ptr @minus, ptr @plus)
; CHECK-LABEL: @compute.3
; CHECK-NEXT: entry:
; CHECK-NEXT: [[CMP0:%.*]] = call i64 @plus(i64 [[X:%.*]], i64 [[Y:%.*]])
; CHECK-NEXT: [[CMP1:%.*]] = call i64 @minus(i64 [[X]], i64 [[Y]])
-; CHECK-NEXT: [[CMP2:%.*]] = call i64 @compute(i64 [[X]], i64 [[Y]], i64 (i64, i64)* @plus, i64 (i64, i64)* @plus)
+; CHECK-NEXT: [[CMP2:%.*]] = call i64 @compute(i64 [[X]], i64 [[Y]], ptr @plus, ptr @plus)
diff --git a/llvm/test/Transforms/FunctionSpecialization/remove-dead-recursive-function.ll b/llvm/test/Transforms/FunctionSpecialization/remove-dead-recursive-function.ll
index a3fcd5819f99c..50a95a94c6f62 100644
--- a/llvm/test/Transforms/FunctionSpecialization/remove-dead-recursive-function.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/remove-dead-recursive-function.ll
@@ -5,11 +5,11 @@ entry:
br i1 %flag, label %plus, label %minus
plus:
- %tmp0 = call i64 @compute(i64 %x, i64 (i64)* @plus)
+ %tmp0 = call i64 @compute(i64 %x, ptr @plus)
br label %merge
minus:
- %tmp1 = call i64 @compute(i64 %x, i64 (i64)* @minus)
+ %tmp1 = call i64 @compute(i64 %x, ptr @minus)
br label %merge
merge:
@@ -19,17 +19,17 @@ merge:
; CHECK-NOT: define internal i64 @compute(
;
-; CHECK-LABEL: define internal i64 @compute.1(i64 %n, i64 (i64)* %binop) {
+; CHECK-LABEL: define internal i64 @compute.1(i64 %n, ptr %binop) {
; CHECK: [[TMP0:%.+]] = call i64 @plus(i64 %n)
-; CHECK: [[TMP1:%.+]] = call i64 @compute.1(i64 [[TMP2:%.+]], i64 (i64)* @plus)
+; CHECK: [[TMP1:%.+]] = call i64 @compute.1(i64 [[TMP2:%.+]], ptr @plus)
; CHECK: add nsw i64 [[TMP1]], [[TMP0]]
;
-; CHECK-LABEL: define internal i64 @compute.2(i64 %n, i64 (i64)* %binop) {
+; CHECK-LABEL: define internal i64 @compute.2(i64 %n, ptr %binop) {
; CHECK: [[TMP0:%.+]] = call i64 @minus(i64 %n)
-; CHECK: [[TMP1:%.+]] = call i64 @compute.2(i64 [[TMP2:%.+]], i64 (i64)* @minus)
+; CHECK: [[TMP1:%.+]] = call i64 @compute.2(i64 [[TMP2:%.+]], ptr @minus)
; CHECK: add nsw i64 [[TMP1]], [[TMP0]]
;
-define internal i64 @compute(i64 %n, i64 (i64)* %binop) {
+define internal i64 @compute(i64 %n, ptr %binop) {
entry:
%cmp = icmp sgt i64 %n, 0
br i1 %cmp, label %if.then, label %if.end
@@ -37,7 +37,7 @@ entry:
if.then:
%call = call i64 %binop(i64 %n)
%sub = add nsw i64 %n, -1
- %call1 = call i64 @compute(i64 %sub, i64 (i64)* %binop)
+ %call1 = call i64 @compute(i64 %sub, ptr %binop)
%add2 = add nsw i64 %call1, %call
br label %if.end
diff --git a/llvm/test/Transforms/FunctionSpecialization/specialize-multiple-arguments.ll b/llvm/test/Transforms/FunctionSpecialization/specialize-multiple-arguments.ll
index b4f28fd2b2446..518e78ce2f023 100644
--- a/llvm/test/Transforms/FunctionSpecialization/specialize-multiple-arguments.ll
+++ b/llvm/test/Transforms/FunctionSpecialization/specialize-multiple-arguments.ll
@@ -21,78 +21,78 @@ define i64 @main(i64 %x, i64 %y, i1 %flag) {
; NONE-NEXT: entry:
; NONE-NEXT: br i1 [[FLAG:%.*]], label [[PLUS:%.*]], label [[MINUS:%.*]]
; NONE: plus:
-; NONE-NEXT: [[TMP0:%.*]] = call i64 @compute(i64 [[X:%.*]], i64 [[Y:%.*]], i64 (i64, i64)* @power, i64 (i64, i64)* @mul)
+; NONE-NEXT: [[TMP0:%.*]] = call i64 @compute(i64 [[X:%.*]], i64 [[Y:%.*]], ptr @power, ptr @mul)
; NONE-NEXT: br label [[MERGE:%.*]]
; NONE: minus:
-; NONE-NEXT: [[TMP1:%.*]] = call i64 @compute(i64 [[X]], i64 [[Y]], i64 (i64, i64)* @plus, i64 (i64, i64)* @minus)
+; NONE-NEXT: [[TMP1:%.*]] = call i64 @compute(i64 [[X]], i64 [[Y]], ptr @plus, ptr @minus)
; NONE-NEXT: br label [[MERGE]]
; NONE: merge:
; NONE-NEXT: [[TMP2:%.*]] = phi i64 [ [[TMP0]], [[PLUS]] ], [ [[TMP1]], [[MINUS]] ]
-; NONE-NEXT: [[TMP3:%.*]] = call i64 @compute(i64 [[TMP2]], i64 42, i64 (i64, i64)* @minus, i64 (i64, i64)* @power)
+; NONE-NEXT: [[TMP3:%.*]] = call i64 @compute(i64 [[TMP2]], i64 42, ptr @minus, ptr @power)
; NONE-NEXT: ret i64 [[TMP3]]
;
; ONE-LABEL: @main(
; ONE-NEXT: entry:
; ONE-NEXT: br i1 [[FLAG:%.*]], label [[PLUS:%.*]], label [[MINUS:%.*]]
; ONE: plus:
-; ONE-NEXT: [[TMP0:%.*]] = call i64 @compute(i64 [[X:%.*]], i64 [[Y:%.*]], i64 (i64, i64)* @power, i64 (i64, i64)* @mul)
+; ONE-NEXT: [[TMP0:%.*]] = call i64 @compute(i64 [[X:%.*]], i64 [[Y:%.*]], ptr @power, ptr @mul)
; ONE-NEXT: br label [[MERGE:%.*]]
; ONE: minus:
-; ONE-NEXT: [[TMP1:%.*]] = call i64 @compute.1(i64 [[X]], i64 [[Y]], i64 (i64, i64)* @plus, i64 (i64, i64)* @minus)
+; ONE-NEXT: [[TMP1:%.*]] = call i64 @compute.1(i64 [[X]], i64 [[Y]], ptr @plus, ptr @minus)
; ONE-NEXT: br label [[MERGE]]
; ONE: merge:
; ONE-NEXT: [[TMP2:%.*]] = phi i64 [ [[TMP0]], [[PLUS]] ], [ [[TMP1]], [[MINUS]] ]
-; ONE-NEXT: [[TMP3:%.*]] = call i64 @compute(i64 [[TMP2]], i64 42, i64 (i64, i64)* @minus, i64 (i64, i64)* @power)
+; ONE-NEXT: [[TMP3:%.*]] = call i64 @compute(i64 [[TMP2]], i64 42, ptr @minus, ptr @power)
; ONE-NEXT: ret i64 [[TMP3]]
;
; TWO-LABEL: @main(
; TWO-NEXT: entry:
; TWO-NEXT: br i1 [[FLAG:%.*]], label [[PLUS:%.*]], label [[MINUS:%.*]]
; TWO: plus:
-; TWO-NEXT: [[TMP0:%.*]] = call i64 @compute(i64 [[X:%.*]], i64 [[Y:%.*]], i64 (i64, i64)* @power, i64 (i64, i64)* @mul)
+; TWO-NEXT: [[TMP0:%.*]] = call i64 @compute(i64 [[X:%.*]], i64 [[Y:%.*]], ptr @power, ptr @mul)
; TWO-NEXT: br label [[MERGE:%.*]]
; TWO: minus:
-; TWO-NEXT: [[TMP1:%.*]] = call i64 @compute.1(i64 [[X]], i64 [[Y]], i64 (i64, i64)* @plus, i64 (i64, i64)* @minus)
+; TWO-NEXT: [[TMP1:%.*]] = call i64 @compute.1(i64 [[X]], i64 [[Y]], ptr @plus, ptr @minus)
; TWO-NEXT: br label [[MERGE]]
; TWO: merge:
; TWO-NEXT: [[TMP2:%.*]] = phi i64 [ [[TMP0]], [[PLUS]] ], [ [[TMP1]], [[MINUS]] ]
-; TWO-NEXT: [[TMP3:%.*]] = call i64 @compute.2(i64 [[TMP2]], i64 42, i64 (i64, i64)* @minus, i64 (i64, i64)* @power)
+; TWO-NEXT: [[TMP3:%.*]] = call i64 @compute.2(i64 [[TMP2]], i64 42, ptr @minus, ptr @power)
; TWO-NEXT: ret i64 [[TMP3]]
;
; THREE-LABEL: @main(
; THREE-NEXT: entry:
; THREE-NEXT: br i1 [[FLAG:%.*]], label [[PLUS:%.*]], label [[MINUS:%.*]]
; THREE: plus:
-; THREE-NEXT: [[TMP0:%.*]] = call i64 @compute.3(i64 [[X:%.*]], i64 [[Y:%.*]], i64 (i64, i64)* @power, i64 (i64, i64)* @mul)
+; THREE-NEXT: [[TMP0:%.*]] = call i64 @compute.3(i64 [[X:%.*]], i64 [[Y:%.*]], ptr @power, ptr @mul)
; THREE-NEXT: br label [[MERGE:%.*]]
; THREE: minus:
-; THREE-NEXT: [[TMP1:%.*]] = call i64 @compute.1(i64 [[X]], i64 [[Y]], i64 (i64, i64)* @plus, i64 (i64, i64)* @minus)
+; THREE-NEXT: [[TMP1:%.*]] = call i64 @compute.1(i64 [[X]], i64 [[Y]], ptr @plus, ptr @minus)
; THREE-NEXT: br label [[MERGE]]
; THREE: merge:
; THREE-NEXT: [[TMP2:%.*]] = phi i64 [ [[TMP0]], [[PLUS]] ], [ [[TMP1]], [[MINUS]] ]
-; THREE-NEXT: [[TMP3:%.*]] = call i64 @compute.2(i64 [[TMP2]], i64 42, i64 (i64, i64)* @minus, i64 (i64, i64)* @power)
+; THREE-NEXT: [[TMP3:%.*]] = call i64 @compute.2(i64 [[TMP2]], i64 42, ptr @minus, ptr @power)
; THREE-NEXT: ret i64 [[TMP3]]
;
entry:
br i1 %flag, label %plus, label %minus
plus:
- %tmp0 = call i64 @compute(i64 %x, i64 %y, i64 (i64, i64)* @power, i64 (i64, i64)* @mul)
+ %tmp0 = call i64 @compute(i64 %x, i64 %y, ptr @power, ptr @mul)
br label %merge
minus:
- %tmp1 = call i64 @compute(i64 %x, i64 %y, i64 (i64, i64)* @plus, i64 (i64, i64)* @minus)
+ %tmp1 = call i64 @compute(i64 %x, i64 %y, ptr @plus, ptr @minus)
br label %merge
merge:
%tmp2 = phi i64 [ %tmp0, %plus ], [ %tmp1, %minus]
- %tmp3 = call i64 @compute(i64 %tmp2, i64 42, i64 (i64, i64)* @minus, i64 (i64, i64)* @power)
+ %tmp3 = call i64 @compute(i64 %tmp2, i64 42, ptr @minus, ptr @power)
ret i64 %tmp3
}
; THREE-NOT: define internal i64 @compute
;
-; THREE-LABEL: define internal i64 @compute.1(i64 %x, i64 %y, i64 (i64, i64)* %binop1, i64 (i64, i64)* %binop2) {
+; THREE-LABEL: define internal i64 @compute.1(i64 %x, i64 %y, ptr %binop1, ptr %binop2) {
; THREE-NEXT: entry:
; THREE-NEXT: [[TMP0:%.+]] = call i64 @plus(i64 %x, i64 %y)
; THREE-NEXT: [[TMP1:%.+]] = call i64 @minus(i64 %x, i64 %y)
@@ -103,7 +103,7 @@ merge:
; THREE-NEXT: ret i64 [[TMP5]]
; THREE-NEXT: }
;
-; THREE-LABEL: define internal i64 @compute.2(i64 %x, i64 %y, i64 (i64, i64)* %binop1, i64 (i64, i64)* %binop2) {
+; THREE-LABEL: define internal i64 @compute.2(i64 %x, i64 %y, ptr %binop1, ptr %binop2) {
; THREE-NEXT: entry:
; THREE-NEXT: [[TMP0:%.+]] = call i64 @minus(i64 %x, i64 %y)
; THREE-NEXT: [[TMP1:%.+]] = call i64 @power(i64 %x, i64 %y)
@@ -114,7 +114,7 @@ merge:
; THREE-NEXT: ret i64 [[TMP5]]
; THREE-NEXT: }
;
-; THREE-LABEL: define internal i64 @compute.3(i64 %x, i64 %y, i64 (i64, i64)* %binop1, i64 (i64, i64)* %binop2) {
+; THREE-LABEL: define internal i64 @compute.3(i64 %x, i64 %y, ptr %binop1, ptr %binop2) {
; THREE-NEXT: entry:
; THREE-NEXT: [[TMP0:%.+]] = call i64 @power(i64 %x, i64 %y)
; THREE-NEXT: [[TMP1:%.+]] = call i64 @mul(i64 %x, i64 %y)
@@ -125,7 +125,7 @@ merge:
; THREE-NEXT: ret i64 [[TMP5]]
; THREE-NEXT: }
;
-define internal i64 @compute(i64 %x, i64 %y, i64 (i64, i64)* %binop1, i64 (i64, i64)* %binop2) {
+define internal i64 @compute(i64 %x, i64 %y, ptr %binop1, ptr %binop2) {
entry:
%tmp0 = call i64 %binop1(i64 %x, i64 %y)
%tmp1 = call i64 %binop2(i64 %x, i64 %y)
More information about the llvm-commits
mailing list