|
|
|
@ -59,15 +59,22 @@ public:
|
|
|
|
|
/// Gets the end location for this basic block.
|
|
|
|
|
[[nodiscard]] u32 LocationEnd() const noexcept;
|
|
|
|
|
|
|
|
|
|
/// Adds a new immediate predecessor to this basic block.
|
|
|
|
|
void AddImmediatePredecessor(Block* block);
|
|
|
|
|
|
|
|
|
|
/// Gets a mutable reference to the instruction list for this basic block.
|
|
|
|
|
[[nodiscard]] InstructionList& Instructions() noexcept;
|
|
|
|
|
[[nodiscard]] InstructionList& Instructions() noexcept {
|
|
|
|
|
return instructions;
|
|
|
|
|
}
|
|
|
|
|
/// Gets an immutable reference to the instruction list for this basic block.
|
|
|
|
|
[[nodiscard]] const InstructionList& Instructions() const noexcept;
|
|
|
|
|
[[nodiscard]] const InstructionList& Instructions() const noexcept {
|
|
|
|
|
return instructions;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Adds a new immediate predecessor to this basic block.
|
|
|
|
|
void AddImmediatePredecessor(Block* block);
|
|
|
|
|
/// Gets an immutable span to the immediate predecessors.
|
|
|
|
|
[[nodiscard]] std::span<Block* const> ImmediatePredecessors() const noexcept;
|
|
|
|
|
[[nodiscard]] std::span<Block* const> ImmediatePredecessors() const noexcept {
|
|
|
|
|
return imm_predecessors;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Intrusively store the host definition of this instruction.
|
|
|
|
|
template <typename DefinitionType>
|
|
|
|
|