Описание тега gimple

GIMPLE - это язык промежуточных представлений, используемый GCC.
0 ответов

Вывод нового вывода интерфейса gcc с помощью -fdump-tree-gimple

Я попытался сбросить gimple, используя флаг -fdump-tree-gimple, чтобы увидеть общее представление встроенных узлов из нового внешнего интерфейса gcc в формате gimple. До сих пор я все еще не знаю, как передать этот флаг, чтобы я мог видеть файлы gim…
27 май '18 в 12:15
1 ответ

Как зарегистрировать GIMPLE_PASS?

Я пытаюсь сделать простой пример плагина, как это: #include "gcc-plugin.h" #include "tree.h" #include "gimple.h" #include "tree-pass.h" #include <stdio.h> extern void test(void*gcc_data, void*b) { printf("Hellow world\n"); } extern int plugin_…
02 сен '14 в 14:41
1 ответ

Зарегистрируйте пропуск GIMPLE в gcc 5.1.0

Привет, я делаю плагины gcc для gcc 4.8 и 4.9, но у меня проблема в gcc 5.1.0. Проблема в том, что я не могу зарегистрировать пропуск GIMPLE в этой новой версии gcc. Вот пример кода плагина: int plugin_is_GPL_compatible; static bool gateCheck(void) …
15 май '15 в 17:48
2 ответа

Почему меньше чем выражение преобразуется в меньше или равно выражению в gcc

Я работаю над оптимизацией кода и прохожу внутренности gcc. Я написал простое выражение в своей программе, проверил простое представление этого выражения и застрял, почему gcc сделал это. Скажи, что у меня есть выражение: if(i < 9) тогда в предст…
11 июл '12 в 12:51
2 ответа

Как я могу сбросить ВСЕ Gimple деревья?

Мне нужно сбросить все деревья Gimple (вид -fdump-tree-что угодно). Я создал плагин для этой цели, но я не уверен, как мне получить доступ к деревьям Gimple. Плагин подключен к GIMPLE_PASS: static struct opt_pass my_pass = { .type = GIMPLE_PASS, ...…
06 окт '14 в 18:14
1 ответ

Невозможно определить оператор /[ex] из gcc -fdump-tree-gimple

При компиляции C++ с опцией -fdump-tree-gimple (GCC 4.6.1) я получаю код, в котором есть следующая функция: std::_Vector_base<_Tp, _Alloc>::~_Vector_base() [with _Tp = int, _Alloc = std::allocator<int>] (struct _Vector_base * const this)…
02 фев '12 в 02:35
2 ответа

Получить количество функций файла C++, скомпилированных с помощью плагина gcc

Я создаю проход, используя плагины GCC, это мой проход: static const struct pass_data calls_printer_pass_data = { .type = GIMPLE_PASS, .name = "calls_printer", .optinfo_flags = OPTGROUP_NONE, .has_gate = false, .has_execute = true, .tv_id = TV_NONE,…
02 апр '15 в 15:12
0 ответов

Значение переменной в формате GCC SSA

Я хочу посмотреть на формат SSA, который использует GCC, поэтому я попробовал следующую простую тестовую программу: #include <stdio.h> int main(int argc, char **argv) { int n = 0; int i; for (i = 0; i < 13; i++) n += argc; printf("%d\n", n)…
29 май '18 в 08:30
3 ответа

Игра с промежуточным форматом gcc

Согласно этой статье, gcc использует несколько промежуточных форматов перед генерацией кода. Я читал, что в формате GIMPLE используется трехадресный код, который, кажется, является самым простым промежуточным языком для использования. Но мне нужно б…
01 фев '12 в 16:26
1 ответ

Вставка вызовов функций в gimple

У меня проблемы с выяснением, как сделать следующее. У меня есть следующий код: test.cpp #include <stdio.h> void function(void) {printf("Hellow ");} int main(void) { printf("World\n"); return 0; } И я хочу преобразовать это в следующее: #inclu…
10 сен '14 в 21:20
1 ответ

Как анализировать внутреннее представление GCC, например, GIMPLE, RTL

Я сгенерировал выходные файлы с помощью команды -fdump-tree-all а также -fdump-rtl-all и я получил много файлов дампа. Я читал, что коды в GIMPLE имеют синтаксис псевдо-C, а файлы дампа RTL слишком низкого уровня, чтобы их можно было понять. Есть ли…
28 июл '15 в 03:43
1 ответ

Может ли GCC скомпилировать GIMPLE?

GIMPLE является одним из внутренних представлений в системе GCC. Можно выгрузить GIMPLE или любое другое внутреннее представление через аргумент -fdump-* compiler. Но есть ли способ компилировать дамп GIMPLE или любое другое представление? Похоже, ч…
09 фев '14 в 14:51
2 ответа

Вывести имя вызываемой функции с помощью плагина GCC

Мне нужно напечатать название вызываемых функций программы, используя gcc pluginsдля этого я создал пропуск, который будет назван после ssa passЯ уже инициировал плагин и могу зациклить его утверждения, используя gimple_stmt_iterator: int read_calls…
30 мар '15 в 12:53
0 ответов

Как скомпилировать код C/C++ в трехадресный код, написанный кодом C/C++?

Я хочу скомпилировать код C/C++ в трехадресный код, который также является допустимым кодом C/C++. Я делаю эксперимент, в котором я должен проанализировать код трех адресов и добавить несколько кодов C в сгенерированный код трех адресов. Модифициров…
24 дек '14 в 04:36
1 ответ

Как сохранить дерево в промежуточном представлении gcc? Является ли это возможным?

Я хочу сохранить дерево (в частности, тип дерева) в файле в двоичном виде, и мне нужно загрузить это дерево в другой модуль компиляции. Например: У меня есть main.c с 2 функциями: myTypeStruct getWhatever(){ myTypeStruct my; ... doSomething ... retu…
15 июн '15 в 15:46
0 ответов

Как создать дамп дерева приложений Go, скомпилированных gccgo

Просто для простоты я бы назвал gcc как весь набор компиляторов, а gccgo как весь набор компиляторов go, который включает в себя gcc backend. Когда мне нужно будет ссылаться, в частности, на интерфейс, я использую интерфейс gccgo/gcc, который являет…
26 май '18 в 02:36
0 ответов

Как найти бесплатную операцию в gimple?

Сейчас я изменяю интерфейс GCC.И я хочу проверить файл GIMPLE с FOR_EACH_BB_FN и обнаружить "свободную" операцию, которая используется для освобождения выделения памяти в C.Вот мой код: basic_block bb; gimple_stmt_iterator gsi; FOR_EACH_BB_FN(bb,cfu…
30 окт '18 в 02:27
1 ответ

Используйте плагины gcc для изменения порядка объявления переменных

Я знаю, что это очень трудно сделать, и что мне следует этого избегать, но у меня есть свои причины для этого. Я хочу изменить порядок некоторых объявлений полей во время компиляции, например: class A { char c; int i; } должен обратиться к: class A …
07 апр '15 в 09:57
0 ответов

Где определение x_n(D) в GIMPLE?

Я сгенерировал код GIMPLE из кода C с помощью -fdump-tree-optimized GCC и обнаружил, что существует переменная SSA, которая не имеет своего определения: f (int cond) { int _1; <bb 2> [100.00%]: if (cond_2(D) != 0) goto <bb 4>; [46.00%] e…
15 ноя '18 в 17:23
0 ответов

Нахождение аргументов вызова функции gimple

gimple_call_num_args(stmt) на мое заявление дает 2 но get_name(gimple_call_arg(stmt,1)) нулевой. Любые идеи о том, как получить аргументы?
23 мар '19 в 11:57