Представление кода в статическом одиночном присваивании (SSA) почти, но не совсем канонично; есть два варианта, vanilla и edge-split, в которых дополнительные узлы вставляются по мере необходимости, чтобы каждый цикл имел только одно заднее ребро. Обоснование: добавление ограничения разделения ребер немного упрощает некоторые оптимизации.
Что я действительно хочу знать, так это то, стоит ли в целом ограничение разделения краев, но это суждение, поэтому для конкретного фактического вопроса:
Используют ли следующие известные компиляторы, использующие SSA, ограничение разделения границ?
- ССАГПЗ
- Go
- LLVM
- ПаукОбезьяна
- V8