Skip to content

Commit

Permalink
[test] Change test/SampleProfile to use opaque pointers
Browse files Browse the repository at this point in the history
  • Loading branch information
MaskRay committed Jul 18, 2022
1 parent 6f0f2f9 commit 0271ae6
Show file tree
Hide file tree
Showing 70 changed files with 853 additions and 862 deletions.
Expand Up @@ -83,12 +83,12 @@ while.body: ; preds = %while.body, %entry
br i1 %exitcond.4, label %while.end, label %while.body, !dbg !27, !llvm.loop !28

while.end: ; preds = %while.body
%call2 = tail call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i32 %spec.select.4), !dbg !31
%call2 = tail call i32 (ptr, ...) @printf(ptr @.str, i32 %spec.select.4), !dbg !31
ret i32 0, !dbg !32
}

; Function Attrs: nofree nounwind
declare dso_local i32 @printf(i8* nocapture readonly, ...) local_unnamed_addr #3
declare dso_local i32 @printf(ptr nocapture readonly, ...) local_unnamed_addr #3

attributes #0 = { noinline norecurse nounwind readnone 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" "use-sample-profile" }
attributes #1 = { norecurse nounwind readnone 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" "use-sample-profile" }
Expand Down
104 changes: 52 additions & 52 deletions llvm/test/Transforms/SampleProfile/branch.ll
Expand Up @@ -29,63 +29,63 @@
@.str = private unnamed_addr constant [15 x i8] c"result is %lf\0A\00", align 1

; Function Attrs: uwtable
define i32 @main(i32 %argc, i8** %argv) #0 !dbg !6 {
define i32 @main(i32 %argc, ptr %argv) #0 !dbg !6 {
; CHECK: Printing analysis {{.*}} for function 'main':

entry:
%retval = alloca i32, align 4
%argc.addr = alloca i32, align 4
%argv.addr = alloca i8**, align 8
%argv.addr = alloca ptr, align 8
%result = alloca double, align 8
%limit = alloca i32, align 4
%s = alloca double, align 8
%u = alloca i32, align 4
%x = alloca double, align 8
store i32 0, i32* %retval, align 4
store i32 %argc, i32* %argc.addr, align 4
call void @llvm.dbg.declare(metadata i32* %argc.addr, metadata !16, metadata !17), !dbg !18
store i8** %argv, i8*** %argv.addr, align 8
call void @llvm.dbg.declare(metadata i8*** %argv.addr, metadata !19, metadata !17), !dbg !20
%0 = load i32, i32* %argc.addr, align 4, !dbg !21
store i32 0, ptr %retval, align 4
store i32 %argc, ptr %argc.addr, align 4
call void @llvm.dbg.declare(metadata ptr %argc.addr, metadata !16, metadata !17), !dbg !18
store ptr %argv, ptr %argv.addr, align 8
call void @llvm.dbg.declare(metadata ptr %argv.addr, metadata !19, metadata !17), !dbg !20
%0 = load i32, ptr %argc.addr, align 4, !dbg !21
%cmp = icmp slt i32 %0, 2, !dbg !23
br i1 %cmp, label %if.then, label %if.end, !dbg !24
; CHECK: edge entry -> if.then probability is 0x4ccf6b16 / 0x80000000 = 60.01%
; CHECK: edge entry -> if.end probability is 0x333094ea / 0x80000000 = 39.99%

if.then: ; preds = %entry
store i32 1, i32* %retval, align 4, !dbg !25
store i32 1, ptr %retval, align 4, !dbg !25
br label %return, !dbg !25

if.end: ; preds = %entry
call void @llvm.dbg.declare(metadata double* %result, metadata !26, metadata !17), !dbg !27
call void @llvm.dbg.declare(metadata i32* %limit, metadata !28, metadata !17), !dbg !29
%1 = load i8**, i8*** %argv.addr, align 8, !dbg !30
%arrayidx = getelementptr inbounds i8*, i8** %1, i64 1, !dbg !30
%2 = load i8*, i8** %arrayidx, align 8, !dbg !30
%call = call i32 @atoi(i8* %2) #4, !dbg !31
store i32 %call, i32* %limit, align 4, !dbg !29
%3 = load i32, i32* %limit, align 4, !dbg !32
call void @llvm.dbg.declare(metadata ptr %result, metadata !26, metadata !17), !dbg !27
call void @llvm.dbg.declare(metadata ptr %limit, metadata !28, metadata !17), !dbg !29
%1 = load ptr, ptr %argv.addr, align 8, !dbg !30
%arrayidx = getelementptr inbounds ptr, ptr %1, i64 1, !dbg !30
%2 = load ptr, ptr %arrayidx, align 8, !dbg !30
%call = call i32 @atoi(ptr %2) #4, !dbg !31
store i32 %call, ptr %limit, align 4, !dbg !29
%3 = load i32, ptr %limit, align 4, !dbg !32
%cmp1 = icmp sgt i32 %3, 100, !dbg !34
br i1 %cmp1, label %if.then.2, label %if.else, !dbg !35
; CHECK: edge if.end -> if.then.2 probability is 0x6652c748 / 0x80000000 = 79.94%
; CHECK: edge if.end -> if.else probability is 0x19ad38b8 / 0x80000000 = 20.06%

if.then.2: ; preds = %if.end
call void @llvm.dbg.declare(metadata double* %s, metadata !36, metadata !17), !dbg !38
%4 = load i8**, i8*** %argv.addr, align 8, !dbg !39
%arrayidx3 = getelementptr inbounds i8*, i8** %4, i64 2, !dbg !39
%5 = load i8*, i8** %arrayidx3, align 8, !dbg !39
%call4 = call i32 @atoi(i8* %5) #4, !dbg !40
call void @llvm.dbg.declare(metadata ptr %s, metadata !36, metadata !17), !dbg !38
%4 = load ptr, ptr %argv.addr, align 8, !dbg !39
%arrayidx3 = getelementptr inbounds ptr, ptr %4, i64 2, !dbg !39
%5 = load ptr, ptr %arrayidx3, align 8, !dbg !39
%call4 = call i32 @atoi(ptr %5) #4, !dbg !40
%conv = sitofp i32 %call4 to double, !dbg !40
%mul = fmul double 0x40370ABE6A337A81, %conv, !dbg !41
store double %mul, double* %s, align 8, !dbg !38
call void @llvm.dbg.declare(metadata i32* %u, metadata !42, metadata !17), !dbg !44
store i32 0, i32* %u, align 4, !dbg !44
store double %mul, ptr %s, align 8, !dbg !38
call void @llvm.dbg.declare(metadata ptr %u, metadata !42, metadata !17), !dbg !44
store i32 0, ptr %u, align 4, !dbg !44
br label %for.cond, !dbg !45

for.cond: ; preds = %for.inc, %if.then.2
%6 = load i32, i32* %u, align 4, !dbg !46
%7 = load i32, i32* %limit, align 4, !dbg !48
%6 = load i32, ptr %u, align 4, !dbg !46
%7 = load i32, ptr %limit, align 4, !dbg !48
%cmp5 = icmp slt i32 %6, %7, !dbg !49
br i1 %cmp5, label %for.body, label %for.end, !dbg !50, !prof !80
; CHECK: edge for.cond -> for.body probability is 0x73333333 / 0x80000000 = 90.00%
Expand All @@ -94,63 +94,63 @@ for.cond: ; preds = %for.inc, %if.then.2
; OVW: edge for.cond -> for.end probability is 0x094c0c42 / 0x80000000 = 7.26%

for.body: ; preds = %for.cond
call void @llvm.dbg.declare(metadata double* %x, metadata !51, metadata !17), !dbg !53
%8 = load double, double* %s, align 8, !dbg !54
store double %8, double* %x, align 8, !dbg !53
%9 = load double, double* %x, align 8, !dbg !55
call void @llvm.dbg.declare(metadata ptr %x, metadata !51, metadata !17), !dbg !53
%8 = load double, ptr %s, align 8, !dbg !54
store double %8, ptr %x, align 8, !dbg !53
%9 = load double, ptr %x, align 8, !dbg !55
%add = fadd double %9, 3.049000e+00, !dbg !56
%10 = load i32, i32* %u, align 4, !dbg !57
%10 = load i32, ptr %u, align 4, !dbg !57
%conv6 = sitofp i32 %10 to double, !dbg !57
%add7 = fadd double %add, %conv6, !dbg !58
store double %add7, double* %s, align 8, !dbg !59
%11 = load double, double* %s, align 8, !dbg !60
%12 = load double, double* %x, align 8, !dbg !61
store double %add7, ptr %s, align 8, !dbg !59
%11 = load double, ptr %s, align 8, !dbg !60
%12 = load double, ptr %x, align 8, !dbg !61
%div = fdiv double 3.940000e+00, %12, !dbg !62
%mul8 = fmul double %div, 3.200000e-01, !dbg !63
%add9 = fadd double %11, %mul8, !dbg !64
%13 = load double, double* %s, align 8, !dbg !65
%13 = load double, ptr %s, align 8, !dbg !65
%sub = fsub double %13, %add9, !dbg !65
store double %sub, double* %s, align 8, !dbg !65
store double %sub, ptr %s, align 8, !dbg !65
br label %for.inc, !dbg !66

for.inc: ; preds = %for.body
%14 = load i32, i32* %u, align 4, !dbg !67
%14 = load i32, ptr %u, align 4, !dbg !67
%inc = add nsw i32 %14, 1, !dbg !67
store i32 %inc, i32* %u, align 4, !dbg !67
store i32 %inc, ptr %u, align 4, !dbg !67
br label %for.cond, !dbg !68

for.end: ; preds = %for.cond
%15 = load double, double* %s, align 8, !dbg !69
store double %15, double* %result, align 8, !dbg !70
%15 = load double, ptr %s, align 8, !dbg !69
store double %15, ptr %result, align 8, !dbg !70
br label %if.end.13, !dbg !71

if.else: ; preds = %if.end
%16 = load i8**, i8*** %argv.addr, align 8, !dbg !72
%arrayidx10 = getelementptr inbounds i8*, i8** %16, i64 2, !dbg !72
%17 = load i8*, i8** %arrayidx10, align 8, !dbg !72
%call11 = call i32 @atoi(i8* %17) #4, !dbg !74
%16 = load ptr, ptr %argv.addr, align 8, !dbg !72
%arrayidx10 = getelementptr inbounds ptr, ptr %16, i64 2, !dbg !72
%17 = load ptr, ptr %arrayidx10, align 8, !dbg !72
%call11 = call i32 @atoi(ptr %17) #4, !dbg !74
%conv12 = sitofp i32 %call11 to double, !dbg !74
store double %conv12, double* %result, align 8, !dbg !75
store double %conv12, ptr %result, align 8, !dbg !75
br label %if.end.13

if.end.13: ; preds = %if.else, %for.end
%18 = load double, double* %result, align 8, !dbg !76
%call14 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i32 0, i32 0), double %18), !dbg !77
store i32 0, i32* %retval, align 4, !dbg !78
%18 = load double, ptr %result, align 8, !dbg !76
%call14 = call i32 (ptr, ...) @printf(ptr @.str, double %18), !dbg !77
store i32 0, ptr %retval, align 4, !dbg !78
br label %return, !dbg !78

return: ; preds = %if.end.13, %if.then
%19 = load i32, i32* %retval, align 4, !dbg !79
%19 = load i32, ptr %retval, align 4, !dbg !79
ret i32 %19, !dbg !79
}

; Function Attrs: nounwind readnone
declare void @llvm.dbg.declare(metadata, metadata, metadata) #1

; Function Attrs: nounwind readonly
declare i32 @atoi(i8*) #2
declare i32 @atoi(ptr) #2

declare i32 @printf(i8*, ...) #3
declare i32 @printf(ptr, ...) #3

attributes #0 = { uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" "use-sample-profile" }
attributes #1 = { nounwind readnone }
Expand Down
32 changes: 16 additions & 16 deletions llvm/test/Transforms/SampleProfile/calls.ll
Expand Up @@ -23,10 +23,10 @@ define i32 @_Z3sumii(i32 %x, i32 %y) #0 !dbg !4 {
entry:
%x.addr = alloca i32, align 4
%y.addr = alloca i32, align 4
store i32 %x, i32* %x.addr, align 4
store i32 %y, i32* %y.addr, align 4
%0 = load i32, i32* %x.addr, align 4, !dbg !11
%1 = load i32, i32* %y.addr, align 4, !dbg !11
store i32 %x, ptr %x.addr, align 4
store i32 %y, ptr %y.addr, align 4
%0 = load i32, ptr %x.addr, align 4, !dbg !11
%1 = load i32, ptr %y.addr, align 4, !dbg !11
%add = add nsw i32 %0, %1, !dbg !11
ret i32 %add, !dbg !11
}
Expand All @@ -37,21 +37,21 @@ entry:
%retval = alloca i32, align 4
%s = alloca i32, align 4
%i = alloca i32, align 4
store i32 0, i32* %retval
store i32 0, i32* %i, align 4, !dbg !12
store i32 0, ptr %retval
store i32 0, ptr %i, align 4, !dbg !12
br label %while.cond, !dbg !13

while.cond: ; preds = %if.end, %entry
%0 = load i32, i32* %i, align 4, !dbg !14
%0 = load i32, ptr %i, align 4, !dbg !14
%inc = add nsw i32 %0, 1, !dbg !14
store i32 %inc, i32* %i, align 4, !dbg !14
store i32 %inc, ptr %i, align 4, !dbg !14
%cmp = icmp slt i32 %0, 400000000, !dbg !14
br i1 %cmp, label %while.body, label %while.end, !dbg !14
; CHECK: edge while.cond -> while.body probability is 0x77f2798d / 0x80000000 = 93.71% [HOT edge]
; CHECK: edge while.cond -> while.end probability is 0x080d8673 / 0x80000000 = 6.29%

while.body: ; preds = %while.cond
%1 = load i32, i32* %i, align 4, !dbg !16
%1 = load i32, ptr %i, align 4, !dbg !16
%cmp1 = icmp ne i32 %1, 100, !dbg !16
br i1 %cmp1, label %if.then, label %if.else, !dbg !16
; Without discriminator information, the profiler used to think that
Expand All @@ -63,26 +63,26 @@ while.body: ; preds = %while.cond


if.then: ; preds = %while.body
%2 = load i32, i32* %i, align 4, !dbg !18
%3 = load i32, i32* %s, align 4, !dbg !18
%2 = load i32, ptr %i, align 4, !dbg !18
%3 = load i32, ptr %s, align 4, !dbg !18
%call = call i32 @_Z3sumii(i32 %2, i32 %3), !dbg !18
store i32 %call, i32* %s, align 4, !dbg !18
store i32 %call, ptr %s, align 4, !dbg !18
br label %if.end, !dbg !18

if.else: ; preds = %while.body
store i32 30, i32* %s, align 4, !dbg !20
store i32 30, ptr %s, align 4, !dbg !20
br label %if.end

if.end: ; preds = %if.else, %if.then
br label %while.cond, !dbg !22

while.end: ; preds = %while.cond
%4 = load i32, i32* %s, align 4, !dbg !24
%call2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i32 %4), !dbg !24
%4 = load i32, ptr %s, align 4, !dbg !24
%call2 = call i32 (ptr, ...) @printf(ptr @.str, i32 %4), !dbg !24
ret i32 0, !dbg !25
}

declare i32 @printf(i8*, ...) #2
declare i32 @printf(ptr, ...) #2

attributes #0 = {"use-sample-profile"}

Expand Down
2 changes: 1 addition & 1 deletion llvm/test/Transforms/SampleProfile/cold-indirect-call.ll
@@ -1,6 +1,6 @@
; RUN: opt < %s -passes=sample-profile -sample-profile-file=%S/Inputs/cold-indirect-call.prof -S | FileCheck %s

define i32 @foo(i32 ()* %func) #0 !dbg !3 {
define i32 @foo(ptr %func) #0 !dbg !3 {
; CHECK: icmp {{.*}} @bar
; CHECK-NOT: icmp {{.*}} @baz
%call = call i32 %func(), !dbg !4
Expand Down
40 changes: 20 additions & 20 deletions llvm/test/Transforms/SampleProfile/cov-zero-samples.ll
Expand Up @@ -31,58 +31,58 @@ entry:
%retval = alloca i32, align 4
%sum = alloca i32, align 4
%i = alloca i64, align 8
store i32 0, i32* %retval, align 4
call void @llvm.dbg.declare(metadata i32* %sum, metadata !20, metadata !21), !dbg !22
store i32 0, i32* %sum, align 4, !dbg !22
call void @llvm.dbg.declare(metadata i64* %i, metadata !23, metadata !21), !dbg !25
store i64 0, i64* %i, align 8, !dbg !25
store i32 0, ptr %retval, align 4
call void @llvm.dbg.declare(metadata ptr %sum, metadata !20, metadata !21), !dbg !22
store i32 0, ptr %sum, align 4, !dbg !22
call void @llvm.dbg.declare(metadata ptr %i, metadata !23, metadata !21), !dbg !25
store i64 0, ptr %i, align 8, !dbg !25
br label %for.cond, !dbg !26

for.cond: ; preds = %for.inc, %entry

%0 = load i64, i64* %i, align 8, !dbg !27
%1 = load volatile i64, i64* @N, align 8, !dbg !30
%0 = load i64, ptr %i, align 8, !dbg !27
%1 = load volatile i64, ptr @N, align 8, !dbg !30
%cmp = icmp slt i64 %0, %1, !dbg !31
br i1 %cmp, label %for.body, label %for.end, !dbg !32

for.body: ; preds = %for.cond
%2 = load i64, i64* %i, align 8, !dbg !33
%3 = load volatile i64, i64* @N, align 8, !dbg !36
%2 = load i64, ptr %i, align 8, !dbg !33
%3 = load volatile i64, ptr @N, align 8, !dbg !36
%cmp1 = icmp sgt i64 %2, %3, !dbg !37
br i1 %cmp1, label %if.then, label %if.end, !dbg !38

if.then: ; preds = %for.body
%4 = load i64, i64* %i, align 8, !dbg !39
%4 = load i64, ptr %i, align 8, !dbg !39
%conv = trunc i64 %4 to i32, !dbg !39
%call = call i32 @_Z12never_calledi(i32 %conv), !dbg !41
%5 = load i32, i32* %sum, align 4, !dbg !42
%5 = load i32, ptr %sum, align 4, !dbg !42
%add = add nsw i32 %5, %call, !dbg !42
store i32 %add, i32* %sum, align 4, !dbg !42
store i32 %add, ptr %sum, align 4, !dbg !42
br label %if.end, !dbg !43

if.end: ; preds = %if.then, %for.body
%6 = load i64, i64* %i, align 8, !dbg !44
%6 = load i64, ptr %i, align 8, !dbg !44
%div = sdiv i64 %6, 239, !dbg !45
%7 = load i32, i32* %sum, align 4, !dbg !46
%7 = load i32, ptr %sum, align 4, !dbg !46
%conv2 = sext i32 %7 to i64, !dbg !46
%mul = mul nsw i64 %conv2, %div, !dbg !46
%conv3 = trunc i64 %mul to i32, !dbg !46
store i32 %conv3, i32* %sum, align 4, !dbg !46
store i32 %conv3, ptr %sum, align 4, !dbg !46
br label %for.inc, !dbg !47

for.inc: ; preds = %if.end
%8 = load i64, i64* %i, align 8, !dbg !48
%8 = load i64, ptr %i, align 8, !dbg !48
%inc = add nsw i64 %8, 1, !dbg !48
store i64 %inc, i64* %i, align 8, !dbg !48
store i64 %inc, ptr %i, align 8, !dbg !48
br label %for.cond, !dbg !50

for.end: ; preds = %for.cond
%9 = load i32, i32* %sum, align 4, !dbg !51
%call4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i32 0, i32 0), i32 %9), !dbg !52
%9 = load i32, ptr %sum, align 4, !dbg !51
%call4 = call i32 (ptr, ...) @printf(ptr @.str, i32 %9), !dbg !52
ret i32 0, !dbg !53
}

declare i32 @printf(i8*, ...)
declare i32 @printf(ptr, ...)

attributes #0 = { nounwind readnone }
attributes #1 = {"use-sample-profile"}
Expand Down
10 changes: 5 additions & 5 deletions llvm/test/Transforms/SampleProfile/coverage-warning.ll
Expand Up @@ -8,21 +8,21 @@ define i32 @foo(i32 %i) #0 !dbg !4 {
entry:
%retval = alloca i32, align 4
%i.addr = alloca i32, align 4
store i32 %i, i32* %i.addr, align 4
%0 = load i32, i32* %i.addr, align 4, !dbg !9
store i32 %i, ptr %i.addr, align 4
%0 = load i32, ptr %i.addr, align 4, !dbg !9
%cmp = icmp sgt i32 %0, 1000, !dbg !10
br i1 %cmp, label %if.then, label %if.end, !dbg !9

if.then: ; preds = %entry
store i32 30, i32* %retval, align 4, !dbg !11
store i32 30, ptr %retval, align 4, !dbg !11
br label %return, !dbg !11

if.end: ; preds = %entry
store i32 3, i32* %retval, align 4, !dbg !12
store i32 3, ptr %retval, align 4, !dbg !12
br label %return, !dbg !12

return: ; preds = %if.end, %if.then
%1 = load i32, i32* %retval, align 4, !dbg !13
%1 = load i32, ptr %retval, align 4, !dbg !13
ret i32 %1, !dbg !13
}

Expand Down

0 comments on commit 0271ae6

Please sign in to comment.