Использование SSA с разделением по краям - PullRequest
0 голосов
/ 27 апреля 2018

Статическое представление кода с единым назначением (SSA) почти, но не совсем канонично; Существует два варианта: vanilla и edge-split , в которых дополнительные узлы вставляются по мере необходимости, чтобы в каждом цикле был только один задний край. Обоснование: добавление ограничения разбиения ребер делает некоторые оптимизации немного проще.

Что я действительно хочу знать, так это то, стоит ли вообще иметь ограничение на разделение краев, но это суждение, поэтому для конкретного фактического вопроса:

Используют ли следующие хорошо известные компиляторы, которые используют SSA, ограничение по разбиению ребер?

  • 1010 * НКУ *
  • Go
  • LLVM
  • SpiderMonkey
  • V8

1 Ответ

0 голосов
/ 27 апреля 2018

Из расследования до настоящего времени:

Это говорит о том, что LLVM использует разделение по краям: http://llvm.org/doxygen/LoopSimplify_8cpp.html#a209bb6a782608a71aa8ec5075970caa3

Иди так же: https://golang.org/src/cmd/compile/internal/ssa/critical.go

...