forked from OSchip/llvm-project
[llvm-locstats] Avoid the locstats when no scope bytes coverage found
If the total number of PC range bytes in each variable's enclosing scope ('scope bytes total') is 0, we will have division by zero. Differential Revision: https://reviews.llvm.org/D71415
This commit is contained in:
parent
ed8dadb37c
commit
baea913609
|
@ -0,0 +1,39 @@
|
|||
; UNSUPPORTED: system-windows
|
||||
; REQUIRES: x86-registered-target
|
||||
; RUN: llc %s -o %t0.o -filetype=obj
|
||||
; RUN: %llvm-locstats %t0.o | FileCheck %s --check-prefix=LOCSTATS
|
||||
;
|
||||
; LOCSTATS: No scope bytes found.
|
||||
;
|
||||
; This is based on the following reproducer:
|
||||
;
|
||||
; int fn() {
|
||||
; return 0;
|
||||
; }
|
||||
;
|
||||
; ModuleID = 'test.c'
|
||||
source_filename = "test.c"
|
||||
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"
|
||||
; Function Attrs: norecurse nounwind readnone uwtable
|
||||
define dso_local i32 @fn() local_unnamed_addr !dbg !7 {
|
||||
entry:
|
||||
ret i32 0, !dbg !11
|
||||
}
|
||||
|
||||
!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 10.0.0", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, nameTableKind: None)
|
||||
!1 = !DIFile(filename: "test.c", directory: "/")
|
||||
!2 = !{}
|
||||
!3 = !{i32 7, !"Dwarf Version", i32 4}
|
||||
!4 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
!5 = !{i32 1, !"wchar_size", i32 4}
|
||||
!6 = !{!"clang version 10.0.0"}
|
||||
!7 = distinct !DISubprogram(name: "fn", scope: !1, file: !1, line: 1, type: !8, scopeLine: 1, flags: DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
|
||||
!8 = !DISubroutineType(types: !9)
|
||||
!9 = !{!10}
|
||||
!10 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
|
||||
!11 = !DILocation(line: 2, column: 3, scope: !7)
|
|
@ -29,6 +29,10 @@ def locstats_output(
|
|||
variables_coverage_map
|
||||
):
|
||||
|
||||
if scope_bytes == 0:
|
||||
print ('No scope bytes found.')
|
||||
sys.exit(0)
|
||||
|
||||
pc_ranges_covered = int(ceil(scope_bytes_covered * 100.0)
|
||||
/ scope_bytes)
|
||||
variables_coverage_per_map = {}
|
||||
|
|
Loading…
Reference in New Issue