|
clang 23.0.0git
|
#include "CIRGenCleanup.h"#include "CIRGenFunction.h"#include "clang/AST/RecursiveASTVisitor.h"#include "clang/CIR/MissingFeatures.h"Go to the source code of this file.
Functions | |
| static void | setupCleanupBlockDeactivation (CIRGenFunction &cgf, EHScopeStack::stable_iterator c, mlir::Operation *dominatingIP) |
| The given cleanup block is being deactivated. | |
| static void | emitCleanup (CIRGenFunction &cgf, cir::CleanupScopeOp cleanupScope, EHScopeStack::Cleanup *cleanup, EHScopeStack::Cleanup::Flags flags, Address activeFlag) |
| static bool | bodyHasBranchThroughExits (mlir::Region &bodyRegion) |
| Check whether a cleanup scope body contains any non-yield exits that branch through the cleanup. | |
|
static |
Check whether a cleanup scope body contains any non-yield exits that branch through the cleanup.
These exits branch through the cleanup and require the normal cleanup to be executed even when the cleanup has been deactivated.
Definition at line 466 of file CIRGenCleanup.cpp.
References clang::isa().
Referenced by clang::CIRGen::CIRGenFunction::popCleanupBlock().
|
static |
Definition at line 423 of file CIRGenCleanup.cpp.
References cleanup(), cir::CIRBaseBuilderTy::createFlagLoad(), cir::CIRBaseBuilderTy::createYield(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::CIRGen::Address::getPointer(), clang::CIRGen::CIRGenFunction::haveInsertPoint(), and clang::CIRGen::Address::isValid().
Referenced by clang::CIRGen::CIRGenFunction::popCleanupBlock(), and clang::interp::Compiler< Emitter >::visitReturnStmt().
|
static |
The given cleanup block is being deactivated.
Configure a cleanup variable if necessary.
Definition at line 356 of file CIRGenCleanup.cpp.
References c, clang::cast(), cir::CIRBaseBuilderTy::createFlagStore(), clang::CIRGen::CIRGenFunction::createTempAllocaWithoutCast(), clang::CIRGen::CIRGenFunction::ehStack, clang::CIRGen::EHScopeStack::find(), clang::CIRGen::EHCleanupScope::getActiveFlag(), cir::CIRBaseBuilderTy::getBool(), cir::CIRBaseBuilderTy::getBoolTy(), clang::CIRGen::CIRGenFunction::getBuilder(), clang::CIRGen::EHCleanupScope::isEHCleanup(), clang::CIRGen::CIRGenFunction::isInConditionalBranch(), clang::CIRGen::EHCleanupScope::isNormalCleanup(), clang::CharUnits::One(), clang::CIRGen::EHCleanupScope::setActiveFlag(), clang::CIRGen::CIRGenFunction::setBeforeOutermostConditional(), clang::CIRGen::EHCleanupScope::setTestFlagInEHCleanup(), and clang::CIRGen::EHCleanupScope::setTestFlagInNormalCleanup().
Referenced by clang::CIRGen::CIRGenFunction::deactivateCleanupBlock().