Подсказки для компилятора с помощью llvm - PullRequest
4 голосов
/ 13 февраля 2012

Я работаю над инструментом, который принимает LLVM IR и модифицирует его. Я заинтересован в том, чтобы позволить программисту давать подсказки компилятору. Например, он может дать подсказку, что конкретный цикл требует значительных вычислительных ресурсов. Для этого мне в голову приходит прагма. Итак, мой вопрос: как мы можем заставить прагмы работать? Могу ли я получить информацию о прагме там в IR LLVM? Какие есть варианты для такого рода задач?

1 Ответ

5 голосов
/ 13 февраля 2012

Этот вопрос может относиться к нескольким различным вещам:

  • Если вы хотите понять, как реализовать pragma, посмотрите, как это делает Clang. То есть на что переводятся различные pragma директивы.
  • Если вы хотите понять существующие подсказки (например, inlinehint, byval и т. Д.), Посмотрите на атрибуты - например, Атрибуты функции .
  • Если вы хотите что-то более гибкое и запатентованное, вы можете использовать метаданные. Сам LLVM использует его для различных целей, но в вашем собственном компиляторе вы очень свободны в том, что вы можете с ним делать. Подсказки для компилятора являются одним из возможных приложений.
...