Size: a a a

Compiler Development

2020 March 11

M

MaxGraey in Compiler Development
Antony Polukhin
А на каких значениях будет различаться результат?

Кажется что в стандарте C был отдельный ад о преобразованиях float к int и возможно что оптимизация позволительна
Тут самое забавно то, что GCC компилирует и отрабатывает все тесты=)
источник

KR

K R in Compiler Development
А шланг хоть возмущается?
источник

M

MaxGraey in Compiler Development
K R
А шланг хоть возмущается?
Нет. В том то и дело
источник

M

MaxGraey in Compiler Development
MaxGraey
Нет. В том то и дело
Даже с Wall + pedantic

https://godbolt.org/z/QQwwu-
источник

KR

K R in Compiler Development
Ну это legitimate issue.
источник

KR

K R in Compiler Development
Раз он на

unsigned int z = -1;

ругается.
источник

AZ

Alexander Zaitsev in Compiler Development
EuroLLVM 2020 отменили, кстати :(
источник

IR

Ilya Rezvov in Compiler Development
fpure то не отменят?
источник

AT

Alexander Tchitchigin in Compiler Development
Ilya Rezvov
fpure то не отменят?
Увы. 😔
источник

AT

Alexander Tchitchigin in Compiler Development
Как минимум - переносится на неопределенный срок.
источник

SE

Stanislav Ershov in Compiler Development
Alexander Zaitsev
EuroLLVM 2020 отменили, кстати :(
все отменяют
источник

IR

Ilya Rezvov in Compiler Development
Alexander Tchitchigin
Как минимум - переносится на неопределенный срок.
блин, я из-за неё отпуск на неделю сократил, а оно вон как
источник

IR

Ilya Rezvov in Compiler Development
где-то был уже официальный анонс этого?
источник

AT

Alexander Tchitchigin in Compiler Development
Ilya Rezvov
где-то был уже официальный анонс этого?
Вроде нет ещё, кажись, завтра будет.
источник

VM

Victor Miasnikov in Compiler Development
Alexandr Zamaraev
Вроде Оберон как раз что-то такое делал. :)
Oberon? Странно: всё семейство компиляторы.

P.S. А тематикой хранения и передачи данных активно занимались в экосистеме Modula-3.

См. Obliq и т.д.
источник

VM

Victor Miasnikov in Compiler Development
K R
И вообще, в ieee 754 у float 24 байта => реобразование целых > 2^24 будет с потерей точности.

Соответственно, нужно как-то аккуратно считать макс целое, представимое floatом

Это INT_MAX -2^8 (один ulp). И, соответственно, минимальное -INT_MIN + ulp
А техника а-ля double-double не решит ли вопрос раз и навсегда?

Только float-float ( мантиса 23+24 бита)
источник

KR

K R in Compiler Development
Victor Miasnikov
А техника а-ля double-double не решит ли вопрос раз и навсегда?

Только float-float ( мантиса 23+24 бита)
На это есть же long и long long.
источник

M

MaxGraey in Compiler Development
Да уже все решили. Проблема была в том, что все обмазано макросами + GCC справлялся с тестами а Clang нет. Убрали просто все UB
источник

VM

Victor Miasnikov in Compiler Development
MaxGraey
Да уже все решили. Проблема была в том, что все обмазано макросами + GCC справлялся с тестами а Clang нет. Убрали просто все UB
Например, в Oberon планировалось,  чтобы целые без потери точности "помещались" в действительные числа.

IMHO, double-double "решает вопрос"
источник
2020 March 12

AT

Alexey Tkachenko in Compiler Development
Александр Вольнов
Да, я почти с самого начала задумывал сделать серебряную пулю.
Вообще, начиналось всё ещё несколько лет назад с того, что я писал свой игровой движок и пытался найти существующий формат моделей, который позволит напрямую прочитать данные из файла и закинуть в GPU как есть, без обработки. Но оказалось, что все форматы были либо текстовые, либо очень ограниченные и требующие обработки.
Я стал придумывать свой формат, чтобы в заголовке можно было описать типы вершин, а дальше шли сами данные в соответствии с заголовком. Потом стал обобщать, чтобы можно было хранить модели из нескольких мешей. Потом обнаружил. что получившийся формат почти подойдёт и для хранения текстур, решил его ещё немного обобщить. Так как заголовок стал довольно сложным для описания его словами и таблицами, я придумал текстовый способ его описания, который и стал основой моего языка.
Потом подумал, а что если у кого-то GPU не поддерживает нужный формат, и решил, что тогда загрузчик должен его как-то сконвертировать перед передачей в GPU. Я в итоге так и не смог остановиться, обобщал и развивал эту идею всё больше и больше, чтобы она могла захватить как можно больше юзкейсов, с которыми мне приходилось сталкиваться, пока не получил то, о чём тут пишу.
Закон Голла

   Работающая сложная система обязательно произошла от работавшей простой системы. Сложная система, разработанная с нуля, никогда не работает, и её невозможно исправить так, чтобы она заработала. Нужно начать заново, с простой работающей системы.
источник