Использование SSA с разделением по краям

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

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

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

  • ССАГПЗ
  • Go
  • LLVM
  • ПаукОбезьяна
  • V8

person rwallace    schedule 27.04.2018    source источник


Ответы (1)


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

Это говорит о том, что в LLVM используется разделение по краям: a209bb6a782608a71aa8ec5075970caa3

Аналогично: https://golang.org/src/cmd/compile/internal/ssa/critical.go

person rwallace    schedule 27.04.2018