mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-01 15:17:25 +00:00
Verifier: Check debug info intrinsic arguments
Verify that debug info intrinsic arguments are valid. (These checks
will not recurse through the full debug info graph, so they don't need
to be cordoned of in `DebugInfoVerifier`.)
With those checks in place, changing the `DbgIntrinsicInst` accessors to
downcast to `MDLocalVariable` and `MDExpression` is natural (added isa
specializations in `Metadata.h` to support this).
Added tests to `test/Verifier` for the new -verify checks, and fixed the
debug info in all the in-tree tests.
If you have out-of-tree testcases that have started to fail to -verify,
hopefully the verify checks are helpful. The most likely problem is
that the expression argument is `!{}` (instead of `!MDExpression()`).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232296 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -32,8 +32,8 @@ define i32 @main(i32 %argc, i8** nocapture readonly %argv) #0 {
|
||||
; CHECK: Printing analysis 'Branch Probability Analysis' for function 'main':
|
||||
|
||||
entry:
|
||||
tail call void @llvm.dbg.value(metadata i32 %argc, i64 0, metadata !13, metadata !{}), !dbg !27
|
||||
tail call void @llvm.dbg.value(metadata i8** %argv, i64 0, metadata !14, metadata !{}), !dbg !27
|
||||
tail call void @llvm.dbg.value(metadata i32 %argc, i64 0, metadata !13, metadata !MDExpression()), !dbg !27
|
||||
tail call void @llvm.dbg.value(metadata i8** %argv, i64 0, metadata !14, metadata !MDExpression()), !dbg !27
|
||||
%cmp = icmp slt i32 %argc, 2, !dbg !28
|
||||
br i1 %cmp, label %return, label %if.end, !dbg !28
|
||||
; CHECK: edge entry -> return probability is 1 / 2 = 50%
|
||||
@@ -43,7 +43,7 @@ if.end: ; preds = %entry
|
||||
%arrayidx = getelementptr inbounds i8*, i8** %argv, i64 1, !dbg !30
|
||||
%0 = load i8*, i8** %arrayidx, align 8, !dbg !30, !tbaa !31
|
||||
%call = tail call i32 @atoi(i8* %0) #4, !dbg !30
|
||||
tail call void @llvm.dbg.value(metadata i32 %call, i64 0, metadata !17, metadata !{}), !dbg !30
|
||||
tail call void @llvm.dbg.value(metadata i32 %call, i64 0, metadata !17, metadata !MDExpression()), !dbg !30
|
||||
%cmp1 = icmp sgt i32 %call, 100, !dbg !35
|
||||
br i1 %cmp1, label %for.body, label %if.end6, !dbg !35
|
||||
; CHECK: edge if.end -> for.body probability is 1 / 2 = 50%
|
||||
@@ -55,14 +55,14 @@ for.body: ; preds = %if.end, %for.body
|
||||
%add = fadd double %s.015, 3.049000e+00, !dbg !36
|
||||
%conv = sitofp i32 %u.016 to double, !dbg !36
|
||||
%add4 = fadd double %add, %conv, !dbg !36
|
||||
tail call void @llvm.dbg.value(metadata double %add4, i64 0, metadata !18, metadata !{}), !dbg !36
|
||||
tail call void @llvm.dbg.value(metadata double %add4, i64 0, metadata !18, metadata !MDExpression()), !dbg !36
|
||||
%div = fdiv double 3.940000e+00, %s.015, !dbg !37
|
||||
%mul = fmul double %div, 3.200000e-01, !dbg !37
|
||||
%add5 = fadd double %add4, %mul, !dbg !37
|
||||
%sub = fsub double %add4, %add5, !dbg !37
|
||||
tail call void @llvm.dbg.value(metadata double %sub, i64 0, metadata !18, metadata !{}), !dbg !37
|
||||
tail call void @llvm.dbg.value(metadata double %sub, i64 0, metadata !18, metadata !MDExpression()), !dbg !37
|
||||
%inc = add nsw i32 %u.016, 1, !dbg !38
|
||||
tail call void @llvm.dbg.value(metadata i32 %inc, i64 0, metadata !21, metadata !{}), !dbg !38
|
||||
tail call void @llvm.dbg.value(metadata i32 %inc, i64 0, metadata !21, metadata !MDExpression()), !dbg !38
|
||||
%exitcond = icmp eq i32 %inc, %call, !dbg !38
|
||||
br i1 %exitcond, label %if.end6, label %for.body, !dbg !38
|
||||
; CHECK: edge for.body -> if.end6 probability is 1 / 10227 = 0.00977804
|
||||
|
||||
Reference in New Issue
Block a user