Описание тега 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