Add support for self-referencing phi nodes
This commit is contained in:
parent
9a08dab7ee
commit
f6a7130486
2 changed files with 7 additions and 0 deletions
|
@ -90,6 +90,9 @@ public:
|
|||
/// Generate a new id for forward declarations
|
||||
[[nodiscard]] Id ForwardDeclarationId();
|
||||
|
||||
/// Returns the current generator id, useful for self-referencing phi nodes
|
||||
[[nodiscard]] Id CurrentId() const noexcept;
|
||||
|
||||
/// Assign a new id and return the old one, useful for defining forward declarations
|
||||
Id ExchangeCurrentId(Id new_current_id);
|
||||
|
||||
|
|
|
@ -99,6 +99,10 @@ Id Module::ForwardDeclarationId() {
|
|||
return Id{++bound};
|
||||
}
|
||||
|
||||
Id Module::CurrentId() const noexcept {
|
||||
return Id{bound + 1};
|
||||
}
|
||||
|
||||
Id Module::ExchangeCurrentId(Id new_current_id) {
|
||||
const std::uint32_t old_id = std::exchange(bound, new_current_id.value - 1);
|
||||
return Id{old_id + 1};
|
||||
|
|
Loading…
Reference in a new issue