This change modifies the source location formatting from: LineNumber.Discriminator to: LineNumber:ColumnNumber.Discriminator The motivation here is to enhance location information for inline replay that currently exists for the SampleProfile inliner. This will be leveraged further in inline replay for the CGSCC inliner in the related diff. The ReplayInlineAdvisor is also modified to read the new format and now takes into account the callee for greater accuracy. Testing: ninja check-llvm Reviewed By: mtrofin Differential Revision: https://reviews.llvm.org/D94333
92 lines
4.0 KiB
LLVM
92 lines
4.0 KiB
LLVM
; RUN: opt < %s -S -inline -pass-remarks-output=%t -pass-remarks=inline \
|
|
; RUN: -pass-remarks-missed=inline -pass-remarks-analysis=inline \
|
|
; RUN: -pass-remarks-with-hotness 2>&1 | FileCheck %s
|
|
; RUN: cat %t | FileCheck -check-prefix=YAML %s
|
|
|
|
; RUN: opt < %s -S -passes=inline -pass-remarks-output=%t -pass-remarks=inline \
|
|
; RUN: -pass-remarks-missed=inline -pass-remarks-analysis=inline \
|
|
; RUN: -pass-remarks-with-hotness 2>&1 | FileCheck %s
|
|
; RUN: cat %t | FileCheck -check-prefix=YAML %s
|
|
|
|
; RUN: opt < %s -S -passes=inliner-wrapper -pass-remarks-output=%t -pass-remarks=inline \
|
|
; RUN: -pass-remarks-missed=inline -pass-remarks-analysis=inline \
|
|
; RUN: -pass-remarks-with-hotness 2>&1 | FileCheck %s
|
|
; RUN: cat %t | FileCheck -check-prefix=YAML %s
|
|
|
|
; Check the YAML file for inliner-generated passed and analysis remarks. This
|
|
; is the input:
|
|
|
|
; 1 int foo() { return 1; }
|
|
; 2
|
|
; 3 int bar() {
|
|
; 4 return foo();
|
|
; 5 }
|
|
|
|
; CHECK: remark: /tmp/s.c:4:10: foo inlined into bar with (cost={{[0-9\-]+}}, threshold={{[0-9]+}}) at callsite bar:1:10; (hotness: 30)
|
|
|
|
; YAML: --- !Passed
|
|
; YAML-NEXT: Pass: inline
|
|
; YAML-NEXT: Name: Inlined
|
|
; YAML-NEXT: DebugLoc: { File: '/tmp/s.c', Line: 4, Column: 10 }
|
|
; YAML-NEXT: Function: bar
|
|
; YAML-NEXT: Hotness: 30
|
|
; YAML-NEXT: Args:
|
|
; YAML-NEXT: - Callee: foo
|
|
; YAML-NEXT: DebugLoc: { File: '/tmp/s.c', Line: 1, Column: 0 }
|
|
; YAML-NEXT: - String: ' inlined into '
|
|
; YAML-NEXT: - Caller: bar
|
|
; YAML-NEXT: DebugLoc: { File: '/tmp/s.c', Line: 3, Column: 0 }
|
|
; YAML-NEXT: - String: ' with '
|
|
; YAML-NEXT: - String: '(cost='
|
|
; YAML-NEXT: - Cost: '{{[0-9\-]+}}'
|
|
; YAML-NEXT: - String: ', threshold='
|
|
; YAML-NEXT: - Threshold: '{{[0-9]+}}'
|
|
; YAML-NEXT: - String: ')'
|
|
; YAML-NEXT: - String: ' at callsite '
|
|
; YAML-NEXT: - String: bar
|
|
; YAML-NEXT: - String: ':'
|
|
; YAML-NEXT: - Line: '1'
|
|
; YAML-NEXT: - String: ':'
|
|
; YAML-NEXT: - Column: '10'
|
|
; YAML-NEXT: - String: ';'
|
|
; YAML-NEXT: ...
|
|
|
|
; ModuleID = '/tmp/s.c'
|
|
source_filename = "/tmp/s.c"
|
|
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-apple-macosx10.11.0"
|
|
|
|
; Function Attrs: nounwind ssp uwtable
|
|
define i32 @foo() #0 !dbg !7 {
|
|
entry:
|
|
ret i32 1, !dbg !9
|
|
}
|
|
|
|
; Function Attrs: nounwind ssp uwtable
|
|
define i32 @bar() #0 !dbg !10 !prof !13 {
|
|
entry:
|
|
%call = call i32 @foo(), !dbg !11
|
|
ret i32 %call, !dbg !12
|
|
}
|
|
|
|
attributes #0 = { nounwind ssp uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="all" "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"="core2" "target-features"="+cx16,+fxsr,+mmx,+sse,+sse2,+sse3,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
|
|
|
!llvm.dbg.cu = !{!0}
|
|
!llvm.module.flags = !{!3, !4, !5}
|
|
!llvm.ident = !{!6}
|
|
|
|
!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 4.0.0 (trunk 282540) (llvm/trunk 282542)", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2)
|
|
!1 = !DIFile(filename: "/tmp/s.c", directory: "/tmp")
|
|
!2 = !{}
|
|
!3 = !{i32 2, !"Dwarf Version", i32 4}
|
|
!4 = !{i32 2, !"Debug Info Version", i32 3}
|
|
!5 = !{i32 1, !"PIC Level", i32 2}
|
|
!6 = !{!"clang version 4.0.0 (trunk 282540) (llvm/trunk 282542)"}
|
|
!7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, isOptimized: true, unit: !0, retainedNodes: !2)
|
|
!8 = !DISubroutineType(types: !2)
|
|
!9 = !DILocation(line: 1, column: 13, scope: !7)
|
|
!10 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 3, type: !8, isLocal: false, isDefinition: true, scopeLine: 3, isOptimized: true, unit: !0, retainedNodes: !2)
|
|
!11 = !DILocation(line: 4, column: 10, scope: !10)
|
|
!12 = !DILocation(line: 4, column: 3, scope: !10)
|
|
!13 = !{!"function_entry_count", i64 30}
|