diff options
author | Ivan Krasin <krasin@chromium.org> | 2016-08-11 19:09:02 +0000 |
---|---|---|
committer | Ivan Krasin <krasin@chromium.org> | 2016-08-11 19:09:02 +0000 |
commit | f3403fd2c84f05b1219bc6a7badf062a3b7541ef (patch) | |
tree | f2e84aeb66b12bc703c454bd8dc87298e2518e2d /llvm/test/Transforms/WholeProgramDevirt/devirt-single-impl.ll | |
parent | 82b16766e65a211f4e93dd973aff4b343fa158db (diff) | |
download | bcm5719-llvm-f3403fd2c84f05b1219bc6a7badf062a3b7541ef.tar.gz bcm5719-llvm-f3403fd2c84f05b1219bc6a7badf062a3b7541ef.zip |
WholeProgramDevirt: generate more detailed and accurate remarks.
Summary:
Keep track of all methods for which we have devirtualized at least
one call and then print them sorted alphabetically. That allows to
avoid duplicates and also makes the order deterministic.
Add optimization names into the remarks, so that it's easier to
understand how has each method been devirtualized.
Fix a bug when wrong methods could have been reported for
tryVirtualConstProp.
Reviewers: kcc, mehdi_amini
Differential Revision: https://reviews.llvm.org/D23297
llvm-svn: 278389
Diffstat (limited to 'llvm/test/Transforms/WholeProgramDevirt/devirt-single-impl.ll')
-rw-r--r-- | llvm/test/Transforms/WholeProgramDevirt/devirt-single-impl.ll | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/llvm/test/Transforms/WholeProgramDevirt/devirt-single-impl.ll b/llvm/test/Transforms/WholeProgramDevirt/devirt-single-impl.ll index ea5247ab636..9f631e94cf5 100644 --- a/llvm/test/Transforms/WholeProgramDevirt/devirt-single-impl.ll +++ b/llvm/test/Transforms/WholeProgramDevirt/devirt-single-impl.ll @@ -3,19 +3,19 @@ target datalayout = "e-p:64:64" target triple = "x86_64-unknown-linux-gnu" -; CHECK: remark: <unknown>:0:0: devirtualized call -; CHECK: remark: <unknown>:0:0: devirtualized vf -; CHECK: remark: <unknown>:0:0: devirtualized vf +; CHECK: remark: devirt-single.cc:30:32: single-impl: devirtualized a call to vf +; CHECK: remark: devirt-single.cc:13:0: devirtualized vf +; CHECK-NOT: devirtualized -@vt1 = constant [1 x i8*] [i8* bitcast (void (i8*)* @vf to i8*)], !type !0 -@vt2 = constant [1 x i8*] [i8* bitcast (void (i8*)* @vf to i8*)], !type !0 +@vt1 = constant [1 x i8*] [i8* bitcast (void (i8*)* @vf to i8*)], !type !8 +@vt2 = constant [1 x i8*] [i8* bitcast (void (i8*)* @vf to i8*)], !type !8 -define void @vf(i8* %this) { +define void @vf(i8* %this) #0 !dbg !7 { ret void } ; CHECK: define void @call -define void @call(i8* %obj) { +define void @call(i8* %obj) #1 !dbg !5 { %vtableptr = bitcast i8* %obj to [1 x i8*]** %vtable = load [1 x i8*]*, [1 x i8*]** %vtableptr %vtablei8 = bitcast [1 x i8*]* %vtable to i8* @@ -25,11 +25,23 @@ define void @call(i8* %obj) { %fptr = load i8*, i8** %fptrptr %fptr_casted = bitcast i8* %fptr to void (i8*)* ; CHECK: call void @vf( - call void %fptr_casted(i8* %obj) + call void %fptr_casted(i8* %obj), !dbg !6 ret void } declare i1 @llvm.type.test(i8*, metadata) declare void @llvm.assume(i1) -!0 = !{i32 0, !"typeid"} +!llvm.dbg.cu = !{!0} +!llvm.module.flags = !{!2, !3} +!llvm.ident = !{!4} + +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 4.0.0 (trunk 278098)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) +!1 = !DIFile(filename: "devirt-single.cc", directory: ".") +!2 = !{i32 2, !"Dwarf Version", i32 4} +!3 = !{i32 2, !"Debug Info Version", i32 3} +!4 = !{!"clang version 4.0.0 (trunk 278098)"} +!5 = distinct !DISubprogram(name: "call", linkageName: "_Z4callPv", scope: !1, file: !1, line: 29, isLocal: false, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: false, unit: !0) +!6 = !DILocation(line: 30, column: 32, scope: !5) +!7 = distinct !DISubprogram(name: "vf", linkageName: "_ZN3vt12vfEv", scope: !1, file: !1, line: 13, isLocal: false, isDefinition: true, scopeLine: 13, flags: DIFlagPrototyped, isOptimized: false, unit: !0) +!8 = !{i32 0, !"typeid"} |