Тег

LLVM

1 материалов

GCC выбирает таблицу переходов вместо дерева сравнений, считая сравнения, а не метки (xoranth.net)

В посте разобран порядок преобразований GCC: сначала битовые тесты, затем таблицы переходов, затем бинарное дерево. Правило скорости разрешает таблицу, которая в до 8 раз больше числа сравнений, которые она заменяет.

Комментатор, который пишет компиляторы, говорит, что GCC и Clang до сих пор не умеют идеальное хеширование для больших разреженных switch, а один читатель объясняет, почему пропущенное деление на восемь на самом деле правильно.