Size: a a a

Compiler Development

2021 April 18

LA

Liber Azerate in Compiler Development
Там написан макрос для определения. С такими вопросами добро пожаловать в чат по Си(ну или С++)
источник

M

Miroslav in Compiler Development
Мм, в LLVM IR тоже есть макросы, в которых тоже будет определен (или нет) злосчастный __STDC_NO_THREADS__? Пошел гуглить тогда
источник

LA

Liber Azerate in Compiler Development
В LLVM IR нет. При чём тут он? Макросы вообще часть фронтенда
источник

M

Miroslav in Compiler Development
Тогда как понять какие хедары доступны и какие функции можно декларировать в llvm ir? Это нужно понять до генерации самого llvm ir? И это понимание будет только под конкретную машину получается?
источник

LA

Liber Azerate in Compiler Development
Да, до генерации. Проверка на наличие таких хедеров – стандартное дело
источник

M

Miroslav in Compiler Development
Кажется, понял. Спасибо!
источник

H

Hedgar in Compiler Development
Помогите советом.
Транслирую YUL в LLVM - нужен инициализатор глобальной heap, чтобы указатель на начало был доступен в каждой функции модуля.
YUL делает lazy-allocation по 32 байта, начиная адресовать heap с 0.
Какой подход к хранению подобных данных использовать. Достаточно просто сохранить heap pointer в глобальную переменную в модуле?
источник

M

Miroslav in Compiler Development
Программно генерирую файлики .ll. В них использую функции стд (ну а как без них?). Когда их декларируешь, надо описать типы, типо вот
declare dso_local i64 @_time64(i64*)

Соответственно код, который программно генерирует файлики, должен программно как-то узнать за типы
источник

LA

Liber Azerate in Compiler Development
А типы вы узнаёте на этапе фронтенда
источник

M

Miroslav in Compiler Development
А как их узнать программно?
источник

LA

Liber Azerate in Compiler Development
Распарсить
источник

D

Danya in Compiler Development
Что значит "программно"?
источник

LA

Liber Azerate in Compiler Development
Есть какая-то грамматика языка, где-то там есть объявления, где-то у них есть типы
источник

D

Danya in Compiler Development
Слишком много "программно"
Не понятно что это значит
источник

LA

Liber Azerate in Compiler Development
Всё это парсится и генерируется нужный IR
источник

M

Miroslav in Compiler Development
Вот нужно как-то понять каким типом является time_t, и в зависимости от этого генерировать разный llvm ir
источник

M

Miroslav in Compiler Development
Речь же о том, как вызвать функцию сишной стд, а не о вызове функций самого языка
источник

LA

Liber Azerate in Compiler Development
Это код входной программы, из которого генерируется IR?
источник

M

Miroslav in Compiler Development
Типо да. Так, наверное, нагляднее
(только перепутал, ха)
источник

LA

Liber Azerate in Compiler Development
Ну вот этот код парсится и на этом этапе узнаются нужные типы
источник