clang 22.0.0git
ReachableCode.h
Go to the documentation of this file.
1//===- ReachableCode.h -----------------------------------------*- C++ --*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// A flow-sensitive, path-insensitive analysis of unreachable code.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_CLANG_ANALYSIS_ANALYSES_REACHABLECODE_H
14#define LLVM_CLANG_ANALYSIS_ANALYSES_REACHABLECODE_H
15
17
18//===----------------------------------------------------------------------===//
19// Forward declarations.
20//===----------------------------------------------------------------------===//
21
22namespace llvm {
23 class BitVector;
24}
25
26namespace clang {
28 class CFGBlock;
29 class Preprocessor;
30}
31
32//===----------------------------------------------------------------------===//
33// API.
34//===----------------------------------------------------------------------===//
35
36namespace clang {
37namespace reachable_code {
38
39/// Classifications of unreachable code.
46
47class Callback {
48 virtual void anchor();
49public:
50 virtual ~Callback() {}
52 SourceRange ConditionVal, SourceRange R1,
53 SourceRange R2, bool HasFallThroughAttr) = 0;
54};
55
56/// ScanReachableFromBlock - Mark all blocks reachable from Start.
57/// Returns the total number of blocks that were marked reachable.
58unsigned ScanReachableFromBlock(const CFGBlock *Start,
59 llvm::BitVector &Reachable);
60
62 Callback &CB);
63
64}} // end namespace clang::reachable_code
65
66#endif
Defines the clang::SourceLocation class and associated facilities.
AnalysisDeclContext contains the context data for the function, method or block under analysis.
Represents a single basic block in a source-level CFG.
Definition CFG.h:605
Engages in a tight little dance with the lexer to efficiently preprocess tokens.
Encodes a location in the source.
A trivial tuple used to represent a source range.
virtual void HandleUnreachable(UnreachableKind UK, SourceLocation L, SourceRange ConditionVal, SourceRange R1, SourceRange R2, bool HasFallThroughAttr)=0
void FindUnreachableCode(AnalysisDeclContext &AC, Preprocessor &PP, Callback &CB)
unsigned ScanReachableFromBlock(const CFGBlock *Start, llvm::BitVector &Reachable)
ScanReachableFromBlock - Mark all blocks reachable from Start.
UnreachableKind
Classifications of unreachable code.
The JSON file list parser is used to communicate input to InstallAPI.
Diagnostic wrappers for TextAPI types for error reporting.
Definition Dominators.h:30