Skip to content
Snippets Groups Projects
  • Devin Coughlin's avatar
    3efe802b
    [analyzer] Add sink after construction of temporary with no-return destructor. · 3efe802b
    Devin Coughlin authored
    The analyzer's CFG currently doesn't have nodes for calls to temporary
    destructors. This causes the analyzer to explore infeasible paths in which
    a no-return destructor would have stopped exploration and so results in false
    positives when no-return destructors are used to implement assertions.
    
    To mitigate these false positives, this patch stops generates a sink after
    evaluating a constructor on a temporary object that has a no-return destructor.
    This results in a loss of coverage because the time at which the destructor is
    called may be after the time of construction (especially for lifetime-extended
    temporaries).
    
    This addresses PR15599.
    
    rdar://problem/29131566
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290140 91177308-0d34-0410-b5e6-96231b3b80d8
    3efe802b
    History
    [analyzer] Add sink after construction of temporary with no-return destructor.
    Devin Coughlin authored
    The analyzer's CFG currently doesn't have nodes for calls to temporary
    destructors. This causes the analyzer to explore infeasible paths in which
    a no-return destructor would have stopped exploration and so results in false
    positives when no-return destructors are used to implement assertions.
    
    To mitigate these false positives, this patch stops generates a sink after
    evaluating a constructor on a temporary object that has a no-return destructor.
    This results in a loss of coverage because the time at which the destructor is
    called may be after the time of construction (especially for lifetime-extended
    temporaries).
    
    This addresses PR15599.
    
    rdar://problem/29131566
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290140 91177308-0d34-0410-b5e6-96231b3b80d8
Code owners
Assign users and groups as approvers for specific file changes. Learn more.