Использование SSA с разделением по краям
Представление кода в статическом одиночном присваивании (SSA) является почти, но не совсем каноническим; Есть два варианта, ванильный и с разделением по краям, в которых дополнительные узлы вставляются по мере необходимости, чтобы каждый цикл имел только один задний край. Обоснование: добавление ограничения разбиения ребер делает некоторые оптимизации немного проще.
Что я действительно хочу знать, так это то, стоит ли вообще иметь ограничение на разделение по краям, но это суждение, поэтому для конкретного фактического вопроса:
Используют ли следующие известные компиляторы, которые используют SSA, ограничение на разделение по краям?
- НКУ
- Идти
- LLVM
- SpiderMonkey
- V8
1 ответ
Из расследования до сих пор:
Это говорит о том, что LLVM использует разделение по краям: http://llvm.org/doxygen/LoopSimplify_8cpp.html
Перейти также: https://golang.org/src/cmd/compile/internal/ssa/critical.go