185 похожих чатов

Привет всем! У меня как-то не удалось нагуглить, но можно ли

как-то к LLVM подключать свои плагины через clang?
Я просто хочу написать свои пассы, которые не связанны с оптимизациями, а скорее с некоторым анализом LLVM IR, но не хочу для этого использовать целую монорепу.
Я знаю что к clang'у можно писать свои плагины, но как делать это с LLVM — не нашёл.

И если это реально всё-таки, то ограничивается ли функционал плагина от написания в монорепу напрямую?

9 ответов

17 просмотров

Привет, лучше считать что Clang и LLVM независимы друг от друга. Плагины/линтеры/чекеры Clang основаны на работе с AST (и частично с препроцессором), и LLVM IR не трогают. Поэтому лучше смотреть, что предлагает сам LLVM.

Я так понимаю все, что вы хотите это out of tree pass в so либе, с дальнейшим подключением через параметры драйверу. И в самой доке LLVM этот кейс описан: от как создать, до как подключить и что послать: https://llvm.org/docs/CMake.html#developing-llvm-passes-out-of-source Ну и далее, как вариант : clang -Xclang -load -Xclang mypass.so

Danya🔥- Автор вопроса
Danya🔥- Автор вопроса
Danya🔥- Автор вопроса
alekum
Я так понимаю все, что вы хотите это out of tree p...

А из такого плагина можно влиять на LLVM'ные пассы? Например, запретить оптимизировать какую-нибудь функцию? И как контролировать до оптимизаций этот пасс будет работать или после?

Danya🔥
А из такого плагина можно влиять на LLVM'ные пассы...

Немного не понял, Что значит влиять? В вашем можете сделать, что «угодно». В других, логика уже зашита в имплементации. Как контролировать, там есть ряд опций на это, предлагаю посмотреть существующие пассы и работу PassManager. Если же вы хотите в принципе «пересобрать» пайплайн , то это тоже можно сделать у нового PM есть опция, которая в виде строки принимает инициализирует и тп нужные вам проходы

Danya🔥- Автор вопроса
alekum
Немного не понял, Что значит влиять? В вашем может...

Влиять — в смысле порядок выполнения стандартных пассов и моих пассов И запретить выполнять пасс внутри/на какой-то функции Например, если она помечена каким-то атрибутом

Danya🔥
Влиять — в смысле порядок выполнения стандартных п...

Если это ваш проход, то это тривиальная проверка атрибута функции при обработке. Если не ваш, велком менять исходный код.

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
9
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта