Использование 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

Другие вопросы по тегам