Как узнать, какие все проходы выполняются в любом из режимов -O1 / 2/3
Вся логика c, связанная с оптимизацией построения конвейера, сконцентрирована в PassBuilder. cpp. Там вы можете увидеть прямые условия для уровней оптимизации.
Есть ли способ удалить некоторые из этих проходов и добавить какой-то другой заказной проход
Конечно, просто добавьте его в этот исходный файл.
Кроме того, существует ли какая-либо зависимость между проходами, о которых необходимо позаботиться
Разработчики LLVM пытаются сделать все проходы независимыми (и они, по большей части, насколько я знаю). Если вы хотите использовать информацию из некоторого прохода, этот проход должен быть зарегистрирован как Анализ (т.е. проход, который не преобразует код, но собирает информацию). Вы можете прочитать больше о зависимости анализа в здесь .
Я надеюсь, что это ответ на ваш вопрос!