clang API Documentation

Public Attributes
clang::CodeGen::BranchFixup Struct Reference

#include <EHScopeStack.h>

Collaboration diagram for clang::CodeGen::BranchFixup:
Collaboration graph
[legend]

List of all members.

Public Attributes

llvm::BasicBlock * OptimisticBranchBlock
llvm::BasicBlock * Destination
unsigned DestinationIndex
 The destination index value.
llvm::BranchInst * InitialBranch
 The initial branch of the fixup.

Detailed Description

A branch fixup. These are required when emitting a goto to a label which hasn't been emitted yet. The goto is optimistically emitted as a branch to the basic block for the label, and (if it occurs in a scope with non-trivial cleanups) a fixup is added to the innermost cleanup. When a (normal) cleanup is popped, any unresolved fixups in that scope are threaded through the cleanup.

Definition at line 36 of file EHScopeStack.h.


Member Data Documentation

The ultimate destination of the branch.

This can be set to null to indicate that this fixup was successfully resolved.

Definition at line 46 of file EHScopeStack.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitBranchThroughCleanup(), clang::CodeGen::CodeGenFunction::PopCleanupBlock(), ResolveAllBranchFixups(), and clang::CodeGen::CodeGenFunction::ResolveBranchFixups().

The block containing the terminator which needs to be modified into a switch if this fixup is resolved into the current scope. If null, LatestBranch points directly to the destination.

Definition at line 40 of file EHScopeStack.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitBranchThroughCleanup(), clang::CodeGen::CodeGenFunction::PopCleanupBlock(), ResolveAllBranchFixups(), and clang::CodeGen::CodeGenFunction::ResolveBranchFixups().


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