diff --git a/llvm/test/Instrumentation/InstrProfiling/always_inline.ll b/llvm/test/Instrumentation/InstrProfiling/always_inline.ll index 9effb6f9579627..0b21b242541419 100644 --- a/llvm/test/Instrumentation/InstrProfiling/always_inline.ll +++ b/llvm/test/Instrumentation/InstrProfiling/always_inline.ll @@ -20,11 +20,11 @@ entry: ret i32 %call } -declare void @llvm.instrprof.increment(i8*, i64, i32, i32) #0 +declare void @llvm.instrprof.increment(ptr, i64, i32, i32) #0 define available_externally i32 @foo() #1 { entry: - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 0, i32 1, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 0, i32 1, i32 0) ret i32 0 } diff --git a/llvm/test/Instrumentation/InstrProfiling/atomic-updates.ll b/llvm/test/Instrumentation/InstrProfiling/atomic-updates.ll index 2faf44333e8bb2..1bd3b7ea5a8358 100644 --- a/llvm/test/Instrumentation/InstrProfiling/atomic-updates.ll +++ b/llvm/test/Instrumentation/InstrProfiling/atomic-updates.ll @@ -5,10 +5,10 @@ target triple = "x86_64-apple-macosx10.10.0" @__profn_foo = private constant [3 x i8] c"foo" ; CHECK-LABEL: define void @foo -; CHECK-NEXT: atomicrmw add i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__profc_foo, i32 0, i32 0), i64 1 monotonic +; CHECK-NEXT: atomicrmw add ptr @__profc_foo, i64 1 monotonic define void @foo() { - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 0, i32 1, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 0, i32 1, i32 0) ret void } -declare void @llvm.instrprof.increment(i8*, i64, i32, i32) +declare void @llvm.instrprof.increment(ptr, i64, i32, i32) diff --git a/llvm/test/Instrumentation/InstrProfiling/comdat.ll b/llvm/test/Instrumentation/InstrProfiling/comdat.ll index fb2e947466bf31..9655a0a0fada44 100644 --- a/llvm/test/Instrumentation/InstrProfiling/comdat.ll +++ b/llvm/test/Instrumentation/InstrProfiling/comdat.ll @@ -8,13 +8,13 @@ ; RUN: split-file %s %t ; RUN: cat %t/main.ll %t/disable.ll > %t0.ll ; RUN: cat %t/main.ll %t/enable.ll > %t1.ll -; RUN: opt < %t0.ll -mtriple=x86_64-linux -passes=instrprof -S | FileCheck %s --check-prefixes=ELF -; RUN: opt < %t1.ll -mtriple=x86_64-linux -passes=instrprof -S | FileCheck %s --check-prefixes=ELF -; RUN: opt < %t0.ll -mtriple=x86_64-windows -passes=instrprof -S | FileCheck %s --check-prefixes=COFF -; RUN: opt < %t1.ll -mtriple=x86_64-windows -passes=instrprof -S | FileCheck %s --check-prefixes=COFF +; RUN: opt < %t0.ll -mtriple=x86_64-linux -passes=instrprof -S | FileCheck %s --check-prefixes=ELF,ELF0 +; RUN: opt < %t1.ll -mtriple=x86_64-linux -passes=instrprof -S | FileCheck %s --check-prefixes=ELF,ELF1 +; RUN: opt < %t0.ll -mtriple=x86_64-windows -passes=instrprof -S | FileCheck %s --check-prefixes=COFF,COFF0 +; RUN: opt < %t1.ll -mtriple=x86_64-windows -passes=instrprof -S | FileCheck %s --check-prefixes=COFF,COFF1 ;--- main.ll -declare void @llvm.instrprof.increment(i8*, i64, i32, i32) +declare void @llvm.instrprof.increment(ptr, i64, i32, i32) $foo_inline = comdat any $foo_extern = comdat any @@ -34,7 +34,7 @@ $foo_extern = comdat any ; COFF1: @__profc_foo_inline = linkonce_odr hidden global {{.*}}, section ".lprfc$M", comdat, align 8 ; COFF1: @__profd_foo_inline = linkonce_odr hidden global {{.*}}, section ".lprfd$M", comdat, align 8 define weak_odr void @foo_inline() comdat { - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__profn_foo_inline, i32 0, i32 0), i64 0, i32 1, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_foo_inline, i64 0, i32 1, i32 0) ret void } @@ -45,13 +45,13 @@ define weak_odr void @foo_inline() comdat { ; COFF0: @__profd_foo_extern = private global{{.*}}, section ".lprfd$M", comdat($__profc_foo_extern), align 8 ; COFF1: @__profd_foo_extern = linkonce_odr hidden global{{.*}}, section ".lprfd$M", comdat, align 8 define available_externally void @foo_extern() { - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__profn_foo_extern, i32 0, i32 0), i64 0, i32 1, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_foo_extern, i64 0, i32 1, i32 0) ret void } -; ELF: @llvm.compiler.used = appending global {{.*}} @__profd_foo_inline {{.*}} @__profd_foo_extern -; COFF0: @llvm.compiler.used = appending global {{.*}} @__llvm_profile_runtime_user {{.*}} @__profd_foo_inline {{.*}} @__profd_foo_extern -; COFF1: @llvm.used = appending global {{.*}} @__llvm_profile_runtime_user {{.*}} @__profd_foo_inline {{.*}} @__profd_foo_extern +; ELF: @llvm.compiler.used = appending global [2 x ptr] [ptr @__profd_foo_inline, ptr @__profd_foo_extern] +; COFF0: @llvm.compiler.used = appending global [3 x ptr] [ptr @__llvm_profile_runtime_user, ptr @__profd_foo_inline, ptr @__profd_foo_extern] +; COFF1: @llvm.used = appending global [4 x ptr] [ptr @__llvm_profile_runtime_user, ptr @__profd_foo_inline, ptr @__profd_foo_extern, ptr @__llvm_prf_nm] ;--- disable.ll !llvm.module.flags = !{!0} diff --git a/llvm/test/Instrumentation/InstrProfiling/coverage.ll b/llvm/test/Instrumentation/InstrProfiling/coverage.ll index 1ab10984343200..1401d8f620b3f4 100644 --- a/llvm/test/Instrumentation/InstrProfiling/coverage.ll +++ b/llvm/test/Instrumentation/InstrProfiling/coverage.ll @@ -8,16 +8,16 @@ target triple = "aarch64-unknown-linux-gnu" ; CHECK: @__profc_bar = private global [1 x i8] c"\FF", section "__llvm_prf_cnts", comdat, align 1 define void @_Z3foov() { - call void @llvm.instrprof.cover(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 12345678, i32 1, i32 0) - ; CHECK: store i8 0, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @__profc_foo, i32 0, i32 0), align 1 + call void @llvm.instrprof.cover(ptr @__profn_foo, i64 12345678, i32 1, i32 0) + ; CHECK: store i8 0, ptr @__profc_foo, align 1 ret void } -%class.A = type { i32 (...)** } -define dso_local void @_Z3barv(%class.A* nocapture nonnull align 8 %0) unnamed_addr #0 align 2 { - call void @llvm.instrprof.cover(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_bar, i32 0, i32 0), i64 87654321, i32 1, i32 0) - ; CHECK: store i8 0, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @__profc_bar, i32 0, i32 0), align 1 +%class.A = type { ptr } +define dso_local void @_Z3barv(ptr nocapture nonnull align 8 %0) unnamed_addr #0 align 2 { + call void @llvm.instrprof.cover(ptr @__profn_bar, i64 87654321, i32 1, i32 0) + ; CHECK: store i8 0, ptr @__profc_bar, align 1 ret void } -declare void @llvm.instrprof.cover(i8*, i64, i32, i32) +declare void @llvm.instrprof.cover(ptr, i64, i32, i32) diff --git a/llvm/test/Instrumentation/InstrProfiling/debug-info-correlate-coverage.ll b/llvm/test/Instrumentation/InstrProfiling/debug-info-correlate-coverage.ll index c3f137bc48e367..192bac6e503a07 100644 --- a/llvm/test/Instrumentation/InstrProfiling/debug-info-correlate-coverage.ll +++ b/llvm/test/Instrumentation/InstrProfiling/debug-info-correlate-coverage.ll @@ -4,12 +4,12 @@ ; CHECK: @__profc_foo define void @_Z3foov() !dbg !12 { - call void @llvm.instrprof.cover(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 12345678, i32 1, i32 0) - ; CHECK: store i8 0, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @__profc_foo + call void @llvm.instrprof.cover(ptr @__profn_foo, i64 12345678, i32 1, i32 0) + ; CHECK: store i8 0, ptr @__profc_foo, align 1 ret void } -declare void @llvm.instrprof.cover(i8*, i64, i32, i32) +declare void @llvm.instrprof.cover(ptr, i64, i32, i32) !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8, !9, !10} diff --git a/llvm/test/Instrumentation/InstrProfiling/debug-info-correlate.ll b/llvm/test/Instrumentation/InstrProfiling/debug-info-correlate.ll index 8f389226222dba..6ab7f055602cb2 100644 --- a/llvm/test/Instrumentation/InstrProfiling/debug-info-correlate.ll +++ b/llvm/test/Instrumentation/InstrProfiling/debug-info-correlate.ll @@ -19,11 +19,11 @@ ; CHECK: ![[COUNTERS]] = !{!"Num Counters", i32 2} define void @_Z3foov() !dbg !12 { - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 12345678, i32 2, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 12345678, i32 2, i32 0) ret void } -declare void @llvm.instrprof.increment(i8*, i64, i32, i32) +declare void @llvm.instrprof.increment(ptr, i64, i32, i32) !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8, !9, !10} diff --git a/llvm/test/Instrumentation/InstrProfiling/early-exit.ll b/llvm/test/Instrumentation/InstrProfiling/early-exit.ll index b781fbc942a87f..6f5b5eabb9db92 100644 --- a/llvm/test/Instrumentation/InstrProfiling/early-exit.ll +++ b/llvm/test/Instrumentation/InstrProfiling/early-exit.ll @@ -2,14 +2,14 @@ target triple = "x86_64-apple-macosx10.10.0" -declare void @llvm.instrprof.increment(i8*, i64, i32, i32) +declare void @llvm.instrprof.increment(ptr, i64, i32, i32) -declare void @llvm.instrprof.increment.step(i8*, i64, i32, i32, i64) +declare void @llvm.instrprof.increment.step(ptr, i64, i32, i32, i64) ; CHECK: @__profc_foo = private global [1 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8 @__profn_foo = private constant [3 x i8] c"foo" define void @foo() { - call void @llvm.instrprof.increment.step(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 0, i32 1, i32 0, i64 0) + call void @llvm.instrprof.increment.step(ptr @__profn_foo, i64 0, i32 1, i32 0, i64 0) ret void } diff --git a/llvm/test/Instrumentation/InstrProfiling/icall-comdat.ll b/llvm/test/Instrumentation/InstrProfiling/icall-comdat.ll index 03e5b42bd3f5b5..124eaca56e42b4 100644 --- a/llvm/test/Instrumentation/InstrProfiling/icall-comdat.ll +++ b/llvm/test/Instrumentation/InstrProfiling/icall-comdat.ll @@ -15,30 +15,30 @@ @__profn_foo = private constant [3 x i8] c"foo" @__profn_bar = private constant [3 x i8] c"bar" -define i32 @foo(i32 ()* ) { - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 12884901887, i32 1, i32 0) - %2 = ptrtoint i32 ()* %0 to i64 - call void @llvm.instrprof.value.profile(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 12884901887, i64 %2, i32 0, i32 0) +define i32 @foo(ptr ) { + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 12884901887, i32 1, i32 0) + %2 = ptrtoint ptr %0 to i64 + call void @llvm.instrprof.value.profile(ptr @__profn_foo, i64 12884901887, i64 %2, i32 0, i32 0) %3 = tail call i32 %0() ret i32 %3 } $bar = comdat any -define i32 @bar(i32 ()* ) comdat { +define i32 @bar(ptr ) comdat { entry: - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_bar, i32 0, i32 0), i64 12884901887, i32 1, i32 0) - %1 = ptrtoint i32 ()* %0 to i64 - call void @llvm.instrprof.value.profile(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_bar, i32 0, i32 0), i64 12884901887, i64 %1, i32 0, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_bar, i64 12884901887, i32 1, i32 0) + %1 = ptrtoint ptr %0 to i64 + call void @llvm.instrprof.value.profile(ptr @__profn_bar, i64 12884901887, i64 %1, i32 0, i32 0) %2 = tail call i32 %0() ret i32 %2 } ; Function Attrs: nounwind -declare void @llvm.instrprof.increment(i8*, i64, i32, i32) #0 +declare void @llvm.instrprof.increment(ptr, i64, i32, i32) #0 ; Function Attrs: nounwind -declare void @llvm.instrprof.value.profile(i8*, i64, i64, i32, i32) #0 +declare void @llvm.instrprof.value.profile(ptr, i64, i64, i32, i32) #0 attributes #0 = { nounwind } @@ -55,10 +55,10 @@ attributes #0 = { nounwind } ; STATIC-SAME: @__llvm_prf_vnodes ; STATIC-SAME: @__llvm_prf_nm -; STATIC: call void @__llvm_profile_instrument_target(i64 %3, i8* bitcast ({ i64, i64, i64, i8*, i8*, i32, [2 x i16] }* @__profd_foo to i8*), i32 0) -; STATIC-EXT: call void @__llvm_profile_instrument_target(i64 %3, i8* bitcast ({ i64, i64, i64, i8*, i8*, i32, [2 x i16] }* @__profd_foo to i8*), i32 zeroext 0) -; STATIC-SEXT: call void @__llvm_profile_instrument_target(i64 %3, i8* bitcast ({ i64, i64, i64, i8*, i8*, i32, [2 x i16] }* @__profd_foo to i8*), i32 signext 0) +; STATIC: call void @__llvm_profile_instrument_target(i64 %3, ptr @__profd_foo, i32 0) +; STATIC-EXT: call void @__llvm_profile_instrument_target(i64 %3, ptr @__profd_foo, i32 zeroext 0) +; STATIC-SEXT: call void @__llvm_profile_instrument_target(i64 %3, ptr @__profd_foo, i32 signext 0) -; STATIC: declare void @__llvm_profile_instrument_target(i64, i8*, i32) -; STATIC-EXT: declare void @__llvm_profile_instrument_target(i64, i8*, i32 zeroext) -; STATIC-SEXT: declare void @__llvm_profile_instrument_target(i64, i8*, i32 signext) +; STATIC: declare void @__llvm_profile_instrument_target(i64, ptr, i32) +; STATIC-EXT: declare void @__llvm_profile_instrument_target(i64, ptr, i32 zeroext) +; STATIC-SEXT: declare void @__llvm_profile_instrument_target(i64, ptr, i32 signext) diff --git a/llvm/test/Instrumentation/InstrProfiling/icall-nocomdat.ll b/llvm/test/Instrumentation/InstrProfiling/icall-nocomdat.ll index cb381254314da4..2369630b6ddbf5 100644 --- a/llvm/test/Instrumentation/InstrProfiling/icall-nocomdat.ll +++ b/llvm/test/Instrumentation/InstrProfiling/icall-nocomdat.ll @@ -7,19 +7,19 @@ @__profn_foo = private constant [3 x i8] c"foo" @__profn_bar = private constant [3 x i8] c"bar" -define i32 @foo(i32 ()* ) { - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 12884901887, i32 1, i32 0) - %2 = ptrtoint i32 ()* %0 to i64 - call void @llvm.instrprof.value.profile(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 12884901887, i64 %2, i32 0, i32 0) +define i32 @foo(ptr ) { + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 12884901887, i32 1, i32 0) + %2 = ptrtoint ptr %0 to i64 + call void @llvm.instrprof.value.profile(ptr @__profn_foo, i64 12884901887, i64 %2, i32 0, i32 0) %3 = tail call i32 %0() ret i32 %3 } ; Function Attrs: nounwind -declare void @llvm.instrprof.increment(i8*, i64, i32, i32) #0 +declare void @llvm.instrprof.increment(ptr, i64, i32, i32) #0 ; Function Attrs: nounwind -declare void @llvm.instrprof.value.profile(i8*, i64, i64, i32, i32) #0 +declare void @llvm.instrprof.value.profile(ptr, i64, i64, i32, i32) #0 attributes #0 = { nounwind } @@ -35,10 +35,10 @@ attributes #0 = { nounwind } ; STATIC-SAME: @__llvm_prf_vnodes ; STATIC-SAME: @__llvm_prf_nm -; STATIC: call void @__llvm_profile_instrument_target(i64 %3, i8* bitcast ({ i64, i64, i64, i8*, i8*, i32, [2 x i16] }* @__profd_foo to i8*), i32 0) -; STATIC-EXT: call void @__llvm_profile_instrument_target(i64 %3, i8* bitcast ({ i64, i64, i64, i8*, i8*, i32, [2 x i16] }* @__profd_foo to i8*), i32 zeroext 0) -; STATIC-SEXT: call void @__llvm_profile_instrument_target(i64 %3, i8* bitcast ({ i64, i64, i64, i8*, i8*, i32, [2 x i16] }* @__profd_foo to i8*), i32 signext 0) +; STATIC: call void @__llvm_profile_instrument_target(i64 %3, ptr @__profd_foo, i32 0) +; STATIC-EXT: call void @__llvm_profile_instrument_target(i64 %3, ptr @__profd_foo, i32 zeroext 0) +; STATIC-SEXT: call void @__llvm_profile_instrument_target(i64 %3, ptr @__profd_foo, i32 signext 0) -; STATIC: declare void @__llvm_profile_instrument_target(i64, i8*, i32) -; STATIC-EXT: declare void @__llvm_profile_instrument_target(i64, i8*, i32 zeroext) -; STATIC-SEXT: declare void @__llvm_profile_instrument_target(i64, i8*, i32 signext) +; STATIC: declare void @__llvm_profile_instrument_target(i64, ptr, i32) +; STATIC-EXT: declare void @__llvm_profile_instrument_target(i64, ptr, i32 zeroext) +; STATIC-SEXT: declare void @__llvm_profile_instrument_target(i64, ptr, i32 signext) diff --git a/llvm/test/Instrumentation/InstrProfiling/noruntime.ll b/llvm/test/Instrumentation/InstrProfiling/noruntime.ll index f27ecf7b35f5d3..e5227e4fd78d72 100644 --- a/llvm/test/Instrumentation/InstrProfiling/noruntime.ll +++ b/llvm/test/Instrumentation/InstrProfiling/noruntime.ll @@ -2,15 +2,15 @@ ; RUN: opt < %s -passes=instrprof -S | FileCheck %s ; CHECK-NOT: define {{.*}} @__llvm_profile_runtime_user() -; CHECK-NOT: load i32, i32* @__llvm_profile_runtime +; CHECK-NOT: load i32, ptr @__llvm_profile_runtime @__llvm_profile_runtime = global i32 0, align 4 @__profn_foo = private constant [3 x i8] c"foo" define void @foo() { - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 0, i32 1, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 0, i32 1, i32 0) ret void } -declare void @llvm.instrprof.increment(i8*, i64, i32, i32) +declare void @llvm.instrprof.increment(ptr, i64, i32, i32) diff --git a/llvm/test/Instrumentation/InstrProfiling/platform.ll b/llvm/test/Instrumentation/InstrProfiling/platform.ll index 0bd35dc5ef3457..3c3712240d1e8e 100644 --- a/llvm/test/Instrumentation/InstrProfiling/platform.ll +++ b/llvm/test/Instrumentation/InstrProfiling/platform.ll @@ -30,11 +30,11 @@ ; AIX: @__llvm_prf_nm = private constant [{{.*}} x i8] c"{{.*}}", section "{{.*}}__llvm_prf_names", align 1 define void @foo() { - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 0, i32 1, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 0, i32 1, i32 0) ret void } -declare void @llvm.instrprof.increment(i8*, i64, i32, i32) +declare void @llvm.instrprof.increment(ptr, i64, i32, i32) ;; Emit registration functions for platforms that don't find the ;; symbols by their sections. diff --git a/llvm/test/Instrumentation/InstrProfiling/profiling.ll b/llvm/test/Instrumentation/InstrProfiling/profiling.ll index 15cc53caf91e80..948576abf1e874 100644 --- a/llvm/test/Instrumentation/InstrProfiling/profiling.ll +++ b/llvm/test/Instrumentation/InstrProfiling/profiling.ll @@ -39,7 +39,7 @@ ; XCOFF-NOT: comdat ; XCOFF: @__profd_foo = private global define void @foo() { - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 0, i32 1, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 0, i32 1, i32 0) ret void } @@ -52,7 +52,7 @@ define void @foo() { ; XCOFF: @__profc_foo_weak = private global ; XCOFF: @__profd_foo_weak = private global define weak void @foo_weak() { - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @__profn_foo_weak, i32 0, i32 0), i64 0, i32 1, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_foo_weak, i64 0, i32 1, i32 0) ret void } @@ -65,7 +65,7 @@ define weak void @foo_weak() { ; XCOFF: @"__profc_linkage.ll:foo_internal" = private global ; XCOFF: @"__profd_linkage.ll:foo_internal" = private global define internal void @foo_internal() { - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"__profn_linkage.ll:foo_internal", i32 0, i32 0), i64 0, i32 1, i32 0) + call void @llvm.instrprof.increment(ptr @"__profn_linkage.ll:foo_internal", i64 0, i32 1, i32 0) ret void } @@ -78,7 +78,7 @@ define internal void @foo_internal() { ; XCOFF: @__profc_foo_inline = private global ; XCOFF: @__profd_foo_inline = private global define linkonce_odr void @foo_inline() { - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__profn_foo_inline, i32 0, i32 0), i64 0, i32 1, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_foo_inline, i64 0, i32 1, i32 0) ret void } @@ -91,37 +91,37 @@ define linkonce_odr void @foo_inline() { ; XCOFF: @__profc_foo_extern = private global ; XCOFF: @__profd_foo_extern = private global define available_externally void @foo_extern() { - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @__profn_foo_extern, i32 0, i32 0), i64 0, i32 1, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_foo_extern, i64 0, i32 1, i32 0) ret void } -declare void @llvm.instrprof.increment(i8*, i64, i32, i32) +declare void @llvm.instrprof.increment(ptr, i64, i32, i32) -; ELF: @llvm.compiler.used = appending global {{.*}} @__profd_foo {{.*}} -; ELF_GENERIC: @llvm.compiler.used = appending global {{.*}} @__llvm_profile_runtime {{.*}} @__profd_foo {{.*}} -; MACHO: @llvm.compiler.used = appending global {{.*}} @__llvm_profile_runtime_user {{.*}} @__profd_foo {{.*}} -; COFF: @llvm.compiler.used = appending global {{.*}} @__llvm_profile_runtime_user {{.*}} @__profd_foo {{.*}} -; XCOFF: @llvm.used = appending global {{.*}} @__llvm_profile_runtime_user {{.*}} @__profd_foo {{.*}} +; ELF: @llvm.compiler.used = appending global {{.*}} [{{.*}}ptr @__profd_foo, ptr @__profd_foo_weak, ptr @"__profd_linkage.ll:foo_internal", ptr @__profd_foo_inline, ptr @__profd_foo_extern{{.*}}] +; ELF_GENERIC: @llvm.compiler.used = appending global [6 x ptr] [ptr @__llvm_profile_runtime, ptr @__profd_foo, ptr @__profd_foo_weak, ptr @"__profd_linkage.ll:foo_internal", ptr @__profd_foo_inline, ptr @__profd_foo_extern] +; MACHO: @llvm.compiler.used = appending global [6 x ptr] [ptr @__llvm_profile_runtime_user, ptr @__profd_foo, {{.*}} +; COFF: @llvm.compiler.used = appending global [6 x ptr] [ptr @__llvm_profile_runtime_user, ptr @__profd_foo, ptr @__profd_foo_weak, ptr @"__profd_linkage.ll:foo_internal", ptr @__profd_foo_inline, ptr @__profd_foo_extern] +; XCOFF: @llvm.used = appending global [7 x ptr] [ptr @__llvm_profile_runtime_user, ptr @__profd_foo, ptr @__profd_foo_weak, ptr @"__profd_linkage.ll:foo_internal", ptr @__profd_foo_inline, ptr @__profd_foo_extern, ptr @__llvm_prf_nm] ; MACHO: define linkonce_odr hidden i32 @__llvm_profile_runtime_user() {{.*}} { -; MACHO: %[[REG:.*]] = load i32, i32* @__llvm_profile_runtime +; MACHO: %[[REG:.*]] = load i32, ptr @__llvm_profile_runtime ; MACHO: ret i32 %[[REG]] ; MACHO: } ; COFF: define linkonce_odr hidden i32 @__llvm_profile_runtime_user() {{.*}} comdat { ; ELFRT-NOT: define linkonce_odr hidden i32 @__llvm_profile_runtime_user() {{.*}} { -; ELFRT-NOT: %[[REG:.*]] = load i32, i32* @__llvm_profile_runtime +; ELFRT-NOT: %[[REG:.*]] = load i32, ptr @__llvm_profile_runtime ; PS: define linkonce_odr hidden i32 @__llvm_profile_runtime_user() {{.*}} { -; PS: %[[REG:.*]] = load i32, i32* @__llvm_profile_runtime +; PS: %[[REG:.*]] = load i32, ptr @__llvm_profile_runtime ; XCOFF: define linkonce_odr hidden i32 @__llvm_profile_runtime_user() {{.*}} { -; XCOFF: %[[REG:.*]] = load i32, i32* @__llvm_profile_runtime +; XCOFF: %[[REG:.*]] = load i32, ptr @__llvm_profile_runtime ; XCOFF: ret i32 %[[REG]] ; XCOFF: } ; ELF_GENERIC: define internal void @__llvm_profile_register_functions() unnamed_addr { -; ELF_GENERIC-NEXT: call void @__llvm_profile_register_function(i8* bitcast (i32* @__llvm_profile_runtime to i8*)) -; ELF_GENERIC-NEXT: call void @__llvm_profile_register_function(i8* bitcast ({ i64, i64, i64, i8*, i8*, i32, [{{.*}} x i16] }* @__profd_foo to i8*)) -; ELF_GENERIC-NEXT: call void @__llvm_profile_register_function(i8* bitcast ({ i64, i64, i64, i8*, i8*, i32, [{{.*}} x i16] }* @__profd_foo_weak to i8*)) -; ELF_GENERIC: call void @__llvm_profile_register_names_function(i8* getelementptr inbounds {{.*}} @__llvm_prf_nm +; ELF_GENERIC-NEXT: call void @__llvm_profile_register_function(ptr @__llvm_profile_runtime) +; ELF_GENERIC-NEXT: call void @__llvm_profile_register_function(ptr @__profd_foo) +; ELF_GENERIC-NEXT: call void @__llvm_profile_register_function(ptr @__profd_foo_weak) +; ELF_GENERIC: call void @__llvm_profile_register_names_function(ptr @__llvm_prf_nm ; ELF_GENERIC-NEXT: ret void ; ELF_GENERIC-NEXT: } diff --git a/llvm/test/Instrumentation/InstrProfiling/runtime-counter-relocation.ll b/llvm/test/Instrumentation/InstrProfiling/runtime-counter-relocation.ll index bda89a311dad8b..44a2efd4a959a8 100644 --- a/llvm/test/Instrumentation/InstrProfiling/runtime-counter-relocation.ll +++ b/llvm/test/Instrumentation/InstrProfiling/runtime-counter-relocation.ll @@ -8,19 +8,19 @@ target triple = "x86_64-unknown-linux-gnu" ; RELOC: @__llvm_profile_counter_bias = linkonce_odr hidden global i64 0, comdat ; CHECK-LABEL: define void @foo -; CHECK-NEXT: %pgocount = load i64, i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__profc_foo, i32 0, i32 0) +; CHECK-NEXT: %pgocount = load i64, ptr @__profc_foo ; CHECK-NEXT: %1 = add i64 %pgocount, 1 -; CHECK-NEXT: store i64 %1, i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__profc_foo, i32 0, i32 0) +; CHECK-NEXT: store i64 %1, ptr @__profc_foo ; RELOC-LABEL: define void @foo -; RELOC-NEXT: %1 = load i64, i64* @__llvm_profile_counter_bias -; RELOC-NEXT: %2 = add i64 ptrtoint ([1 x i64]* @__profc_foo to i64), %1 -; RELOC-NEXT: %3 = inttoptr i64 %2 to i64* -; RELOC-NEXT: %pgocount = load i64, i64* %3 +; RELOC-NEXT: %1 = load i64, ptr @__llvm_profile_counter_bias +; RELOC-NEXT: %2 = add i64 ptrtoint (ptr @__profc_foo to i64), %1 +; RELOC-NEXT: %3 = inttoptr i64 %2 to ptr +; RELOC-NEXT: %pgocount = load i64, ptr %3 ; RELOC-NEXT: %4 = add i64 %pgocount, 1 -; RELOC-NEXT: store i64 %4, i64* %3 +; RELOC-NEXT: store i64 %4, ptr %3 define void @foo() { - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 0, i32 1, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 0, i32 1, i32 0) ret void } -declare void @llvm.instrprof.increment(i8*, i64, i32, i32) +declare void @llvm.instrprof.increment(ptr, i64, i32, i32) diff --git a/llvm/test/Transforms/PGOProfile/Inputs/thinlto_cspgo_bar_gen.ll b/llvm/test/Transforms/PGOProfile/Inputs/thinlto_cspgo_bar_gen.ll index d75bfbc56b7356..8ba468554d4396 100644 --- a/llvm/test/Transforms/PGOProfile/Inputs/thinlto_cspgo_bar_gen.ll +++ b/llvm/test/Transforms/PGOProfile/Inputs/thinlto_cspgo_bar_gen.ll @@ -11,15 +11,15 @@ entry: br i1 %tobool, label %if.else, label %if.then, !prof !30 if.then: - %0 = load i32, i32* @odd, align 4 + %0 = load i32, ptr @odd, align 4 %inc = add i32 %0, 1 - store i32 %inc, i32* @odd, align 4 + store i32 %inc, ptr @odd, align 4 br label %if.end if.else: - %1 = load i32, i32* @even, align 4 + %1 = load i32, ptr @even, align 4 %inc1 = add i32 %1, 1 - store i32 %inc1, i32* @even, align 4 + store i32 %inc1, ptr @even, align 4 br label %if.end if.end: diff --git a/llvm/test/Transforms/PGOProfile/Inputs/thinlto_cspgo_bar_use.ll b/llvm/test/Transforms/PGOProfile/Inputs/thinlto_cspgo_bar_use.ll index 80edc4ee954e75..0412deb8aee21a 100644 --- a/llvm/test/Transforms/PGOProfile/Inputs/thinlto_cspgo_bar_use.ll +++ b/llvm/test/Transforms/PGOProfile/Inputs/thinlto_cspgo_bar_use.ll @@ -13,16 +13,16 @@ entry: if.then: ; The calls here ensure that the instructions are not hoisted by SimplifyCFG. call void @clobber() - %0 = load i32, i32* @odd, align 4 + %0 = load i32, ptr @odd, align 4 %inc = add i32 %0, 1 - store i32 %inc, i32* @odd, align 4 + store i32 %inc, ptr @odd, align 4 call void @clobber() br label %if.end if.else: - %1 = load i32, i32* @even, align 4 + %1 = load i32, ptr @even, align 4 %inc1 = add i32 %1, 1 - store i32 %inc1, i32* @even, align 4 + store i32 %inc1, ptr @even, align 4 br label %if.end if.end: diff --git a/llvm/test/Transforms/PGOProfile/Inputs/thinlto_samplepgo_icp.ll b/llvm/test/Transforms/PGOProfile/Inputs/thinlto_samplepgo_icp.ll index 709c950ce176c6..d44f1251014fe0 100644 --- a/llvm/test/Transforms/PGOProfile/Inputs/thinlto_samplepgo_icp.ll +++ b/llvm/test/Transforms/PGOProfile/Inputs/thinlto_samplepgo_icp.ll @@ -1,12 +1,12 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@fptr = external local_unnamed_addr global void ()*, align 8 +@fptr = external local_unnamed_addr global ptr, align 8 ; Function Attrs: norecurse nounwind uwtable define void @_Z6updatei(i32 %i) local_unnamed_addr #0 { entry: - store void ()* @_ZL3foov, void ()** @fptr, align 8 + store ptr @_ZL3foov, ptr @fptr, align 8 ret void } diff --git a/llvm/test/Transforms/PGOProfile/Inputs/thinlto_samplepgo_icp3.ll b/llvm/test/Transforms/PGOProfile/Inputs/thinlto_samplepgo_icp3.ll index d040f1fcee9e8f..f0270cdf800588 100644 --- a/llvm/test/Transforms/PGOProfile/Inputs/thinlto_samplepgo_icp3.ll +++ b/llvm/test/Transforms/PGOProfile/Inputs/thinlto_samplepgo_icp3.ll @@ -1,19 +1,19 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@fptr = external local_unnamed_addr global void ()*, align 8 +@fptr = external local_unnamed_addr global ptr, align 8 ; Function Attrs: norecurse nounwind uwtable define void @_Z6updatei(i32 %i) local_unnamed_addr #0 { entry: - store void ()* @_ZL3foov, void ()** @fptr, align 8 + store ptr @_ZL3foov, ptr @fptr, align 8 ret void } ; Function Attrs: nounwind readnone uwtable define internal void @_ZL3foov() !prof !34 { entry: - %0 = load void ()*, void ()** @fptr, align 8 + %0 = load ptr, ptr @fptr, align 8 tail call void %0(), !prof !40 ret void } diff --git a/llvm/test/Transforms/PGOProfile/PR41279.ll b/llvm/test/Transforms/PGOProfile/PR41279.ll index ff762d26e12896..5f7a3f076f3a10 100644 --- a/llvm/test/Transforms/PGOProfile/PR41279.ll +++ b/llvm/test/Transforms/PGOProfile/PR41279.ll @@ -3,19 +3,19 @@ ; RUN: llvm-profdata merge %S/Inputs/PR41279.proftext -o %t.profdata ; RUN: opt < %s -passes=pgo-instr-use -pgo-test-profile-file=%t.profdata -S | FileCheck %s --check-prefix=USE -declare void @f3({ i8*, i64 }*, { i8*, i64 }*, i64) -declare { i8*, i64 } @f0({ i8*, i64 }*) +declare void @f3(ptr, ptr, i64) +declare { ptr, i64 } @f0(ptr) declare i64 @f1() -declare void @invok2({ i8*, i64 }*, i8* noalias readonly align 1, i64) -declare void @invok1({ i8*, i64 }*, { i8*, i64 }*, i64) +declare void @invok2(ptr, ptr noalias readonly align 1, i64) +declare void @invok1(ptr, ptr, i64) declare i32 @__CxxFrameHandler3(...) -define void @foo({ i8*, i64 }*, { i8*, i64 }*) personality i32 (...)* @__CxxFrameHandler3 { +define void @foo(ptr, ptr) personality ptr @__CxxFrameHandler3 { ; USE-LABEL: @foo ; USE-SAME: !prof ![[FUNC_ENTRY_COUNT:[0-9]+]] %3 = alloca i8, align 1 - store i8 0, i8* %3, align 1 + store i8 0, ptr %3, align 1 %4 = call i64 @f1() %5 = icmp ult i64 %4, 32 br i1 %5, label %7, label %13 @@ -25,49 +25,49 @@ define void @foo({ i8*, i64 }*, { i8*, i64 }*) personality i32 (...)* @__CxxFram 6: cleanupret from %17 unwind to caller ; GEN: 6: -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 {{[0-9]+}}, i32 4, i32 2) +; GEN: call void @llvm.instrprof.increment(ptr @__profn_foo, i64 {{[0-9]+}}, i32 4, i32 2) 7: - store i8 1, i8* %3, align 1 - %8 = call { i8*, i64 } @f0({ i8*, i64 }* %0) - %9 = extractvalue { i8*, i64 } %8, 0 - %10 = extractvalue { i8*, i64 } %8, 1 - invoke void @invok1({ i8*, i64 }* %1, { i8*, i64 }* %0, i64 1) + store i8 1, ptr %3, align 1 + %8 = call { ptr, i64 } @f0(ptr %0) + %9 = extractvalue { ptr, i64 } %8, 0 + %10 = extractvalue { ptr, i64 } %8, 1 + invoke void @invok1(ptr %1, ptr %0, i64 1) to label %11 unwind label %16 ; GEN: 7: ; GEN-NOT: call void @llvm.instrprof.increment 11: - store i8 0, i8* %3, align 1 - invoke void @invok2({ i8*, i64 }* %1, i8* noalias readonly align 1 %9, i64 %10) + store i8 0, ptr %3, align 1 + invoke void @invok2(ptr %1, ptr noalias readonly align 1 %9, i64 %10) to label %12 unwind label %16 ; GEN: 11: ; GEN-NOT: call void @llvm.instrprof.increment 12: - store i8 0, i8* %3, align 1 + store i8 0, ptr %3, align 1 br label %14 ; GEN: 12: -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 {{[0-9]+}}, i32 4, i32 1) +; GEN: call void @llvm.instrprof.increment(ptr @__profn_foo, i64 {{[0-9]+}}, i32 4, i32 1) 13: - call void @f3({ i8*, i64 }* %0, { i8*, i64 }* %1, i64 1) + call void @f3(ptr %0, ptr %1, i64 1) br label %14 ; GEN: 13: -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 {{[0-9]+}}, i32 4, i32 0) +; GEN: call void @llvm.instrprof.increment(ptr @__profn_foo, i64 {{[0-9]+}}, i32 4, i32 0) 14: ret void 15: - store i8 0, i8* %3, align 1 + store i8 0, ptr %3, align 1 br label %6 ; GEN: 15: -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 {{[0-9]+}}, i32 4, i32 3) +; GEN: call void @llvm.instrprof.increment(ptr @__profn_foo, i64 {{[0-9]+}}, i32 4, i32 3) 16: %17 = cleanuppad within none [] - %18 = load i8, i8* %3, align 1 + %18 = load i8, ptr %3, align 1 %19 = trunc i8 %18 to i1 br i1 %19, label %15, label %6 ; USE: br i1 %19, label %15, label %6 diff --git a/llvm/test/Transforms/PGOProfile/PR41279_2.ll b/llvm/test/Transforms/PGOProfile/PR41279_2.ll index 59dc81907340aa..fc3e54fcb4c17a 100644 --- a/llvm/test/Transforms/PGOProfile/PR41279_2.ll +++ b/llvm/test/Transforms/PGOProfile/PR41279_2.ll @@ -4,7 +4,7 @@ ; RUN: opt < %s -passes=pgo-instr-use -pgo-test-profile-file=%t.profdata -S | FileCheck %s --check-prefix=USE -define dso_local void @f() personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*) { +define dso_local void @f() personality ptr @__C_specific_handler { ; USE-LABEL: @f ; USE-SAME: !prof ![[FUNC_ENTRY_COUNT:[0-9]+]] ; USE-DAG: {{![0-9]+}} = !{i32 1, !"ProfileSummary", {{![0-9]+}}} @@ -20,15 +20,15 @@ catch.dispatch: %0 = catchswitch within none [label %__except] unwind to caller __except: - %1 = catchpad within %0 [i8* null] + %1 = catchpad within %0 [ptr null] catchret from %1 to label %__except1 __except1: %2 = call i32 @llvm.eh.exceptioncode(token %1) - store i32 %2, i32* %__exception_code, align 4 + store i32 %2, ptr %__exception_code, align 4 br label %__try.cont7 ;GEN: _except1: -;GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @__profn_f, i32 0, i32 0), i64 {{[0-9]+}}, i32 2, i32 1) +;GEN: call void @llvm.instrprof.increment(ptr @__profn_f, i64 {{[0-9]+}}, i32 2, i32 1) invoke.cont: br label %__try.cont @@ -43,12 +43,12 @@ catch.dispatch4: ; GEN-NOT: call void @llvm.instrprof.increment __except5: - %4 = catchpad within %3 [i8* null] + %4 = catchpad within %3 [ptr null] catchret from %4 to label %__except6 __except6: %5 = call i32 @llvm.eh.exceptioncode(token %4) - store i32 %5, i32* %__exception_code2, align 4 + store i32 %5, ptr %__exception_code2, align 4 br label %__try.cont7 __try.cont7: @@ -57,7 +57,7 @@ __try.cont7: invoke.cont3: br label %__try.cont7 ;GEN: invoke.cont3: -;GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @__profn_f, i32 0, i32 0), i64 {{[0-9]+}}, i32 2, i32 0) +;GEN: call void @llvm.instrprof.increment(ptr @__profn_f, i64 {{[0-9]+}}, i32 2, i32 0) } diff --git a/llvm/test/Transforms/PGOProfile/bfi_verification.ll b/llvm/test/Transforms/PGOProfile/bfi_verification.ll index 22dbf45a44c19f..9d07842a312217 100644 --- a/llvm/test/Transforms/PGOProfile/bfi_verification.ll +++ b/llvm/test/Transforms/PGOProfile/bfi_verification.ll @@ -6,20 +6,20 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -%struct.basket = type { %struct.arc*, i64, i64 } -%struct.arc = type { i64, %struct.node*, %struct.node*, i32, %struct.arc*, %struct.arc*, i64, i64 } -%struct.node = type { i64, i32, %struct.node*, %struct.node*, %struct.node*, %struct.node*, %struct.arc*, %struct.arc*, %struct.arc*, %struct.arc*, i64, i64, i32, i32 } +%struct.basket = type { ptr, i64, i64 } +%struct.arc = type { i64, ptr, ptr, i32, ptr, ptr, i64, i64 } +%struct.node = type { i64, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64, i64, i32, i32 } -@perm = internal unnamed_addr global [351 x %struct.basket*] zeroinitializer, align 16 +@perm = internal unnamed_addr global [351 x ptr] zeroinitializer, align 16 define dso_local void @sort_basket(i64 %min, i64 %max) { entry: %add = add nsw i64 %min, %max %div = sdiv i64 %add, 2 - %arrayidx = getelementptr inbounds [351 x %struct.basket*], [351 x %struct.basket*]* @perm, i64 0, i64 %div - %0 = load %struct.basket*, %struct.basket** %arrayidx, align 8 - %abs_cost = getelementptr inbounds %struct.basket, %struct.basket* %0, i64 0, i32 2 - %1 = load i64, i64* %abs_cost, align 8 + %arrayidx = getelementptr inbounds [351 x ptr], ptr @perm, i64 0, i64 %div + %0 = load ptr, ptr %arrayidx, align 8 + %abs_cost = getelementptr inbounds %struct.basket, ptr %0, i64 0, i32 2 + %1 = load i64, ptr %abs_cost, align 8 br label %do.body do.body: @@ -29,10 +29,10 @@ do.body: while.cond: %l.1 = phi i64 [ %l.0, %do.body ], [ %inc, %while.body ] - %arrayidx1 = getelementptr inbounds [351 x %struct.basket*], [351 x %struct.basket*]* @perm, i64 0, i64 %l.1 - %2 = load %struct.basket*, %struct.basket** %arrayidx1, align 8 - %abs_cost2 = getelementptr inbounds %struct.basket, %struct.basket* %2, i64 0, i32 2 - %3 = load i64, i64* %abs_cost2, align 8 + %arrayidx1 = getelementptr inbounds [351 x ptr], ptr @perm, i64 0, i64 %l.1 + %2 = load ptr, ptr %arrayidx1, align 8 + %abs_cost2 = getelementptr inbounds %struct.basket, ptr %2, i64 0, i32 2 + %3 = load i64, ptr %abs_cost2, align 8 %cmp = icmp sgt i64 %3, %1 br i1 %cmp, label %while.body, label %while.cond3 @@ -42,10 +42,10 @@ while.body: while.cond3: %r.1 = phi i64 [ %r.0, %while.cond ], [ %dec, %while.body7 ] - %arrayidx4 = getelementptr inbounds [351 x %struct.basket*], [351 x %struct.basket*]* @perm, i64 0, i64 %r.1 - %4 = load %struct.basket*, %struct.basket** %arrayidx4, align 8 - %abs_cost5 = getelementptr inbounds %struct.basket, %struct.basket* %4, i64 0, i32 2 - %5 = load i64, i64* %abs_cost5, align 8 + %arrayidx4 = getelementptr inbounds [351 x ptr], ptr @perm, i64 0, i64 %r.1 + %4 = load ptr, ptr %arrayidx4, align 8 + %abs_cost5 = getelementptr inbounds %struct.basket, ptr %4, i64 0, i32 2 + %5 = load i64, ptr %abs_cost5, align 8 %cmp6 = icmp sgt i64 %1, %5 br i1 %cmp6, label %while.body7, label %while.end8 @@ -58,18 +58,16 @@ while.end8: br i1 %cmp9, label %if.then, label %if.end if.then: - %6 = bitcast %struct.basket** %arrayidx1 to i64* - %7 = load i64, i64* %6, align 8 - store %struct.basket* %4, %struct.basket** %arrayidx1, align 8 - %8 = bitcast %struct.basket** %arrayidx4 to i64* - store i64 %7, i64* %8, align 8 + %6 = load i64, ptr %arrayidx1, align 8 + store ptr %4, ptr %arrayidx1, align 8 + store i64 %6, ptr %arrayidx4, align 8 br label %if.end if.end: %cmp14 = icmp sgt i64 %l.1, %r.1 %not.cmp14 = xor i1 %cmp14, true - %9 = zext i1 %not.cmp14 to i64 - %r.2 = sub i64 %r.1, %9 + %7 = zext i1 %not.cmp14 to i64 + %r.2 = sub i64 %r.1, %7 %not.cmp1457 = xor i1 %cmp14, true %inc16 = zext i1 %not.cmp1457 to i64 %l.2 = add nsw i64 %l.1, %inc16 diff --git a/llvm/test/Transforms/PGOProfile/callbr.ll b/llvm/test/Transforms/PGOProfile/callbr.ll index b5f5f41fe6ae43..d171f1a58758c8 100644 --- a/llvm/test/Transforms/PGOProfile/callbr.ll +++ b/llvm/test/Transforms/PGOProfile/callbr.ll @@ -2,7 +2,7 @@ define i32 @a() { entry: -; CHECK-NOT: ptrtoint void (i8*)* asm sideeffect +; CHECK-NOT: ptrtoint ptr asm sideeffect ; CHECK: callbr void asm sideeffect %retval = alloca i32, align 4 callbr void asm sideeffect "", "!i,~{dirflag},~{fpsr},~{flags}"() #1 @@ -12,6 +12,6 @@ asm.fallthrough: br label %b b: - %0 = load i32, i32* %retval, align 4 + %0 = load i32, ptr %retval, align 4 ret i32 %0 } diff --git a/llvm/test/Transforms/PGOProfile/chr.ll b/llvm/test/Transforms/PGOProfile/chr.ll index 280ecc4124d047..124bc5010fe5c3 100644 --- a/llvm/test/Transforms/PGOProfile/chr.ll +++ b/llvm/test/Transforms/PGOProfile/chr.ll @@ -22,10 +22,10 @@ declare void @bar() ; if ((t0 & 2) != 0) ; foo() ; } -define void @test_chr_1(i32* %i) !prof !14 { +define void @test_chr_1(ptr %i) !prof !14 { ; CHECK-LABEL: @test_chr_1( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[TMP0]], 3 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 3 ; CHECK-NEXT: br i1 [[TMP2]], label [[BB0:%.*]], label [[ENTRY_SPLIT_NONCHR:%.*]], !prof [[PROF15:![0-9]+]] @@ -51,7 +51,7 @@ define void @test_chr_1(i32* %i) !prof !14 { ; CHECK-NEXT: ret void ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 1 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb1, label %bb0, !prof !15 @@ -95,10 +95,10 @@ bb3: ; if ((t0 & 4) != 0) ; foo() ; } -define void @test_chr_1_1(i32* %i) !prof !14 { +define void @test_chr_1_1(ptr %i) !prof !14 { ; CHECK-LABEL: @test_chr_1_1( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[TMP0]], 7 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 7 ; CHECK-NEXT: br i1 [[TMP2]], label [[BB0:%.*]], label [[ENTRY_SPLIT_NONCHR:%.*]], !prof [[PROF15]] @@ -131,7 +131,7 @@ define void @test_chr_1_1(i32* %i) !prof !14 { ; CHECK-NEXT: ret void ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 1 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb1, label %bb0, !prof !15 @@ -181,10 +181,10 @@ bb5: ; if ((t0 & 2) != 0) ; foo() ; } -define void @test_chr_2(i32* %i) !prof !14 { +define void @test_chr_2(ptr %i) !prof !14 { ; CHECK-LABEL: @test_chr_2( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[TMP0]], 3 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 3 ; CHECK-NEXT: br i1 [[TMP2]], label [[BB1:%.*]], label [[ENTRY_SPLIT_NONCHR:%.*]], !prof [[PROF15]] @@ -214,7 +214,7 @@ define void @test_chr_2(i32* %i) !prof !14 { ; CHECK-NEXT: ret void ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 255 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb4, label %bb0, !prof !15 @@ -274,10 +274,10 @@ bb4: ; if ((t2 & 8) != 0) ; foo() ; } -define void @test_chr_3(i32* %i) !prof !14 { +define void @test_chr_3(ptr %i) !prof !14 { ; CHECK-LABEL: @test_chr_3( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[TMP0]], 3 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 3 ; CHECK-NEXT: br i1 [[TMP2]], label [[BB0:%.*]], label [[ENTRY_SPLIT_NONCHR:%.*]], !prof [[PROF15]] @@ -300,7 +300,7 @@ define void @test_chr_3(i32* %i) !prof !14 { ; CHECK-NEXT: call void @foo() ; CHECK-NEXT: br label [[BB3]] ; CHECK: bb3: -; CHECK-NEXT: [[TMP6:%.*]] = load i32, i32* [[I]], align 4 +; CHECK-NEXT: [[TMP6:%.*]] = load i32, ptr [[I]], align 4 ; CHECK-NEXT: [[TMP7:%.*]] = and i32 [[TMP6]], 12 ; CHECK-NEXT: [[TMP8:%.*]] = icmp eq i32 [[TMP7]], 12 ; CHECK-NEXT: br i1 [[TMP8]], label [[BB4:%.*]], label [[BB3_SPLIT_NONCHR:%.*]], !prof [[PROF15]] @@ -326,7 +326,7 @@ define void @test_chr_3(i32* %i) !prof !14 { ; CHECK-NEXT: ret void ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 1 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb1, label %bb0, !prof !15 @@ -345,7 +345,7 @@ bb2: br label %bb3 bb3: - %5 = load i32, i32* %i + %5 = load i32, ptr %i %6 = and i32 %5, 4 %7 = icmp eq i32 %6, 0 br i1 %7, label %bb5, label %bb4, !prof !15 @@ -382,10 +382,10 @@ bb7: ; sum2 = (t0 & 2) ? sum1 : (sum1 + 43) ; return sum2 ; } -define i32 @test_chr_4(i32* %i, i32 %sum0) !prof !14 { +define i32 @test_chr_4(ptr %i, i32 %sum0) !prof !14 { ; CHECK-LABEL: @test_chr_4( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[DOTFR1:%.*]] = freeze i32 [[TMP0]] ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[DOTFR1]], 3 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 3 @@ -408,7 +408,7 @@ define i32 @test_chr_4(i32* %i, i32 %sum0) !prof !14 { ; CHECK-NEXT: br label [[COMMON_RET]] ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 1 %2 = icmp eq i32 %1, 0 %3 = add i32 %sum0, 42 @@ -445,10 +445,10 @@ entry: ; } ; } ; return sum -define i32 @test_chr_5(i32* %i, i32 %sum0) !prof !14 { +define i32 @test_chr_5(ptr %i, i32 %sum0) !prof !14 { ; CHECK-LABEL: @test_chr_5( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[DOTFR1:%.*]] = freeze i32 [[TMP0]] ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[DOTFR1]], 15 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 15 @@ -483,7 +483,7 @@ define i32 @test_chr_5(i32* %i, i32 %sum0) !prof !14 { ; CHECK-NEXT: ret i32 [[SUM6]] ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 255 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb3, label %bb0, !prof !15 @@ -543,10 +543,10 @@ bb3: ; } ; } ; return sum -define i32 @test_chr_5_1(i32* %i, i32 %sum0) !prof !14 { +define i32 @test_chr_5_1(ptr %i, i32 %sum0) !prof !14 { ; CHECK-LABEL: @test_chr_5_1( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[DOTFR1:%.*]] = freeze i32 [[TMP0]] ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[SUM0:%.*]], 4 ; CHECK-NEXT: [[TMP2:%.*]] = icmp ne i32 [[TMP1]], 0 @@ -584,7 +584,7 @@ define i32 @test_chr_5_1(i32* %i, i32 %sum0) !prof !14 { ; CHECK-NEXT: ret i32 [[SUM6]] ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 255 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb3, label %bb0, !prof !15 @@ -644,12 +644,12 @@ bb3: ; } ; } ; return sum -define i32 @test_chr_6(i32* %i, i32* %j, i32 %sum0) !prof !14 { +define i32 @test_chr_6(ptr %i, ptr %j, i32 %sum0) !prof !14 { ; CHECK-LABEL: @test_chr_6( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[I0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[I0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[I0_FR:%.*]] = freeze i32 [[I0]] -; CHECK-NEXT: [[J0:%.*]] = load i32, i32* [[J:%.*]], align 4 +; CHECK-NEXT: [[J0:%.*]] = load i32, ptr [[J:%.*]], align 4 ; CHECK-NEXT: [[V9:%.*]] = and i32 [[J0]], 4 ; CHECK-NEXT: [[V10:%.*]] = icmp ne i32 [[V9]], 0 ; CHECK-NEXT: [[TMP0:%.*]] = and i32 [[I0_FR]], 10 @@ -682,8 +682,8 @@ define i32 @test_chr_6(i32* %i, i32* %j, i32 %sum0) !prof !14 { ; CHECK-NEXT: ret i32 [[SUM6]] ; entry: - %i0 = load i32, i32* %i - %j0 = load i32, i32* %j + %i0 = load i32, ptr %i + %j0 = load i32, ptr %j %v1 = and i32 %i0, 255 %v2 = icmp eq i32 %v1, 0 br i1 %v2, label %bb3, label %bb0, !prof !15 @@ -728,16 +728,16 @@ bb3: ; return sum ; -> ; (no change) -define i32 @test_chr_7(i32* %i, i32* %j, i32 %sum0) !prof !14 { +define i32 @test_chr_7(ptr %i, ptr %j, i32 %sum0) !prof !14 { ; CHECK-LABEL: @test_chr_7( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[I0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[I0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[V3:%.*]] = and i32 [[I0]], 2 ; CHECK-NEXT: [[V4:%.*]] = icmp eq i32 [[V3]], 0 ; CHECK-NEXT: [[V8:%.*]] = add i32 [[SUM0:%.*]], 43 ; CHECK-NEXT: [[SUM2:%.*]] = select i1 [[V4]], i32 [[SUM0]], i32 [[V8]], !prof [[PROF16]] ; CHECK-NEXT: call void @foo() -; CHECK-NEXT: [[J0:%.*]] = load i32, i32* [[J:%.*]], align 4 +; CHECK-NEXT: [[J0:%.*]] = load i32, ptr [[J:%.*]], align 4 ; CHECK-NEXT: [[V9:%.*]] = and i32 [[J0]], 4 ; CHECK-NEXT: [[V10:%.*]] = icmp eq i32 [[V9]], 0 ; CHECK-NEXT: br i1 [[V10]], label [[BB2:%.*]], label [[BB1:%.*]], !prof [[PROF16]] @@ -750,13 +750,13 @@ define i32 @test_chr_7(i32* %i, i32* %j, i32 %sum0) !prof !14 { ; CHECK-NEXT: ret i32 [[SUM5]] ; entry: - %i0 = load i32, i32* %i + %i0 = load i32, ptr %i %v3 = and i32 %i0, 2 %v4 = icmp eq i32 %v3, 0 %v8 = add i32 %sum0, 43 %sum2 = select i1 %v4, i32 %sum0, i32 %v8, !prof !15 call void @foo() - %j0 = load i32, i32* %j + %j0 = load i32, ptr %j %v9 = and i32 %j0, 4 %v10 = icmp eq i32 %v9, 0 br i1 %v10, label %bb2, label %bb1, !prof !15 ; %v10 can't be hoisted above the above select @@ -798,12 +798,12 @@ bb2: ; foo() ; } ; return sum -define i32 @test_chr_7_1(i32* %i, i32* %j, i32 %sum0) !prof !14 { +define i32 @test_chr_7_1(ptr %i, ptr %j, i32 %sum0) !prof !14 { ; CHECK-LABEL: @test_chr_7_1( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[I0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[I0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: call void @foo() -; CHECK-NEXT: [[J0:%.*]] = load i32, i32* [[J:%.*]], align 4 +; CHECK-NEXT: [[J0:%.*]] = load i32, ptr [[J:%.*]], align 4 ; CHECK-NEXT: [[TMP0:%.*]] = and i32 [[J0]], 12 ; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 12 ; CHECK-NEXT: br i1 [[TMP1]], label [[BB0:%.*]], label [[ENTRY_SPLIT_NONCHR:%.*]], !prof [[PROF15]] @@ -833,13 +833,13 @@ define i32 @test_chr_7_1(i32* %i, i32* %j, i32 %sum0) !prof !14 { ; CHECK-NEXT: ret i32 [[SUM2]] ; entry: - %i0 = load i32, i32* %i + %i0 = load i32, ptr %i %v3 = and i32 %i0, 2 %v4 = icmp eq i32 %v3, 0 %v8 = add i32 %sum0, 43 %sum2 = select i1 %v4, i32 %sum0, i32 %v8, !prof !15 call void @foo() - %j0 = load i32, i32* %j + %j0 = load i32, ptr %j %v9 = and i32 %j0, 4 %v10 = icmp eq i32 %v9, 0 br i1 %v10, label %bb1, label %bb0, !prof !15 ; %v10 can't be hoisted above the above select @@ -870,10 +870,10 @@ bb3: ; foo() ; -> ; (no change) -define void @test_chr_8(i32* %i) !prof !14 { +define void @test_chr_8(ptr %i) !prof !14 { ; CHECK-LABEL: @test_chr_8( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[TMP0]], 1 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 0 ; CHECK-NEXT: br i1 [[TMP2]], label [[BB1:%.*]], label [[BB0:%.*]], !prof [[PROF17:![0-9]+]] @@ -891,7 +891,7 @@ define void @test_chr_8(i32* %i) !prof !14 { ; CHECK-NEXT: ret void ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 1 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb1, label %bb0, !prof !16 @@ -940,16 +940,16 @@ bb3: ; } ; // There's a phi for t here. ; return t -define i32 @test_chr_9(i32* %i, i32* %j) !prof !14 { +define i32 @test_chr_9(ptr %i, ptr %j) !prof !14 { ; CHECK-LABEL: @test_chr_9( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[TMP0]], 3 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 3 ; CHECK-NEXT: br i1 [[TMP2]], label [[BB0:%.*]], label [[ENTRY_SPLIT_NONCHR:%.*]], !prof [[PROF15]] ; CHECK: bb0: ; CHECK-NEXT: call void @foo() -; CHECK-NEXT: [[TMP3:%.*]] = load i32, i32* [[J:%.*]], align 4 +; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[J:%.*]], align 4 ; CHECK-NEXT: call void @foo() ; CHECK-NEXT: br label [[BB3:%.*]] ; CHECK: entry.split.nonchr: @@ -964,7 +964,7 @@ define i32 @test_chr_9(i32* %i, i32* %j) !prof !14 { ; CHECK-NEXT: [[TMP6:%.*]] = icmp eq i32 [[TMP5]], 0 ; CHECK-NEXT: br i1 [[TMP6]], label [[BB3]], label [[BB2_NONCHR:%.*]], !prof [[PROF16]] ; CHECK: bb2.nonchr: -; CHECK-NEXT: [[TMP7:%.*]] = load i32, i32* [[J]], align 4 +; CHECK-NEXT: [[TMP7:%.*]] = load i32, ptr [[J]], align 4 ; CHECK-NEXT: call void @foo() ; CHECK-NEXT: br label [[BB3]] ; CHECK: bb3: @@ -972,7 +972,7 @@ define i32 @test_chr_9(i32* %i, i32* %j) !prof !14 { ; CHECK-NEXT: ret i32 [[TMP8]] ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 1 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb1, label %bb0, !prof !15 @@ -987,7 +987,7 @@ bb1: br i1 %4, label %bb3, label %bb2, !prof !15 bb2: - %5 = load i32, i32* %j + %5 = load i32, ptr %j call void @foo() br label %bb3 @@ -1021,16 +1021,16 @@ bb3: ; } ; // A new phi for t1 is inserted here. ; return (t1 * 42) - (t1 - 99) -define i32 @test_chr_10(i32* %i, i32* %j) !prof !14 { +define i32 @test_chr_10(ptr %i, ptr %j) !prof !14 { ; CHECK-LABEL: @test_chr_10( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[TMP0]], 3 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 3 ; CHECK-NEXT: br i1 [[TMP2]], label [[BB0:%.*]], label [[ENTRY_SPLIT_NONCHR:%.*]], !prof [[PROF15]] ; CHECK: bb0: ; CHECK-NEXT: call void @foo() -; CHECK-NEXT: [[TMP3:%.*]] = load i32, i32* [[J:%.*]], align 4 +; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[J:%.*]], align 4 ; CHECK-NEXT: call void @foo() ; CHECK-NEXT: br label [[BB3:%.*]] ; CHECK: entry.split.nonchr: @@ -1041,7 +1041,7 @@ define i32 @test_chr_10(i32* %i, i32* %j) !prof !14 { ; CHECK-NEXT: call void @foo() ; CHECK-NEXT: br label [[BB1_NONCHR]] ; CHECK: bb1.nonchr: -; CHECK-NEXT: [[TMP5:%.*]] = load i32, i32* [[J]], align 4 +; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[J]], align 4 ; CHECK-NEXT: [[TMP6:%.*]] = and i32 [[TMP0]], 2 ; CHECK-NEXT: [[TMP7:%.*]] = icmp eq i32 [[TMP6]], 0 ; CHECK-NEXT: br i1 [[TMP7]], label [[BB3]], label [[BB2_NONCHR:%.*]], !prof [[PROF16]] @@ -1056,7 +1056,7 @@ define i32 @test_chr_10(i32* %i, i32* %j) !prof !14 { ; CHECK-NEXT: ret i32 [[TMP11]] ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 1 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb1, label %bb0, !prof !15 @@ -1066,7 +1066,7 @@ bb0: br label %bb1 bb1: - %3 = load i32, i32* %j + %3 = load i32, ptr %j %4 = and i32 %0, 2 %5 = icmp eq i32 %4, 0 br i1 %5, label %bb3, label %bb2, !prof !15 @@ -1111,10 +1111,10 @@ bb3: ; if ((1.0 / t0) * t0 < 1) // Likely true ; foo() ; } -define void @test_chr_11(i32* %i, i32 %x) !prof !14 { +define void @test_chr_11(ptr %i, i32 %x) !prof !14 { ; CHECK-LABEL: @test_chr_11( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[TMP0]], 1 ; CHECK-NEXT: [[TMP2:%.*]] = icmp ne i32 [[TMP1]], 0 ; CHECK-NEXT: [[CONV:%.*]] = sitofp i32 [[TMP0]] to double @@ -1147,7 +1147,7 @@ define void @test_chr_11(i32* %i, i32 %x) !prof !14 { ; CHECK-NEXT: ret void ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 1 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb1, label %bb0, !prof !15 @@ -1173,10 +1173,10 @@ bb3: } ; Selects + unrelated br only -define i32 @test_chr_12(i32* %i, i32 %sum0) !prof !14 { +define i32 @test_chr_12(ptr %i, i32 %sum0) !prof !14 { ; CHECK-LABEL: @test_chr_12( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[DOTFR1:%.*]] = freeze i32 [[TMP0]] ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[DOTFR1]], 255 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 0 @@ -1190,7 +1190,7 @@ define i32 @test_chr_12(i32* %i, i32 %sum0) !prof !14 { ; CHECK-NEXT: [[TMP7:%.*]] = icmp eq i32 [[TMP6]], 0 ; CHECK-NEXT: [[TMP8:%.*]] = add i32 [[SUM1]], 43 ; CHECK-NEXT: [[SUM2:%.*]] = select i1 [[TMP7]], i32 [[SUM1]], i32 [[TMP8]], !prof [[PROF16]] -; CHECK-NEXT: [[TMP9:%.*]] = load i32, i32* [[I]], align 4 +; CHECK-NEXT: [[TMP9:%.*]] = load i32, ptr [[I]], align 4 ; CHECK-NEXT: [[TMP10:%.*]] = icmp ne i32 [[TMP9]], 0 ; CHECK-NEXT: [[TMP11:%.*]] = and i32 [[DOTFR1]], 8 ; CHECK-NEXT: [[TMP12:%.*]] = icmp ne i32 [[TMP11]], 0 @@ -1212,7 +1212,7 @@ define i32 @test_chr_12(i32* %i, i32 %sum0) !prof !14 { ; CHECK-NEXT: ret i32 [[SUM6]] ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 255 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb3, label %bb0, !prof !15 @@ -1226,7 +1226,7 @@ bb0: %7 = icmp eq i32 %6, 0 %8 = add i32 %sum1, 43 %sum2 = select i1 %7, i32 %sum1, i32 %8, !prof !15 - %9 = load i32, i32* %i + %9 = load i32, ptr %i %10 = icmp eq i32 %9, 0 br i1 %10, label %bb2, label %bb1, !prof !15 @@ -1280,11 +1280,11 @@ bb3: ; foo() ; } ; return i0 + sum3 -define i32 @test_chr_14(i32* %i, i32* %j, i32 %sum0, i1 %pred, i32 %z) !prof !14 { +define i32 @test_chr_14(ptr %i, ptr %j, i32 %sum0, i1 %pred, i32 %z) !prof !14 { ; CHECK-LABEL: @test_chr_14( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[Z_FR:%.*]] = freeze i32 [[Z:%.*]] -; CHECK-NEXT: [[I0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[I0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[V1:%.*]] = icmp eq i32 [[Z_FR]], 1 ; CHECK-NEXT: br i1 [[V1]], label [[BB1:%.*]], label [[ENTRY_SPLIT_NONCHR:%.*]], !prof [[PROF15]] ; CHECK: entry.split.nonchr: @@ -1295,7 +1295,7 @@ define i32 @test_chr_14(i32* %i, i32* %j, i32 %sum0, i1 %pred, i32 %z) !prof !14 ; CHECK-NEXT: call void @foo() ; CHECK-NEXT: br label [[BB1]] ; CHECK: bb1: -; CHECK-NEXT: [[J0:%.*]] = load i32, i32* [[J:%.*]], align 4 +; CHECK-NEXT: [[J0:%.*]] = load i32, ptr [[J:%.*]], align 4 ; CHECK-NEXT: [[V6:%.*]] = and i32 [[I0]], 2 ; CHECK-NEXT: [[V4:%.*]] = icmp ne i32 [[V6]], [[J0]] ; CHECK-NEXT: [[V8:%.*]] = add i32 [[SUM0:%.*]], 43 @@ -1328,7 +1328,7 @@ define i32 @test_chr_14(i32* %i, i32* %j, i32 %sum0, i1 %pred, i32 %z) !prof !14 ; CHECK-NEXT: ret i32 [[V11]] ; entry: - %i0 = load i32, i32* %i + %i0 = load i32, ptr %i %v0 = icmp eq i32 %z, 0 %v1 = icmp ne i32 %z, 1 %v2 = select i1 %v1, i1 %pred, i1 true, !prof !15 @@ -1340,7 +1340,7 @@ bb0: br label %bb1 bb1: - %j0 = load i32, i32* %j + %j0 = load i32, ptr %j %v6 = and i32 %i0, 2 %v4 = icmp eq i32 %v6, %j0 %v8 = add i32 %sum0, 43 @@ -1376,10 +1376,10 @@ bb3: ; return i0 + sum3 ; -> ; (no change) -define i32 @test_chr_15(i32* %i, i32* %j, i32 %sum0, i1 %pred, i32 %z) !prof !14 { +define i32 @test_chr_15(ptr %i, ptr %j, i32 %sum0, i1 %pred, i32 %z) !prof !14 { ; CHECK-LABEL: @test_chr_15( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[I0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[I0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[V0:%.*]] = icmp eq i32 [[Z:%.*]], 0 ; CHECK-NEXT: [[V3:%.*]] = select i1 [[V0]], i1 [[PRED:%.*]], i1 false ; CHECK-NEXT: br i1 [[V3]], label [[BB0:%.*]], label [[BB1:%.*]], !prof [[PROF16]] @@ -1387,7 +1387,7 @@ define i32 @test_chr_15(i32* %i, i32* %j, i32 %sum0, i1 %pred, i32 %z) !prof !14 ; CHECK-NEXT: call void @foo() ; CHECK-NEXT: br label [[BB1]] ; CHECK: bb1: -; CHECK-NEXT: [[J0:%.*]] = load i32, i32* [[J:%.*]], align 4 +; CHECK-NEXT: [[J0:%.*]] = load i32, ptr [[J:%.*]], align 4 ; CHECK-NEXT: call void @foo() ; CHECK-NEXT: [[V9:%.*]] = and i32 [[I0]], 4 ; CHECK-NEXT: [[V10:%.*]] = icmp eq i32 [[V9]], 0 @@ -1406,7 +1406,7 @@ define i32 @test_chr_15(i32* %i, i32* %j, i32 %sum0, i1 %pred, i32 %z) !prof !14 ; CHECK-NEXT: ret i32 [[V11]] ; entry: - %i0 = load i32, i32* %i + %i0 = load i32, ptr %i %v0 = icmp eq i32 %z, 0 %v1 = icmp ne i32 %z, 1 %v2 = select i1 %v1, i1 %pred, i1 true, !prof !15 @@ -1418,7 +1418,7 @@ bb0: br label %bb1 bb1: - %j0 = load i32, i32* %j + %j0 = load i32, ptr %j %v6 = and i32 %i0, 2 %v4 = icmp eq i32 %v6, %j0 %v8 = add i32 %sum0, 43 @@ -1472,10 +1472,10 @@ bb3: ; v42 = phi v41, v41_nc ; v43 = v42 + t7 ; return v43 -define i32 @test_chr_16(i32* %i) !prof !14 { +define i32 @test_chr_16(ptr %i) !prof !14 { ; CHECK-LABEL: @test_chr_16( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[TMP0]], 3 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 3 ; CHECK-NEXT: br i1 [[TMP2]], label [[BB0:%.*]], label [[ENTRY_SPLIT_NONCHR:%.*]], !prof [[PROF15]] @@ -1508,7 +1508,7 @@ define i32 @test_chr_16(i32* %i) !prof !14 { ; CHECK-NEXT: ret i32 [[V43]] ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 1 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb1, label %bb0, !prof !15 @@ -1650,13 +1650,13 @@ bb3: ; sum4 = phi sum3, sum3_nc, sum1 ; } while (tmp2 != 100) ; return sum4 -define i32 @test_chr_18(i32* %i, i32 %sum0) !prof !14 { +define i32 @test_chr_18(ptr %i, i32 %sum0) !prof !14 { ; CHECK-LABEL: @test_chr_18( ; CHECK-NEXT: entry: ; CHECK-NEXT: br label [[BB0:%.*]] ; CHECK: bb0: ; CHECK-NEXT: [[INC1:%.*]] = phi i32 [ [[TMP2:%.*]], [[BB2:%.*]] ], [ 0, [[ENTRY:%.*]] ] -; CHECK-NEXT: [[LI:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[LI:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[LI_FR:%.*]] = freeze i32 [[LI]] ; CHECK-NEXT: [[SUM1:%.*]] = add i32 [[SUM0:%.*]], 42 ; CHECK-NEXT: [[TMP0:%.*]] = and i32 [[LI_FR]], 5 @@ -1688,7 +1688,7 @@ entry: bb0: %inc1 = phi i32 [ %inc2, %bb2 ], [ 0, %entry ] - %li = load i32, i32* %i + %li = load i32, ptr %i %a1 = and i32 %li, 1 %cmp1 = icmp eq i32 %a1, 0 %sum1 = add i32 %sum0, 42 @@ -1741,10 +1741,10 @@ bb3: ; } ; sum6 = phi tmp4, sum0, sum2_nc, sum4_nc ; return sum6 -define i32 @test_chr_19(i32* %i, i32 %sum0) !prof !14 { +define i32 @test_chr_19(ptr %i, i32 %sum0) !prof !14 { ; CHECK-LABEL: @test_chr_19( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[DOTFR1:%.*]] = freeze i32 [[TMP0]] ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[DOTFR1]], 9 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 9 @@ -1773,7 +1773,7 @@ define i32 @test_chr_19(i32* %i, i32 %sum0) !prof !14 { ; CHECK-NEXT: ret i32 [[SUM6]] ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 255 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb3, label %bb0, !prof !15 @@ -1837,10 +1837,10 @@ bb3: ; i5 = *i ; v13 = (i5 == 44) ? 44 : t2 ; return v13 -define i32 @test_chr_20(i32* %i, i32 %sum0, i1 %j) !prof !14 { +define i32 @test_chr_20(ptr %i, i32 %sum0, i1 %j) !prof !14 { ; CHECK-LABEL: @test_chr_20( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[I0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[I0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[I0_FR:%.*]] = freeze i32 [[I0]] ; CHECK-NEXT: [[TMP0:%.*]] = and i32 [[I0_FR]], 6 ; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[TMP0]], 6 @@ -1866,13 +1866,13 @@ define i32 @test_chr_20(i32* %i, i32 %sum0, i1 %j) !prof !14 { ; CHECK-NEXT: br label [[BB4]] ; CHECK: bb4: ; CHECK-NEXT: [[TMP2:%.*]] = phi i32 [ [[V9]], [[BB1]] ], [ [[V9]], [[ENTRY_SPLIT]] ], [ [[SUM3_NONCHR]], [[BB1_NONCHR]] ], [ [[SUM3_NONCHR]], [[ENTRY_SPLIT_NONCHR]] ] -; CHECK-NEXT: [[I5:%.*]] = load i32, i32* [[I]], align 4 +; CHECK-NEXT: [[I5:%.*]] = load i32, ptr [[I]], align 4 ; CHECK-NEXT: [[V12:%.*]] = icmp eq i32 [[I5]], 44 ; CHECK-NEXT: [[V13:%.*]] = select i1 [[V12]], i32 44, i32 [[TMP2]], !prof [[PROF16]] ; CHECK-NEXT: ret i32 [[V13]] ; entry: - %i0 = load i32, i32* %i + %i0 = load i32, ptr %i %v3 = and i32 %i0, 2 %v4 = icmp eq i32 %v3, 0 %v8 = add i32 %sum0, 43 @@ -1888,7 +1888,7 @@ bb1: br label %bb4 bb4: - %i5 = load i32, i32* %i + %i5 = load i32, ptr %i %v12 = icmp eq i32 %i5, 44 %v13 = select i1 %v12, i32 %i5, i32 %sum3, !prof !15 ret i32 %v13 @@ -2015,7 +2015,7 @@ bb10: ; Test a case with a really long use-def chains. This test checks that it's not ; really slow and doesn't appear to be hanging. -define i64 @test_chr_22(i1 %i, i64* %j, i64 %v0) !prof !14 { +define i64 @test_chr_22(i1 %i, ptr %j, i64 %v0) !prof !14 { ; CHECK-LABEL: @test_chr_22( ; CHECK-NEXT: bb0: ; CHECK-NEXT: [[V0_FR:%.*]] = freeze i64 [[V0:%.*]] @@ -2028,11 +2028,11 @@ define i64 @test_chr_22(i1 %i, i64* %j, i64 %v0) !prof !14 { ; CHECK-NEXT: ret i64 [[COMMON_RET_OP]] ; CHECK: bb0.split: ; CHECK-NEXT: [[V299:%.*]] = mul i64 [[V2]], 7860086430977039991 -; CHECK-NEXT: store i64 [[V299]], i64* [[J:%.*]], align 4 +; CHECK-NEXT: store i64 [[V299]], ptr [[J:%.*]], align 4 ; CHECK-NEXT: br label [[COMMON_RET:%.*]] ; CHECK: bb0.split.nonchr: ; CHECK-NEXT: [[V299_NONCHR:%.*]] = mul i64 [[V2]], 7860086430977039991 -; CHECK-NEXT: store i64 [[V299_NONCHR]], i64* [[J]], align 4 +; CHECK-NEXT: store i64 [[V299_NONCHR]], ptr [[J]], align 4 ; CHECK-NEXT: br label [[COMMON_RET]] ; bb0: @@ -2339,7 +2339,7 @@ bb0: %v300 = add i64 %v299, %v298 %v301 = icmp eq i64 %v300, 100 %v302 = select i1 %v301, i64 %v298, i64 %v299, !prof !15 - store i64 %v302, i64* %j + store i64 %v302, ptr %j ret i64 99 } @@ -2501,10 +2501,10 @@ end: } ; Test to not crash upon a 0:0 branch_weight metadata. -define void @test_chr_24(i32* %i) !prof !14 { +define void @test_chr_24(ptr %i) !prof !14 { ; CHECK-LABEL: @test_chr_24( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[TMP0]], 1 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 0 ; CHECK-NEXT: br i1 [[TMP2]], label [[BB1:%.*]], label [[BB0:%.*]], !prof [[PROF20:![0-9]+]] @@ -2522,7 +2522,7 @@ define void @test_chr_24(i32* %i) !prof !14 { ; CHECK-NEXT: ret void ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 1 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb1, label %bb0, !prof !17 @@ -2545,11 +2545,11 @@ bb3: } ; Test that chr will skip this function when addresses are taken on basic blocks. -@gototable1 = weak_odr dso_local local_unnamed_addr constant [2 x i8*] [i8* blockaddress(@test_chr_with_bbs_address_taken1, %bb3), i8* blockaddress(@test_chr_with_bbs_address_taken1, %bb3)] -define void @test_chr_with_bbs_address_taken1(i32* %i) !prof !14 { +@gototable1 = weak_odr dso_local local_unnamed_addr constant [2 x ptr] [ptr blockaddress(@test_chr_with_bbs_address_taken1, %bb3), ptr blockaddress(@test_chr_with_bbs_address_taken1, %bb3)] +define void @test_chr_with_bbs_address_taken1(ptr %i) !prof !14 { ; CHECK-LABEL: @test_chr_with_bbs_address_taken1( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[TMP0]], 1 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 0 ; CHECK-NEXT: br i1 [[TMP2]], label [[BB1:%.*]], label [[BB0:%.*]], !prof [[PROF16]] @@ -2567,7 +2567,7 @@ define void @test_chr_with_bbs_address_taken1(i32* %i) !prof !14 { ; CHECK-NEXT: ret void ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 1 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb1, label %bb0, !prof !15 @@ -2583,8 +2583,7 @@ bb1: bb2: call void @foo() - %pc = bitcast i32* %i to i8* - indirectbr i8* %pc, [label %bb3, label %bb3] + indirectbr ptr %i, [label %bb3, label %bb3] bb3: br label %bb4 @@ -2595,11 +2594,11 @@ bb4: ; Test that chr will still optimize the first 2 regions, ; but will skip the last one due to basic blocks have address taken. -@gototable2 = weak_odr dso_local local_unnamed_addr constant [2 x i8*] [i8* blockaddress(@test_chr_with_bbs_address_taken2, %bb5), i8* blockaddress(@test_chr_with_bbs_address_taken2, %bb5)] -define void @test_chr_with_bbs_address_taken2(i32* %i) !prof !14 { +@gototable2 = weak_odr dso_local local_unnamed_addr constant [2 x ptr] [ptr blockaddress(@test_chr_with_bbs_address_taken2, %bb5), ptr blockaddress(@test_chr_with_bbs_address_taken2, %bb5)] +define void @test_chr_with_bbs_address_taken2(ptr %i) !prof !14 { ; CHECK-LABEL: @test_chr_with_bbs_address_taken2( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[TMP0]], 3 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 3 ; CHECK-NEXT: br i1 [[TMP2]], label [[BB0:%.*]], label [[ENTRY_SPLIT_NONCHR:%.*]], !prof [[PROF15]] @@ -2625,7 +2624,7 @@ define void @test_chr_with_bbs_address_taken2(i32* %i) !prof !14 { ; CHECK-NEXT: ret void ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 1 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb1, label %bb0, !prof !15 @@ -2649,8 +2648,7 @@ bb3: br i1 %6, label %bb6, label %bb4, !prof !15 bb4: - %pc = bitcast i32* %i to i8* - indirectbr i8* %pc, [label %bb5, label %bb5] + indirectbr ptr %i, [label %bb5, label %bb5] bb5: br label %bb6 diff --git a/llvm/test/Transforms/PGOProfile/chr_coro.ll b/llvm/test/Transforms/PGOProfile/chr_coro.ll index d902f3da14ec43..233948fa4a8fb1 100644 --- a/llvm/test/Transforms/PGOProfile/chr_coro.ll +++ b/llvm/test/Transforms/PGOProfile/chr_coro.ll @@ -4,38 +4,38 @@ declare void @foo() declare void @bar() -declare token @llvm.coro.id(i32, i8*, i8*, i8*) +declare token @llvm.coro.id(i32, ptr, ptr, ptr) declare i1 @llvm.coro.alloc(token) -declare i8* @llvm.coro.begin(token, i8*) -declare noalias i8* @malloc(i32) +declare ptr @llvm.coro.begin(token, ptr) +declare noalias ptr @malloc(i32) -%f.Frame = type { void (%f.Frame*)*, void (%f.Frame*)*, i1 } +%f.Frame = type { ptr, ptr, i1 } ; resume part of the coroutine -define fastcc void @f.resume(%f.Frame* noalias nonnull align 8 dereferenceable(24) %FramePtr) { +define fastcc void @f.resume(ptr noalias nonnull align 8 dereferenceable(24) %FramePtr) { tail call void @bar() ret void } ; destroy part of the coroutine -define fastcc void @f.destroy(%f.Frame* noalias nonnull align 8 dereferenceable(24) %FramePtr) { +define fastcc void @f.destroy(ptr noalias nonnull align 8 dereferenceable(24) %FramePtr) { tail call void @bar() ret void } ; cleanup part of the coroutine -define fastcc void @f.cleanup(%f.Frame* noalias nonnull align 8 dereferenceable(24) %FramePtr) { +define fastcc void @f.cleanup(ptr noalias nonnull align 8 dereferenceable(24) %FramePtr) { tail call void @bar() ret void } -@f.resumers = private constant [3 x void (%f.Frame*)*] [void (%f.Frame*)* @f.resume, void (%f.Frame*)* @f.destroy, void (%f.Frame*)* @f.cleanup] +@f.resumers = private constant [3 x ptr] [ptr @f.resume, ptr @f.destroy, ptr @f.cleanup] ; Test that chr will skip block containing llvm.coro.id. -define i8* @test_chr_with_coro_id(i32* %i) !prof !14 { +define ptr @test_chr_with_coro_id(ptr %i) !prof !14 { ; CHECK-LABEL: @test_chr_with_coro_id( ; CHECK-NEXT: entry: -; CHECK-NEXT: [[TMP0:%.*]] = load i32, i32* [[I:%.*]], align 4 +; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[TMP0]], 3 ; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 3 ; CHECK-NEXT: br i1 [[TMP2]], label %[[BB0:.*]], label %[[ENTRY_SPLIT_NONCHR:.*]], !prof !15 @@ -54,11 +54,11 @@ define i8* @test_chr_with_coro_id(i32* %i) !prof !14 { ; CHECK-NEXT: [[NEED_DYN_ALLOC:%.*]] = call i1 @llvm.coro.alloc(token [[ID]]) ; CHECK-NEXT: br i1 [[NEED_DYN_ALLOC]], label %[[BB_CORO_DYN_ALLOC:.*]], label %[[BB_CORO_BEGIN:.*]] ; CHECK: [[BB_CORO_BEGIN]]: -; CHECK-NEXT: [[PHI:%.*]] = phi i8* [ null, %[[BB_CORO_ID]] ], [ %alloc, %[[BB_CORO_DYN_ALLOC]] ] -; CHECK-NEXT: [[HDL:%.*]] = call noalias nonnull i8* @llvm.coro.begin(token [[ID]], i8* [[PHI]]) +; CHECK-NEXT: [[PHI:%.*]] = phi ptr [ null, %[[BB_CORO_ID]] ], [ %alloc, %[[BB_CORO_DYN_ALLOC]] ] +; CHECK-NEXT: [[HDL:%.*]] = call noalias nonnull ptr @llvm.coro.begin(token [[ID]], ptr [[PHI]]) ; entry: - %0 = load i32, i32* %i + %0 = load i32, ptr %i %1 = and i32 %0, 1 %2 = icmp eq i32 %1, 0 br i1 %2, label %bb1, label %bb0, !prof !15 @@ -77,18 +77,18 @@ bb2: br label %bb.coro.id bb.coro.id: - %id = call token @llvm.coro.id(i32 0, i8* null, i8* null, i8* bitcast ([3 x void (%f.Frame*)*]* @f.resumers to i8*)) + %id = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr @f.resumers) %need.dyn.alloc = call i1 @llvm.coro.alloc(token %id) br i1 %need.dyn.alloc, label %bb.coro.dyn.alloc, label %bb.coro.begin bb.coro.dyn.alloc: - %alloc = call i8* @malloc(i32 24) + %alloc = call ptr @malloc(i32 24) br label %bb.coro.begin bb.coro.begin: - %phi = phi i8* [ null, %bb.coro.id ], [ %alloc, %bb.coro.dyn.alloc ] - %hdl = call noalias nonnull i8* @llvm.coro.begin(token %id, i8* %phi) - ret i8* %hdl + %phi = phi ptr [ null, %bb.coro.id ], [ %alloc, %bb.coro.dyn.alloc ] + %hdl = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %phi) + ret ptr %hdl } !llvm.module.flags = !{!0} diff --git a/llvm/test/Transforms/PGOProfile/comdat_internal.ll b/llvm/test/Transforms/PGOProfile/comdat_internal.ll index 128384d2a29171..64274a33999df0 100644 --- a/llvm/test/Transforms/PGOProfile/comdat_internal.ll +++ b/llvm/test/Transforms/PGOProfile/comdat_internal.ll @@ -8,14 +8,14 @@ $foo = comdat any ; CHECK: $__llvm_profile_raw_version = comdat any ; CHECK: $__profc__stdin__foo.[[#FOO_HASH:]] = comdat any -@bar = global i32 ()* @foo, align 8 +@bar = global ptr @foo, align 8 ; CHECK: @__llvm_profile_raw_version = constant i64 {{[0-9]+}}, comdat ; CHECK-NOT: __profn__stdin__foo ; CHECK: @__profc__stdin__foo.[[#FOO_HASH]] = private global [1 x i64] zeroinitializer, section "__llvm_prf_cnts", comdat, align 8 -; CHECK: @__profd__stdin__foo.[[#FOO_HASH]] = private global { i64, i64, i64, i8*, i8*, i32, [2 x i16] } { i64 -5640069336071256030, i64 [[#FOO_HASH]], i64 sub (i64 ptrtoint ([1 x i64]* @__profc__stdin__foo.742261418966908927 to i64), i64 ptrtoint ({ i64, i64, i64, i8*, i8*, i32, [2 x i16] }* @__profd__stdin__foo.742261418966908927 to i64)), i8* null -; CHECK-NOT: bitcast (i32 ()* @foo to i8*) -; CHECK-SAME: , i8* null, i32 1, [2 x i16] zeroinitializer }, section "__llvm_prf_data", comdat($__profc__stdin__foo.[[#FOO_HASH]]), align 8 +; CHECK: @__profd__stdin__foo.[[#FOO_HASH]] = private global { i64, i64, i64, ptr, ptr, i32, [2 x i16] } { i64 -5640069336071256030, i64 [[#FOO_HASH]], i64 sub (i64 ptrtoint (ptr @__profc__stdin__foo.742261418966908927 to i64), i64 ptrtoint (ptr @__profd__stdin__foo.742261418966908927 to i64)), ptr null +; CHECK-NOT: @foo +; CHECK-SAME: , ptr null, i32 1, [2 x i16] zeroinitializer }, section "__llvm_prf_data", comdat($__profc__stdin__foo.[[#FOO_HASH]]), align 8 ; CHECK: @__llvm_prf_nm ; CHECK: @llvm.compiler.used diff --git a/llvm/test/Transforms/PGOProfile/comdat_rename.ll b/llvm/test/Transforms/PGOProfile/comdat_rename.ll index 3400461e2c7c5e..489c315efc853a 100644 --- a/llvm/test/Transforms/PGOProfile/comdat_rename.ll +++ b/llvm/test/Transforms/PGOProfile/comdat_rename.ll @@ -14,7 +14,7 @@ $f_with_alias = comdat any define linkonce_odr void @f_with_alias() comdat { ret void } -@f_alias = alias void (), void ()* @f_with_alias +@f_alias = alias void (), ptr @f_with_alias ; Not rename Comdat with right linkage. $nf = comdat any @@ -28,9 +28,9 @@ $f_with_var = comdat any ; CHECK: $f_with_var = comdat any @var = global i32 0, comdat($f_with_var) define linkonce_odr void @f_with_var() comdat($f_with_var) { - %tmp = load i32, i32* @var, align 4 + %tmp = load i32, ptr @var, align 4 %inc = add nsw i32 %tmp, 1 - store i32 %inc, i32* @var, align 4 + store i32 %inc, ptr @var, align 4 ret void } @@ -47,8 +47,8 @@ define linkonce void @tf2() comdat($tf) { ; Rename AvailableExternallyLinkage functions ; CHECK-DAG: $aef.[[SINGLEBB_HASH]] = comdat any -; CHECK: @f = weak alias void (), void ()* @f.[[SINGLEBB_HASH]] -; CHECK: @aef = weak alias void (), void ()* @aef.[[SINGLEBB_HASH]] +; CHECK: @f = weak alias void (), ptr @f.[[SINGLEBB_HASH]] +; CHECK: @aef = weak alias void (), ptr @aef.[[SINGLEBB_HASH]] define available_externally void @aef() { ; CHECK: define linkonce_odr void @aef.[[SINGLEBB_HASH]]() comdat { diff --git a/llvm/test/Transforms/PGOProfile/consecutive-zeros.ll b/llvm/test/Transforms/PGOProfile/consecutive-zeros.ll index 90b941cae7cded..a388cbc37d5a60 100644 --- a/llvm/test/Transforms/PGOProfile/consecutive-zeros.ll +++ b/llvm/test/Transforms/PGOProfile/consecutive-zeros.ll @@ -5,7 +5,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -define void @foo(i8* %dst, i8* %src, i32* %a, i32 %n) { +define void @foo(ptr %dst, ptr %src, ptr %a, i32 %n) { ; CHECK: Invalid Profile entry: br label %for.cond @@ -21,17 +21,17 @@ for.body: for.cond1: %j.0 = phi i32 [ 0, %for.body ], [ %inc, %for.inc ] %idx.ext = sext i32 %i.0 to i64 - %add.ptr = getelementptr inbounds i32, i32* %a, i64 %idx.ext - %0 = load i32, i32* %add.ptr, align 4 + %add.ptr = getelementptr inbounds i32, ptr %a, i64 %idx.ext + %0 = load i32, ptr %add.ptr, align 4 %cmp2 = icmp slt i32 %j.0, %0 br i1 %cmp2, label %for.body3, label %for.end for.body3: %add = add nsw i32 %i.0, 1 %conv = sext i32 %add to i64 - call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %conv, i1 false) - %memcmp = call i32 @memcmp(i8* %dst, i8* %src, i64 %conv) - %bcmp = call i32 @bcmp(i8* %dst, i8* %src, i64 %conv) + call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %conv, i1 false) + %memcmp = call i32 @memcmp(ptr %dst, ptr %src, i64 %conv) + %bcmp = call i32 @bcmp(ptr %dst, ptr %src, i64 %conv) br label %for.inc for.inc: @@ -49,11 +49,11 @@ for.end6: ret void } -declare void @llvm.lifetime.start(i64, i8* nocapture) +declare void @llvm.lifetime.start(i64, ptr nocapture) -declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) +declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) -declare i32 @memcmp(i8*, i8*, i64) -declare i32 @bcmp(i8*, i8*, i64) +declare i32 @memcmp(ptr, ptr, i64) +declare i32 @bcmp(ptr, ptr, i64) -declare void @llvm.lifetime.end(i64, i8* nocapture) +declare void @llvm.lifetime.end(i64, ptr nocapture) diff --git a/llvm/test/Transforms/PGOProfile/counter_promo_exit_catchswitch.ll b/llvm/test/Transforms/PGOProfile/counter_promo_exit_catchswitch.ll index 7542e7917a3c72..d279f342666a78 100644 --- a/llvm/test/Transforms/PGOProfile/counter_promo_exit_catchswitch.ll +++ b/llvm/test/Transforms/PGOProfile/counter_promo_exit_catchswitch.ll @@ -25,7 +25,7 @@ %eh.ThrowInfo = type { i32, i32, i32, i32 } @"?buffer@@3PADA" = dso_local local_unnamed_addr global [200 x i8] zeroinitializer, align 16 -define dso_local void @"?run@@YAXH@Z"(i32 %count) local_unnamed_addr personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*) { +define dso_local void @"?run@@YAXH@Z"(i32 %count) local_unnamed_addr personality ptr @__CxxFrameHandler3 { entry: br label %for.cond @@ -36,14 +36,14 @@ for.cond: ; preds = %for.inc, %entry for.body: ; preds = %for.cond ; CHECK: for.body: -; NOTENTRY: %pgocount1 = load i64, i64* getelementptr inbounds ([3 x i64], [3 x i64]* @"__profc_?run@@YAXH@Z", i32 0, i32 0) -; TENTRY: %pgocount1 = load i64, i64* getelementptr inbounds ([3 x i64], [3 x i64]* @"__profc_?run@@YAXH@Z", i32 0, i32 1) +; NOTENTRY: %pgocount1 = load i64, ptr @"__profc_?run@@YAXH@Z" +; TENTRY: %pgocount1 = load i64, ptr getelementptr inbounds ([3 x i64], ptr @"__profc_?run@@YAXH@Z", i32 0, i32 1) ; CHECK: %1 = add i64 %pgocount1, 1 -; NOTENTRY: store i64 %1, i64* getelementptr inbounds ([3 x i64], [3 x i64]* @"__profc_?run@@YAXH@Z", i32 0, i32 0) -; ENTRY: store i64 %1, i64* getelementptr inbounds ([3 x i64], [3 x i64]* @"__profc_?run@@YAXH@Z", i32 0, i32 1) +; NOTENTRY: store i64 %1, ptr @"__profc_?run@@YAXH@Z" +; ENTRY: store i64 %1, ptr getelementptr inbounds ([3 x i64], ptr @"__profc_?run@@YAXH@Z", i32 0, i32 1) %idxprom = zext i32 %i.0 to i64 - %arrayidx = getelementptr inbounds [200 x i8], [200 x i8]* @"?buffer@@3PADA", i64 0, i64 %idxprom - %0 = load i8, i8* %arrayidx, align 1 + %arrayidx = getelementptr inbounds [200 x i8], ptr @"?buffer@@3PADA", i64 0, i64 %idxprom + %0 = load i8, ptr %arrayidx, align 1 %cmp1 = icmp eq i8 %0, 0 br i1 %cmp1, label %cleanup, label %if.end @@ -53,11 +53,11 @@ if.end: ; preds = %for.body for.inc: ; preds = %if.end ; CHECK: for.inc: -; NOTENTRY: %pgocount2 = load i64, i64* getelementptr inbounds ([3 x i64], [3 x i64]* @"__profc_?run@@YAXH@Z", i32 0, i32 1) -; ENTRY: %pgocount2 = load i64, i64* getelementptr inbounds ([3 x i64], [3 x i64]* @"__profc_?run@@YAXH@Z", i32 0, i32 2) +; NOTENTRY: %pgocount2 = load i64, ptr getelementptr inbounds ([3 x i64], ptr @"__profc_?run@@YAXH@Z", i32 0, i32 1) +; ENTRY: %pgocount2 = load i64, ptr getelementptr inbounds ([3 x i64], ptr @"__profc_?run@@YAXH@Z", i32 0, i32 2) ; CHECK: %3 = add i64 %pgocount2, 1 -; NOTENTRY: store i64 %3, i64* getelementptr inbounds ([3 x i64], [3 x i64]* @"__profc_?run@@YAXH@Z", i32 0, i32 1) -; ENTRY: store i64 %3, i64* getelementptr inbounds ([3 x i64], [3 x i64]* @"__profc_?run@@YAXH@Z", i32 0, i32 2) +; NOTENTRY: store i64 %3, ptr getelementptr inbounds ([3 x i64], ptr @"__profc_?run@@YAXH@Z", i32 0, i32 1) +; ENTRY: store i64 %3, ptr getelementptr inbounds ([3 x i64], ptr @"__profc_?run@@YAXH@Z", i32 0, i32 2) %inc = add nuw nsw i32 %i.0, 1 br label %for.cond @@ -68,10 +68,10 @@ catch.dispatch: ; preds = %if.end %1 = catchswitch within none [label %catch] unwind to caller catch: ; preds = %catch.dispatch - %2 = catchpad within %1 [i8* null, i32 64, i8* null] - call void @_CxxThrowException(i8* null, %eh.ThrowInfo* null) #2 [ "funclet"(token %2) ] + %2 = catchpad within %1 [ptr null, i32 64, ptr null] + call void @_CxxThrowException(ptr null, ptr null) #2 [ "funclet"(token %2) ] unreachable } declare dso_local void @"?may_throw@@YAXH@Z"(i32) -declare dso_local void @_CxxThrowException(i8*, %eh.ThrowInfo*) +declare dso_local void @_CxxThrowException(ptr, ptr) declare dso_local i32 @__CxxFrameHandler3(...) diff --git a/llvm/test/Transforms/PGOProfile/counter_promo_exit_merge.ll b/llvm/test/Transforms/PGOProfile/counter_promo_exit_merge.ll index e53efe8fa73d18..c2af706df787e1 100644 --- a/llvm/test/Transforms/PGOProfile/counter_promo_exit_merge.ll +++ b/llvm/test/Transforms/PGOProfile/counter_promo_exit_merge.ll @@ -17,9 +17,9 @@ bb1: ; preds = %bb11, %bb br i1 %tmp3, label %bb7, label %bb4 bb4: ; preds = %bb1 - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 63969943867, i32 5, i32 1) + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 63969943867, i32 5, i32 1) tail call void @bar(i32 1) - %tmp5 = load i32, i32* @g, align 4 + %tmp5 = load i32, ptr @g, align 4 %tmp6 = icmp sgt i32 %tmp5, 100 br i1 %tmp6, label %bb14, label %bb11 @@ -28,12 +28,12 @@ bb7: ; preds = %bb1 br i1 %tmp8, label %bb9, label %bb10 bb9: ; preds = %bb7 - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 63969943867, i32 5, i32 2) + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 63969943867, i32 5, i32 2) tail call void @bar(i32 2) br label %bb11 bb10: ; preds = %bb7 - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 63969943867, i32 5, i32 3) + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 63969943867, i32 5, i32 3) tail call void @bar(i32 3) br label %bb11 @@ -60,7 +60,7 @@ bb14: ; preds = %bb4.bb14_crit_edge, ; PROMO-NEXT: store{{.*}}@__profc_foo{{.*}}3) bb15: ; preds = %bb14 - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 63969943867, i32 5, i32 4) + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 63969943867, i32 5, i32 4) tail call void @bar(i32 1) ret void } @@ -68,6 +68,6 @@ bb15: ; preds = %bb14 declare void @bar(i32) local_unnamed_addr ; Function Attrs: nounwind -declare void @llvm.instrprof.increment(i8*, i64, i32, i32) #0 +declare void @llvm.instrprof.increment(ptr, i64, i32, i32) #0 attributes #0 = { nounwind } diff --git a/llvm/test/Transforms/PGOProfile/counter_promo_mexits.ll b/llvm/test/Transforms/PGOProfile/counter_promo_mexits.ll index f3411d4e6b2189..7c0411fcb9921d 100644 --- a/llvm/test/Transforms/PGOProfile/counter_promo_mexits.ll +++ b/llvm/test/Transforms/PGOProfile/counter_promo_mexits.ll @@ -14,7 +14,7 @@ bb1: ; preds = %bb11, %bb bb4: ; preds = %bb1 tail call void @bar(i32 1) - %tmp5 = load i32, i32* @g, align 4 + %tmp5 = load i32, ptr @g, align 4 %tmp6 = icmp sgt i32 %tmp5, 100 br i1 %tmp6, label %bb15_0, label %bb11 @@ -39,16 +39,16 @@ bb14: ; preds = %bb11 ; PROMO-LABEL: bb14: tail call void @bar(i32 0) br label %bb15 -; PROMO: %pgocount.promoted{{.*}} = load {{.*}} @__profc_foo{{.*}} 0) +; PROMO: %pgocount.promoted{{.*}} = load i64, ptr @__profc_foo, align 4 ; PROMO-NEXT: add -; PROMO-NEXT: store {{.*}}@__profc_foo{{.*}}0) -; PROMO-NEXT: %pgocount.promoted{{.*}} = load {{.*}} @__profc_foo{{.*}} 1) +; PROMO-NEXT: store i64 %3, ptr @__profc_foo, align 4 +; PROMO-NEXT: %pgocount.promoted{{.*}} = load i64, ptr getelementptr inbounds ([5 x i64], ptr @__profc_foo, i32 0, i32 1), align 4 ; PROMO-NEXT: add ; PROMO-NEXT: store {{.*}}@__profc_foo{{.*}}1) -; PROMO-NEXT: %pgocount.promoted{{.*}} = load {{.*}} @__profc_foo{{.*}} 2) +; PROMO-NEXT: %pgocount.promoted{{.*}} = load i64, ptr getelementptr inbounds ([5 x i64], ptr @__profc_foo, i32 0, i32 2), align 4 ; PROMO-NEXT: add ; PROMO-NEXT: store {{.*}}@__profc_foo{{.*}}2) -; PROMO-NEXT: %pgocount{{.*}} = load {{.*}} @__profc_foo{{.*}} 3) +; PROMO-NEXT: %pgocount{{.*}} = load i64, ptr getelementptr inbounds ([5 x i64], ptr @__profc_foo, i32 0, i32 3), align 4 ; PROMO-NEXT: add ; PROMO-NEXT: store {{.*}}@__profc_foo{{.*}}3) @@ -56,18 +56,18 @@ bb14: ; preds = %bb11 bb15_0: ; preds = %bb11 ; PROMO-LABEL: bb15_0: br label %bb15 -; PROMO: %pgocount.promoted{{.*}} = load {{.*}} @__profc_foo{{.*}} 0) +; PROMO: %pgocount.promoted{{.*}} = load i64, ptr @__profc_foo, align 4 ; PROMO-NEXT: add -; PROMO-NEXT: store {{.*}}@__profc_foo{{.*}}0) -; PROMO-NEXT: %pgocount.promoted{{.*}} = load {{.*}} @__profc_foo{{.*}} 1) +; PROMO-NEXT: store {{.*}} @__profc_foo, align 4 +; PROMO-NEXT: %pgocount.promoted{{.*}} = load i64, ptr getelementptr inbounds ([5 x i64], ptr @__profc_foo, i32 0, i32 1), align 4 ; PROMO-NEXT: add -; PROMO-NEXT: store {{.*}}@__profc_foo{{.*}}1) -; PROMO-NEXT: %pgocount.promoted{{.*}} = load {{.*}} @__profc_foo{{.*}} 2) +; PROMO-NEXT: store {{.*}} ptr getelementptr inbounds ([5 x i64], ptr @__profc_foo, i32 0, i32 1), align 4 +; PROMO-NEXT: %pgocount.promoted{{.*}} = load i64, ptr getelementptr inbounds ([5 x i64], ptr @__profc_foo, i32 0, i32 2), align 4 ; PROMO-NEXT: add -; PROMO-NEXT: store {{.*}}@__profc_foo{{.*}}2) +; PROMO-NEXT: store {{.*}} ptr getelementptr inbounds ([5 x i64], ptr @__profc_foo, i32 0, i32 2), align 4 ; PROMO-NEXT: %pgocount{{.*}} = load {{.*}} @__profc_foo{{.*}} 4) ; PROMO-NEXT: add -; PROMO-NEXT: store {{.*}}@__profc_foo{{.*}}4) +; PROMO-NEXT: store {{.*}} ptr getelementptr inbounds ([5 x i64], ptr @__profc_foo, i32 0, i32 4), align 4 ; PROMO-NOT: @__profc_foo{{.*}}) diff --git a/llvm/test/Transforms/PGOProfile/counter_promo_nest-inseltpoison.ll b/llvm/test/Transforms/PGOProfile/counter_promo_nest-inseltpoison.ll index c8fd55606d15e9..3c583fd3333631 100644 --- a/llvm/test/Transforms/PGOProfile/counter_promo_nest-inseltpoison.ll +++ b/llvm/test/Transforms/PGOProfile/counter_promo_nest-inseltpoison.ll @@ -7,17 +7,17 @@ ; Function Attrs: noinline norecurse nounwind uwtable define void @bar() local_unnamed_addr #0 { bb: - %tmp2 = load i32, i32* @g, align 4, !tbaa !2 + %tmp2 = load i32, ptr @g, align 4, !tbaa !2 %tmp3 = add nsw i32 %tmp2, 1 - store i32 %tmp3, i32* @g, align 4, !tbaa !2 + store i32 %tmp3, ptr @g, align 4, !tbaa !2 ret void } ; Function Attrs: norecurse nounwind uwtable define i32 @main() local_unnamed_addr #1 { bb: - store i32 0, i32* @g, align 4, !tbaa !2 - %tmp = load i32, i32* @c, align 4, !tbaa !2 + store i32 0, ptr @g, align 4, !tbaa !2 + %tmp = load i32, ptr @c, align 4, !tbaa !2 %tmp1 = icmp sgt i32 %tmp, 0 br i1 %tmp1, label %bb2_1, label %bb84 @@ -71,7 +71,7 @@ bb20: ; preds = %bb20, %bb14 %tmp23 = add nuw i64 %tmp21, 1 tail call void @bar() %tmp24 = add nuw nsw i32 %tmp22, 1 - %tmp25 = load i32, i32* @c, align 4, !tbaa !2 + %tmp25 = load i32, ptr @c, align 4, !tbaa !2 %tmp26 = icmp slt i32 %tmp24, %tmp25 br i1 %tmp26, label %bb20, label %bb27 @@ -115,7 +115,7 @@ bb57: ; preds = %bb57, %bb45 %tmp60 = add nuw i64 %tmp58, 1 tail call void @bar() %tmp61 = add nuw nsw i32 %tmp59, 1 - %tmp62 = load i32, i32* @c, align 4, !tbaa !2 + %tmp62 = load i32, ptr @c, align 4, !tbaa !2 %tmp63 = mul nsw i32 %tmp62, 10 %tmp64 = icmp slt i32 %tmp61, %tmp63 br i1 %tmp64, label %bb57, label %bb65 @@ -138,7 +138,7 @@ bb73: ; preds = %bb73, %bb51 %tmp76 = add nuw i64 %tmp74, 1 tail call void @bar() %tmp77 = add nuw nsw i32 %tmp75, 1 - %tmp78 = load i32, i32* @c, align 4, !tbaa !2 + %tmp78 = load i32, ptr @c, align 4, !tbaa !2 %tmp79 = mul nsw i32 %tmp78, 100 %tmp80 = icmp slt i32 %tmp77, %tmp79 br i1 %tmp80, label %bb73, label %bb81 diff --git a/llvm/test/Transforms/PGOProfile/counter_promo_nest.ll b/llvm/test/Transforms/PGOProfile/counter_promo_nest.ll index 76a0dccaedda41..72982a87ce0edc 100644 --- a/llvm/test/Transforms/PGOProfile/counter_promo_nest.ll +++ b/llvm/test/Transforms/PGOProfile/counter_promo_nest.ll @@ -7,17 +7,17 @@ ; Function Attrs: noinline norecurse nounwind uwtable define void @bar() local_unnamed_addr #0 { bb: - %tmp2 = load i32, i32* @g, align 4, !tbaa !2 + %tmp2 = load i32, ptr @g, align 4, !tbaa !2 %tmp3 = add nsw i32 %tmp2, 1 - store i32 %tmp3, i32* @g, align 4, !tbaa !2 + store i32 %tmp3, ptr @g, align 4, !tbaa !2 ret void } ; Function Attrs: norecurse nounwind uwtable define i32 @main() local_unnamed_addr #1 { bb: - store i32 0, i32* @g, align 4, !tbaa !2 - %tmp = load i32, i32* @c, align 4, !tbaa !2 + store i32 0, ptr @g, align 4, !tbaa !2 + %tmp = load i32, ptr @c, align 4, !tbaa !2 %tmp1 = icmp sgt i32 %tmp, 0 br i1 %tmp1, label %bb2_1, label %bb84 @@ -71,7 +71,7 @@ bb20: ; preds = %bb20, %bb14 %tmp23 = add nuw i64 %tmp21, 1 tail call void @bar() %tmp24 = add nuw nsw i32 %tmp22, 1 - %tmp25 = load i32, i32* @c, align 4, !tbaa !2 + %tmp25 = load i32, ptr @c, align 4, !tbaa !2 %tmp26 = icmp slt i32 %tmp24, %tmp25 br i1 %tmp26, label %bb20, label %bb27 @@ -115,7 +115,7 @@ bb57: ; preds = %bb57, %bb45 %tmp60 = add nuw i64 %tmp58, 1 tail call void @bar() %tmp61 = add nuw nsw i32 %tmp59, 1 - %tmp62 = load i32, i32* @c, align 4, !tbaa !2 + %tmp62 = load i32, ptr @c, align 4, !tbaa !2 %tmp63 = mul nsw i32 %tmp62, 10 %tmp64 = icmp slt i32 %tmp61, %tmp63 br i1 %tmp64, label %bb57, label %bb65 @@ -138,7 +138,7 @@ bb73: ; preds = %bb73, %bb51 %tmp76 = add nuw i64 %tmp74, 1 tail call void @bar() %tmp77 = add nuw nsw i32 %tmp75, 1 - %tmp78 = load i32, i32* @c, align 4, !tbaa !2 + %tmp78 = load i32, ptr @c, align 4, !tbaa !2 %tmp79 = mul nsw i32 %tmp78, 100 %tmp80 = icmp slt i32 %tmp77, %tmp79 br i1 %tmp80, label %bb73, label %bb81 diff --git a/llvm/test/Transforms/PGOProfile/counter_promo_with_bias.ll b/llvm/test/Transforms/PGOProfile/counter_promo_with_bias.ll index bcc4459e908c63..c489a9f8eea84a 100644 --- a/llvm/test/Transforms/PGOProfile/counter_promo_with_bias.ll +++ b/llvm/test/Transforms/PGOProfile/counter_promo_with_bias.ll @@ -6,7 +6,7 @@ target triple = "x86_64-unknown-linux-gnu" define void @foo(i1 %c) { entry: -; CHECK: %[[BIAS:[0-9]+]] = load i64, i64* @__llvm_profile_counter_bias +; CHECK: %[[BIAS:[0-9]+]] = load i64, ptr @__llvm_profile_counter_bias br label %while.cond while.cond: ; preds = %land.rhs, %while.cond.preheader @@ -14,15 +14,15 @@ while.cond: ; preds = %land.rhs, %while.co br i1 %c, label %while.cond.cleanup_crit_edge, label %land.rhs while.cond.cleanup_crit_edge: ; preds = %while.cond -; CHECK: %[[COUNTER_PTR:[0-9]+]] = add i64 ptrtoint ([1 x i64]* @__profc_foo to i64), %[[BIAS]] -; CHECK: %[[COUNTER_ADDR:[0-9]+]] = inttoptr i64 %[[COUNTER_PTR]] to i64* -; CHECK: %[[COUNTER_PROMO:[a-z0-9.]+]] = load i64, i64* %[[COUNTER_ADDR]] +; CHECK: %[[COUNTER_PTR:[0-9]+]] = add i64 ptrtoint (ptr @__profc_foo to i64), %[[BIAS]] +; CHECK: %[[COUNTER_ADDR:[0-9]+]] = inttoptr i64 %[[COUNTER_PTR]] to ptr +; CHECK: %[[COUNTER_PROMO:[a-z0-9.]+]] = load i64, ptr %[[COUNTER_ADDR]] ; CHECK: %[[VALUE:[0-9]+]] = add i64 %[[COUNTER_PROMO]], %[[COUNT]] -; CHECK: store i64 %[[VALUE]], i64* %[[COUNTER_ADDR]] +; CHECK: store i64 %[[VALUE]], ptr %[[COUNTER_ADDR]] br label %cleanup land.rhs: ; preds = %while.cond - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 0, i32 1, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 0, i32 1, i32 0) ; CHECK: %[[LAND_COUNT]] = add i64 %[[COUNT]], 1 br label %while.cond @@ -30,4 +30,4 @@ cleanup: ; preds = %while.cond.cleanup_ ret void } -declare void @llvm.instrprof.increment(i8 *, i64, i32, i32) +declare void @llvm.instrprof.increment(ptr, i64, i32, i32) diff --git a/llvm/test/Transforms/PGOProfile/cspgo_profile_summary.ll b/llvm/test/Transforms/PGOProfile/cspgo_profile_summary.ll index 681ebb55fbc38d..b4a27ee6561336 100644 --- a/llvm/test/Transforms/PGOProfile/cspgo_profile_summary.ll +++ b/llvm/test/Transforms/PGOProfile/cspgo_profile_summary.ll @@ -15,9 +15,8 @@ target triple = "x86_64-unknown-linux-gnu" define dso_local i32 @goo(i32 %n) { entry: %i = alloca i32, align 4 - %i.0..sroa_cast = bitcast i32* %i to i8* - store volatile i32 %n, i32* %i, align 4 - %i.0. = load volatile i32, i32* %i, align 4 + store volatile i32 %n, ptr %i, align 4 + %i.0. = load volatile i32, ptr %i, align 4 ret i32 %i.0. } @@ -28,15 +27,15 @@ entry: br i1 %tobool, label %if.else, label %if.then if.then: - %0 = load i32, i32* @odd, align 4 + %0 = load i32, ptr @odd, align 4 %inc = add i32 %0, 1 - store i32 %inc, i32* @odd, align 4 + store i32 %inc, ptr @odd, align 4 br label %if.end if.else: - %1 = load i32, i32* @even, align 4 + %1 = load i32, ptr @even, align 4 %inc1 = add i32 %1, 1 - store i32 %inc1, i32* @even, align 4 + store i32 %inc1, ptr @even, align 4 br label %if.end if.end: @@ -54,9 +53,9 @@ for.body: br i1 %tobool2, label %for.inc, label %if.then3 if.then3: - %2 = load i32, i32* @not_six, align 4 + %2 = load i32, ptr @not_six, align 4 %inc4 = add i32 %2, 1 - store i32 %inc4, i32* @not_six, align 4 + store i32 %inc4, ptr @not_six, align 4 br label %for.inc for.inc: @@ -67,10 +66,10 @@ for.end: ret void } ; PGOSUMMARY-LABEL: @bar -; PGOSUMMARY: %even.odd = select i1 %tobool{{[0-9]*}}, i32* @even, i32* @odd +; PGOSUMMARY: %even.odd = select i1 %tobool{{[0-9]*}}, ptr @even, ptr @odd ; PGOSUMMARY-SAME: !prof ![[BW_PGO_BAR:[0-9]+]] ; CSPGOSUMMARY-LABEL: @bar -; CSPGOSUMMARY: %even.odd = select i1 %tobool{{[0-9]*}}, i32* @even, i32* @odd +; CSPGOSUMMARY: %even.odd = select i1 %tobool{{[0-9]*}}, ptr @even, ptr @odd ; CSPGOSUMMARY-SAME: !prof ![[BW_CSPGO_BAR:[0-9]+]] define internal fastcc i32 @cond(i32 %i) { @@ -103,9 +102,9 @@ for.end: ret void } ; CSPGOSUMMARY-LABEL: @foo -; CSPGOSUMMARY: %even.odd.i = select i1 %tobool.i{{[0-9]*}}, i32* @even, i32* @odd +; CSPGOSUMMARY: %even.odd.i = select i1 %tobool.i{{[0-9]*}}, ptr @even, ptr @odd ; CSPGOSUMMARY-SAME: !prof ![[BW_CSPGO_BAR]] -; CSPGOSUMMARY: %even.odd.i2 = select i1 %tobool.i{{[0-9]*}}, i32* @even, i32* @odd +; CSPGOSUMMARY: %even.odd.i2 = select i1 %tobool.i{{[0-9]*}}, ptr @even, ptr @odd ; CSPGOSUMMARY-SAME: !prof ![[BW_CSPGO_BAR]] declare dso_local i32 @bar_m(i32) @@ -113,9 +112,9 @@ declare dso_local i32 @bar_m2(i32) define internal fastcc void @barbar() { entry: - %0 = load i32, i32* @odd, align 4 + %0 = load i32, ptr @odd, align 4 %inc = add i32 %0, 1 - store i32 %inc, i32* @odd, align 4 + store i32 %inc, ptr @odd, align 4 ret void } diff --git a/llvm/test/Transforms/PGOProfile/diag_no_value_sites.ll b/llvm/test/Transforms/PGOProfile/diag_no_value_sites.ll index 5d187ff50c88cf..fd32c6b4d6dcf7 100644 --- a/llvm/test/Transforms/PGOProfile/diag_no_value_sites.ll +++ b/llvm/test/Transforms/PGOProfile/diag_no_value_sites.ll @@ -6,10 +6,10 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -define void @foo(i8* %dst, i8* %src, i64 %n) { +define void @foo(ptr %dst, ptr %src, i64 %n) { entry: - call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %n, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %n, i1 false) ret void } -declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) +declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) diff --git a/llvm/test/Transforms/PGOProfile/do-not-instrument.ll b/llvm/test/Transforms/PGOProfile/do-not-instrument.ll index f7c31b071e8a04..e7f4ba2fedbe6b 100644 --- a/llvm/test/Transforms/PGOProfile/do-not-instrument.ll +++ b/llvm/test/Transforms/PGOProfile/do-not-instrument.ll @@ -7,10 +7,10 @@ define i32 @f1() { ; CHECK-LABEL: @f1 entry: ; CHECK: call void @llvm.instrprof.increment -; CHECK-NOT: ptrtoint void (i8*)* asm sideeffect +; CHECK-NOT: ptrtoint ptr asm sideeffect ; CHECK-NOT: call void @llvm.instrprof.value.profile ; CHECK: tail call void asm sideeffect - tail call void asm sideeffect "", "imr,~{memory},~{dirflag},~{fpsr},~{flags}"(i8* undef) #0 + tail call void asm sideeffect "", "imr,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr undef) #0 ret i32 0 } @@ -18,7 +18,7 @@ define i32 @f2() { entry: ; CHECK: call void @llvm.instrprof.increment ; CHECK-NOT: call void @llvm.instrprof.value.profile - call void (i32, ...) bitcast (void (...)* @foo to void (i32, ...)*)(i32 21) + call void (i32, ...) @foo(i32 21) ret i32 0 } diff --git a/llvm/test/Transforms/PGOProfile/fix_bfi.ll b/llvm/test/Transforms/PGOProfile/fix_bfi.ll index d7ea203e5a0a79..fcfe3aa7b3a9cc 100644 --- a/llvm/test/Transforms/PGOProfile/fix_bfi.ll +++ b/llvm/test/Transforms/PGOProfile/fix_bfi.ll @@ -5,20 +5,20 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -%struct.basket = type { %struct.arc*, i64, i64 } -%struct.arc = type { i64, %struct.node*, %struct.node*, i32, %struct.arc*, %struct.arc*, i64, i64 } -%struct.node = type { i64, i32, %struct.node*, %struct.node*, %struct.node*, %struct.node*, %struct.arc*, %struct.arc*, %struct.arc*, %struct.arc*, i64, i64, i32, i32 } +%struct.basket = type { ptr, i64, i64 } +%struct.arc = type { i64, ptr, ptr, i32, ptr, ptr, i64, i64 } +%struct.node = type { i64, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64, i64, i32, i32 } -@perm = internal unnamed_addr global [351 x %struct.basket*] zeroinitializer, align 16 +@perm = internal unnamed_addr global [351 x ptr] zeroinitializer, align 16 define dso_local void @sort_basket(i64 %min, i64 %max) { entry: %add = add nsw i64 %min, %max %div = sdiv i64 %add, 2 - %arrayidx = getelementptr inbounds [351 x %struct.basket*], [351 x %struct.basket*]* @perm, i64 0, i64 %div - %0 = load %struct.basket*, %struct.basket** %arrayidx, align 8 - %abs_cost = getelementptr inbounds %struct.basket, %struct.basket* %0, i64 0, i32 2 - %1 = load i64, i64* %abs_cost, align 8 + %arrayidx = getelementptr inbounds [351 x ptr], ptr @perm, i64 0, i64 %div + %0 = load ptr, ptr %arrayidx, align 8 + %abs_cost = getelementptr inbounds %struct.basket, ptr %0, i64 0, i32 2 + %1 = load i64, ptr %abs_cost, align 8 br label %do.body do.body: @@ -28,10 +28,10 @@ do.body: while.cond: %l.1 = phi i64 [ %l.0, %do.body ], [ %inc, %while.body ] - %arrayidx1 = getelementptr inbounds [351 x %struct.basket*], [351 x %struct.basket*]* @perm, i64 0, i64 %l.1 - %2 = load %struct.basket*, %struct.basket** %arrayidx1, align 8 - %abs_cost2 = getelementptr inbounds %struct.basket, %struct.basket* %2, i64 0, i32 2 - %3 = load i64, i64* %abs_cost2, align 8 + %arrayidx1 = getelementptr inbounds [351 x ptr], ptr @perm, i64 0, i64 %l.1 + %2 = load ptr, ptr %arrayidx1, align 8 + %abs_cost2 = getelementptr inbounds %struct.basket, ptr %2, i64 0, i32 2 + %3 = load i64, ptr %abs_cost2, align 8 %cmp = icmp sgt i64 %3, %1 br i1 %cmp, label %while.body, label %while.cond3 @@ -41,10 +41,10 @@ while.body: while.cond3: %r.1 = phi i64 [ %r.0, %while.cond ], [ %dec, %while.body7 ] - %arrayidx4 = getelementptr inbounds [351 x %struct.basket*], [351 x %struct.basket*]* @perm, i64 0, i64 %r.1 - %4 = load %struct.basket*, %struct.basket** %arrayidx4, align 8 - %abs_cost5 = getelementptr inbounds %struct.basket, %struct.basket* %4, i64 0, i32 2 - %5 = load i64, i64* %abs_cost5, align 8 + %arrayidx4 = getelementptr inbounds [351 x ptr], ptr @perm, i64 0, i64 %r.1 + %4 = load ptr, ptr %arrayidx4, align 8 + %abs_cost5 = getelementptr inbounds %struct.basket, ptr %4, i64 0, i32 2 + %5 = load i64, ptr %abs_cost5, align 8 %cmp6 = icmp sgt i64 %1, %5 br i1 %cmp6, label %while.body7, label %while.end8 @@ -57,18 +57,16 @@ while.end8: br i1 %cmp9, label %if.then, label %if.end if.then: - %6 = bitcast %struct.basket** %arrayidx1 to i64* - %7 = load i64, i64* %6, align 8 - store %struct.basket* %4, %struct.basket** %arrayidx1, align 8 - %8 = bitcast %struct.basket** %arrayidx4 to i64* - store i64 %7, i64* %8, align 8 + %6 = load i64, ptr %arrayidx1, align 8 + store ptr %4, ptr %arrayidx1, align 8 + store i64 %6, ptr %arrayidx4, align 8 br label %if.end if.end: %cmp14 = icmp sgt i64 %l.1, %r.1 %not.cmp14 = xor i1 %cmp14, true - %9 = zext i1 %not.cmp14 to i64 - %r.2 = sub i64 %r.1, %9 + %7 = zext i1 %not.cmp14 to i64 + %r.2 = sub i64 %r.1, %7 %not.cmp1457 = xor i1 %cmp14, true %inc16 = zext i1 %not.cmp1457 to i64 %l.2 = add nsw i64 %l.1, %inc16 diff --git a/llvm/test/Transforms/PGOProfile/func_entry.ll b/llvm/test/Transforms/PGOProfile/func_entry.ll index fe1b44b0bd71d9..ff770d5dc035c6 100644 --- a/llvm/test/Transforms/PGOProfile/func_entry.ll +++ b/llvm/test/Transforms/PGOProfile/func_entry.ll @@ -12,7 +12,7 @@ define void @cold() { ; CHECK-SAME: !prof ![[FUNC_ENTRY_COUNT_ZERO:[0-9]+]] entry: - store i32 1, i32* @s, align 4 + store i32 1, ptr @s, align 4 ret void } @@ -21,9 +21,9 @@ define void @hot() { ; CHECK-SAME: #[[HOT_ATTR:[0-1]+]] ; CHECK-SAME: !prof ![[FUNC_ENTRY_COUNT_NON_ZERO:[0-9]+]] entry: - %0 = load i32, i32* @s, align 4 + %0 = load i32, ptr @s, align 4 %add = add nsw i32 %0, 4 - store i32 %add, i32* @s, align 4 + store i32 %add, ptr @s, align 4 ret void } @@ -33,7 +33,7 @@ define void @med() { ; CHECK-SAME: !prof ![[FUNC_ENTRY_COUNT_MED:[0-9]+]] entry: - store i32 1, i32* @s, align 4 + store i32 1, ptr @s, align 4 ret void } diff --git a/llvm/test/Transforms/PGOProfile/icp_covariant_call_return.ll b/llvm/test/Transforms/PGOProfile/icp_covariant_call_return.ll index 7522c70336352c..4c8b650420690b 100644 --- a/llvm/test/Transforms/PGOProfile/icp_covariant_call_return.ll +++ b/llvm/test/Transforms/PGOProfile/icp_covariant_call_return.ll @@ -3,40 +3,34 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16 target triple = "x86_64-unknown-linux-gnu" %struct.D = type { %struct.B } -%struct.B = type { i32 (...)** } +%struct.B = type { ptr } %struct.Base = type { i8 } %struct.Derived = type { i8 } -declare noalias i8* @_Znwm(i64) -declare void @_ZN1DC2Ev(%struct.D*); -define %struct.Derived* @_ZN1D4funcEv(%struct.D*) { - ret %struct.Derived* null +declare noalias ptr @_Znwm(i64) +declare void @_ZN1DC2Ev(ptr); +define ptr @_ZN1D4funcEv(ptr) { + ret ptr null } -define %struct.Base* @bar() { +define ptr @bar() { entry: - %call = call noalias i8* @_Znwm(i64 8) - %tmp = bitcast i8* %call to %struct.D* - call void @_ZN1DC2Ev(%struct.D* %tmp) - %tmp1 = bitcast %struct.D* %tmp to %struct.B* - %tmp2 = bitcast %struct.B* %tmp1 to %struct.Base* (%struct.B*)*** - %vtable = load %struct.Base* (%struct.B*)**, %struct.Base* (%struct.B*)*** %tmp2, align 8 - %vfn = getelementptr inbounds %struct.Base* (%struct.B*)*, %struct.Base* (%struct.B*)** %vtable, i64 0 - %tmp3 = load %struct.Base* (%struct.B*)*, %struct.Base* (%struct.B*)** %vfn, align 8 -; ICALL-PROM: [[CMP:%[0-9]+]] = icmp eq %struct.Base* (%struct.B*)* %tmp3, bitcast (%struct.Derived* (%struct.D*)* @_ZN1D4funcEv to %struct.Base* (%struct.B*)*) + %call = call noalias ptr @_Znwm(i64 8) + call void @_ZN1DC2Ev(ptr %call) + %vtable = load ptr, ptr %call, align 8 + %tmp3 = load ptr, ptr %vtable, align 8 +; ICALL-PROM: [[CMP:%[0-9]+]] = icmp eq ptr %tmp3, @_ZN1D4funcEv ; ICALL-PROM: br i1 [[CMP]], label %if.true.direct_targ, label %if.false.orig_indirect, !prof [[BRANCH_WEIGHT:![0-9]+]] ; ICALL-PROM:if.true.direct_targ: -; ICALL-PROM: [[ARG_BITCAST:%[0-9]+]] = bitcast %struct.B* %tmp1 to %struct.D* -; ICALL-PROM: [[DIRCALL_RET:%[0-9]+]] = call %struct.Derived* @_ZN1D4funcEv(%struct.D* [[ARG_BITCAST]]) -; ICALL-PROM: [[DIRCALL_RET_CAST:%[0-9]+]] = bitcast %struct.Derived* [[DIRCALL_RET]] to %struct.Base* +; ICALL-PROM: [[DIRCALL_RET:%[0-9]+]] = call ptr @_ZN1D4funcEv(ptr %call) ; ICALL-PROM: br label %if.end.icp ; ICALL-PROM:if.false.orig_indirect: -; ICALL-PROM: %call1 = call %struct.Base* %tmp3(%struct.B* %tmp1) +; ICALL-PROM: %call1 = call ptr %tmp3(ptr %call) ; ICALL-PROM: br label %if.end.icp ; ICALL-PROM:if.end.icp: -; ICALL-PROM: [[PHI_RET:%[0-9]+]] = phi %struct.Base* [ %call1, %if.false.orig_indirect ], [ [[DIRCALL_RET_CAST]], %if.true.direct_targ ] - %call1 = call %struct.Base* %tmp3(%struct.B* %tmp1), !prof !1 - ret %struct.Base* %call1 +; ICALL-PROM: [[PHI_RET:%[0-9]+]] = phi ptr [ %call1, %if.false.orig_indirect ], [ [[DIRCALL_RET]], %if.true.direct_targ ] + %call1 = call ptr %tmp3(ptr %call), !prof !1 + ret ptr %call1 } !1 = !{!"VP", i32 0, i64 12345, i64 -3913987384944532146, i64 12345} diff --git a/llvm/test/Transforms/PGOProfile/icp_covariant_invoke_return.ll b/llvm/test/Transforms/PGOProfile/icp_covariant_invoke_return.ll index b29229c24c8d37..5e23c93af71d05 100644 --- a/llvm/test/Transforms/PGOProfile/icp_covariant_invoke_return.ll +++ b/llvm/test/Transforms/PGOProfile/icp_covariant_invoke_return.ll @@ -2,75 +2,65 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" %struct.D = type { %struct.B } -%struct.B = type { i32 (...)** } +%struct.B = type { ptr } %struct.Derived = type { %struct.Base, i32 } %struct.Base = type { i32 } -@_ZTIi = external constant i8* -declare i8* @_Znwm(i64) -declare void @_ZN1DC2Ev(%struct.D*) -define %struct.Derived* @_ZN1D4funcEv(%struct.D*) { - ret %struct.Derived* null +@_ZTIi = external constant ptr +declare ptr @_Znwm(i64) +declare void @_ZN1DC2Ev(ptr) +define ptr @_ZN1D4funcEv(ptr) { + ret ptr null } -declare void @_ZN1DD0Ev(%struct.D*) -declare void @_ZdlPv(i8*) +declare void @_ZN1DD0Ev(ptr) +declare void @_ZdlPv(ptr) declare i32 @__gxx_personality_v0(...) -declare i32 @llvm.eh.typeid.for(i8*) -declare i8* @__cxa_begin_catch(i8*) +declare i32 @llvm.eh.typeid.for(ptr) +declare ptr @__cxa_begin_catch(ptr) declare void @__cxa_end_catch() -define i32 @foo() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { +define i32 @foo() personality ptr @__gxx_personality_v0 { entry: - %call = invoke i8* @_Znwm(i64 8) + %call = invoke ptr @_Znwm(i64 8) to label %invoke.cont unwind label %lpad invoke.cont: - %tmp = bitcast i8* %call to %struct.D* - call void @_ZN1DC2Ev(%struct.D* %tmp) - %tmp1 = bitcast %struct.D* %tmp to %struct.B* - %tmp2 = bitcast %struct.B* %tmp1 to %struct.Base* (%struct.B*)*** - %vtable = load %struct.Base* (%struct.B*)**, %struct.Base* (%struct.B*)*** %tmp2, align 8 - %vfn = getelementptr inbounds %struct.Base* (%struct.B*)*, %struct.Base* (%struct.B*)** %vtable, i64 0 - %tmp3 = load %struct.Base* (%struct.B*)*, %struct.Base* (%struct.B*)** %vfn, align 8 -; ICALL-PROM: [[CMP:%[0-9]+]] = icmp eq %struct.Base* (%struct.B*)* %tmp3, bitcast (%struct.Derived* (%struct.D*)* @_ZN1D4funcEv to %struct.Base* (%struct.B*)*) + call void @_ZN1DC2Ev(ptr %call) + %vtable = load ptr, ptr %call, align 8 + %tmp3 = load ptr, ptr %vtable, align 8 +; ICALL-PROM: [[CMP:%[0-9]+]] = icmp eq ptr %tmp3, @_ZN1D4funcEv ; ICALL-PROM: br i1 [[CMP]], label %if.true.direct_targ, label %if.false.orig_indirect, !prof [[BRANCH_WEIGHT:![0-9]+]] ; ICALL-PROM:if.true.direct_targ: -; ICALL-PROM: [[ARG_BITCAST:%[0-9]+]] = bitcast %struct.B* %tmp1 to %struct.D* -; ICALL-PROM: [[DIRCALL_RET:%[0-9]+]] = invoke %struct.Derived* @_ZN1D4funcEv(%struct.D* [[ARG_BITCAST]]) -; ICALL-PROM: to label %if.true.direct_targ.if.end.icp_crit_edge unwind label %lpad -; ICALL-PROM:if.true.direct_targ.if.end.icp_crit_edge: -; ICALL-PROM: [[DIRCALL_RET_CAST:%[0-9]+]] = bitcast %struct.Derived* [[DIRCALL_RET]] to %struct.Base* -; ICALL-PROM: br label %if.end.icp +; ICALL-PROM: [[DIRCALL_RET:%[0-9]+]] = invoke ptr @_ZN1D4funcEv(ptr %call) +; ICALL-PROM-NEXT: to label %if.end.icp unwind label %lpad ; ICALL-PROM:if.false.orig_indirect: -; ICAll-PROM: %call2 = invoke %struct.Base* %tmp3(%struct.B* %tmp1) +; ICAll-PROM: %call2 = invoke ptr %tmp3(ptr %call) ; ICAll-PROM: to label %invoke.cont1 unwind label %lpad ; ICALL-PROM:if.end.icp: ; ICALL-PROM: br label %invoke.cont1 - %call2 = invoke %struct.Base* %tmp3(%struct.B* %tmp1) + %call2 = invoke ptr %tmp3(ptr %call) to label %invoke.cont1 unwind label %lpad, !prof !1 invoke.cont1: -; ICAll-PROM: [[PHI_RET:%[0-9]+]] = phi %struct.Base* [ %call2, %if.false.orig_indirect ], [ [[DIRCALL_RET_CAST]], %if.end.icp ] -; ICAll-PROM: %isnull = icmp eq %struct.Base* [[PHI_RET]], null - %isnull = icmp eq %struct.Base* %call2, null +; ICAll-PROM: [[PHI_RET:%[0-9]+]] = phi ptr [ %call2, %if.false.orig_indirect ], [ [[DIRCALL_RET]], %if.end.icp ] +; ICAll-PROM: %isnull = icmp eq ptr [[PHI_RET]], null + %isnull = icmp eq ptr %call2, null br i1 %isnull, label %delete.end, label %delete.notnull delete.notnull: - %tmp4 = bitcast %struct.Base* %call2 to i8* - call void @_ZdlPv(i8* %tmp4) + call void @_ZdlPv(ptr %call2) br label %delete.end delete.end: - %isnull3 = icmp eq %struct.B* %tmp1, null + %isnull3 = icmp eq ptr %call, null br i1 %isnull3, label %delete.end8, label %delete.notnull4 delete.notnull4: - %tmp5 = bitcast %struct.B* %tmp1 to void (%struct.B*)*** - %vtable5 = load void (%struct.B*)**, void (%struct.B*)*** %tmp5, align 8 - %vfn6 = getelementptr inbounds void (%struct.B*)*, void (%struct.B*)** %vtable5, i64 2 - %tmp6 = load void (%struct.B*)*, void (%struct.B*)** %vfn6, align 8 - invoke void %tmp6(%struct.B* %tmp1) + %vtable5 = load ptr, ptr %call, align 8 + %vfn6 = getelementptr inbounds ptr, ptr %vtable5, i64 2 + %tmp6 = load ptr, ptr %vfn6, align 8 + invoke void %tmp6(ptr %call) to label %invoke.cont7 unwind label %lpad invoke.cont7: @@ -80,21 +70,20 @@ delete.end8: br label %try.cont lpad: - %tmp7 = landingpad { i8*, i32 } - catch i8* bitcast (i8** @_ZTIi to i8*) - %tmp8 = extractvalue { i8*, i32 } %tmp7, 0 - %tmp9 = extractvalue { i8*, i32 } %tmp7, 1 + %tmp7 = landingpad { ptr, i32 } + catch ptr @_ZTIi + %tmp8 = extractvalue { ptr, i32 } %tmp7, 0 + %tmp9 = extractvalue { ptr, i32 } %tmp7, 1 br label %catch.dispatch catch.dispatch: - %tmp10 = call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIi to i8*)) + %tmp10 = call i32 @llvm.eh.typeid.for(ptr @_ZTIi) %matches = icmp eq i32 %tmp9, %tmp10 br i1 %matches, label %catch, label %eh.resume catch: - %tmp11 = call i8* @__cxa_begin_catch(i8* %tmp8) - %tmp12 = bitcast i8* %tmp11 to i32* - %tmp13 = load i32, i32* %tmp12, align 4 + %tmp11 = call ptr @__cxa_begin_catch(ptr %tmp8) + %tmp13 = load i32, ptr %tmp11, align 4 call void @__cxa_end_catch() br label %try.cont @@ -102,9 +91,9 @@ try.cont: ret i32 0 eh.resume: - %lpad.val = insertvalue { i8*, i32 } undef, i8* %tmp8, 0 - %lpad.val11 = insertvalue { i8*, i32 } %lpad.val, i32 %tmp9, 1 - resume { i8*, i32 } %lpad.val11 + %lpad.val = insertvalue { ptr, i32 } undef, ptr %tmp8, 0 + %lpad.val11 = insertvalue { ptr, i32 } %lpad.val, i32 %tmp9, 1 + resume { ptr, i32 } %lpad.val11 } !1 = !{!"VP", i32 0, i64 12345, i64 -3913987384944532146, i64 12345} diff --git a/llvm/test/Transforms/PGOProfile/icp_invoke.ll b/llvm/test/Transforms/PGOProfile/icp_invoke.ll index 0ca4be125290e8..04fc012c8458a9 100644 --- a/llvm/test/Transforms/PGOProfile/icp_invoke.ll +++ b/llvm/test/Transforms/PGOProfile/icp_invoke.ll @@ -2,9 +2,9 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@foo1 = global void ()* null, align 8 -@foo2 = global i32 ()* null, align 8 -@_ZTIi = external constant i8* +@foo1 = global ptr null, align 8 +@foo2 = global ptr null, align 8 +@_ZTIi = external constant ptr define internal void @_ZL4bar1v() !PGOFuncName !0 { entry: @@ -16,10 +16,10 @@ entry: ret i32 100 } -define i32 @_Z3goov() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { +define i32 @_Z3goov() personality ptr @__gxx_personality_v0 { entry: - %tmp = load void ()*, void ()** @foo1, align 8 -; ICP: [[CMP_IC1:%[0-9]+]] = icmp eq void ()* %tmp, @_ZL4bar1v + %tmp = load ptr, ptr @foo1, align 8 +; ICP: [[CMP_IC1:%[0-9]+]] = icmp eq ptr %tmp, @_ZL4bar1v ; ICP: br i1 [[CMP_IC1]], label %[[TRUE_LABEL_IC1:.*]], label %[[FALSE_LABEL_IC1:.*]], !prof [[BRANCH_WEIGHT:![0-9]+]] ; ICP:[[TRUE_LABEL_IC1]]: ; ICP: invoke void @_ZL4bar1v() @@ -32,22 +32,22 @@ entry: ; ICP: br label %try.cont lpad: - %tmp1 = landingpad { i8*, i32 } - catch i8* bitcast (i8** @_ZTIi to i8*) - %tmp2 = extractvalue { i8*, i32 } %tmp1, 0 - %tmp3 = extractvalue { i8*, i32 } %tmp1, 1 - %tmp4 = tail call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIi to i8*)) + %tmp1 = landingpad { ptr, i32 } + catch ptr @_ZTIi + %tmp2 = extractvalue { ptr, i32 } %tmp1, 0 + %tmp3 = extractvalue { ptr, i32 } %tmp1, 1 + %tmp4 = tail call i32 @llvm.eh.typeid.for(ptr @_ZTIi) %matches = icmp eq i32 %tmp3, %tmp4 br i1 %matches, label %catch, label %eh.resume catch: - %tmp5 = tail call i8* @__cxa_begin_catch(i8* %tmp2) + %tmp5 = tail call ptr @__cxa_begin_catch(ptr %tmp2) tail call void @__cxa_end_catch() br label %try.cont try.cont: - %tmp6 = load i32 ()*, i32 ()** @foo2, align 8 -; ICP: [[CMP_IC2:%[0-9]+]] = icmp eq i32 ()* %tmp6, @_ZL4bar2v + %tmp6 = load ptr, ptr @foo2, align 8 +; ICP: [[CMP_IC2:%[0-9]+]] = icmp eq ptr %tmp6, @_ZL4bar2v ; ICP: br i1 [[CMP_IC2]], label %[[TRUE_LABEL_IC2:.*]], label %[[FALSE_LABEL_IC2:.*]], !prof [[BRANCH_WEIGHT:![0-9]+]] ; ICP:[[TRUE_LABEL_IC2]]: ; ICP: [[RESULT_IC2_0:%[0-9]+]] = invoke i32 @_ZL4bar2v() @@ -62,16 +62,16 @@ try.cont: ; ICP: [[MERGE_PHI:%.+]] = phi i32 [ [[RESULT_IC2_1]], %[[FALSE_LABEL_IC2]] ], [ [[RESULT_IC2_0]], %[[TRUE_LABEL_IC2]] ] ; ICP: br label %try.cont8 lpad1: - %tmp7 = landingpad { i8*, i32 } - catch i8* bitcast (i8** @_ZTIi to i8*) - %tmp8 = extractvalue { i8*, i32 } %tmp7, 0 - %tmp9 = extractvalue { i8*, i32 } %tmp7, 1 - %tmp10 = tail call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIi to i8*)) + %tmp7 = landingpad { ptr, i32 } + catch ptr @_ZTIi + %tmp8 = extractvalue { ptr, i32 } %tmp7, 0 + %tmp9 = extractvalue { ptr, i32 } %tmp7, 1 + %tmp10 = tail call i32 @llvm.eh.typeid.for(ptr @_ZTIi) %matches5 = icmp eq i32 %tmp9, %tmp10 br i1 %matches5, label %catch6, label %eh.resume catch6: - %tmp11 = tail call i8* @__cxa_begin_catch(i8* %tmp8) + %tmp11 = tail call ptr @__cxa_begin_catch(ptr %tmp8) tail call void @__cxa_end_catch() br label %try.cont8 @@ -82,17 +82,17 @@ try.cont8: eh.resume: %ehselector.slot.0 = phi i32 [ %tmp9, %lpad1 ], [ %tmp3, %lpad ] - %exn.slot.0 = phi i8* [ %tmp8, %lpad1 ], [ %tmp2, %lpad ] - %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn.slot.0, 0 - %lpad.val11 = insertvalue { i8*, i32 } %lpad.val, i32 %ehselector.slot.0, 1 - resume { i8*, i32 } %lpad.val11 + %exn.slot.0 = phi ptr [ %tmp8, %lpad1 ], [ %tmp2, %lpad ] + %lpad.val = insertvalue { ptr, i32 } undef, ptr %exn.slot.0, 0 + %lpad.val11 = insertvalue { ptr, i32 } %lpad.val, i32 %ehselector.slot.0, 1 + resume { ptr, i32 } %lpad.val11 } declare i32 @__gxx_personality_v0(...) -declare i32 @llvm.eh.typeid.for(i8*) +declare i32 @llvm.eh.typeid.for(ptr) -declare i8* @__cxa_begin_catch(i8*) +declare ptr @__cxa_begin_catch(ptr) declare void @__cxa_end_catch() diff --git a/llvm/test/Transforms/PGOProfile/icp_invoke_nouse.ll b/llvm/test/Transforms/PGOProfile/icp_invoke_nouse.ll index ee052e4fada574..9eb7b962ce7362 100644 --- a/llvm/test/Transforms/PGOProfile/icp_invoke_nouse.ll +++ b/llvm/test/Transforms/PGOProfile/icp_invoke_nouse.ll @@ -2,8 +2,8 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@_ZTISt9exception = external constant i8* -@pfptr = global i32()* null, align 8 +@_ZTISt9exception = external constant ptr +@pfptr = global ptr null, align 8 define internal i32 @_ZL4bar1v() !PGOFuncName !0 { entry: @@ -11,14 +11,14 @@ entry: } ; Function Attrs: uwtable -define i32 @_Z3fooi(i32 %x) local_unnamed_addr personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { +define i32 @_Z3fooi(i32 %x) local_unnamed_addr personality ptr @__gxx_personality_v0 { entry: %tobool = icmp eq i32 %x, 0 br i1 %tobool, label %if.end, label %cleanup if.end: ; preds = %entry - %fptr = load i32 ()*, i32 ()** @pfptr, align 8 -; ICP: [[CMP_IC1:%[0-9]+]] = icmp eq i32 ()* %fptr, @_ZL4bar1v + %fptr = load ptr, ptr @pfptr, align 8 +; ICP: [[CMP_IC1:%[0-9]+]] = icmp eq ptr %fptr, @_ZL4bar1v ; ICP: br i1 [[CMP_IC1]], label %[[TRUE_LABEL_IC1:.*]], label %[[FALSE_LABEL_IC1:.*]], !prof [[BRANCH_WEIGHT:![0-9]+]] ; ICP:[[TRUE_LABEL_IC1]]: ; ICP: invoke i32 @_ZL4bar1v() @@ -31,17 +31,17 @@ if.end: ; preds = %entry ; ICP: br label %cleanup lpad: ; preds = %if.end - %0 = landingpad { i8*, i32 } + %0 = landingpad { ptr, i32 } cleanup - catch i8* bitcast (i8** @_ZTISt9exception to i8*) - %1 = extractvalue { i8*, i32 } %0, 1 - %2 = tail call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTISt9exception to i8*)) + catch ptr @_ZTISt9exception + %1 = extractvalue { ptr, i32 } %0, 1 + %2 = tail call i32 @llvm.eh.typeid.for(ptr @_ZTISt9exception) %matches = icmp eq i32 %1, %2 br i1 %matches, label %catch, label %ehcleanup catch: ; preds = %lpad - %3 = extractvalue { i8*, i32 } %0, 0 - %4 = tail call i8* @__cxa_begin_catch(i8* %3) + %3 = extractvalue { ptr, i32 } %0, 0 + %4 = tail call ptr @__cxa_begin_catch(ptr %3) tail call void @__cxa_end_catch() br label %cleanup @@ -50,7 +50,7 @@ cleanup: ; preds = %catch, %if.end, %en ret i32 0 ehcleanup: ; preds = %lpad - resume { i8*, i32 } %0 + resume { ptr, i32 } %0 } declare i32 @_Z3barv() local_unnamed_addr @@ -58,9 +58,9 @@ declare i32 @_Z3barv() local_unnamed_addr declare i32 @__gxx_personality_v0(...) ; Function Attrs: nounwind readnone -declare i32 @llvm.eh.typeid.for(i8*) +declare i32 @llvm.eh.typeid.for(ptr) -declare i8* @__cxa_begin_catch(i8*) local_unnamed_addr +declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr declare void @__cxa_end_catch() local_unnamed_addr diff --git a/llvm/test/Transforms/PGOProfile/icp_mismatch_msg.ll b/llvm/test/Transforms/PGOProfile/icp_mismatch_msg.ll index 7b20eb8023b443..a81fb364a6f7a6 100644 --- a/llvm/test/Transforms/PGOProfile/icp_mismatch_msg.ll +++ b/llvm/test/Transforms/PGOProfile/icp_mismatch_msg.ll @@ -7,9 +7,9 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@foo = common global i32 ()* null, align 8 -@foo2 = common global i32 ()* null, align 8 -@foo3 = common global i32 ()* null, align 8 +@foo = common global ptr null, align 8 +@foo2 = common global ptr null, align 8 +@foo3 = common global ptr null, align 8 define i32 @func4(i32 %i) { entry: @@ -23,12 +23,12 @@ entry: define i32 @bar() { entry: - %tmp = load i32 ()*, i32 ()** @foo, align 8 + %tmp = load ptr, ptr @foo, align 8 %call = call i32 %tmp(), !prof !1 - %tmp2 = load i32 ()*, i32 ()** @foo2, align 8 + %tmp2 = load ptr, ptr @foo2, align 8 %call1 = call i32 %tmp2(), !prof !2 %add = add nsw i32 %call1, %call - %tmp3 = load i32 ()*, i32 ()** @foo3, align 8 + %tmp3 = load ptr, ptr @foo3, align 8 %call2 = call i32 %tmp3(), !prof !3 %add2 = add nsw i32 %add, %call2 ret i32 %add2 diff --git a/llvm/test/Transforms/PGOProfile/icp_sample.ll b/llvm/test/Transforms/PGOProfile/icp_sample.ll index 2653c638b6d25d..7d65a2c9f97a48 100644 --- a/llvm/test/Transforms/PGOProfile/icp_sample.ll +++ b/llvm/test/Transforms/PGOProfile/icp_sample.ll @@ -1,15 +1,15 @@ ; RUN: opt -passes=pgo-icall-prom -icp-samplepgo -S < %s | FileCheck %s -define i32* @_Z3fooPi(i32* readnone returned) { - ret i32* %0 +define ptr @_Z3fooPi(ptr readnone returned) { + ret ptr %0 } ; CHECK-LABEL: _Z3barPFPiS_E ; CHECK: if.true.direct_targ -; CHECK: call i32* @_Z3fooPi -define i32* @_Z3barPFPiS_E(i32* (i32*)* nocapture) { - %2 = tail call i32* %0(i32* null), !prof !33 - ret i32* %2 +; CHECK: call ptr @_Z3fooPi +define ptr @_Z3barPFPiS_E(ptr nocapture) { + %2 = tail call ptr %0(ptr null), !prof !33 + ret ptr %2 } !llvm.module.flags = !{!3} diff --git a/llvm/test/Transforms/PGOProfile/icp_vararg.ll b/llvm/test/Transforms/PGOProfile/icp_vararg.ll index 7204549e69c00f..26e04ffe5daf7c 100644 --- a/llvm/test/Transforms/PGOProfile/icp_vararg.ll +++ b/llvm/test/Transforms/PGOProfile/icp_vararg.ll @@ -2,7 +2,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@foo = common global i32 (i32, ...)* null, align 8 +@foo = common global ptr null, align 8 define i32 @va_func(i32 %num, ...) { entry: @@ -11,8 +11,8 @@ entry: define i32 @bar() #1 { entry: - %tmp = load i32 (i32, ...)*, i32 (i32, ...)** @foo, align 8 -; ICALL-PROM: [[CMP:%[0-9]+]] = icmp eq i32 (i32, ...)* %tmp, @va_func + %tmp = load ptr, ptr @foo, align 8 +; ICALL-PROM: [[CMP:%[0-9]+]] = icmp eq ptr %tmp, @va_func ; ICALL-PROM: br i1 [[CMP]], label %if.true.direct_targ, label %if.false.orig_indirect, !prof [[BRANCH_WEIGHT:![0-9]+]] ; ICALL-PROM:if.true.direct_targ: ; ICALL-PROM: [[DIRCALL_RET:%[0-9]+]] = call i32 (i32, ...) @va_func(i32 3, i32 12, i32 22, i32 4) diff --git a/llvm/test/Transforms/PGOProfile/icp_vararg_sret.ll b/llvm/test/Transforms/PGOProfile/icp_vararg_sret.ll index b3c845912567a5..ac7068b6294fc7 100644 --- a/llvm/test/Transforms/PGOProfile/icp_vararg_sret.ll +++ b/llvm/test/Transforms/PGOProfile/icp_vararg_sret.ll @@ -8,7 +8,7 @@ entry: } %struct = type { i32 } -@func_ptr = common global void (i32, %struct*)* null, align 8 +@func_ptr = common global ptr null, align 8 define void @test() { ; Even though value profiling suggests @va_func is the call target, don't do @@ -20,8 +20,8 @@ define void @test() { ; CHECK: ret void %s = alloca %struct - %tmp = load void (i32, %struct*)*, void (i32, %struct*)** @func_ptr, align 8 - call void %tmp(i32 1, %struct* sret(%struct) %s), !prof !1 + %tmp = load ptr, ptr @func_ptr, align 8 + call void %tmp(i32 1, ptr sret(%struct) %s), !prof !1 ret void } diff --git a/llvm/test/Transforms/PGOProfile/indirect_call_annotation.ll b/llvm/test/Transforms/PGOProfile/indirect_call_annotation.ll index af95ae575ebb13..6f8b26fa6ae20e 100644 --- a/llvm/test/Transforms/PGOProfile/indirect_call_annotation.ll +++ b/llvm/test/Transforms/PGOProfile/indirect_call_annotation.ll @@ -3,7 +3,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@foo = common global i32 (i32)* null, align 8 +@foo = common global ptr null, align 8 define i32 @func1(i32 %x) { entry: @@ -24,7 +24,7 @@ entry: define i32 @bar(i32 %i) { entry: - %tmp = load i32 (i32)*, i32 (i32)** @foo, align 8 + %tmp = load ptr, ptr @foo, align 8 %call = call i32 %tmp(i32 %i) ; VP-ANNOTATION: %call = call i32 %tmp(i32 %i) ; VP-ANNOTATION-SAME: !prof ![[VP:[0-9]+]] diff --git a/llvm/test/Transforms/PGOProfile/indirect_call_profile.ll b/llvm/test/Transforms/PGOProfile/indirect_call_profile.ll index 0d9eaf8fcd573c..db633807f4e78d 100644 --- a/llvm/test/Transforms/PGOProfile/indirect_call_profile.ll +++ b/llvm/test/Transforms/PGOProfile/indirect_call_profile.ll @@ -8,7 +8,7 @@ target triple = "x86_64-unknown-linux-gnu" $novp_inline = comdat any $vp_inline = comdat any -@bar = external global void ()*, align 8 +@bar = external global ptr, align 8 ; GEN: @__profn_novp_inline = linkonce_odr hidden constant [11 x i8] c"novp_inline" ; GEN: @__profn_foo = private constant [3 x i8] c"foo" @@ -17,14 +17,14 @@ $vp_inline = comdat any ;; Test that a linkonce function's address is recorded. ;; We allow a linkonce profd to be private if the function does not use value profiling. ; LOWER: @__profd_novp_inline.[[HASH:[0-9]+]] = private global {{.*}} @__profc_novp_inline.[[HASH]] -; LOWER-SAME: i8* bitcast (void ()* @novp_inline to i8*) +; LOWER-SAME: ptr @novp_inline ; LOWER: @__profd_foo = private {{.*}} @__profc_foo ;; __profd_vp_inline.[[#]] is referenced by code and may be referenced by other ;; text sections due to inlining. It can't be local because a linker error would ;; occur if a prevailing text section references the non-prevailing local symbol. ; LOWER: @__profd_vp_inline.[[FOO_HASH:[0-9]+]] = linkonce_odr hidden {{.*}} @__profc_vp_inline.[[FOO_HASH]] -; LOWER-SAME: i8* bitcast (void ()* @vp_inline to i8*) +; LOWER-SAME: ptr @vp_inline define linkonce_odr void @novp_inline() comdat { ret void @@ -34,11 +34,11 @@ define void @foo() { entry: ; GEN: @foo() ; GEN: entry: -; GEN-NEXT: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 [[#FOO_HASH:]], i32 1, i32 0) - %tmp = load void ()*, void ()** @bar, align 8 -; GEN: [[ICALL_TARGET:%[0-9]+]] = ptrtoint void ()* %tmp to i64 -; GEN-NEXT: call void @llvm.instrprof.value.profile(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 [[#FOO_HASH]], i64 [[ICALL_TARGET]], i32 0, i32 0) -; LOWER: call void @__llvm_profile_instrument_target(i64 %1, i8* bitcast ({ i64, i64, i64, i8*, i8*, i32, [2 x i16] }* @__profd_foo to i8*), i32 0) +; GEN-NEXT: call void @llvm.instrprof.increment(ptr @__profn_foo, i64 [[#FOO_HASH:]], i32 1, i32 0) + %tmp = load ptr, ptr @bar, align 8 +; GEN: [[ICALL_TARGET:%[0-9]+]] = ptrtoint ptr %tmp to i64 +; GEN-NEXT: call void @llvm.instrprof.value.profile(ptr @__profn_foo, i64 [[#FOO_HASH]], i64 [[ICALL_TARGET]], i32 0, i32 0) +; LOWER: call void @__llvm_profile_instrument_target(i64 %1, ptr @__profd_foo, i32 0) call void %tmp() ret void } @@ -47,37 +47,37 @@ define linkonce_odr void @vp_inline() comdat { entry: ; GEN: @vp_inline() ; GEN: entry: -; GEN-NEXT: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__profn_vp_inline, i32 0, i32 0), i64 [[#FOO_HASH:]], i32 1, i32 0) - %tmp = load void ()*, void ()** @bar, align 8 -; GEN: [[ICALL_TARGET:%[0-9]+]] = ptrtoint void ()* %tmp to i64 -; GEN-NEXT: call void @llvm.instrprof.value.profile(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__profn_vp_inline, i32 0, i32 0), i64 [[#FOO_HASH]], i64 [[ICALL_TARGET]], i32 0, i32 0) -; LOWER: call void @__llvm_profile_instrument_target(i64 %1, i8* bitcast ({ i64, i64, i64, i8*, i8*, i32, [2 x i16] }* @__profd_vp_inline.[[#]] to i8*), i32 0) +; GEN-NEXT: call void @llvm.instrprof.increment(ptr @__profn_vp_inline, i64 [[#FOO_HASH:]], i32 1, i32 0) + %tmp = load ptr, ptr @bar, align 8 +; GEN: [[ICALL_TARGET:%[0-9]+]] = ptrtoint ptr %tmp to i64 +; GEN-NEXT: call void @llvm.instrprof.value.profile(ptr @__profn_vp_inline, i64 [[#FOO_HASH]], i64 [[ICALL_TARGET]], i32 0, i32 0) +; LOWER: call void @__llvm_profile_instrument_target(i64 %1, ptr @__profd_vp_inline.[[#]], i32 0) call void %tmp() ret void } -@bar2 = global void ()* null, align 8 -@_ZTIi = external constant i8* +@bar2 = global ptr null, align 8 +@_ZTIi = external constant ptr -define i32 @foo2(i32 %arg, i8** nocapture readnone %arg1) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { +define i32 @foo2(i32 %arg, ptr nocapture readnone %arg1) personality ptr @__gxx_personality_v0 { bb: - %tmp2 = load void ()*, void ()** @bar2, align 8 + %tmp2 = load ptr, ptr @bar2, align 8 invoke void %tmp2() to label %bb10 unwind label %bb2 -; GEN: [[ICALL_TARGET2:%[0-9]+]] = ptrtoint void ()* %tmp2 to i64 -; GEN-NEXT: call void @llvm.instrprof.value.profile(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__profn_foo2, i32 0, i32 0), i64 [[FOO2_HASH:[0-9]+]], i64 [[ICALL_TARGET2]], i32 0, i32 0) +; GEN: [[ICALL_TARGET2:%[0-9]+]] = ptrtoint ptr %tmp2 to i64 +; GEN-NEXT: call void @llvm.instrprof.value.profile(ptr @__profn_foo2, i64 [[FOO2_HASH:[0-9]+]], i64 [[ICALL_TARGET2]], i32 0, i32 0) bb2: ; preds = %bb - %tmp3 = landingpad { i8*, i32 } - catch i8* bitcast (i8** @_ZTIi to i8*) - %tmp4 = extractvalue { i8*, i32 } %tmp3, 1 - %tmp5 = tail call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIi to i8*)) + %tmp3 = landingpad { ptr, i32 } + catch ptr @_ZTIi + %tmp4 = extractvalue { ptr, i32 } %tmp3, 1 + %tmp5 = tail call i32 @llvm.eh.typeid.for(ptr @_ZTIi) %tmp6 = icmp eq i32 %tmp4, %tmp5 br i1 %tmp6, label %bb7, label %bb11 bb7: ; preds = %bb2 - %tmp8 = extractvalue { i8*, i32 } %tmp3, 0 - %tmp9 = tail call i8* @__cxa_begin_catch(i8* %tmp8) + %tmp8 = extractvalue { ptr, i32 } %tmp3, 0 + %tmp9 = tail call ptr @__cxa_begin_catch(ptr %tmp8) tail call void @__cxa_end_catch() br label %bb10 @@ -85,15 +85,15 @@ bb10: ; preds = %bb7, %bb ret i32 0 bb11: ; preds = %bb2 - resume { i8*, i32 } %tmp3 + resume { ptr, i32 } %tmp3 } declare i32 @__gxx_personality_v0(...) ; Function Attrs: nounwind readnone -declare i32 @llvm.eh.typeid.for(i8*) #0 +declare i32 @llvm.eh.typeid.for(ptr) #0 -declare i8* @__cxa_begin_catch(i8*) +declare ptr @__cxa_begin_catch(ptr) declare void @__cxa_end_catch() diff --git a/llvm/test/Transforms/PGOProfile/indirect_call_profile_funclet.ll b/llvm/test/Transforms/PGOProfile/indirect_call_profile_funclet.ll index 390eebae83a8b1..42018e4d5e54dd 100644 --- a/llvm/test/Transforms/PGOProfile/indirect_call_profile_funclet.ll +++ b/llvm/test/Transforms/PGOProfile/indirect_call_profile_funclet.ll @@ -33,8 +33,8 @@ ; } ; } -%class.base = type { i32 (...)**, i32 } -define dso_local void @"?run@@YAXPEAVbase@@H@Z"(%class.base* %b, i32 %count) personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*) { +%class.base = type { ptr, i32 } +define dso_local void @"?run@@YAXPEAVbase@@H@Z"(ptr %b, i32 %count) personality ptr @__CxxFrameHandler3 { entry: invoke void @"?may_throw@@YAXH@Z"(i32 %count) to label %try.cont unwind label %catch.dispatch @@ -43,11 +43,10 @@ catch.dispatch: ; preds = %entry %tmp = catchswitch within none [label %catch] unwind to caller catch: ; preds = %catch.dispatch - %tmp1 = catchpad within %tmp [i8* null, i32 64, i8* null] - %tmp2 = bitcast %class.base* %b to void (%class.base*)*** - %vtable = load void (%class.base*)**, void (%class.base*)*** %tmp2, align 8 - %tmp3 = load void (%class.base*)*, void (%class.base*)** %vtable, align 8 - call void %tmp3(%class.base* %b) [ "funclet"(token %tmp1) ] + %tmp1 = catchpad within %tmp [ptr null, i32 64, ptr null] + %vtable = load ptr, ptr %b, align 8 + %tmp3 = load ptr, ptr %vtable, align 8 + call void %tmp3(ptr %b) [ "funclet"(token %tmp1) ] catchret from %tmp1 to label %try.cont try.cont: ; preds = %catch, %entry diff --git a/llvm/test/Transforms/PGOProfile/indirect_call_promotion.ll b/llvm/test/Transforms/PGOProfile/indirect_call_promotion.ll index 5b293224e5dd66..3b0e3250cd6df7 100644 --- a/llvm/test/Transforms/PGOProfile/indirect_call_promotion.ll +++ b/llvm/test/Transforms/PGOProfile/indirect_call_promotion.ll @@ -15,7 +15,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@foo = common global i32 ()* null, align 8 +@foo = common global ptr null, align 8 define i32 @func1() { entry: @@ -39,8 +39,8 @@ entry: define i32 @bar() { entry: - %tmp = load i32 ()*, i32 ()** @foo, align 8 -; ICALL-PROM: [[CMP:%[0-9]+]] = icmp eq i32 ()* %tmp, @func4 + %tmp = load ptr, ptr @foo, align 8 +; ICALL-PROM: [[CMP:%[0-9]+]] = icmp eq ptr %tmp, @func4 ; ICALL-PROM: br i1 [[CMP]], label %if.true.direct_targ, label %if.false.orig_indirect, !prof [[BRANCH_WEIGHT:![0-9]+]] ; ICALL-PROM: if.true.direct_targ: ; ICALL-PROM: [[DIRCALL_RET:%[0-9]+]] = call i32 @func4() diff --git a/llvm/test/Transforms/PGOProfile/indirect_call_promotion_byval.ll b/llvm/test/Transforms/PGOProfile/indirect_call_promotion_byval.ll index a0aa75b7a0426a..6272a80b00a141 100644 --- a/llvm/test/Transforms/PGOProfile/indirect_call_promotion_byval.ll +++ b/llvm/test/Transforms/PGOProfile/indirect_call_promotion_byval.ll @@ -9,38 +9,34 @@ target triple = "i686-unknown-linux-gnu" %struct.Foo.1 = type { i32 } %struct.Foo.2 = type { i32 } -@foo = common global i32 (%struct.Foo.2*)* null, align 8 +@foo = common global ptr null, align 8 -define i32 @func4(%struct.Foo.1* byval(%struct.Foo.1) %p) { +define i32 @func4(ptr byval(%struct.Foo.1) %p) { entry: - %gep = getelementptr inbounds %struct.Foo.1, %struct.Foo.1* %p, i32 0, i32 0 - %v = load i32, i32* %gep + %v = load i32, ptr %p ret i32 %v } -define i32 @func5(%struct.Foo.1* byval(%struct.Foo.1) %p) { +define i32 @func5(ptr byval(%struct.Foo.1) %p) { entry: - %gep = getelementptr inbounds %struct.Foo.1, %struct.Foo.1* %p, i32 0, i32 0 - %v = load i32, i32* %gep + %v = load i32, ptr %p ret i32 %v } -define i32 @bar(%struct.Foo.2* %f2) { +define i32 @bar(ptr %f2) { entry: - %tmp = load i32 (%struct.Foo.2*)*, i32 (%struct.Foo.2*)** @foo, align 8 - %call = call i32 %tmp(%struct.Foo.2* byval(%struct.Foo.2) %f2), !prof !1 + %tmp = load ptr, ptr @foo, align 8 + %call = call i32 %tmp(ptr byval(%struct.Foo.2) %f2), !prof !1 ret i32 %call } !1 = !{!"VP", i32 0, i64 3000, i64 7651369219802541373, i64 1000, i64 3667884930908592509, i64 1000} -; CHECK: define i32 @bar(%struct.Foo.2* %f2) -; Cast %struct.Foo.2* to %struct.Foo.1* and use byval(%struct.Foo.2). -; CHECK: %[[cast:[^ ]*]] = bitcast %struct.Foo.2* %f2 to %struct.Foo.1* -; CHECK: call i32 @func4(%struct.Foo.1* byval(%struct.Foo.1) %[[cast]]) +; CHECK: define i32 @bar(ptr %f2) +; Use byval(%struct.Foo.2). +; CHECK: call i32 @func4(ptr byval(%struct.Foo.2) %f2) ; Same but when callee doesn't have explicit byval type. -; CHECK: %[[cast:[^ ]*]] = bitcast %struct.Foo.2* %f2 to %struct.Foo.1* -; CHECK: call i32 @func5(%struct.Foo.1* byval(%struct.Foo.1) %[[cast]]) +; CHECK: call i32 @func5(ptr byval(%struct.Foo.2) %f2) ; Original call stays the same. -; CHECK: call i32 %tmp(%struct.Foo.2* byval(%struct.Foo.2) %f2) +; CHECK: call i32 %tmp(ptr byval(%struct.Foo.2) %f2) diff --git a/llvm/test/Transforms/PGOProfile/indirect_call_promotion_musttail.ll b/llvm/test/Transforms/PGOProfile/indirect_call_promotion_musttail.ll index 8425eae5838404..128ab158d249b1 100644 --- a/llvm/test/Transforms/PGOProfile/indirect_call_promotion_musttail.ll +++ b/llvm/test/Transforms/PGOProfile/indirect_call_promotion_musttail.ll @@ -3,67 +3,64 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@foo = common global i32* ()* null, align 8 +@foo = common global ptr null, align 8 -define i32* @func1() { - ret i32* null +define ptr @func1() { + ret ptr null } -define i32* @func2() { - ret i32* null +define ptr @func2() { + ret ptr null } -define i32* @func3() { - ret i32* null +define ptr @func3() { + ret ptr null } -define i32* @func4() { - ret i32* null +define ptr @func4() { + ret ptr null } -define i32* @bar() { +define ptr @bar() { entry: - %tmp = load i32* ()*, i32* ()** @foo, align 8 -; ICALL-PROM: [[CMP1:%[0-9]+]] = icmp eq i32* ()* %tmp, @func4 + %tmp = load ptr, ptr @foo, align 8 +; ICALL-PROM: [[CMP1:%[0-9]+]] = icmp eq ptr %tmp, @func4 ; ICALL-PROM: br i1 [[CMP1]], label %if.true.direct_targ, label %[[L1:[0-9]+]], !prof [[BRANCH_WEIGHT1:![0-9]+]] ; ICALL-PROM: if.true.direct_targ: -; ICALL-PROM: [[DIRCALL_RET1:%[0-9]+]] = musttail call i32* @func4() -; ICALL-PROM: ret i32* [[DIRCALL_RET1]] +; ICALL-PROM: [[DIRCALL_RET1:%[0-9]+]] = musttail call ptr @func4() +; ICALL-PROM: ret ptr [[DIRCALL_RET1]] ; ICALL-PROM: [[L1]]: -; ICALL-PROM: [[CMP2:%[0-9]+]] = icmp eq i32* ()* %tmp, @func2 +; ICALL-PROM: [[CMP2:%[0-9]+]] = icmp eq ptr %tmp, @func2 ; ICALL-PROM: br i1 [[CMP2]], label %if.true.direct_targ1, label %[[L2:[0-9]+]], !prof [[BRANCH_WEIGHT2:![0-9]+]] ; ICALL-PROM: if.true.direct_targ1: -; ICALL-PROM: [[DIRCALL_RET2:%[0-9]+]] = musttail call i32* @func2() -; ICALL-PROM: ret i32* [[DIRCALL_RET2]] +; ICALL-PROM: [[DIRCALL_RET2:%[0-9]+]] = musttail call ptr @func2() +; ICALL-PROM: ret ptr [[DIRCALL_RET2]] ; ICALL-PROM: [[L2]]: -; ICALL-PROM: [[CMP3:%[0-9]+]] = icmp eq i32* ()* %tmp, @func3 +; ICALL-PROM: [[CMP3:%[0-9]+]] = icmp eq ptr %tmp, @func3 ; ICALL-PROM: br i1 [[CMP3]], label %if.true.direct_targ2, label %[[L3:[0-9]+]], !prof [[BRANCH_WEIGHT3:![0-9]+]] ; ICALL-PROM: if.true.direct_targ2: -; ICALL-PROM: [[DIRCALL_RET3:%[0-9]+]] = musttail call i32* @func3() -; ICALL-PROM: ret i32* [[DIRCALL_RET3]] +; ICALL-PROM: [[DIRCALL_RET3:%[0-9]+]] = musttail call ptr @func3() +; ICALL-PROM: ret ptr [[DIRCALL_RET3]] ; ICALL-PROM: [[L3]]: -; ICALL-PROM: %call = musttail call i32* %tmp() -; ICALL-PROM: ret i32* %call - %call = musttail call i32* %tmp(), !prof !1 - ret i32* %call +; ICALL-PROM: %call = musttail call ptr %tmp() +; ICALL-PROM: ret ptr %call + %call = musttail call ptr %tmp(), !prof !1 + ret ptr %call } -define i64* @bar2() { +define ptr @bar2() { entry: - %tmp = load i32* ()*, i32* ()** @foo, align 8 -; ICALL-PROM: [[CMP1:%[0-9]+]] = icmp eq i32* ()* %tmp, @func4 + %tmp = load ptr, ptr @foo, align 8 +; ICALL-PROM: [[CMP1:%[0-9]+]] = icmp eq ptr %tmp, @func4 ; ICALL-PROM: br i1 [[CMP1]], label %if.true.direct_targ, label %[[L4:[0-9]+]], !prof [[BRANCH_WEIGHT4:![0-9]+]] ; ICALL-PROM: if.true.direct_targ: -; ICALL-PROM: [[DIRCALL_RET1:%[0-9]+]] = musttail call i32* @func4() -; ICALL-PROM: [[DIRCALL_RET2:%[0-9]+]] = bitcast i32* [[DIRCALL_RET1]] to i64* -; ICALL-PROM: ret i64* [[DIRCALL_RET2]] +; ICALL-PROM: [[DIRCALL_RET1:%[0-9]+]] = musttail call ptr @func4() +; ICALL-PROM: ret ptr [[DIRCALL_RET1]] ; ICALL-PROM: [[L4]]: -; ICALL-PROM: %call = musttail call i32* %tmp() -; ICALL-PROM: %rv = bitcast i32* %call to i64* -; ICALL-PROM: ret i64* %rv - %call = musttail call i32* %tmp(), !prof !2 - %rv = bitcast i32* %call to i64* - ret i64* %rv +; ICALL-PROM: %call = musttail call ptr %tmp() +; ICALL-PROM: ret ptr %call + %call = musttail call ptr %tmp(), !prof !2 + ret ptr %call } !1 = !{!"VP", i32 0, i64 1600, i64 7651369219802541373, i64 1030, i64 -4377547752858689819, i64 410, i64 -6929281286627296573, i64 150, i64 -2545542355363006406, i64 10} diff --git a/llvm/test/Transforms/PGOProfile/indirect_call_promotion_unique.ll b/llvm/test/Transforms/PGOProfile/indirect_call_promotion_unique.ll index b41afc0d04dbca..2c51d6a47b65f9 100644 --- a/llvm/test/Transforms/PGOProfile/indirect_call_promotion_unique.ll +++ b/llvm/test/Transforms/PGOProfile/indirect_call_promotion_unique.ll @@ -3,7 +3,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@foo = common global i32 ()* null, align 8 +@foo = common global ptr null, align 8 ; The names on the IR and in the profile are both "func1". define i32 @func1() { @@ -13,8 +13,8 @@ entry: define i32 @bar1() { entry: - %tmp1 = load i32 ()*, i32 ()** @foo, align 8 -; CHECK: icmp eq i32 ()* %tmp1, @func1 + %tmp1 = load ptr, ptr @foo, align 8 +; CHECK: icmp eq ptr %tmp1, @func1 %call = call i32 %tmp1(), !prof !1 ret i32 %call } @@ -28,8 +28,8 @@ entry: define i32 @bar2() { entry: - %tmp2 = load i32 ()*, i32 ()** @foo, align 8 -; CHECK: icmp eq i32 ()* %tmp2, @func2.llvm.10895321227755557127 + %tmp2 = load ptr, ptr @foo, align 8 +; CHECK: icmp eq ptr %tmp2, @func2.llvm.10895321227755557127 %call = call i32 %tmp2(), !prof !2 ret i32 %call } @@ -43,8 +43,8 @@ entry: define i32 @bar3() { entry: - %tmp3 = load i32 ()*, i32 ()** @foo, align 8 -; CHECK: icmp eq i32 ()* %tmp3, @func3.__uniq.258901567653530696343884446915951489119 + %tmp3 = load ptr, ptr @foo, align 8 +; CHECK: icmp eq ptr %tmp3, @func3.__uniq.258901567653530696343884446915951489119 %call = call i32 %tmp3(), !prof !3 ret i32 %call } @@ -60,8 +60,8 @@ entry: define i32 @bar4() { entry: - %tmp4 = load i32 ()*, i32 ()** @foo, align 8 -; CHECK: icmp eq i32 ()* %tmp4, @func4.__uniq.140291095734751150107370763113257199296.llvm.10650195578168450516 + %tmp4 = load ptr, ptr @foo, align 8 +; CHECK: icmp eq ptr %tmp4, @func4.__uniq.140291095734751150107370763113257199296.llvm.10650195578168450516 %call = call i32 %tmp4(), !prof !4 ret i32 %call } @@ -77,8 +77,8 @@ entry: define i32 @bar5() { entry: - %tmp5 = load i32 ()*, i32 ()** @foo, align 8 -; CHECK: icmp eq i32 ()* %tmp5, @func5.__uniq.127882361580787111523790444488985774976.part.818292359123831.llvm.10650195578168450516 + %tmp5 = load ptr, ptr @foo, align 8 +; CHECK: icmp eq ptr %tmp5, @func5.__uniq.127882361580787111523790444488985774976.part.818292359123831.llvm.10650195578168450516 %call = call i32 %tmp5(), !prof !5 ret i32 %call } diff --git a/llvm/test/Transforms/PGOProfile/indirect_call_promotion_vla.ll b/llvm/test/Transforms/PGOProfile/indirect_call_promotion_vla.ll index a6d85c241d3cde..c4c525a0a1992f 100644 --- a/llvm/test/Transforms/PGOProfile/indirect_call_promotion_vla.ll +++ b/llvm/test/Transforms/PGOProfile/indirect_call_promotion_vla.ll @@ -5,22 +5,22 @@ target triple = "x86_64-unknown-linux-gnu" %struct.A = type { i8 } %struct.B = type { i8 } -@foo = common global i32 (%struct.A*, ...)* null, align 8 +@foo = common global ptr null, align 8 -define i32 @func1(%struct.B* %x, ...) { +define i32 @func1(ptr %x, ...) { entry: ret i32 0 } -define i32 @bar(%struct.A* %x) { +define i32 @bar(ptr %x) { entry: - %tmp = load i32 (%struct.A*, ...)*, i32 (%struct.A*, ...)** @foo, align 8 -; CHECK: [[CMP:%[0-9]+]] = icmp eq i32 (%struct.A*, ...)* %tmp, bitcast (i32 (%struct.B*, ...)* @func1 to i32 (%struct.A*, ...)*) + %tmp = load ptr, ptr @foo, align 8 +; CHECK: [[CMP:%[0-9]+]] = icmp eq ptr %tmp, @func1 ; CHECK: br i1 [[CMP]], label %if.true.direct_targ, label %if.false.orig_indirect, !prof [[BRANCH_WEIGHT:![0-9]+]] ; CHECK: if.true.direct_targ: -; CHECK: [[DIRCALL_RET:%[0-9]+]] = call i32 (%struct.B*, ...) @func1 +; CHECK: [[DIRCALL_RET:%[0-9]+]] = call i32 (ptr, ...) @func1 ; CHECK: br label %if.end.icp - %call = call i32 (%struct.A*, ...) %tmp(%struct.A* %x, i32 0), !prof !1 + %call = call i32 (ptr, ...) %tmp(ptr %x, i32 0), !prof !1 ret i32 %call } diff --git a/llvm/test/Transforms/PGOProfile/indirectbr.ll b/llvm/test/Transforms/PGOProfile/indirectbr.ll index 04c02b11c5e89c..c51d5cc0477cdb 100644 --- a/llvm/test/Transforms/PGOProfile/indirectbr.ll +++ b/llvm/test/Transforms/PGOProfile/indirectbr.ll @@ -9,7 +9,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@foo.table = internal unnamed_addr constant [3 x i8*] [i8* blockaddress(@foo, %return), i8* blockaddress(@foo, %label2), i8* blockaddress(@foo, %label3)], align 16 +@foo.table = internal unnamed_addr constant [3 x ptr] [ptr blockaddress(@foo, %return), ptr blockaddress(@foo, %label2), ptr blockaddress(@foo, %label3)], align 16 define i32 @foo(i32 %i) { entry: @@ -18,10 +18,10 @@ entry: if.then: %idxprom = zext i32 %i to i64 - %arrayidx = getelementptr inbounds [3 x i8*], [3 x i8*]* @foo.table, i64 0, i64 %idxprom - %0 = load i8*, i8** %arrayidx, align 8 - indirectbr i8* %0, [label %return, label %label2, label %label3] -; USE: indirectbr i8* %0, [label %return, label %label2, label %label3] + %arrayidx = getelementptr inbounds [3 x ptr], ptr @foo.table, i64 0, i64 %idxprom + %0 = load ptr, ptr %arrayidx, align 8 + indirectbr ptr %0, [label %return, label %label2, label %label3] +; USE: indirectbr ptr %0, [label %return, label %label2, label %label3] ; USE-SAME: !prof ![[BW_INDBR:[0-9]+]] ; USE: ![[BW_INDBR]] = !{!"branch_weights", i32 63, i32 20, i32 5} diff --git a/llvm/test/Transforms/PGOProfile/infinite_loop.ll b/llvm/test/Transforms/PGOProfile/infinite_loop.ll index 09bfbdc11566e3..9fdb3bfe921f3b 100644 --- a/llvm/test/Transforms/PGOProfile/infinite_loop.ll +++ b/llvm/test/Transforms/PGOProfile/infinite_loop.ll @@ -8,14 +8,14 @@ entry: br label %while.body while.body: ; preds = %entry, %while.body - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 14813359968, i32 1, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 14813359968, i32 1, i32 0) call void (...) @bar() #2 br label %while.body } declare void @bar(...) -declare void @llvm.instrprof.increment(i8*, i64, i32, i32) #0 +declare void @llvm.instrprof.increment(ptr, i64, i32, i32) #0 attributes #0 = { nounwind } diff --git a/llvm/test/Transforms/PGOProfile/irreducible.ll b/llvm/test/Transforms/PGOProfile/irreducible.ll index 0f29f856a00c8c..fa06db35e02c9d 100644 --- a/llvm/test/Transforms/PGOProfile/irreducible.ll +++ b/llvm/test/Transforms/PGOProfile/irreducible.ll @@ -63,13 +63,13 @@ for.end: ; preds = %for.cond2 -@targets = local_unnamed_addr global [256 x i8*] zeroinitializer, align 16 +@targets = local_unnamed_addr global [256 x ptr] zeroinitializer, align 16 @tracing = local_unnamed_addr global i32 0, align 4 ; Function Attrs: noinline norecurse nounwind uwtable -define i32 @_Z11irreduciblePh(i8* nocapture readonly %p) { +define i32 @_Z11irreduciblePh(ptr nocapture readonly %p) { entry: - %0 = load i32, i32* @tracing, align 4 + %0 = load i32, ptr @tracing, align 4 %1 = trunc i32 %0 to i8 %tobool = icmp eq i32 %0, 0 br label %for.cond1 @@ -125,10 +125,10 @@ exit: ; preds = %sw.bb15, %sw.bb indirectgoto: ; preds = %if.then18, %if.then %idxprom21 = zext i32 %0 to i64 - %arrayidx22 = getelementptr inbounds [256 x i8*], [256 x i8*]* @targets, i64 0, i64 %idxprom21 - %target = load i8*, i8** %arrayidx22, align 8 - indirectbr i8* %target, [label %unknown_op, label %sw.bb, label %TARGET_1, label %TARGET_2] -; USE: indirectbr i8* %target, [label %unknown_op, label %sw.bb, label %TARGET_1, label %TARGET_2], !prof !{{[0-9]+}}, + %arrayidx22 = getelementptr inbounds [256 x ptr], ptr @targets, i64 0, i64 %idxprom21 + %target = load ptr, ptr %arrayidx22, align 8 + indirectbr ptr %target, [label %unknown_op, label %sw.bb, label %TARGET_1, label %TARGET_2] +; USE: indirectbr ptr %target, [label %unknown_op, label %sw.bb, label %TARGET_1, label %TARGET_2], !prof !{{[0-9]+}}, ; USE-SAME: !irr_loop ![[INDIRECTGOTO_IRR_LOOP:[0-9]+]] } diff --git a/llvm/test/Transforms/PGOProfile/landingpad.ll b/llvm/test/Transforms/PGOProfile/landingpad.ll index ced3063f850a16..1b2648fc2ff64a 100644 --- a/llvm/test/Transforms/PGOProfile/landingpad.ll +++ b/llvm/test/Transforms/PGOProfile/landingpad.ll @@ -9,7 +9,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16 target triple = "x86_64-unknown-linux-gnu" @val = global i32 0, align 4 -@_ZTIi = external constant i8* +@_ZTIi = external constant ptr ; GEN: $__llvm_profile_raw_version = comdat any ; GEN: @__llvm_profile_raw_version = constant i64 {{[0-9]+}}, comdat ; GEN: @__profn_bar = private constant [3 x i8] c"bar" @@ -18,7 +18,7 @@ target triple = "x86_64-unknown-linux-gnu" define i32 @bar(i32 %i) { entry: ; GEN: entry: -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_bar, i32 0, i32 0), i64 {{[0-9]+}}, i32 2, i32 0) +; GEN: call void @llvm.instrprof.increment(ptr @__profn_bar, i64 {{[0-9]+}}, i32 2, i32 0) %rem = srem i32 %i, 3 %tobool = icmp ne i32 %rem, 0 br i1 %tobool, label %if.then, label %if.end @@ -27,11 +27,10 @@ entry: if.then: ; GEN: if.then: -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_bar, i32 0, i32 0), i64 {{[0-9]+}}, i32 2, i32 1) - %exception = call i8* @__cxa_allocate_exception(i64 4) - %tmp = bitcast i8* %exception to i32* - store i32 %i, i32* %tmp, align 16 - call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTIi to i8*), i8* null) +; GEN: call void @llvm.instrprof.increment(ptr @__profn_bar, i64 {{[0-9]+}}, i32 2, i32 1) + %exception = call ptr @__cxa_allocate_exception(i64 4) + store i32 %i, ptr %exception, align 16 + call void @__cxa_throw(ptr %exception, ptr @_ZTIi, ptr null) unreachable if.end: @@ -41,15 +40,15 @@ if.end: ret i32 0 } -declare i8* @__cxa_allocate_exception(i64) +declare ptr @__cxa_allocate_exception(i64) -declare void @__cxa_throw(i8*, i8*, i8*) +declare void @__cxa_throw(ptr, ptr, ptr) -define i32 @foo(i32 %i) personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { +define i32 @foo(i32 %i) personality ptr @__gxx_personality_v0 { entry: ; GEN: entry: ; NOTENTRY-NOT: call void @llvm.instrprof.increment -; ENTRY: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 {{[0-9]+}}, i32 4, i32 0) +; ENTRY: call void @llvm.instrprof.increment(ptr @__profn_foo, i64 {{[0-9]+}}, i32 4, i32 0) %rem = srem i32 %i, 2 %tobool = icmp ne i32 %rem, 0 br i1 %tobool, label %if.then, label %if.end @@ -65,22 +64,22 @@ if.then: invoke.cont: ; GEN: invoke.cont: -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 {{[0-9]+}}, i32 4, i32 1) +; GEN: call void @llvm.instrprof.increment(ptr @__profn_foo, i64 {{[0-9]+}}, i32 4, i32 1) br label %if.end lpad: ; GEN: lpad: ; GEN-NOT: call void @llvm.instrprof.increment - %tmp = landingpad { i8*, i32 } - catch i8* bitcast (i8** @_ZTIi to i8*) - %tmp1 = extractvalue { i8*, i32 } %tmp, 0 - %tmp2 = extractvalue { i8*, i32 } %tmp, 1 + %tmp = landingpad { ptr, i32 } + catch ptr @_ZTIi + %tmp1 = extractvalue { ptr, i32 } %tmp, 0 + %tmp2 = extractvalue { ptr, i32 } %tmp, 1 br label %catch.dispatch catch.dispatch: ; GEN: catch.dispatch: ; GEN-NOT: call void @llvm.instrprof.increment - %tmp3 = call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIi to i8*)) + %tmp3 = call i32 @llvm.eh.typeid.for(ptr @_ZTIi) %matches = icmp eq i32 %tmp2, %tmp3 br i1 %matches, label %catch, label %eh.resume ; USE: br i1 %matches, label %catch, label %eh.resume @@ -88,13 +87,12 @@ catch.dispatch: catch: ; GEN: catch: -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 {{[0-9]+}}, i32 4, i32 2) - %tmp4 = call i8* @__cxa_begin_catch(i8* %tmp1) - %tmp5 = bitcast i8* %tmp4 to i32* - %tmp6 = load i32, i32* %tmp5, align 4 - %tmp7 = load i32, i32* @val, align 4 +; GEN: call void @llvm.instrprof.increment(ptr @__profn_foo, i64 {{[0-9]+}}, i32 4, i32 2) + %tmp4 = call ptr @__cxa_begin_catch(ptr %tmp1) + %tmp6 = load i32, ptr %tmp4, align 4 + %tmp7 = load i32, ptr @val, align 4 %sub = sub nsw i32 %tmp7, %tmp6 - store i32 %sub, i32* @val, align 4 + store i32 %sub, ptr @val, align 4 call void @__cxa_end_catch() br label %try.cont @@ -105,26 +103,26 @@ try.cont: if.end: ; GEN: if.end: -; NOTENTRY: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 {{[0-9]+}}, i32 4, i32 0) +; NOTENTRY: call void @llvm.instrprof.increment(ptr @__profn_foo, i64 {{[0-9]+}}, i32 4, i32 0) ; ENTRY-NOT: call void @llvm.instrprof.increment - %tmp8 = load i32, i32* @val, align 4 + %tmp8 = load i32, ptr @val, align 4 %add = add nsw i32 %tmp8, %i - store i32 %add, i32* @val, align 4 + store i32 %add, ptr @val, align 4 br label %try.cont eh.resume: ; GEN: eh.resume: -; GEN: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 {{[0-9]+}}, i32 4, i32 3) - %lpad.val = insertvalue { i8*, i32 } undef, i8* %tmp1, 0 - %lpad.val3 = insertvalue { i8*, i32 } %lpad.val, i32 %tmp2, 1 - resume { i8*, i32 } %lpad.val3 +; GEN: call void @llvm.instrprof.increment(ptr @__profn_foo, i64 {{[0-9]+}}, i32 4, i32 3) + %lpad.val = insertvalue { ptr, i32 } undef, ptr %tmp1, 0 + %lpad.val3 = insertvalue { ptr, i32 } %lpad.val, i32 %tmp2, 1 + resume { ptr, i32 } %lpad.val3 } declare i32 @__gxx_personality_v0(...) -declare i32 @llvm.eh.typeid.for(i8*) +declare i32 @llvm.eh.typeid.for(ptr) -declare i8* @__cxa_begin_catch(i8*) +declare ptr @__cxa_begin_catch(ptr) declare void @__cxa_end_catch() diff --git a/llvm/test/Transforms/PGOProfile/memcpy.ll b/llvm/test/Transforms/PGOProfile/memcpy.ll index 4eab21e4b91d60..ac67fd9fcbc518 100644 --- a/llvm/test/Transforms/PGOProfile/memcpy.ll +++ b/llvm/test/Transforms/PGOProfile/memcpy.ll @@ -2,7 +2,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -define void @foo(i8* %dst, i8* %src, i32* %a, i32 %n) { +define void @foo(ptr %dst, ptr %src, ptr %a, i32 %n) { entry: br label %for.cond @@ -14,16 +14,16 @@ for.cond: for.cond1: %j.0 = phi i32 [ %inc, %for.body3 ], [ 0, %for.cond ] %idx.ext = sext i32 %i.0 to i64 - %add.ptr = getelementptr inbounds i32, i32* %a, i64 %idx.ext - %0 = load i32, i32* %add.ptr, align 4 + %add.ptr = getelementptr inbounds i32, ptr %a, i64 %idx.ext + %0 = load i32, ptr %add.ptr, align 4 %cmp2 = icmp slt i32 %j.0, %0 %add = add nsw i32 %i.0, 1 br i1 %cmp2, label %for.body3, label %for.cond for.body3: %conv = sext i32 %add to i64 -; CHECK: call void @__llvm_profile_instrument_memop(i64 %conv, i8* bitcast ({ i64, i64, i64, i8*, i8*, i32, [2 x i16] }* @__profd_foo to i8*), i32 0) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %conv, i1 false) +; CHECK: call void @__llvm_profile_instrument_memop(i64 %conv, ptr @__profd_foo, i32 0) + call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %conv, i1 false) %inc = add nsw i32 %j.0, 1 br label %for.cond1 @@ -31,4 +31,4 @@ for.end6: ret void } -declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) +declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) diff --git a/llvm/test/Transforms/PGOProfile/memop_clone.ll b/llvm/test/Transforms/PGOProfile/memop_clone.ll index 3aa6f56a0817c1..d822513d037ba8 100644 --- a/llvm/test/Transforms/PGOProfile/memop_clone.ll +++ b/llvm/test/Transforms/PGOProfile/memop_clone.ll @@ -1,26 +1,26 @@ ; RUN: opt < %s -passes=pgo-memop-opt -verify-dom-info -S | FileCheck %s -define i32 @test(i8* %a, i8* %b) !prof !1 { +define i32 @test(ptr %a, ptr %b) !prof !1 { ; CHECK-LABEL: test ; CHECK: MemOP.Case.3: -; CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* undef, i8* %a, i32 3, i1 false) +; CHECK: tail call void @llvm.memcpy.p0.p0.i32(ptr undef, ptr %a, i32 3, i1 false) ; CHECK: MemOP.Case.2: -; CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* undef, i8* %a, i32 2, i1 false) +; CHECK: tail call void @llvm.memcpy.p0.p0.i32(ptr undef, ptr %a, i32 2, i1 false) ; CHECK: MemOP.Default: -; CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* undef, i8* %a, i32 undef, i1 false) +; CHECK: tail call void @llvm.memcpy.p0.p0.i32(ptr undef, ptr %a, i32 undef, i1 false) ; CHECK: MemOP.Case.33: -; CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* undef, i8* %b, i64 3, i1 false) +; CHECK: tail call void @llvm.memcpy.p0.p0.i64(ptr undef, ptr %b, i64 3, i1 false) ; CHECK: MemOP.Case.24: -; CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* undef, i8* %b, i64 2, i1 false) +; CHECK: tail call void @llvm.memcpy.p0.p0.i64(ptr undef, ptr %b, i64 2, i1 false) ; CHECK: MemOP.Default2: -; CHECK: tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* undef, i8* %b, i64 undef, i1 false) - tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* undef, i8* %a, i32 undef, i1 false), !prof !2 - tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* undef, i8* %b, i64 undef, i1 false), !prof !2 +; CHECK: tail call void @llvm.memcpy.p0.p0.i64(ptr undef, ptr %b, i64 undef, i1 false) + tail call void @llvm.memcpy.p0.p0.i32(ptr undef, ptr %a, i32 undef, i1 false), !prof !2 + tail call void @llvm.memcpy.p0.p0.i64(ptr undef, ptr %b, i64 undef, i1 false), !prof !2 unreachable } -declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i1) -declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) +declare void @llvm.memcpy.p0.p0.i32(ptr nocapture writeonly, ptr nocapture readonly, i32, i1) +declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) !1 = !{!"function_entry_count", i64 5170} !2 = !{!"VP", i32 1, i64 2585, i64 3, i64 1802, i64 2, i64 783} diff --git a/llvm/test/Transforms/PGOProfile/memop_hash.ll b/llvm/test/Transforms/PGOProfile/memop_hash.ll index 602ab98a8f951c..0f406789961090 100644 --- a/llvm/test/Transforms/PGOProfile/memop_hash.ll +++ b/llvm/test/Transforms/PGOProfile/memop_hash.ll @@ -3,15 +3,15 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i1) +declare void @llvm.memcpy.p0.p0.i32(ptr nocapture writeonly, ptr nocapture readonly, i32, i1) -define i64 @foo1(i8* %a, i8* %b, i32 %s) { +define i64 @foo1(ptr %a, ptr %b, i32 %s) { entry: - call void @llvm.memcpy.p0i8.p0i8.i32(i8* %a, i8* %b, i32 %s, i1 false); + call void @llvm.memcpy.p0.p0.i32(ptr %a, ptr %b, i32 %s, i1 false); ret i64 0 } -define i64 @foo2(i8* %a, i8* %b, i32 %s) { +define i64 @foo2(ptr %a, ptr %b, i32 %s) { entry: ret i64 0 } @@ -19,6 +19,6 @@ entry: ; The two hashes should not be equal as the existence of the memcpy should change the hash. ; ; CHECK: @foo1 -; CHECK: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__profn_foo1, i32 0, i32 0), i64 [[FOO1_HASH:[0-9]+]], i32 1, i32 0) +; CHECK: call void @llvm.instrprof.increment(ptr @__profn_foo1, i64 [[FOO1_HASH:[0-9]+]], i32 1, i32 0) ; CHECK: @foo2 -; CHECK-NOT: call void @llvm.instrprof.increment(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__profn_foo2, i32 0, i32 0), i64 [[FOO1_HASH]], i32 1, i32 0) +; CHECK-NOT: call void @llvm.instrprof.increment(ptr @__profn_foo2, i64 [[FOO1_HASH]], i32 1, i32 0) diff --git a/llvm/test/Transforms/PGOProfile/memop_profile_funclet.ll b/llvm/test/Transforms/PGOProfile/memop_profile_funclet.ll index 56e502781e700b..0e85afc1d73078 100644 --- a/llvm/test/Transforms/PGOProfile/memop_profile_funclet.ll +++ b/llvm/test/Transforms/PGOProfile/memop_profile_funclet.ll @@ -32,7 +32,7 @@ $"??_C@_0BC@CABPINND@Exception?5caught?$AA?$AA@" = comdat any @"?msg@@3PADA" = dso_local global [200 x i8] zeroinitializer, align 16 @"??_C@_0BC@CABPINND@Exception?5caught?$AA?$AA@" = linkonce_odr dso_local unnamed_addr constant [18 x i8] c"0123456789012345\00\00", comdat, align 1 -define dso_local void @"?run@@YAXH@Z"(i32 %count) personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*) { +define dso_local void @"?run@@YAXH@Z"(i32 %count) personality ptr @__CxxFrameHandler3 { entry: invoke void @"?may_throw@@YAXH@Z"(i32 %count) to label %try.cont unwind label %catch.dispatch @@ -41,14 +41,14 @@ catch.dispatch: ; preds = %entry %tmp = catchswitch within none [label %catch] unwind to caller catch: ; preds = %catch.dispatch - %tmp1 = catchpad within %tmp [i8* null, i32 64, i8* null] - %tmp2 = load i32, i32* @"?len@@3IA", align 4 + %tmp1 = catchpad within %tmp [ptr null, i32 64, ptr null] + %tmp2 = load i32, ptr @"?len@@3IA", align 4 %conv = zext i32 %tmp2 to i64 - call void @llvm.memcpy.p0i8.p0i8.i64( - i8* getelementptr inbounds ([200 x i8], [200 x i8]* @"?msg@@3PADA", i64 0, i64 0), - i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"??_C@_0BC@CABPINND@Exception?5caught?$AA?$AA@", i64 0, i64 0), + call void @llvm.memcpy.p0.p0.i64( + ptr @"?msg@@3PADA", + ptr @"??_C@_0BC@CABPINND@Exception?5caught?$AA?$AA@", i64 %conv, i1 false) - call void @_CxxThrowException(i8* null, %eh.ThrowInfo* null) #3 [ "funclet"(token %tmp1) ] + call void @_CxxThrowException(ptr null, ptr null) #3 [ "funclet"(token %tmp1) ] unreachable try.cont: ; preds = %entry @@ -66,5 +66,5 @@ try.cont: ; preds = %entry declare dso_local void @"?may_throw@@YAXH@Z"(i32) declare dso_local i32 @__CxxFrameHandler3(...) -declare void @llvm.memcpy.p0i8.p0i8.i64(i8*, i8*, i64, i1) -declare dso_local void @_CxxThrowException(i8*, %eh.ThrowInfo*) +declare void @llvm.memcpy.p0.p0.i64(ptr, ptr, i64, i1) +declare dso_local void @_CxxThrowException(ptr, ptr) diff --git a/llvm/test/Transforms/PGOProfile/memop_size_annotation.ll b/llvm/test/Transforms/PGOProfile/memop_size_annotation.ll index ebf91715e118d7..3ef185a28cc5fd 100644 --- a/llvm/test/Transforms/PGOProfile/memop_size_annotation.ll +++ b/llvm/test/Transforms/PGOProfile/memop_size_annotation.ll @@ -5,7 +5,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -define void @foo(i8* %dst, i8* %src, i32* %a, i32 %n) { +define void @foo(ptr %dst, ptr %src, ptr %a, i32 %n) { entry: br label %for.cond @@ -20,22 +20,22 @@ for.body: for.cond1: %j.0 = phi i32 [ 0, %for.body ], [ %inc, %for.inc ] %idx.ext = sext i32 %i.0 to i64 - %add.ptr = getelementptr inbounds i32, i32* %a, i64 %idx.ext - %0 = load i32, i32* %add.ptr, align 4 + %add.ptr = getelementptr inbounds i32, ptr %a, i64 %idx.ext + %0 = load i32, ptr %add.ptr, align 4 %cmp2 = icmp slt i32 %j.0, %0 br i1 %cmp2, label %for.body3, label %for.end for.body3: %add = add nsw i32 %i.0, 1 %conv = sext i32 %add to i64 - call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %conv, i1 false) -; MEMOP_ANNOTATION: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %conv, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %conv, i1 false) +; MEMOP_ANNOTATION: call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %conv, i1 false) ; MEMOP_ANNOTATION-SAME: !prof ![[MEMOP_VALUESITE:[0-9]+]] - %memcmp = call i32 @memcmp(i8* %dst, i8* %src, i64 %conv) -; MEMOP_ANNOTATION: call i32 @memcmp(i8* %dst, i8* %src, i64 %conv) + %memcmp = call i32 @memcmp(ptr %dst, ptr %src, i64 %conv) +; MEMOP_ANNOTATION: call i32 @memcmp(ptr %dst, ptr %src, i64 %conv) ; MEMOP_ANNOTATION-SAME: !prof ![[MEMOP_VALUESITE]] - %bcmp = call i32 @bcmp(i8* %dst, i8* %src, i64 %conv) -; MEMOP_ANNOTATION: call i32 @bcmp(i8* %dst, i8* %src, i64 %conv) + %bcmp = call i32 @bcmp(ptr %dst, ptr %src, i64 %conv) +; MEMOP_ANNOTATION: call i32 @bcmp(ptr %dst, ptr %src, i64 %conv) ; MEMOP_ANNOTATION-SAME: !prof ![[MEMOP_VALUESITE]] ; MEMOP_ANNOTATION9: ![[MEMOP_VALUESITE]] = !{!"VP", i32 1, i64 556, i64 1, i64 99, i64 2, i64 88, i64 3, i64 77, i64 9, i64 72, i64 4, i64 66, i64 5, i64 55, i64 6, i64 44, i64 7, i64 33, i64 8, i64 22} ; MEMOP_ANNOTATION4: ![[MEMOP_VALUESITE]] = !{!"VP", i32 1, i64 556, i64 1, i64 99, i64 2, i64 88, i64 3, i64 77, i64 9, i64 72} @@ -56,11 +56,11 @@ for.end6: ret void } -declare void @llvm.lifetime.start(i64, i8* nocapture) +declare void @llvm.lifetime.start(i64, ptr nocapture) -declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) +declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) -declare i32 @memcmp(i8*, i8*, i64) -declare i32 @bcmp(i8*, i8*, i64) +declare i32 @memcmp(ptr, ptr, i64) +declare i32 @bcmp(ptr, ptr, i64) -declare void @llvm.lifetime.end(i64, i8* nocapture) +declare void @llvm.lifetime.end(i64, ptr nocapture) diff --git a/llvm/test/Transforms/PGOProfile/memop_size_from_strlen.ll b/llvm/test/Transforms/PGOProfile/memop_size_from_strlen.ll index 3dd28d2f804792..7e8596fdf30b1f 100644 --- a/llvm/test/Transforms/PGOProfile/memop_size_from_strlen.ll +++ b/llvm/test/Transforms/PGOProfile/memop_size_from_strlen.ll @@ -1,14 +1,14 @@ ; RUN: opt < %s -passes=pgo-instr-gen -S | FileCheck %s -declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i1) -declare i32 @strlen(i8* nocapture) +declare void @llvm.memcpy.p0.p0.i32(ptr nocapture writeonly, ptr nocapture readonly, i32, i1) +declare i32 @strlen(ptr nocapture) ; CHECK-LABEL: test ; CHECK: %1 = zext i32 %c to i64 -; CHECK: call void @llvm.instrprof.value.profile(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__profn_test, i32 0, i32 0), i64 {{[0-9]+}}, i64 %1, i32 1, i32 0) +; CHECK: call void @llvm.instrprof.value.profile(ptr @__profn_test, i64 {{[0-9]+}}, i64 %1, i32 1, i32 0) -define void @test(i8* %a, i8* %p) { - %c = call i32 @strlen(i8* %p) - call void @llvm.memcpy.p0i8.p0i8.i32(i8* %a, i8* %p, i32 %c, i1 false) +define void @test(ptr %a, ptr %p) { + %c = call i32 @strlen(ptr %p) + call void @llvm.memcpy.p0.p0.i32(ptr %a, ptr %p, i32 %c, i1 false) ret void } diff --git a/llvm/test/Transforms/PGOProfile/memop_size_opt.ll b/llvm/test/Transforms/PGOProfile/memop_size_opt.ll index 60d1f7ed1bc705..c4f749be747dba 100644 --- a/llvm/test/Transforms/PGOProfile/memop_size_opt.ll +++ b/llvm/test/Transforms/PGOProfile/memop_size_opt.ll @@ -7,7 +7,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -define void @foo(i8* %dst, i8* %src, i8* %dst2, i8* %src2, i32* %a, i32 %n) !prof !27 { +define void @foo(ptr %dst, ptr %src, ptr %dst2, ptr %src2, ptr %a, i32 %n) !prof !27 { entry: br label %for.cond @@ -22,36 +22,36 @@ for.body: for.cond1: %j.0 = phi i32 [ 0, %for.body ], [ %inc, %for.inc ] %idx.ext = sext i32 %i.0 to i64 - %add.ptr = getelementptr inbounds i32, i32* %a, i64 %idx.ext - %0 = load i32, i32* %add.ptr, align 4 + %add.ptr = getelementptr inbounds i32, ptr %a, i64 %idx.ext + %0 = load i32, ptr %add.ptr, align 4 %cmp2 = icmp slt i32 %j.0, %0 br i1 %cmp2, label %for.body3, label %for.end, !prof !29 for.body3: %add = add nsw i32 %i.0, 1 %conv = sext i32 %add to i64 - call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %conv, i1 false), !prof !30 - call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst2, i8* %src2, i64 %conv, i1 false), !prof !31 + call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %conv, i1 false), !prof !30 + call void @llvm.memcpy.p0.p0.i64(ptr %dst2, ptr %src2, i64 %conv, i1 false), !prof !31 br label %for.inc ; MEMOP_OPT: switch i64 %conv, label %[[DEFAULT_LABEL:.*]] [ ; MEMOP_OPT: i64 0, label %[[CASE_1_LABEL:.*]] ; MEMOP_OPT: ], !prof [[SWITCH_BW:![0-9]+]] ; MEMOP_OPT: [[CASE_1_LABEL]]: -; MEMOP_OPT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 0, i1 false) +; MEMOP_OPT: call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 0, i1 false) ; MEMOP_OPT: br label %[[MERGE_LABEL:.*]] ; MEMOP_OPT: [[DEFAULT_LABEL]]: -; MEMOP_OPT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %conv, i1 false), !prof [[NEWVP:![0-9]+]] +; MEMOP_OPT: call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %conv, i1 false), !prof [[NEWVP:![0-9]+]] ; MEMOP_OPT: br label %[[MERGE_LABEL]] ; MEMOP_OPT: [[MERGE_LABEL]]: ; MEMOP_OPT: switch i64 %conv, label %[[DEFAULT_LABEL2:.*]] [ ; MEMOP_OPT: i64 0, label %[[CASE_1_LABEL2:.*]] ; MEMOP_OPT: ], !prof [[SWITCH_BW:![0-9]+]] ; MEMOP_OPT: [[CASE_1_LABEL2]]: -; MEMOP_OPT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst2, i8* %src2, i64 0, i1 false) +; MEMOP_OPT: call void @llvm.memcpy.p0.p0.i64(ptr %dst2, ptr %src2, i64 0, i1 false) ; MEMOP_OPT: br label %[[MERGE_LABEL2:.*]] ; MEMOP_OPT: [[DEFAULT_LABEL2]]: -; MEMOP_OPT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst2, i8* %src2, i64 %conv, i1 false), !prof [[NEWVP]] +; MEMOP_OPT: call void @llvm.memcpy.p0.p0.i64(ptr %dst2, ptr %src2, i64 %conv, i1 false), !prof [[NEWVP]] ; MEMOP_OPT: br label %[[MERGE_LABEL2]] ; MEMOP_OPT: [[MERGE_LABEL2]]: ; MEMOP_OPT: br label %for.inc @@ -73,7 +73,7 @@ for.end6: declare void @consume(i32 %v1, i32 %v2) -define void @foo_memcmp_bcmp(i8* %dst, i8* %src, i8* %dst2, i8* %src2, i32* %a, i32 %n) !prof !27 { +define void @foo_memcmp_bcmp(ptr %dst, ptr %src, ptr %dst2, ptr %src2, ptr %a, i32 %n) !prof !27 { entry: br label %for.cond @@ -88,16 +88,16 @@ for.body: for.cond1: %j.0 = phi i32 [ 0, %for.body ], [ %inc, %for.inc ] %idx.ext = sext i32 %i.0 to i64 - %add.ptr = getelementptr inbounds i32, i32* %a, i64 %idx.ext - %0 = load i32, i32* %add.ptr, align 4 + %add.ptr = getelementptr inbounds i32, ptr %a, i64 %idx.ext + %0 = load i32, ptr %add.ptr, align 4 %cmp2 = icmp slt i32 %j.0, %0 br i1 %cmp2, label %for.body3, label %for.end, !prof !29 for.body3: %add = add nsw i32 %i.0, 1 %conv = sext i32 %add to i64 - %memcmp = call i32 @memcmp(i8* %dst, i8* %src, i64 %conv), !prof !30 - %bcmp = call i32 @bcmp(i8* %dst2, i8* %src2, i64 %conv), !prof !31 + %memcmp = call i32 @memcmp(ptr %dst, ptr %src, i64 %conv), !prof !30 + %bcmp = call i32 @bcmp(ptr %dst2, ptr %src2, i64 %conv), !prof !31 call void @consume(i32 %memcmp, i32 %bcmp) br label %for.inc @@ -105,10 +105,10 @@ for.body3: ; MEMOP_OPT: i64 0, label %[[CASE_1_LABEL:.*]] ; MEMOP_OPT: ], !prof [[SWITCH_BW:![0-9]+]] ; MEMOP_OPT: [[CASE_1_LABEL]]: -; MEMOP_OPT: %[[RV:.*]] = call i32 @memcmp(i8* %dst, i8* %src, i64 0) +; MEMOP_OPT: %[[RV:.*]] = call i32 @memcmp(ptr %dst, ptr %src, i64 0) ; MEMOP_OPT: br label %[[MERGE_LABEL:.*]] ; MEMOP_OPT: [[DEFAULT_LABEL]]: -; MEMOP_OPT: %[[RVD:.*]] = call i32 @memcmp(i8* %dst, i8* %src, i64 %conv), !prof [[NEWVP:![0-9]+]] +; MEMOP_OPT: %[[RVD:.*]] = call i32 @memcmp(ptr %dst, ptr %src, i64 %conv), !prof [[NEWVP:![0-9]+]] ; MEMOP_OPT: br label %[[MERGE_LABEL]] ; MEMOP_OPT: [[MERGE_LABEL]]: ; MEMOP_OPT: %[[PHI:.*]] = phi i32 [ %[[RVD]], %[[DEFAULT_LABEL]] ], [ %[[RV]], %[[CASE_1_LABEL]] ] @@ -116,10 +116,10 @@ for.body3: ; MEMOP_OPT: i64 0, label %[[CASE_1_LABEL2:.*]] ; MEMOP_OPT: ], !prof [[SWITCH_BW:![0-9]+]] ; MEMOP_OPT: [[CASE_1_LABEL2]]: -; MEMOP_OPT: %[[RV2:.*]] = call i32 @bcmp(i8* %dst2, i8* %src2, i64 0) +; MEMOP_OPT: %[[RV2:.*]] = call i32 @bcmp(ptr %dst2, ptr %src2, i64 0) ; MEMOP_OPT: br label %[[MERGE_LABEL2:.*]] ; MEMOP_OPT: [[DEFAULT_LABEL2]]: -; MEMOP_OPT: %[[RVD2:.*]] = call i32 @bcmp(i8* %dst2, i8* %src2, i64 %conv), !prof [[NEWVP]] +; MEMOP_OPT: %[[RVD2:.*]] = call i32 @bcmp(ptr %dst2, ptr %src2, i64 %conv), !prof [[NEWVP]] ; MEMOP_OPT: br label %[[MERGE_LABEL2]] ; MEMOP_OPT: [[MERGE_LABEL2]]: ; MEMOP_OPT: %[[PHI2:.*]] = phi i32 [ %[[RVD2]], %[[DEFAULT_LABEL2]] ], [ %[[RV2]], %[[CASE_1_LABEL2]] ] @@ -181,14 +181,14 @@ for.end6: !30 = !{!"VP", i32 1, i64 556, i64 0, i64 99, i64 2, i64 88, i64 3, i64 77, i64 9, i64 72, i64 4, i64 66, i64 5, i64 55, i64 6, i64 44, i64 7, i64 33, i64 8, i64 22} !31 = !{!"VP", i32 1, i64 556, i64 0, i64 99, i64 2, i64 88, i64 3, i64 77, i64 9, i64 72, i64 4, i64 66, i64 5, i64 55, i64 6, i64 44, i64 7, i64 33, i64 8, i64 22} -declare void @llvm.lifetime.start(i64, i8* nocapture) +declare void @llvm.lifetime.start(i64, ptr nocapture) -declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) +declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) -declare i32 @memcmp(i8*, i8*, i64) -declare i32 @bcmp(i8*, i8*, i64) +declare i32 @memcmp(ptr, ptr, i64) +declare i32 @bcmp(ptr, ptr, i64) -declare void @llvm.lifetime.end(i64, i8* nocapture) +declare void @llvm.lifetime.end(i64, ptr nocapture) ; YAML: --- !Passed ; YAML-NEXT: Pass: pgo-memop-opt diff --git a/llvm/test/Transforms/PGOProfile/memop_size_opt_skip_ranges_promote_three.ll b/llvm/test/Transforms/PGOProfile/memop_size_opt_skip_ranges_promote_three.ll index f77740d61521d5..1ee02a710a61cd 100644 --- a/llvm/test/Transforms/PGOProfile/memop_size_opt_skip_ranges_promote_three.ll +++ b/llvm/test/Transforms/PGOProfile/memop_size_opt_skip_ranges_promote_three.ll @@ -1,8 +1,8 @@ ; RUN: opt < %s -passes=pgo-memop-opt -pgo-memop-count-threshold=100 -pgo-memop-percent-threshold=10 -S | FileCheck %s -define void @foo(i8* %dst, i8* %src, i8* %dst2, i8* %src2, i64 %n) !prof !27 { +define void @foo(ptr %dst, ptr %src, ptr %dst2, ptr %src2, i64 %n) !prof !27 { entry: - call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %n, i1 false), !prof !28 + call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %n, i1 false), !prof !28 ret void } @@ -12,16 +12,16 @@ entry: ; CHECK: i64 2, label %[[CASE_2_LABEL:.*]] ; CHECK: ], !prof [[SWITCH_BW:![0-9]+]] ; CHECK: [[CASE_0_LABEL]]: -; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 0, i1 false) +; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 0, i1 false) ; CHECK: br label %[[MERGE_LABEL:.*]] ; CHECK: [[CASE_1_LABEL]]: -; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 1, i1 false) +; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 1, i1 false) ; CHECK: br label %[[MERGE_LABEL:.*]] ; CHECK: [[CASE_2_LABEL]]: -; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 2, i1 false) +; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 2, i1 false) ; CHECK: br label %[[MERGE_LABEL:.*]] ; CHECK: [[DEFAULT_LABEL]]: -; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %n, i1 false), !prof [[NEWVP:![0-9]+]] +; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %n, i1 false), !prof [[NEWVP:![0-9]+]] ; CHECK: br label %[[MERGE_LABEL]] ; CHECK: [[MERGE_LABEL]]: ; CHECK: ret void @@ -31,7 +31,7 @@ entry: ; CHECK: [[SWITCH_BW]] = !{!"branch_weights", i32 524, i32 101, i32 101, i32 101} ; CHECK: [[NEWVP]] = !{!"VP", i32 1, i64 524, i64 9, i64 104, i64 17, i64 103, i64 33, i64 103, i64 65, i64 102, i64 129, i64 102, i64 3, i64 101} -declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) +declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) !llvm.module.flags = !{!0} diff --git a/llvm/test/Transforms/PGOProfile/memop_size_opt_zero.ll b/llvm/test/Transforms/PGOProfile/memop_size_opt_zero.ll index 9e9a23acfdbade..4c7fefd3802bd0 100644 --- a/llvm/test/Transforms/PGOProfile/memop_size_opt_zero.ll +++ b/llvm/test/Transforms/PGOProfile/memop_size_opt_zero.ll @@ -5,14 +5,14 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -define void @foo(i8* %dst, i8* %src, i64 %conv) !prof !0 { - call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %conv, i1 false), !prof !1 +define void @foo(ptr %dst, ptr %src, i64 %conv) !prof !0 { + call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %conv, i1 false), !prof !1 ret void } -; MEMOP_OPT: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %conv, i1 false), !prof !1 +; MEMOP_OPT: call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %conv, i1 false), !prof !1 !0 = !{!"function_entry_count", i64 1} !1 = !{!"VP", i32 1, i64 0, i64 1, i64 0, i64 2, i64 0, i64 3, i64 0, i64 9, i64 0, i64 4, i64 0, i64 5, i64 0, i64 6, i64 0, i64 7, i64 0, i64 8, i64 0} -declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i1) +declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) diff --git a/llvm/test/Transforms/PGOProfile/misexpect-branch-correct.ll b/llvm/test/Transforms/PGOProfile/misexpect-branch-correct.ll index 63060d39e8ee5f..f187d41028fc11 100644 --- a/llvm/test/Transforms/PGOProfile/misexpect-branch-correct.ll +++ b/llvm/test/Transforms/PGOProfile/misexpect-branch-correct.ll @@ -23,15 +23,13 @@ define i32 @bar() #0 { entry: %rando = alloca i32, align 4 %x = alloca i32, align 4 - %0 = bitcast i32* %rando to i8* - call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #4 + call void @llvm.lifetime.start.p0(i64 4, ptr %rando) #4 %call = call i32 (...) @buzz() - store i32 %call, i32* %rando, align 4, !tbaa !3 - %1 = bitcast i32* %x to i8* - call void @llvm.lifetime.start.p0i8(i64 4, i8* %1) #4 - store i32 0, i32* %x, align 4, !tbaa !3 - %2 = load i32, i32* %rando, align 4, !tbaa !3 - %rem = srem i32 %2, 200000 + store i32 %call, ptr %rando, align 4, !tbaa !3 + call void @llvm.lifetime.start.p0(i64 4, ptr %x) #4 + store i32 0, ptr %x, align 4, !tbaa !3 + %0 = load i32, ptr %rando, align 4, !tbaa !3 + %rem = srem i32 %0, 200000 %cmp = icmp eq i32 %rem, 0 %lnot = xor i1 %cmp, true %lnot1 = xor i1 %lnot, true @@ -42,27 +40,25 @@ entry: br i1 %tobool, label %if.then, label %if.else if.then: ; preds = %entry - %3 = load i32, i32* %rando, align 4, !tbaa !3 - %call2 = call i32 @baz(i32 %3) - store i32 %call2, i32* %x, align 4, !tbaa !3 + %1 = load i32, ptr %rando, align 4, !tbaa !3 + %call2 = call i32 @baz(i32 %1) + store i32 %call2, ptr %x, align 4, !tbaa !3 br label %if.end if.else: ; preds = %entry %call3 = call i32 @foo(i32 50) - store i32 %call3, i32* %x, align 4, !tbaa !3 + store i32 %call3, ptr %x, align 4, !tbaa !3 br label %if.end if.end: ; preds = %if.else, %if.then - %4 = load i32, i32* %x, align 4, !tbaa !3 - %5 = bitcast i32* %x to i8* - call void @llvm.lifetime.end.p0i8(i64 4, i8* %5) #4 - %6 = bitcast i32* %rando to i8* - call void @llvm.lifetime.end.p0i8(i64 4, i8* %6) #4 - ret i32 %4 + %2 = load i32, ptr %x, align 4, !tbaa !3 + call void @llvm.lifetime.end.p0(i64 4, ptr %x) #4 + call void @llvm.lifetime.end.p0(i64 4, ptr %rando) #4 + ret i32 %2 } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #1 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 declare i32 @buzz(...) #2 @@ -74,7 +70,7 @@ declare i32 @baz(i32) #2 declare i32 @foo(i32) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #1 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind willreturn } diff --git a/llvm/test/Transforms/PGOProfile/misexpect-branch-overflow.ll b/llvm/test/Transforms/PGOProfile/misexpect-branch-overflow.ll index 7279f1ab3d60f7..146ad44b38918d 100644 --- a/llvm/test/Transforms/PGOProfile/misexpect-branch-overflow.ll +++ b/llvm/test/Transforms/PGOProfile/misexpect-branch-overflow.ll @@ -20,15 +20,13 @@ define i32 @bar() #0 !dbg !6 { entry: %rando = alloca i32, align 4 %x = alloca i32, align 4 - %0 = bitcast i32* %rando to i8*, !dbg !9 - call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #4, !dbg !9 + call void @llvm.lifetime.start.p0(i64 4, ptr %rando) #4, !dbg !9 %call = call i32 (...) @buzz(), !dbg !9 - store i32 %call, i32* %rando, align 4, !dbg !9, !tbaa !10 - %1 = bitcast i32* %x to i8*, !dbg !14 - call void @llvm.lifetime.start.p0i8(i64 4, i8* %1) #4, !dbg !14 - store i32 0, i32* %x, align 4, !dbg !14, !tbaa !10 - %2 = load i32, i32* %rando, align 4, !dbg !15, !tbaa !10 - %rem = srem i32 %2, 200000, !dbg !15 + store i32 %call, ptr %rando, align 4, !dbg !9, !tbaa !10 + call void @llvm.lifetime.start.p0(i64 4, ptr %x) #4, !dbg !14 + store i32 0, ptr %x, align 4, !dbg !14, !tbaa !10 + %0 = load i32, ptr %rando, align 4, !dbg !15, !tbaa !10 + %rem = srem i32 %0, 200000, !dbg !15 %cmp = icmp eq i32 %rem, 0, !dbg !15 %lnot = xor i1 %cmp, true, !dbg !15 %lnot1 = xor i1 %lnot, true, !dbg !15 @@ -39,27 +37,25 @@ entry: br i1 %tobool, label %if.then, label %if.else, !dbg !15 if.then: ; preds = %entry - %3 = load i32, i32* %rando, align 4, !dbg !16, !tbaa !10 - %call2 = call i32 @baz(i32 %3), !dbg !16 - store i32 %call2, i32* %x, align 4, !dbg !16, !tbaa !10 + %1 = load i32, ptr %rando, align 4, !dbg !16, !tbaa !10 + %call2 = call i32 @baz(i32 %1), !dbg !16 + store i32 %call2, ptr %x, align 4, !dbg !16, !tbaa !10 br label %if.end, !dbg !17 if.else: ; preds = %entry %call3 = call i32 @foo(i32 50), !dbg !18 - store i32 %call3, i32* %x, align 4, !dbg !18, !tbaa !10 + store i32 %call3, ptr %x, align 4, !dbg !18, !tbaa !10 br label %if.end if.end: ; preds = %if.else, %if.then - %4 = load i32, i32* %x, align 4, !dbg !19, !tbaa !10 - %5 = bitcast i32* %x to i8*, !dbg !20 - call void @llvm.lifetime.end.p0i8(i64 4, i8* %5) #4, !dbg !20 - %6 = bitcast i32* %rando to i8*, !dbg !20 - call void @llvm.lifetime.end.p0i8(i64 4, i8* %6) #4, !dbg !20 - ret i32 %4, !dbg !19 + %2 = load i32, ptr %x, align 4, !dbg !19, !tbaa !10 + call void @llvm.lifetime.end.p0(i64 4, ptr %x) #4, !dbg !20 + call void @llvm.lifetime.end.p0(i64 4, ptr %rando) #4, !dbg !20 + ret i32 %2, !dbg !19 } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #1 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 declare i32 @buzz(...) #2 @@ -71,7 +67,7 @@ declare i32 @baz(i32) #2 declare i32 @foo(i32) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #1 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind willreturn } diff --git a/llvm/test/Transforms/PGOProfile/misexpect-branch-stripped.ll b/llvm/test/Transforms/PGOProfile/misexpect-branch-stripped.ll index 63f3bd7183f70a..18677b720f36b0 100644 --- a/llvm/test/Transforms/PGOProfile/misexpect-branch-stripped.ll +++ b/llvm/test/Transforms/PGOProfile/misexpect-branch-stripped.ll @@ -33,15 +33,13 @@ define i32 @bar() #0 { entry: %rando = alloca i32, align 4 %x = alloca i32, align 4 - %0 = bitcast i32* %rando to i8* - call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #4 + call void @llvm.lifetime.start.p0(i64 4, ptr %rando) #4 %call = call i32 (...) @buzz() - store i32 %call, i32* %rando, align 4, !tbaa !3 - %1 = bitcast i32* %x to i8* - call void @llvm.lifetime.start.p0i8(i64 4, i8* %1) #4 - store i32 0, i32* %x, align 4, !tbaa !3 - %2 = load i32, i32* %rando, align 4, !tbaa !3 - %rem = srem i32 %2, 200000 + store i32 %call, ptr %rando, align 4, !tbaa !3 + call void @llvm.lifetime.start.p0(i64 4, ptr %x) #4 + store i32 0, ptr %x, align 4, !tbaa !3 + %0 = load i32, ptr %rando, align 4, !tbaa !3 + %rem = srem i32 %0, 200000 %cmp = icmp eq i32 %rem, 0 %lnot = xor i1 %cmp, true %lnot1 = xor i1 %lnot, true @@ -52,27 +50,25 @@ entry: br i1 %tobool, label %if.then, label %if.else if.then: ; preds = %entry - %3 = load i32, i32* %rando, align 4, !tbaa !3 - %call2 = call i32 @baz(i32 %3) - store i32 %call2, i32* %x, align 4, !tbaa !3 + %1 = load i32, ptr %rando, align 4, !tbaa !3 + %call2 = call i32 @baz(i32 %1) + store i32 %call2, ptr %x, align 4, !tbaa !3 br label %if.end if.else: ; preds = %entry %call3 = call i32 @foo(i32 50) - store i32 %call3, i32* %x, align 4, !tbaa !3 + store i32 %call3, ptr %x, align 4, !tbaa !3 br label %if.end if.end: ; preds = %if.else, %if.then - %4 = load i32, i32* %x, align 4, !tbaa !3 - %5 = bitcast i32* %x to i8* - call void @llvm.lifetime.end.p0i8(i64 4, i8* %5) #4 - %6 = bitcast i32* %rando to i8* - call void @llvm.lifetime.end.p0i8(i64 4, i8* %6) #4 - ret i32 %4 + %2 = load i32, ptr %x, align 4, !tbaa !3 + call void @llvm.lifetime.end.p0(i64 4, ptr %x) #4 + call void @llvm.lifetime.end.p0(i64 4, ptr %rando) #4 + ret i32 %2 } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #1 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 declare i32 @buzz(...) #2 @@ -84,7 +80,7 @@ declare i32 @baz(i32) #2 declare i32 @foo(i32) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #1 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind willreturn } diff --git a/llvm/test/Transforms/PGOProfile/misexpect-branch-unpredictable.ll b/llvm/test/Transforms/PGOProfile/misexpect-branch-unpredictable.ll index 21905ce60b3a5e..1e7e8c1ab418ae 100644 --- a/llvm/test/Transforms/PGOProfile/misexpect-branch-unpredictable.ll +++ b/llvm/test/Transforms/PGOProfile/misexpect-branch-unpredictable.ll @@ -21,15 +21,13 @@ define i32 @bar() #0 { entry: %rando = alloca i32, align 4 %x = alloca i32, align 4 - %0 = bitcast i32* %rando to i8* - call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #3 + call void @llvm.lifetime.start.p0(i64 4, ptr %rando) #3 %call = call i32 (...) @buzz() - store i32 %call, i32* %rando, align 4, !tbaa !2 - %1 = bitcast i32* %x to i8* - call void @llvm.lifetime.start.p0i8(i64 4, i8* %1) #3 - store i32 0, i32* %x, align 4, !tbaa !2 - %2 = load i32, i32* %rando, align 4, !tbaa !2 - %rem = srem i32 %2, 200000 + store i32 %call, ptr %rando, align 4, !tbaa !2 + call void @llvm.lifetime.start.p0(i64 4, ptr %x) #3 + store i32 0, ptr %x, align 4, !tbaa !2 + %0 = load i32, ptr %rando, align 4, !tbaa !2 + %rem = srem i32 %0, 200000 %cmp = icmp eq i32 %rem, 0 %lnot = xor i1 %cmp, true %lnot1 = xor i1 %lnot, true @@ -39,27 +37,25 @@ entry: br i1 %tobool, label %if.then, label %if.else, !unpredictable !6 if.then: ; preds = %entry - %3 = load i32, i32* %rando, align 4, !tbaa !2 - %call2 = call i32 @baz(i32 %3) - store i32 %call2, i32* %x, align 4, !tbaa !2 + %1 = load i32, ptr %rando, align 4, !tbaa !2 + %call2 = call i32 @baz(i32 %1) + store i32 %call2, ptr %x, align 4, !tbaa !2 br label %if.end if.else: ; preds = %entry %call3 = call i32 @foo(i32 50) - store i32 %call3, i32* %x, align 4, !tbaa !2 + store i32 %call3, ptr %x, align 4, !tbaa !2 br label %if.end if.end: ; preds = %if.else, %if.then - %4 = load i32, i32* %x, align 4, !tbaa !2 - %5 = bitcast i32* %x to i8* - call void @llvm.lifetime.end.p0i8(i64 4, i8* %5) #3 - %6 = bitcast i32* %rando to i8* - call void @llvm.lifetime.end.p0i8(i64 4, i8* %6) #3 - ret i32 %4 + %2 = load i32, ptr %x, align 4, !tbaa !2 + call void @llvm.lifetime.end.p0(i64 4, ptr %x) #3 + call void @llvm.lifetime.end.p0(i64 4, ptr %rando) #3 + ret i32 %2 } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #1 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 declare i32 @buzz(...) #2 @@ -68,7 +64,7 @@ declare i32 @baz(i32) #2 declare i32 @foo(i32) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #1 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind willreturn } diff --git a/llvm/test/Transforms/PGOProfile/misexpect-branch.ll b/llvm/test/Transforms/PGOProfile/misexpect-branch.ll index 655785c0d6077b..10c37182d4c5cf 100644 --- a/llvm/test/Transforms/PGOProfile/misexpect-branch.ll +++ b/llvm/test/Transforms/PGOProfile/misexpect-branch.ll @@ -37,15 +37,13 @@ define i32 @bar() #0 !dbg !6 { entry: %rando = alloca i32, align 4 %x = alloca i32, align 4 - %0 = bitcast i32* %rando to i8*, !dbg !9 - call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #4, !dbg !9 + call void @llvm.lifetime.start.p0(i64 4, ptr %rando) #4, !dbg !9 %call = call i32 (...) @buzz(), !dbg !9 - store i32 %call, i32* %rando, align 4, !dbg !9, !tbaa !10 - %1 = bitcast i32* %x to i8*, !dbg !14 - call void @llvm.lifetime.start.p0i8(i64 4, i8* %1) #4, !dbg !14 - store i32 0, i32* %x, align 4, !dbg !14, !tbaa !10 - %2 = load i32, i32* %rando, align 4, !dbg !15, !tbaa !10 - %rem = srem i32 %2, 200000, !dbg !15 + store i32 %call, ptr %rando, align 4, !dbg !9, !tbaa !10 + call void @llvm.lifetime.start.p0(i64 4, ptr %x) #4, !dbg !14 + store i32 0, ptr %x, align 4, !dbg !14, !tbaa !10 + %0 = load i32, ptr %rando, align 4, !dbg !15, !tbaa !10 + %rem = srem i32 %0, 200000, !dbg !15 %cmp = icmp eq i32 %rem, 0, !dbg !15 %lnot = xor i1 %cmp, true, !dbg !15 %lnot1 = xor i1 %lnot, true, !dbg !15 @@ -56,27 +54,25 @@ entry: br i1 %tobool, label %if.then, label %if.else, !dbg !15 if.then: ; preds = %entry - %3 = load i32, i32* %rando, align 4, !dbg !16, !tbaa !10 - %call2 = call i32 @baz(i32 %3), !dbg !16 - store i32 %call2, i32* %x, align 4, !dbg !16, !tbaa !10 + %1 = load i32, ptr %rando, align 4, !dbg !16, !tbaa !10 + %call2 = call i32 @baz(i32 %1), !dbg !16 + store i32 %call2, ptr %x, align 4, !dbg !16, !tbaa !10 br label %if.end, !dbg !17 if.else: ; preds = %entry %call3 = call i32 @foo(i32 50), !dbg !18 - store i32 %call3, i32* %x, align 4, !dbg !18, !tbaa !10 + store i32 %call3, ptr %x, align 4, !dbg !18, !tbaa !10 br label %if.end if.end: ; preds = %if.else, %if.then - %4 = load i32, i32* %x, align 4, !dbg !19, !tbaa !10 - %5 = bitcast i32* %x to i8*, !dbg !20 - call void @llvm.lifetime.end.p0i8(i64 4, i8* %5) #4, !dbg !20 - %6 = bitcast i32* %rando to i8*, !dbg !20 - call void @llvm.lifetime.end.p0i8(i64 4, i8* %6) #4, !dbg !20 - ret i32 %4, !dbg !19 + %2 = load i32, ptr %x, align 4, !dbg !19, !tbaa !10 + call void @llvm.lifetime.end.p0(i64 4, ptr %x) #4, !dbg !20 + call void @llvm.lifetime.end.p0(i64 4, ptr %rando) #4, !dbg !20 + ret i32 %2, !dbg !19 } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #1 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 declare i32 @buzz(...) #2 @@ -88,7 +84,7 @@ declare i32 @baz(i32) #2 declare i32 @foo(i32) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #1 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind willreturn } diff --git a/llvm/test/Transforms/PGOProfile/misexpect-switch-default.ll b/llvm/test/Transforms/PGOProfile/misexpect-switch-default.ll index dc2c426f1b2cec..6e21c083b91aae 100644 --- a/llvm/test/Transforms/PGOProfile/misexpect-switch-default.ll +++ b/llvm/test/Transforms/PGOProfile/misexpect-switch-default.ll @@ -40,39 +40,37 @@ target triple = "x86_64-unknown-linux-gnu" define dso_local void @init_arry() #0 { entry: %i = alloca i32, align 4 - %0 = bitcast i32* %i to i8* - call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #6 - store i32 0, i32* %i, align 4, !tbaa !4 + call void @llvm.lifetime.start.p0(i64 4, ptr %i) #6 + store i32 0, ptr %i, align 4, !tbaa !4 br label %for.cond for.cond: ; preds = %for.inc, %entry - %1 = load i32, i32* %i, align 4, !tbaa !4 - %cmp = icmp slt i32 %1, 25 + %0 = load i32, ptr %i, align 4, !tbaa !4 + %cmp = icmp slt i32 %0, 25 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond %call = call i32 @rand() #6 %rem = srem i32 %call, 10 - %2 = load i32, i32* %i, align 4, !tbaa !4 - %idxprom = sext i32 %2 to i64 - %arrayidx = getelementptr inbounds [25 x i32], [25 x i32]* @arry, i64 0, i64 %idxprom - store i32 %rem, i32* %arrayidx, align 4, !tbaa !4 + %1 = load i32, ptr %i, align 4, !tbaa !4 + %idxprom = sext i32 %1 to i64 + %arrayidx = getelementptr inbounds [25 x i32], ptr @arry, i64 0, i64 %idxprom + store i32 %rem, ptr %arrayidx, align 4, !tbaa !4 br label %for.inc for.inc: ; preds = %for.body - %3 = load i32, i32* %i, align 4, !tbaa !4 - %inc = add nsw i32 %3, 1 - store i32 %inc, i32* %i, align 4, !tbaa !4 + %2 = load i32, ptr %i, align 4, !tbaa !4 + %inc = add nsw i32 %2, 1 + store i32 %inc, ptr %i, align 4, !tbaa !4 br label %for.cond for.end: ; preds = %for.cond - %4 = bitcast i32* %i to i8* - call void @llvm.lifetime.end.p0i8(i64 4, i8* %4) #6 + call void @llvm.lifetime.end.p0(i64 4, ptr %i) #6 ret void } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #1 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 ; Function Attrs: nounwind readnone speculatable willreturn declare void @llvm.dbg.declare(metadata, metadata, metadata) #2 @@ -81,7 +79,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #2 declare dso_local i32 @rand() #3 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #1 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 ; Function Attrs: nounwind uwtable define dso_local i32 @main() #0 { @@ -90,29 +88,26 @@ entry: %val = alloca i32, align 4 %j = alloca i32, align 4 %condition = alloca i32, align 4 - store i32 0, i32* %retval, align 4 + store i32 0, ptr %retval, align 4 call void @init_arry() - %0 = bitcast i32* %val to i8* - call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #6 - store i32 0, i32* %val, align 4, !tbaa !4 - %1 = bitcast i32* %j to i8* - call void @llvm.lifetime.start.p0i8(i64 4, i8* %1) #6 - store i32 0, i32* %j, align 4, !tbaa !4 + call void @llvm.lifetime.start.p0(i64 4, ptr %val) #6 + store i32 0, ptr %val, align 4, !tbaa !4 + call void @llvm.lifetime.start.p0(i64 4, ptr %j) #6 + store i32 0, ptr %j, align 4, !tbaa !4 br label %for.cond for.cond: ; preds = %for.inc, %entry - %2 = load i32, i32* %j, align 4, !tbaa !4 - %cmp = icmp slt i32 %2, 20000 + %0 = load i32, ptr %j, align 4, !tbaa !4 + %cmp = icmp slt i32 %0, 20000 br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond - %3 = bitcast i32* %condition to i8* - call void @llvm.lifetime.start.p0i8(i64 4, i8* %3) #6 + call void @llvm.lifetime.start.p0(i64 4, ptr %condition) #6 %call = call i32 @rand() #6 %rem = srem i32 %call, 5 - store i32 %rem, i32* %condition, align 4, !tbaa !4 - %4 = load i32, i32* %condition, align 4, !tbaa !4 - %conv = zext i32 %4 to i64 + store i32 %rem, ptr %condition, align 4, !tbaa !4 + %1 = load i32, ptr %condition, align 4, !tbaa !4 + %conv = zext i32 %1 to i64 %expval = call i64 @llvm.expect.i64(i64 %conv, i64 6) switch i64 %expval, label %sw.default [ i64 0, label %sw.bb @@ -123,50 +118,47 @@ for.body: ; preds = %for.cond ] sw.bb: ; preds = %for.body - %call1 = call i32 @sum(i32* getelementptr inbounds ([25 x i32], [25 x i32]* @arry, i64 0, i64 0), i32 25) - %5 = load i32, i32* %val, align 4, !tbaa !4 - %add = add nsw i32 %5, %call1 - store i32 %add, i32* %val, align 4, !tbaa !4 + %call1 = call i32 @sum(ptr @arry, i32 25) + %2 = load i32, ptr %val, align 4, !tbaa !4 + %add = add nsw i32 %2, %call1 + store i32 %add, ptr %val, align 4, !tbaa !4 br label %sw.epilog sw.bb2: ; preds = %for.body, %for.body, %for.body br label %sw.epilog sw.bb3: ; preds = %for.body - %call4 = call i32 @random_sample(i32* getelementptr inbounds ([25 x i32], [25 x i32]* @arry, i64 0, i64 0), i32 25) - %6 = load i32, i32* %val, align 4, !tbaa !4 - %add5 = add nsw i32 %6, %call4 - store i32 %add5, i32* %val, align 4, !tbaa !4 + %call4 = call i32 @random_sample(ptr @arry, i32 25) + %3 = load i32, ptr %val, align 4, !tbaa !4 + %add5 = add nsw i32 %3, %call4 + store i32 %add5, ptr %val, align 4, !tbaa !4 br label %sw.epilog sw.default: ; preds = %for.body unreachable sw.epilog: ; preds = %sw.bb3, %sw.bb2, %sw.bb - %7 = bitcast i32* %condition to i8* - call void @llvm.lifetime.end.p0i8(i64 4, i8* %7) #6 + call void @llvm.lifetime.end.p0(i64 4, ptr %condition) #6 br label %for.inc for.inc: ; preds = %sw.epilog - %8 = load i32, i32* %j, align 4, !tbaa !4 - %inc = add nsw i32 %8, 1 - store i32 %inc, i32* %j, align 4, !tbaa !4 + %4 = load i32, ptr %j, align 4, !tbaa !4 + %inc = add nsw i32 %4, 1 + store i32 %inc, ptr %j, align 4, !tbaa !4 br label %for.cond for.end: ; preds = %for.cond - %9 = bitcast i32* %j to i8* - call void @llvm.lifetime.end.p0i8(i64 4, i8* %9) #6 - %10 = bitcast i32* %val to i8* - call void @llvm.lifetime.end.p0i8(i64 4, i8* %10) #6 + call void @llvm.lifetime.end.p0(i64 4, ptr %j) #6 + call void @llvm.lifetime.end.p0(i64 4, ptr %val) #6 ret i32 0 } ; Function Attrs: nounwind readnone willreturn declare i64 @llvm.expect.i64(i64, i64) #4 -declare dso_local i32 @sum(i32*, i32) #5 +declare dso_local i32 @sum(ptr, i32) #5 -declare dso_local i32 @random_sample(i32*, i32) #5 +declare dso_local i32 @random_sample(ptr, i32) #5 attributes #0 = { nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind willreturn } diff --git a/llvm/test/Transforms/PGOProfile/misexpect-switch.ll b/llvm/test/Transforms/PGOProfile/misexpect-switch.ll index 3fa4c894ee0b33..ebecee178b820a 100644 --- a/llvm/test/Transforms/PGOProfile/misexpect-switch.ll +++ b/llvm/test/Transforms/PGOProfile/misexpect-switch.ll @@ -43,40 +43,38 @@ target triple = "x86_64-unknown-linux-gnu" define dso_local void @init_arry() #0 !dbg !21 { entry: %i = alloca i32, align 4 - %0 = bitcast i32* %i to i8*, !dbg !26 - call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #6, !dbg !26 - call void @llvm.dbg.declare(metadata i32* %i, metadata !25, metadata !DIExpression()), !dbg !27 - store i32 0, i32* %i, align 4, !dbg !28, !tbaa !30 + call void @llvm.lifetime.start.p0(i64 4, ptr %i) #6, !dbg !26 + call void @llvm.dbg.declare(metadata ptr %i, metadata !25, metadata !DIExpression()), !dbg !27 + store i32 0, ptr %i, align 4, !dbg !28, !tbaa !30 br label %for.cond, !dbg !34 for.cond: ; preds = %for.inc, %entry - %1 = load i32, i32* %i, align 4, !dbg !35, !tbaa !30 - %cmp = icmp slt i32 %1, 25, !dbg !37 + %0 = load i32, ptr %i, align 4, !dbg !35, !tbaa !30 + %cmp = icmp slt i32 %0, 25, !dbg !37 br i1 %cmp, label %for.body, label %for.end, !dbg !38 for.body: ; preds = %for.cond %call = call i32 @rand() #6, !dbg !39 %rem = srem i32 %call, 10, !dbg !41 - %2 = load i32, i32* %i, align 4, !dbg !42, !tbaa !30 - %idxprom = sext i32 %2 to i64, !dbg !43 - %arrayidx = getelementptr inbounds [25 x i32], [25 x i32]* @arry, i64 0, i64 %idxprom, !dbg !43 - store i32 %rem, i32* %arrayidx, align 4, !dbg !44, !tbaa !30 + %1 = load i32, ptr %i, align 4, !dbg !42, !tbaa !30 + %idxprom = sext i32 %1 to i64, !dbg !43 + %arrayidx = getelementptr inbounds [25 x i32], ptr @arry, i64 0, i64 %idxprom, !dbg !43 + store i32 %rem, ptr %arrayidx, align 4, !dbg !44, !tbaa !30 br label %for.inc, !dbg !45 for.inc: ; preds = %for.body - %3 = load i32, i32* %i, align 4, !dbg !46, !tbaa !30 - %inc = add nsw i32 %3, 1, !dbg !46 - store i32 %inc, i32* %i, align 4, !dbg !46, !tbaa !30 + %2 = load i32, ptr %i, align 4, !dbg !46, !tbaa !30 + %inc = add nsw i32 %2, 1, !dbg !46 + store i32 %inc, ptr %i, align 4, !dbg !46, !tbaa !30 br label %for.cond, !dbg !47, !llvm.loop !48 for.end: ; preds = %for.cond - %4 = bitcast i32* %i to i8*, !dbg !50 - call void @llvm.lifetime.end.p0i8(i64 4, i8* %4) #6, !dbg !50 + call void @llvm.lifetime.end.p0(i64 4, ptr %i) #6, !dbg !50 ret void, !dbg !50 } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #1 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 ; Function Attrs: nounwind readnone speculatable willreturn declare void @llvm.dbg.declare(metadata, metadata, metadata) #2 @@ -85,7 +83,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #2 declare dso_local i32 @rand() #3 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #1 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 ; Function Attrs: nounwind uwtable define dso_local i32 @main() #0 !dbg !51 { @@ -94,32 +92,29 @@ entry: %val = alloca i32, align 4 %j = alloca i32, align 4 %condition = alloca i32, align 4 - store i32 0, i32* %retval, align 4 + store i32 0, ptr %retval, align 4 call void @init_arry(), !dbg !62 - %0 = bitcast i32* %val to i8*, !dbg !63 - call void @llvm.lifetime.start.p0i8(i64 4, i8* %0) #6, !dbg !63 - call void @llvm.dbg.declare(metadata i32* %val, metadata !55, metadata !DIExpression()), !dbg !64 - store i32 0, i32* %val, align 4, !dbg !64, !tbaa !30 - %1 = bitcast i32* %j to i8*, !dbg !65 - call void @llvm.lifetime.start.p0i8(i64 4, i8* %1) #6, !dbg !65 - call void @llvm.dbg.declare(metadata i32* %j, metadata !56, metadata !DIExpression()), !dbg !66 - store i32 0, i32* %j, align 4, !dbg !67, !tbaa !30 + call void @llvm.lifetime.start.p0(i64 4, ptr %val) #6, !dbg !63 + call void @llvm.dbg.declare(metadata ptr %val, metadata !55, metadata !DIExpression()), !dbg !64 + store i32 0, ptr %val, align 4, !dbg !64, !tbaa !30 + call void @llvm.lifetime.start.p0(i64 4, ptr %j) #6, !dbg !65 + call void @llvm.dbg.declare(metadata ptr %j, metadata !56, metadata !DIExpression()), !dbg !66 + store i32 0, ptr %j, align 4, !dbg !67, !tbaa !30 br label %for.cond, !dbg !68 for.cond: ; preds = %for.inc, %entry - %2 = load i32, i32* %j, align 4, !dbg !69, !tbaa !30 - %cmp = icmp slt i32 %2, 20000, !dbg !70 + %0 = load i32, ptr %j, align 4, !dbg !69, !tbaa !30 + %cmp = icmp slt i32 %0, 20000, !dbg !70 br i1 %cmp, label %for.body, label %for.end, !dbg !71 for.body: ; preds = %for.cond - %3 = bitcast i32* %condition to i8*, !dbg !72 - call void @llvm.lifetime.start.p0i8(i64 4, i8* %3) #6, !dbg !72 - call void @llvm.dbg.declare(metadata i32* %condition, metadata !57, metadata !DIExpression()), !dbg !73 + call void @llvm.lifetime.start.p0(i64 4, ptr %condition) #6, !dbg !72 + call void @llvm.dbg.declare(metadata ptr %condition, metadata !57, metadata !DIExpression()), !dbg !73 %call = call i32 @rand() #6, !dbg !74 %rem = srem i32 %call, 5, !dbg !75 - store i32 %rem, i32* %condition, align 4, !dbg !73, !tbaa !30 - %4 = load i32, i32* %condition, align 4, !dbg !76, !tbaa !30 - %conv = zext i32 %4 to i64, !dbg !76 + store i32 %rem, ptr %condition, align 4, !dbg !73, !tbaa !30 + %1 = load i32, ptr %condition, align 4, !dbg !76, !tbaa !30 + %conv = zext i32 %1 to i64, !dbg !76 %expval = call i64 @llvm.expect.i64(i64 %conv, i64 0), !dbg !77 switch i64 %expval, label %sw.default [ i64 0, label %sw.bb @@ -130,50 +125,47 @@ for.body: ; preds = %for.cond ], !dbg !78 sw.bb: ; preds = %for.body - %call1 = call i32 @sum(i32* getelementptr inbounds ([25 x i32], [25 x i32]* @arry, i64 0, i64 0), i32 25), !dbg !79 - %5 = load i32, i32* %val, align 4, !dbg !81, !tbaa !30 - %add = add nsw i32 %5, %call1, !dbg !81 - store i32 %add, i32* %val, align 4, !dbg !81, !tbaa !30 + %call1 = call i32 @sum(ptr @arry, i32 25), !dbg !79 + %2 = load i32, ptr %val, align 4, !dbg !81, !tbaa !30 + %add = add nsw i32 %2, %call1, !dbg !81 + store i32 %add, ptr %val, align 4, !dbg !81, !tbaa !30 br label %sw.epilog, !dbg !82 sw.bb2: ; preds = %for.body, %for.body, %for.body br label %sw.epilog, !dbg !83 sw.bb3: ; preds = %for.body - %call4 = call i32 @random_sample(i32* getelementptr inbounds ([25 x i32], [25 x i32]* @arry, i64 0, i64 0), i32 25), !dbg !84 - %6 = load i32, i32* %val, align 4, !dbg !85, !tbaa !30 - %add5 = add nsw i32 %6, %call4, !dbg !85 - store i32 %add5, i32* %val, align 4, !dbg !85, !tbaa !30 + %call4 = call i32 @random_sample(ptr @arry, i32 25), !dbg !84 + %3 = load i32, ptr %val, align 4, !dbg !85, !tbaa !30 + %add5 = add nsw i32 %3, %call4, !dbg !85 + store i32 %add5, ptr %val, align 4, !dbg !85, !tbaa !30 br label %sw.epilog, !dbg !86 sw.default: ; preds = %for.body unreachable, !dbg !87 sw.epilog: ; preds = %sw.bb3, %sw.bb2, %sw.bb - %7 = bitcast i32* %condition to i8*, !dbg !88 - call void @llvm.lifetime.end.p0i8(i64 4, i8* %7) #6, !dbg !88 + call void @llvm.lifetime.end.p0(i64 4, ptr %condition) #6, !dbg !88 br label %for.inc, !dbg !89 for.inc: ; preds = %sw.epilog - %8 = load i32, i32* %j, align 4, !dbg !90, !tbaa !30 - %inc = add nsw i32 %8, 1, !dbg !90 - store i32 %inc, i32* %j, align 4, !dbg !90, !tbaa !30 + %4 = load i32, ptr %j, align 4, !dbg !90, !tbaa !30 + %inc = add nsw i32 %4, 1, !dbg !90 + store i32 %inc, ptr %j, align 4, !dbg !90, !tbaa !30 br label %for.cond, !dbg !91, !llvm.loop !92 for.end: ; preds = %for.cond - %9 = bitcast i32* %j to i8*, !dbg !94 - call void @llvm.lifetime.end.p0i8(i64 4, i8* %9) #6, !dbg !94 - %10 = bitcast i32* %val to i8*, !dbg !94 - call void @llvm.lifetime.end.p0i8(i64 4, i8* %10) #6, !dbg !94 + call void @llvm.lifetime.end.p0(i64 4, ptr %j) #6, !dbg !94 + call void @llvm.lifetime.end.p0(i64 4, ptr %val) #6, !dbg !94 ret i32 0, !dbg !95 } ; Function Attrs: nounwind readnone willreturn declare i64 @llvm.expect.i64(i64, i64) #4 -declare dso_local i32 @sum(i32*, i32) #5 +declare dso_local i32 @sum(ptr, i32) #5 -declare dso_local i32 @random_sample(i32*, i32) #5 +declare dso_local i32 @random_sample(ptr, i32) #5 attributes #0 = { nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind willreturn } diff --git a/llvm/test/Transforms/PGOProfile/multiple_hash_profile.ll b/llvm/test/Transforms/PGOProfile/multiple_hash_profile.ll index d2e28db0e2dc4d..6a7838080b1dc5 100644 --- a/llvm/test/Transforms/PGOProfile/multiple_hash_profile.ll +++ b/llvm/test/Transforms/PGOProfile/multiple_hash_profile.ll @@ -6,7 +6,7 @@ target triple = "x86_64-unknown-linux-gnu" $_Z3fooi = comdat any -@g2 = local_unnamed_addr global i32 (i32)* null, align 8 +@g2 = local_unnamed_addr global ptr null, align 8 define i32 @_Z3bari(i32 %i) { entry: @@ -18,7 +18,7 @@ entry: define void @_Z4m2f1v() { entry: - store i32 (i32)* @_Z3fooi, i32 (i32)** @g2, align 8 + store ptr @_Z3fooi, ptr @g2, align 8 ret void } diff --git a/llvm/test/Transforms/PGOProfile/noprofile.ll b/llvm/test/Transforms/PGOProfile/noprofile.ll index 151720d00d6dee..c8bdb673c19367 100644 --- a/llvm/test/Transforms/PGOProfile/noprofile.ll +++ b/llvm/test/Transforms/PGOProfile/noprofile.ll @@ -8,7 +8,7 @@ target triple = "x86_64-unknown-linux-gnu" define i32 @test1() { entry: ; CHECK: call void @llvm.instrprof.increment - %0 = load i32, i32* @i, align 4 + %0 = load i32, ptr @i, align 4 %add = add i32 %0, 1 ret i32 %add } @@ -16,7 +16,7 @@ entry: define i32 @test2() #0 { entry: ; CHECK-NOT: call void @llvm.instrprof.increment - %0 = load i32, i32* @i, align 4 + %0 = load i32, ptr @i, align 4 %sub = sub i32 %0, 1 ret i32 %sub } diff --git a/llvm/test/Transforms/PGOProfile/not_promote_ret_exit.ll b/llvm/test/Transforms/PGOProfile/not_promote_ret_exit.ll index 8481f067e7a143..83beba45f04d66 100644 --- a/llvm/test/Transforms/PGOProfile/not_promote_ret_exit.ll +++ b/llvm/test/Transforms/PGOProfile/not_promote_ret_exit.ll @@ -9,19 +9,19 @@ $__llvm_profile_raw_version = comdat any define dso_local void @foo(i32 %n) { entry: - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 29212902728, i32 2, i32 1) + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 29212902728, i32 2, i32 1) br label %for.cond for.cond: %i.0 = phi i32 [ 0, %entry ], [ %inc, %if.end ] %cmp = icmp slt i32 %i.0, %n - %0 = load i32, i32* @bar, align 4 + %0 = load i32, ptr @bar, align 4 %tobool.not = icmp eq i32 %0, 0 %or.cond = and i1 %cmp, %tobool.not br i1 %or.cond, label %if.end, label %cleanup if.end: - call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 29212902728, i32 2, i32 0) + call void @llvm.instrprof.increment(ptr @__profn_foo, i64 29212902728, i32 2, i32 0) call void (...) @bar2() %inc = add nuw nsw i32 %i.0, 1 br label %for.cond @@ -35,4 +35,4 @@ cleanup: declare dso_local void @bar2(...) -declare void @llvm.instrprof.increment(i8*, i64, i32, i32) +declare void @llvm.instrprof.increment(ptr, i64, i32, i32) diff --git a/llvm/test/Transforms/PGOProfile/ppc-prevent-mma-types.ll b/llvm/test/Transforms/PGOProfile/ppc-prevent-mma-types.ll index 4da06244b247eb..2cfeb2e8faf524 100644 --- a/llvm/test/Transforms/PGOProfile/ppc-prevent-mma-types.ll +++ b/llvm/test/Transforms/PGOProfile/ppc-prevent-mma-types.ll @@ -11,21 +11,21 @@ ; within the IR. %0 = type <{ double }> -%1 = type <{ [1 x %0]*, i8, i8, i8, i8, i32, i32, i32, [1 x i32], [1 x i32], [1 x i32], [24 x i8] }> -declare i8* @__malloc() +%1 = type <{ ptr, i8, i8, i8, i8, i32, i32, i32, [1 x i32], [1 x i32], [1 x i32], [24 x i8] }> +declare ptr @__malloc() ; CHECK-NOT: <256 x i1> ; CHECK-NOT: <512 x i1> -define dso_local void @test([0 x %0]* %arg, i32* %arg1, i32* %arg2, i32* %arg3, i32* %arg4) { - %i = alloca [0 x %0]*, align 4 - store [0 x %0]* %arg, [0 x %0]** %i, align 4 - %i7 = alloca i32*, align 4 - store i32* %arg1, i32** %i7, align 4 - %i9 = alloca i32*, align 4 - store i32* %arg2, i32** %i9, align 4 - %i10 = alloca i32*, align 4 - store i32* %arg3, i32** %i10, align 4 - %i11 = alloca i32*, align 4 - store i32* %arg4, i32** %i11, align 4 +define dso_local void @test(ptr %arg, ptr %arg1, ptr %arg2, ptr %arg3, ptr %arg4) { + %i = alloca ptr, align 4 + store ptr %arg, ptr %i, align 4 + %i7 = alloca ptr, align 4 + store ptr %arg1, ptr %i7, align 4 + %i9 = alloca ptr, align 4 + store ptr %arg2, ptr %i9, align 4 + %i10 = alloca ptr, align 4 + store ptr %arg3, ptr %i10, align 4 + %i11 = alloca ptr, align 4 + store ptr %arg4, ptr %i11, align 4 %i14 = alloca %1, align 4 %i15 = alloca i32, align 4 %i16 = alloca i32, align 4 @@ -36,169 +36,143 @@ define dso_local void @test([0 x %0]* %arg, i32* %arg1, i32* %arg2, i32* %arg3, %i22 = alloca i32, align 4 %i23 = alloca i32, align 4 %i25 = alloca double, align 8 - %i26 = load i32*, i32** %i9, align 4 - %i27 = load i32, i32* %i26, align 4 + %i26 = load ptr, ptr %i9, align 4 + %i27 = load i32, ptr %i26, align 4 %i28 = select i1 false, i32 0, i32 %i27 - store i32 %i28, i32* %i15, align 4 - %i29 = load i32*, i32** %i7, align 4 - %i30 = load i32, i32* %i29, align 4 + store i32 %i28, ptr %i15, align 4 + %i29 = load ptr, ptr %i7, align 4 + %i30 = load i32, ptr %i29, align 4 %i31 = select i1 false, i32 0, i32 %i30 - store i32 %i31, i32* %i16, align 4 - %i32 = load i32, i32* %i15, align 4 + store i32 %i31, ptr %i16, align 4 + %i32 = load i32, ptr %i15, align 4 %i33 = mul i32 8, %i32 - store i32 %i33, i32* %i17, align 4 - %i34 = load i32, i32* %i17, align 4 - %i35 = load i32, i32* %i16, align 4 + store i32 %i33, ptr %i17, align 4 + %i34 = load i32, ptr %i17, align 4 + %i35 = load i32, ptr %i16, align 4 %i36 = mul i32 %i34, %i35 - store i32 %i36, i32* %i18, align 4 - %i37 = load i32*, i32** %i9, align 4 - %i38 = load i32, i32* %i37, align 4 + store i32 %i36, ptr %i18, align 4 + %i37 = load ptr, ptr %i9, align 4 + %i38 = load i32, ptr %i37, align 4 %i39 = select i1 false, i32 0, i32 %i38 - store i32 %i39, i32* %i22, align 4 - %i40 = load i32*, i32** %i10, align 4 - %i41 = load i32, i32* %i40, align 4 + store i32 %i39, ptr %i22, align 4 + %i40 = load ptr, ptr %i10, align 4 + %i41 = load i32, ptr %i40, align 4 %i42 = select i1 false, i32 0, i32 %i41 - store i32 %i42, i32* %i23, align 4 - %i43 = getelementptr inbounds %1, %1* %i14, i32 0, i32 10 - %i44 = bitcast [1 x i32]* %i43 to i8* - %i45 = getelementptr i8, i8* %i44, i32 -12 - %i46 = getelementptr inbounds i8, i8* %i45, i32 12 - %i47 = bitcast i8* %i46 to i32* - %i48 = load i32, i32* %i23, align 4 + store i32 %i42, ptr %i23, align 4 + %i43 = getelementptr inbounds %1, ptr %i14, i32 0, i32 10 + %i45 = getelementptr i8, ptr %i43, i32 -12 + %i46 = getelementptr inbounds i8, ptr %i45, i32 12 + %i48 = load i32, ptr %i23, align 4 %i49 = select i1 false, i32 0, i32 %i48 - %i50 = load i32, i32* %i22, align 4 + %i50 = load i32, ptr %i22, align 4 %i51 = select i1 false, i32 0, i32 %i50 %i52 = mul i32 %i51, 8 %i53 = mul i32 %i49, %i52 - store i32 %i53, i32* %i47, align 4 - %i54 = getelementptr inbounds %1, %1* %i14, i32 0, i32 10 - %i55 = bitcast [1 x i32]* %i54 to i8* - %i56 = getelementptr i8, i8* %i55, i32 -12 - %i57 = getelementptr inbounds i8, i8* %i56, i32 36 - %i58 = bitcast i8* %i57 to i32* - store i32 8, i32* %i58, align 4 - %i60 = getelementptr inbounds %1, %1* %i14, i32 0, i32 0 - %i61 = call i8* @__malloc() - %i62 = bitcast [1 x %0]** %i60 to i8** - store i8* %i61, i8** %i62, align 4 + store i32 %i53, ptr %i46, align 4 + %i54 = getelementptr inbounds %1, ptr %i14, i32 0, i32 10 + %i56 = getelementptr i8, ptr %i54, i32 -12 + %i57 = getelementptr inbounds i8, ptr %i56, i32 36 + store i32 8, ptr %i57, align 4 + %i61 = call ptr @__malloc() + store ptr %i61, ptr %i14, align 4 br label %bb63 bb63: ; preds = %bb66, %bb - %i64 = load i32*, i32** %i11, align 4 - %i65 = load i32, i32* %i64, align 4 + %i64 = load ptr, ptr %i11, align 4 + %i65 = load i32, ptr %i64, align 4 br label %bb66 bb66: ; preds = %bb165, %bb63 - %i67 = load i32, i32* %i21, align 4 + %i67 = load i32, ptr %i21, align 4 %i68 = icmp sle i32 %i67, %i65 br i1 %i68, label %bb69, label %bb63 bb69: ; preds = %bb66 - store i32 1, i32* %i20, align 4 + store i32 1, ptr %i20, align 4 br label %bb70 bb70: ; preds = %bb163, %bb69 - %i71 = load i32, i32* %i20, align 4 + %i71 = load i32, ptr %i20, align 4 %i72 = icmp sle i32 %i71, 11 br i1 %i72, label %bb73, label %bb165 bb73: ; preds = %bb70 - %i74 = load i32, i32* %i21, align 4 + %i74 = load i32, ptr %i21, align 4 %i76 = mul i32 %i74, 8 - %i77 = getelementptr inbounds i8, i8* null, i32 %i76 - %i78 = bitcast i8* %i77 to double* - %i79 = load double, double* %i78, align 8 + %i77 = getelementptr inbounds i8, ptr null, i32 %i76 + %i79 = load double, ptr %i77, align 8 %i80 = fcmp fast olt double %i79, 0.000000e+00 %i81 = zext i1 %i80 to i32 %i82 = trunc i32 %i81 to i1 br i1 %i82, label %bb83, label %bb102 bb83: ; preds = %bb73 - %i84 = getelementptr inbounds %1, %1* %i14, i32 0, i32 0 - %i85 = load [1 x %0]*, [1 x %0]** %i84, align 4 - %i86 = bitcast [1 x %0]* %i85 to i8* - %i87 = getelementptr i8, i8* %i86, i32 0 - %i88 = load i32, i32* %i20, align 4 - %i89 = getelementptr inbounds %1, %1* %i14, i32 0, i32 10 - %i90 = getelementptr inbounds [1 x i32], [1 x i32]* %i89, i32 0, i32 0 - %i91 = load i32, i32* %i90, align 4 + %i85 = load ptr, ptr %i14, align 4 + %i88 = load i32, ptr %i20, align 4 + %i89 = getelementptr inbounds %1, ptr %i14, i32 0, i32 10 + %i91 = load i32, ptr %i89, align 4 %i92 = mul i32 %i88, %i91 - %i93 = getelementptr inbounds i8, i8* %i87, i32 %i92 - %i94 = getelementptr inbounds i8, i8* %i93, i32 0 - %i95 = load i32, i32* %i21, align 4 - %i96 = getelementptr inbounds %1, %1* %i14, i32 0, i32 10 - %i97 = getelementptr inbounds [1 x i32], [1 x i32]* %i96, i32 0, i32 6 - %i98 = load i32, i32* %i97, align 4 + %i93 = getelementptr inbounds i8, ptr %i85, i32 %i92 + %i95 = load i32, ptr %i21, align 4 + %i96 = getelementptr inbounds %1, ptr %i14, i32 0, i32 10 + %i97 = getelementptr inbounds [1 x i32], ptr %i96, i32 0, i32 6 + %i98 = load i32, ptr %i97, align 4 %i99 = mul i32 %i95, %i98 - %i100 = getelementptr inbounds i8, i8* %i94, i32 %i99 - %i101 = bitcast i8* %i100 to double* - store double 0.000000e+00, double* %i101, align 8 + %i100 = getelementptr inbounds i8, ptr %i93, i32 %i99 + store double 0.000000e+00, ptr %i100, align 8 br label %bb163 bb102: ; preds = %bb73 - %i103 = getelementptr i8, i8* null, i32 -8 - %i104 = getelementptr inbounds i8, i8* %i103, i32 undef - %i105 = bitcast i8* %i104 to double* - %i106 = load double, double* %i105, align 8 - %i107 = load [0 x %0]*, [0 x %0]** %i, align 4 - %i108 = bitcast [0 x %0]* %i107 to i8* - %i109 = getelementptr i8, i8* %i108, i32 -8 - %i110 = getelementptr inbounds i8, i8* %i109, i32 undef - %i111 = bitcast i8* %i110 to double* - %i112 = load double, double* %i111, align 8 + %i103 = getelementptr i8, ptr null, i32 -8 + %i104 = getelementptr inbounds i8, ptr %i103, i32 undef + %i106 = load double, ptr %i104, align 8 + %i107 = load ptr, ptr %i, align 4 + %i109 = getelementptr i8, ptr %i107, i32 -8 + %i110 = getelementptr inbounds i8, ptr %i109, i32 undef + %i112 = load double, ptr %i110, align 8 %i113 = fmul fast double %i106, %i112 %i114 = fcmp fast ogt double 0.000000e+00, %i113 %i115 = zext i1 %i114 to i32 %i116 = trunc i32 %i115 to i1 br i1 %i116, label %bb117, label %bb136 bb117: ; preds = %bb102 - %i118 = getelementptr inbounds %1, %1* %i14, i32 0, i32 0 - %i119 = load [1 x %0]*, [1 x %0]** %i118, align 4 - %i120 = bitcast [1 x %0]* %i119 to i8* - %i121 = getelementptr i8, i8* %i120, i32 0 - %i122 = load i32, i32* %i20, align 4 - %i123 = getelementptr inbounds %1, %1* %i14, i32 0, i32 10 - %i124 = getelementptr inbounds [1 x i32], [1 x i32]* %i123, i32 0, i32 0 - %i125 = load i32, i32* %i124, align 4 + %i119 = load ptr, ptr %i14, align 4 + %i122 = load i32, ptr %i20, align 4 + %i123 = getelementptr inbounds %1, ptr %i14, i32 0, i32 10 + %i125 = load i32, ptr %i123, align 4 %i126 = mul i32 %i122, %i125 - %i127 = getelementptr inbounds i8, i8* %i121, i32 %i126 - %i128 = getelementptr inbounds i8, i8* %i127, i32 0 - %i129 = load i32, i32* %i21, align 4 - %i130 = getelementptr inbounds %1, %1* %i14, i32 0, i32 10 - %i131 = getelementptr inbounds [1 x i32], [1 x i32]* %i130, i32 0, i32 6 - %i132 = load i32, i32* %i131, align 4 + %i127 = getelementptr inbounds i8, ptr %i119, i32 %i126 + %i129 = load i32, ptr %i21, align 4 + %i130 = getelementptr inbounds %1, ptr %i14, i32 0, i32 10 + %i131 = getelementptr inbounds [1 x i32], ptr %i130, i32 0, i32 6 + %i132 = load i32, ptr %i131, align 4 %i133 = mul i32 %i129, %i132 - %i134 = getelementptr inbounds i8, i8* %i128, i32 %i133 - %i135 = bitcast i8* %i134 to double* - store double 0.000000e+00, double* %i135, align 8 + %i134 = getelementptr inbounds i8, ptr %i127, i32 %i133 + store double 0.000000e+00, ptr %i134, align 8 br label %bb163 bb136: ; preds = %bb102 - %i137 = load double, double* null, align 8 - %i138 = load double, double* null, align 8 + %i137 = load double, ptr null, align 8 + %i138 = load double, ptr null, align 8 %i139 = fmul fast double %i137, %i138 %i140 = fsub fast double 0.000000e+00, %i139 - store double %i140, double* %i25, align 8 - %i141 = load i32, i32* %i21, align 4 - %i143 = getelementptr inbounds [1 x i32], [1 x i32]* null, i32 0, i32 6 - %i144 = load i32, i32* %i143, align 4 + store double %i140, ptr %i25, align 8 + %i141 = load i32, ptr %i21, align 4 + %i143 = getelementptr inbounds [1 x i32], ptr null, i32 0, i32 6 + %i144 = load i32, ptr %i143, align 4 %i145 = mul i32 %i141, %i144 - %i146 = getelementptr inbounds i8, i8* null, i32 %i145 - %i147 = bitcast i8* %i146 to double* - %i148 = load i32, i32* %i20, align 4 - %i149 = load i32, i32* %i18, align 4 + %i146 = getelementptr inbounds i8, ptr null, i32 %i145 + %i148 = load i32, ptr %i20, align 4 + %i149 = load i32, ptr %i18, align 4 %i151 = mul i32 %i148, %i149 - %i152 = getelementptr i8, i8* null, i32 %i151 - %i153 = getelementptr i8, i8* %i152, i32 0 - %i154 = getelementptr inbounds i8, i8* %i153, i32 0 - %i155 = bitcast i8* %i154 to double* - %i156 = load double, double* %i155, align 8 - %i157 = load double, double* %i25, align 8 + %i152 = getelementptr i8, ptr null, i32 %i151 + %i156 = load double, ptr %i152, align 8 + %i157 = load double, ptr %i25, align 8 %i158 = fmul fast double %i156, %i157 %i159 = fadd fast double 0.000000e+00, %i158 - %i160 = load double, double* %i25, align 8 + %i160 = load double, ptr %i25, align 8 %i161 = fadd fast double 0.000000e+00, %i160 %i162 = fdiv fast double %i159, %i161 - store double %i162, double* %i147, align 8 + store double %i162, ptr %i146, align 8 br label %bb163 bb163: ; preds = %bb136, %bb117, %bb83 %i164 = add nsw i32 %i71, 1 - store i32 %i164, i32* %i20, align 4 + store i32 %i164, ptr %i20, align 4 br label %bb70 bb165: ; preds = %bb70 %i166 = add nsw i32 %i67, 1 - store i32 %i166, i32* %i21, align 4 + store i32 %i166, ptr %i21, align 4 br label %bb66 } diff --git a/llvm/test/Transforms/PGOProfile/select_hash_conflict.ll b/llvm/test/Transforms/PGOProfile/select_hash_conflict.ll index 6505254568a533..755389b806a30c 100644 --- a/llvm/test/Transforms/PGOProfile/select_hash_conflict.ll +++ b/llvm/test/Transforms/PGOProfile/select_hash_conflict.ll @@ -24,70 +24,70 @@ target triple = "x86_64-unknown-linux-gnu" define i32 @foo(i32 %n) { entry: - %0 = load i8, i8* @c0, align 1 + %0 = load i8, ptr @c0, align 1 %tobool = icmp eq i8 %0, 0 %cond = select i1 %tobool, i32 2, i32 1 - store i32 %cond, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 0), align 16 - %1 = load i8, i8* @c1, align 1 + store i32 %cond, ptr @a, align 16 + %1 = load i8, ptr @c1, align 1 %tobool2 = icmp eq i8 %1, 0 %cond3 = select i1 %tobool2, i32 2, i32 1 - store i32 %cond3, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 1), align 4 - %2 = load i8, i8* @c2, align 1 + store i32 %cond3, ptr getelementptr inbounds ([16 x i32], ptr @a, i64 0, i64 1), align 4 + %2 = load i8, ptr @c2, align 1 %tobool5 = icmp eq i8 %2, 0 %cond6 = select i1 %tobool5, i32 2, i32 1 - store i32 %cond6, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 2), align 8 - %3 = load i8, i8* @c3, align 1 + store i32 %cond6, ptr getelementptr inbounds ([16 x i32], ptr @a, i64 0, i64 2), align 8 + %3 = load i8, ptr @c3, align 1 %tobool8 = icmp eq i8 %3, 0 %cond9 = select i1 %tobool8, i32 2, i32 1 - store i32 %cond9, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 3), align 4 - %4 = load i8, i8* @c4, align 1 + store i32 %cond9, ptr getelementptr inbounds ([16 x i32], ptr @a, i64 0, i64 3), align 4 + %4 = load i8, ptr @c4, align 1 %tobool11 = icmp eq i8 %4, 0 %cond12 = select i1 %tobool11, i32 2, i32 1 - store i32 %cond12, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 4), align 16 - %5 = load i8, i8* @c5, align 1 + store i32 %cond12, ptr getelementptr inbounds ([16 x i32], ptr @a, i64 0, i64 4), align 16 + %5 = load i8, ptr @c5, align 1 %tobool14 = icmp eq i8 %5, 0 %cond15 = select i1 %tobool14, i32 2, i32 1 - store i32 %cond15, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 5), align 4 - %6 = load i8, i8* @c6, align 1 + store i32 %cond15, ptr getelementptr inbounds ([16 x i32], ptr @a, i64 0, i64 5), align 4 + %6 = load i8, ptr @c6, align 1 %tobool17 = icmp eq i8 %6, 0 %cond18 = select i1 %tobool17, i32 2, i32 1 - store i32 %cond18, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 6), align 8 - %7 = load i8, i8* @c7, align 1 + store i32 %cond18, ptr getelementptr inbounds ([16 x i32], ptr @a, i64 0, i64 6), align 8 + %7 = load i8, ptr @c7, align 1 %tobool20 = icmp eq i8 %7, 0 %cond21 = select i1 %tobool20, i32 2, i32 1 - store i32 %cond21, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 7), align 4 - %8 = load i8, i8* @c8, align 1 + store i32 %cond21, ptr getelementptr inbounds ([16 x i32], ptr @a, i64 0, i64 7), align 4 + %8 = load i8, ptr @c8, align 1 %tobool23 = icmp eq i8 %8, 0 %cond24 = select i1 %tobool23, i32 2, i32 1 - store i32 %cond24, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 8), align 16 - %9 = load i8, i8* @c9, align 1 + store i32 %cond24, ptr getelementptr inbounds ([16 x i32], ptr @a, i64 0, i64 8), align 16 + %9 = load i8, ptr @c9, align 1 %tobool26 = icmp eq i8 %9, 0 %cond27 = select i1 %tobool26, i32 2, i32 1 - store i32 %cond27, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 9), align 4 - %10 = load i8, i8* @c10, align 1 + store i32 %cond27, ptr getelementptr inbounds ([16 x i32], ptr @a, i64 0, i64 9), align 4 + %10 = load i8, ptr @c10, align 1 %tobool29 = icmp eq i8 %10, 0 %cond30 = select i1 %tobool29, i32 2, i32 1 - store i32 %cond30, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 10), align 8 - %11 = load i8, i8* @c11, align 1 + store i32 %cond30, ptr getelementptr inbounds ([16 x i32], ptr @a, i64 0, i64 10), align 8 + %11 = load i8, ptr @c11, align 1 %tobool32 = icmp eq i8 %11, 0 %cond33 = select i1 %tobool32, i32 2, i32 1 - store i32 %cond33, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 11), align 4 - %12 = load i8, i8* @c12, align 1 + store i32 %cond33, ptr getelementptr inbounds ([16 x i32], ptr @a, i64 0, i64 11), align 4 + %12 = load i8, ptr @c12, align 1 %tobool35 = icmp eq i8 %12, 0 %cond36 = select i1 %tobool35, i32 2, i32 1 - store i32 %cond36, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 12), align 16 - %13 = load i8, i8* @c13, align 1 + store i32 %cond36, ptr getelementptr inbounds ([16 x i32], ptr @a, i64 0, i64 12), align 16 + %13 = load i8, ptr @c13, align 1 %tobool38 = icmp eq i8 %13, 0 %cond39 = select i1 %tobool38, i32 2, i32 1 - store i32 %cond39, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 13), align 4 - %14 = load i8, i8* @c14, align 1 + store i32 %cond39, ptr getelementptr inbounds ([16 x i32], ptr @a, i64 0, i64 13), align 4 + %14 = load i8, ptr @c14, align 1 %tobool41 = icmp eq i8 %14, 0 %cond42 = select i1 %tobool41, i32 2, i32 1 - store i32 %cond42, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 14), align 8 - %15 = load i8, i8* @c15, align 1 + store i32 %cond42, ptr getelementptr inbounds ([16 x i32], ptr @a, i64 0, i64 14), align 8 + %15 = load i8, ptr @c15, align 1 %tobool44 = icmp eq i8 %15, 0 %cond45 = select i1 %tobool44, i32 2, i32 1 - store i32 %cond45, i32* getelementptr inbounds ([16 x i32], [16 x i32]* @a, i64 0, i64 15), align 4 + store i32 %cond45, ptr getelementptr inbounds ([16 x i32], ptr @a, i64 0, i64 15), align 4 ret i32 %n } ; CHECK-LABEL: define i32 @foo(i32 %n) diff --git a/llvm/test/Transforms/PGOProfile/split-indirectbr-critical-edges.ll b/llvm/test/Transforms/PGOProfile/split-indirectbr-critical-edges.ll index 0b29013b267f0f..8b92f8ccb51fb3 100644 --- a/llvm/test/Transforms/PGOProfile/split-indirectbr-critical-edges.ll +++ b/llvm/test/Transforms/PGOProfile/split-indirectbr-critical-edges.ll @@ -8,18 +8,18 @@ entry: } ; Function Attrs: norecurse nounwind readonly uwtable -define i32 @foo(i8* nocapture readonly %p) #1 { +define i32 @foo(ptr nocapture readonly %p) #1 { entry: - %targets = alloca [256 x i8*], align 16 - %arrayidx1 = getelementptr inbounds [256 x i8*], [256 x i8*]* %targets, i64 0, i64 93 - store i8* blockaddress(@foo, %if.end), i8** %arrayidx1, align 8 + %targets = alloca [256 x ptr], align 16 + %arrayidx1 = getelementptr inbounds [256 x ptr], ptr %targets, i64 0, i64 93 + store ptr blockaddress(@foo, %if.end), ptr %arrayidx1, align 8 br label %for.cond2 for.cond2: ; preds = %if.end, %for.cond2, %entry ; CHECK: for.cond2: ; preds = %.split1 - %p.addr.0 = phi i8* [ %p, %entry ], [ %incdec.ptr5, %if.end ], [ %incdec.ptr, %for.cond2 ] - %incdec.ptr = getelementptr inbounds i8, i8* %p.addr.0, i64 1 - %0 = load i8, i8* %p.addr.0, align 1 + %p.addr.0 = phi ptr [ %p, %entry ], [ %incdec.ptr5, %if.end ], [ %incdec.ptr, %for.cond2 ] + %incdec.ptr = getelementptr inbounds i8, ptr %p.addr.0, i64 1 + %0 = load i8, ptr %p.addr.0, align 1 %cond = icmp eq i8 %0, 93 br i1 %cond, label %if.end.preheader, label %for.cond2 @@ -28,14 +28,14 @@ if.end.preheader: ; preds = %for.cond2 if.end: ; preds = %if.end.preheader, %if.end ; CHECK: if.end: ; preds = %.split1 - %p.addr.1 = phi i8* [ %incdec.ptr5, %if.end ], [ %incdec.ptr, %if.end.preheader ] - %incdec.ptr5 = getelementptr inbounds i8, i8* %p.addr.1, i64 1 - %1 = load i8, i8* %p.addr.1, align 1 + %p.addr.1 = phi ptr [ %incdec.ptr5, %if.end ], [ %incdec.ptr, %if.end.preheader ] + %incdec.ptr5 = getelementptr inbounds i8, ptr %p.addr.1, i64 1 + %1 = load i8, ptr %p.addr.1, align 1 %idxprom6 = zext i8 %1 to i64 - %arrayidx7 = getelementptr inbounds [256 x i8*], [256 x i8*]* %targets, i64 0, i64 %idxprom6 - %2 = load i8*, i8** %arrayidx7, align 8 - indirectbr i8* %2, [label %for.cond2, label %if.end] -; CHECK: indirectbr i8* %2, [label %for.cond2, label %if.end] + %arrayidx7 = getelementptr inbounds [256 x ptr], ptr %targets, i64 0, i64 %idxprom6 + %2 = load ptr, ptr %arrayidx7, align 8 + indirectbr ptr %2, [label %for.cond2, label %if.end] +; CHECK: indirectbr ptr %2, [label %for.cond2, label %if.end] } ;; If an indirectbr critical edge cannot be split, ignore it. @@ -47,24 +47,24 @@ if.end: ; preds = %if.end.preheader, % ; CHECK-NOT: call void @llvm.instrprof.increment ; CHECK: indirect2: ; CHECK-NEXT: call void @llvm.instrprof.increment -define i32 @cannot_split(i8* nocapture readonly %p) { +define i32 @cannot_split(ptr nocapture readonly %p) { entry: - %targets = alloca <2 x i8*>, align 16 - store <2 x i8*> , <2 x i8*>* %targets, align 16 - %arrayidx2 = getelementptr inbounds i8, i8* %p, i64 1 - %0 = load i8, i8* %arrayidx2 + %targets = alloca <2 x ptr>, align 16 + store <2 x ptr> , ptr %targets, align 16 + %arrayidx2 = getelementptr inbounds i8, ptr %p, i64 1 + %0 = load i8, ptr %arrayidx2 %idxprom = sext i8 %0 to i64 - %arrayidx3 = getelementptr inbounds <2 x i8*>, <2 x i8*>* %targets, i64 0, i64 %idxprom - %1 = load i8*, i8** %arrayidx3, align 8 + %arrayidx3 = getelementptr inbounds <2 x ptr>, ptr %targets, i64 0, i64 %idxprom + %1 = load ptr, ptr %arrayidx3, align 8 br label %indirect indirect: ; preds = %entry, %indirect - indirectbr i8* %1, [label %indirect, label %end, label %indirect2] + indirectbr ptr %1, [label %indirect, label %end, label %indirect2] indirect2: ; For this test we do not want critical edges split. Adding a 2nd `indirectbr` ; does the trick. - indirectbr i8* %1, [label %indirect, label %end] + indirectbr ptr %1, [label %indirect, label %end] end: ; preds = %indirect ret i32 0 diff --git a/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp.ll b/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp.ll index 80f792c0634b59..52c545fb983866 100644 --- a/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp.ll +++ b/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp.ll @@ -12,12 +12,12 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@fptr = local_unnamed_addr global void ()* null, align 8 +@fptr = local_unnamed_addr global ptr null, align 8 ; Function Attrs: norecurse uwtable define i32 @main() local_unnamed_addr #0 !prof !34 { entry: - %0 = load void ()*, void ()** @fptr, align 8 + %0 = load ptr, ptr @fptr, align 8 ; ICALL-PROM: br i1 %{{[0-9]+}}, label %if.true.direct_targ, label %if.false.orig_indirect tail call void %0(), !prof !40 ret i32 0 diff --git a/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp3.ll b/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp3.ll index eb457973be0ca3..f509ab907b7fc7 100644 --- a/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp3.ll +++ b/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp3.ll @@ -19,12 +19,12 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@fptr = local_unnamed_addr global void ()* null, align 8 +@fptr = local_unnamed_addr global ptr null, align 8 ; Function Attrs: norecurse uwtable define i32 @main() local_unnamed_addr #0 !prof !34 { entry: - %0 = load void ()*, void ()** @fptr, align 8 + %0 = load ptr, ptr @fptr, align 8 tail call void %0(), !prof !40 ret i32 0 } diff --git a/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp_droppeddead.ll b/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp_droppeddead.ll index df93826a7b7cec..fcaf8da0857bf7 100644 --- a/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp_droppeddead.ll +++ b/llvm/test/Transforms/PGOProfile/thinlto_samplepgo_icp_droppeddead.ll @@ -15,7 +15,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -@fptr = local_unnamed_addr global void ()* null, align 8 +@fptr = local_unnamed_addr global ptr null, align 8 define void @_ZL3foov() #1 { entry: @@ -24,7 +24,7 @@ entry: define i32 @main() local_unnamed_addr #0 !prof !34 { entry: - %0 = load void ()*, void ()** @fptr, align 8 + %0 = load ptr, ptr @fptr, align 8 ; OPT-NOT: label %if.false.orig_indirect ; OPT-NODEAD: br i1 %{{[0-9]+}}, label %if.end.icp, label %if.false.orig_indirect tail call void %0(), !prof !40