clang 22.0.0git
clang::CIRGen::CIRGenFunction::LexicalScope Struct Reference

Represents a scope, including function bodies, compound statements, and the substatements of if/while/do/for/switch/try statements. More...

#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CIR/CodeGen/CIRGenFunction.h"

Inheritance diagram for clang::CIRGen::CIRGenFunction::LexicalScope:
[legend]

Public Member Functions

 LexicalScope (CIRGenFunction &cgf, mlir::Location loc, mlir::Block *eb)
void setRetVal (mlir::Value v)
void cleanup ()
void restore ()
 ~LexicalScope ()
bool isGlobalInit ()
bool isRegular ()
bool isSwitch ()
bool isTernary ()
bool isTry ()
void setAsGlobalInit ()
void setAsSwitch ()
void setAsTernary ()
mlir::Block * getOrCreateCleanupBlock (mlir::OpBuilder &builder)
mlir::Block * getCleanupBlock (mlir::OpBuilder &builder)
mlir::Block * createCleanupBlock (mlir::OpBuilder &builder)
mlir::Block * getRetBlock ()
mlir::Location getRetLoc (mlir::Block *b)
void updateRetLoc (mlir::Block *b, mlir::Location loc)
mlir::Block * getOrCreateRetBlock (CIRGenFunction &cgf, mlir::Location loc)
mlir::Block * getEntryBlock ()
Public Member Functions inherited from clang::CIRGen::CIRGenFunction::RunCleanupsScope
 RunCleanupsScope (CIRGenFunction &cgf)
 Enter a new cleanup scope.
 ~RunCleanupsScope ()
 Exit this cleanup scope, emitting any accumulated cleanups.
void forceCleanup ()
 Force the emission of cleanups now, instead of waiting until this object is destroyed.

Public Attributes

unsigned depth = 0

Additional Inherited Members

Protected Attributes inherited from clang::CIRGen::CIRGenFunction::RunCleanupsScope
bool performCleanup
bool oldDidCallStackSave
CIRGenFunctioncgf

Detailed Description

Represents a scope, including function bodies, compound statements, and the substatements of if/while/do/for/switch/try statements.

This class handles any automatic cleanup, along with the return value.

Definition at line 932 of file CIRGenFunction.h.

Constructor & Destructor Documentation

◆ LexicalScope()

clang::CIRGen::CIRGenFunction::LexicalScope::LexicalScope ( CIRGenFunction & cgf,
mlir::Location loc,
mlir::Block * eb )
inline

◆ ~LexicalScope()

clang::CIRGen::CIRGenFunction::LexicalScope::~LexicalScope ( )
inline

Definition at line 986 of file CIRGenFunction.h.

References cleanup(), cir::MissingFeatures::generateDebugInfo(), and restore().

Member Function Documentation

◆ cleanup()

◆ createCleanupBlock()

mlir::Block * clang::CIRGen::CIRGenFunction::LexicalScope::createCleanupBlock ( mlir::OpBuilder & builder)
inline

◆ getCleanupBlock()

mlir::Block * clang::CIRGen::CIRGenFunction::LexicalScope::getCleanupBlock ( mlir::OpBuilder & builder)
inline

Definition at line 1013 of file CIRGenFunction.h.

Referenced by cleanup().

◆ getEntryBlock()

mlir::Block * clang::CIRGen::CIRGenFunction::LexicalScope::getEntryBlock ( )
inline

Definition at line 1071 of file CIRGenFunction.h.

◆ getOrCreateCleanupBlock()

mlir::Block * clang::CIRGen::CIRGenFunction::LexicalScope::getOrCreateCleanupBlock ( mlir::OpBuilder & builder)
inline

Definition at line 1006 of file CIRGenFunction.h.

References createCleanupBlock().

◆ getOrCreateRetBlock()

mlir::Block * clang::CIRGen::CIRGenFunction::LexicalScope::getOrCreateRetBlock ( CIRGenFunction & cgf,
mlir::Location loc )
inline

◆ getRetBlock()

mlir::Block * clang::CIRGen::CIRGenFunction::LexicalScope::getRetBlock ( )
inline

Definition at line 1054 of file CIRGenFunction.h.

◆ getRetLoc()

mlir::Location clang::CIRGen::CIRGenFunction::LexicalScope::getRetLoc ( mlir::Block * b)
inline

Definition at line 1055 of file CIRGenFunction.h.

References b.

◆ isGlobalInit()

bool clang::CIRGen::CIRGenFunction::LexicalScope::isGlobalInit ( )
inline

Definition at line 995 of file CIRGenFunction.h.

Referenced by cleanup().

◆ isRegular()

bool clang::CIRGen::CIRGenFunction::LexicalScope::isRegular ( )
inline

Definition at line 996 of file CIRGenFunction.h.

◆ isSwitch()

bool clang::CIRGen::CIRGenFunction::LexicalScope::isSwitch ( )
inline

Definition at line 997 of file CIRGenFunction.h.

◆ isTernary()

bool clang::CIRGen::CIRGenFunction::LexicalScope::isTernary ( )
inline

Definition at line 998 of file CIRGenFunction.h.

Referenced by cleanup().

◆ isTry()

bool clang::CIRGen::CIRGenFunction::LexicalScope::isTry ( )
inline

Definition at line 999 of file CIRGenFunction.h.

◆ restore()

void clang::CIRGen::CIRGenFunction::LexicalScope::restore ( )
inline

Definition at line 984 of file CIRGenFunction.h.

References clang::CIRGen::CIRGenFunction::RunCleanupsScope::cgf.

Referenced by ~LexicalScope().

◆ setAsGlobalInit()

void clang::CIRGen::CIRGenFunction::LexicalScope::setAsGlobalInit ( )
inline

Definition at line 1001 of file CIRGenFunction.h.

Referenced by emitDeclDestroy(), and emitDeclInit().

◆ setAsSwitch()

void clang::CIRGen::CIRGenFunction::LexicalScope::setAsSwitch ( )
inline

Definition at line 1002 of file CIRGenFunction.h.

◆ setAsTernary()

void clang::CIRGen::CIRGenFunction::LexicalScope::setAsTernary ( )
inline

Definition at line 1003 of file CIRGenFunction.h.

◆ setRetVal()

void clang::CIRGen::CIRGenFunction::LexicalScope::setRetVal ( mlir::Value v)
inline

Definition at line 981 of file CIRGenFunction.h.

◆ updateRetLoc()

void clang::CIRGen::CIRGenFunction::LexicalScope::updateRetLoc ( mlir::Block * b,
mlir::Location loc )
inline

Definition at line 1056 of file CIRGenFunction.h.

References b.

Referenced by getOrCreateRetBlock().

Member Data Documentation

◆ depth

unsigned clang::CIRGen::CIRGenFunction::LexicalScope::depth = 0

Definition at line 963 of file CIRGenFunction.h.

Referenced by cleanup(), and LexicalScope().


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