2013-05-03 2 views
0

Я добавляю некоторые новые функции на cpp, я хочу написать пропуск компилятора для изменения некоторых исходных кодов cpp в соответствии с различными параметрами. (Я использую некоторую функцию gcc (cilk) поэтому я думаю, что это невозможно сделать с помощью libclang, clang не может распознать cilk). Есть ли какие-либо api в gcc, которые могут делать такие вещи?Как захватить параметры командной строки при вводе gcc-плагина

ответ

1

Текущий API плагина GCC не позволяет расширять препроцессор. Однако вы можете добавить встроенные, прагматические и функциональные или переменные атрибуты.

Вы можете использовать save_decoded_options и save_decoded_options_count от toplev.h, чтобы получить аргументы программы компилятора. Но плагины ожидают -fplugin-foo-arg- аргументов программы (для плагина foo ...)

Зачем вам это нужно?

Рассматривали ли вы расширение GCC с помощью MELT (язык для конкретного домена для расширения GCC)?

+0

спасибо. так как я не могу изменить исходный код cpp, модификация AST может быть хорошей идеей. Я хочу добавить некоторые функции и заменить некоторые вызовы функций. – WhatisThat

+0

Кстати, вы знаете, как преобразовать узел gcc ast tree в исходный код? Спасибо. – WhatisThat

+1

Вы должны определить, что вы подразумеваете под «преобразованием GCC AST» в «исходный код». (Это невозможно, потому что Gimple больше, чем просто C, например, потому что он обрабатывает исключения и OpenMP). –

Смежные вопросы