clang 24.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 "/work/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 hasCoreturn () const
void setCoreturn ()
bool isGlobalInit ()
bool isRegular ()
bool isSwitch ()
bool isTernary ()
bool isTry ()
cir::TryOp getClosestTryParent ()
void setAsGlobalInit ()
void setAsSwitch ()
void setAsTernary ()
void setAsTry (cir::TryOp op)
cir::TryOp getTry ()
llvm::ArrayRef< mlir::Block * > getRetBlocks ()
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 (ArrayRef< mlir::Value * > valuesToReload={})
 Force the emission of cleanups now, instead of waiting until this object is destroyed.
void forceCleanupExceptLifetimeExtended ()
 Force the emission of EH cleanups now, but defer promoting any lifetime-extended cleanup entries onto the EH scope stack.
void forceLifetimeExtendedCleanups ()
 Promote any pending lifetime-extended cleanup entries onto the EH scope stack at the current insertion point and finalize this scope.
bool hasPendingCleanups () const
 Whether there are any pending cleanups that have been pushed since this scope was entered.

Public Attributes

unsigned depth = 0

Additional Inherited Members

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

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 1514 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

Member Function Documentation

◆ cleanup()

◆ getClosestTryParent()

cir::TryOp clang::CIRGen::CIRGenFunction::LexicalScope::getClosestTryParent ( )

Definition at line 426 of file CIRGenFunction.cpp.

References getTry(), isTry(), and LexicalScope().

◆ getEntryBlock()

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

Definition at line 1677 of file CIRGenFunction.h.

Referenced by emitSuspendExpr().

◆ getOrCreateRetBlock()

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

◆ getRetBlocks()

llvm::ArrayRef< mlir::Block * > clang::CIRGen::CIRGenFunction::LexicalScope::getRetBlocks ( )
inline

Definition at line 1643 of file CIRGenFunction.h.

Referenced by cleanup().

◆ getRetLoc()

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

Definition at line 1644 of file CIRGenFunction.h.

Referenced by cleanup().

◆ getTry()

cir::TryOp clang::CIRGen::CIRGenFunction::LexicalScope::getTry ( )
inline

Definition at line 1602 of file CIRGenFunction.h.

References isTry().

Referenced by getClosestTryParent().

◆ hasCoreturn()

bool clang::CIRGen::CIRGenFunction::LexicalScope::hasCoreturn ( ) const
inline

Definition at line 1582 of file CIRGenFunction.h.

Referenced by emitBodyAndFallthrough().

◆ isGlobalInit()

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

Definition at line 1588 of file CIRGenFunction.h.

Referenced by cleanup().

◆ isRegular()

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

Definition at line 1589 of file CIRGenFunction.h.

◆ isSwitch()

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

Definition at line 1590 of file CIRGenFunction.h.

◆ isTernary()

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

Definition at line 1591 of file CIRGenFunction.h.

Referenced by cleanup().

◆ isTry()

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

Definition at line 1592 of file CIRGenFunction.h.

Referenced by getClosestTryParent(), and getTry().

◆ restore()

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

Definition at line 1571 of file CIRGenFunction.h.

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

Referenced by ~LexicalScope().

◆ setAsGlobalInit()

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

◆ setAsSwitch()

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

Definition at line 1595 of file CIRGenFunction.h.

◆ setAsTernary()

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

Definition at line 1596 of file CIRGenFunction.h.

◆ setAsTry()

void clang::CIRGen::CIRGenFunction::LexicalScope::setAsTry ( cir::TryOp op)
inline

Definition at line 1597 of file CIRGenFunction.h.

◆ setCoreturn()

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

Definition at line 1583 of file CIRGenFunction.h.

◆ setRetVal()

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

Definition at line 1568 of file CIRGenFunction.h.

◆ updateRetLoc()

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

Definition at line 1645 of file CIRGenFunction.h.

Referenced by getOrCreateRetBlock().

Member Data Documentation

◆ depth

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

Definition at line 1550 of file CIRGenFunction.h.

Referenced by cleanup(), and LexicalScope().


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