clang 24.0.0git
clang::CodeGen::VarBypassDetector Class Reference

The class detects jumps which bypass local variables declaration: goto L; int a; L: More...

#include "/work/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CodeGen/VarBypassDetector.h"

Public Member Functions

void Init (CodeGenModule &CGM, const Stmt *Body)
 Clear the object and pre-process for the given statement, usually function body statement.
bool IsBypassed (const VarDecl *D) const
 Returns true if the variable declaration was by bypassed by any goto or switch statement.
bool isAlwaysBypassed () const
 Returns true if jump sources cannot be determined (e.g.
const llvm::SmallSetVector< const VarDecl *, 4 > * getBypassedVarsForSource (const Stmt *Source) const
 Returns the variables bypassed by jumps from the given source statement, or nullptr if it bypasses none.

Detailed Description

The class detects jumps which bypass local variables declaration: goto L; int a; L:

This is simplified version of JumpScopeChecker. Primary differences:

  • Detects only jumps into the scope local variables.
  • Does not detect jumps out of the scope of local variables.
  • Not limited to variables with initializers, JumpScopeChecker is limited.

Definition at line 41 of file VarBypassDetector.h.

Member Function Documentation

◆ getBypassedVarsForSource()

const llvm::SmallSetVector< const VarDecl *, 4 > * clang::CodeGen::VarBypassDetector::getBypassedVarsForSource ( const Stmt * Source) const
inline

Returns the variables bypassed by jumps from the given source statement, or nullptr if it bypasses none.

Definition at line 74 of file VarBypassDetector.h.

◆ Init()

void VarBypassDetector::Init ( CodeGenModule & CGM,
const Stmt * Body )

Clear the object and pre-process for the given statement, usually function body statement.

Definition at line 45 of file VarBypassDetector.cpp.

References clang::Detect, and hasJumpStmts().

◆ isAlwaysBypassed()

bool clang::CodeGen::VarBypassDetector::isAlwaysBypassed ( ) const
inline

Returns true if jump sources cannot be determined (e.g.

computed gotos), so all variables must be treated as bypassed.

Definition at line 69 of file VarBypassDetector.h.

◆ IsBypassed()

bool clang::CodeGen::VarBypassDetector::IsBypassed ( const VarDecl * D) const
inline

Returns true if the variable declaration was by bypassed by any goto or switch statement.

Definition at line 63 of file VarBypassDetector.h.


The documentation for this class was generated from the following files: