Size: a a a

Compiler Development

2020 February 29

Т8

Т-34 85 in Compiler Development
Alexander Zaitsev
не в этом чате, пожалуйста
Я это к тому, что если программист решит не выполнять best practices и пр., то это нормально, что где-то выстрелит в ногу. Поэтому добавлять фичи в плюсы вполне себе можно, главное, чтобы это можно было безопасно использовать при соблюдении некоторых правил
источник

AK

Andrei Kurosh in Compiler Development
Т-34 85
Я это к тому, что если программист решит не выполнять best practices и пр., то это нормально, что где-то выстрелит в ногу. Поэтому добавлять фичи в плюсы вполне себе можно, главное, чтобы это можно было безопасно использовать при соблюдении некоторых правил
«You’re holding it wrong», это уже было :)
источник

Т8

Т-34 85 in Compiler Development
Andrei Kurosh
«You’re holding it wrong», это уже было :)
если не превратить в минное поле, то почему нет?
источник

PS

Peter Sovietov in Compiler Development
Ох, народу просто скучно, поскольку все компиляторы давно написаны :) Давайте тогда я вам задачку подкину из области анализа жизни переменных :)
источник

FO

FORTRAN ONE LOVE in Compiler Development
Peter Sovietov
Ох, народу просто скучно, поскольку все компиляторы давно написаны :) Давайте тогда я вам задачку подкину из области анализа жизни переменных :)
можете пойти фиксить баги в gfortran
источник

PS

Peter Sovietov in Compiler Development
Есть очень красивая формулировка liveness-задачи в терминах языка Datalog.
Один уважаемый мной специалист в области PLT в своих лекциях представил код на Datalog для решения задачи.
Не уверен, что он проверял этот код. А вот у меня интерпретатор Даталога есть по рукой. И я попробовал -- а оно толком не работает.
Пришлось разбираться, исправлять. Теперь предлагаю вам обоснованно указать, какой из двух приведенных вариантов корректен :)

1)
live(X, I) <- use(X, I).
live(X, I) <- live(X, J), succ(I, J), ~def(X, I).

2)
live(X, I) <- use(X, I).
live(X, I) <- live(X, J), succ(J, I), ~def(X, I).
источник

EM

Evgenii Moiseenko in Compiler Development
Peter Sovietov
Есть очень красивая формулировка liveness-задачи в терминах языка Datalog.
Один уважаемый мной специалист в области PLT в своих лекциях представил код на Datalog для решения задачи.
Не уверен, что он проверял этот код. А вот у меня интерпретатор Даталога есть по рукой. И я попробовал -- а оно толком не работает.
Пришлось разбираться, исправлять. Теперь предлагаю вам обоснованно указать, какой из двух приведенных вариантов корректен :)

1)
live(X, I) <- use(X, I).
live(X, I) <- live(X, J), succ(I, J), ~def(X, I).

2)
live(X, I) <- use(X, I).
live(X, I) <- live(X, J), succ(J, I), ~def(X, I).
My guess - первая версия правильная
источник

EM

Evgenii Moiseenko in Compiler Development
Так как live переменные надо в "обратную сторону" считать
источник

EM

Evgenii Moiseenko in Compiler Development
Правильный ответ и разбор задачи будет?)
источник

PS

Peter Sovietov in Compiler Development
Будет :) Я еще покажу тот самый фрагмент из лекции:
источник

PS

Peter Sovietov in Compiler Development
Evgenii Moiseenko
Правильный ответ и разбор задачи будет?)
Что можете сказать о приведенном фрагменте? :)
источник
2020 March 01

EM

Evgenii Moiseenko in Compiler Development
Peter Sovietov
Что можете сказать о приведенном фрагменте? :)
Ну он вроде как соответствует вашей второй версии
источник

PS

Peter Sovietov in Compiler Development
Evgenii Moiseenko
Ну он вроде как соответствует вашей второй версии
Да, Вы все правильно решили и разъяснили! Нам нужен вариант "переменная "жива" на позиции I если она "жива" на позиции I+1 ...".
источник

PS

Peter Sovietov in Compiler Development
Я так и знал, что решит эту задачу кто-нибудь из "молчунов" ;)
источник

EM

Evgenii Moiseenko in Compiler Development
Peter Sovietov
Да, Вы все правильно решили и разъяснили! Нам нужен вариант "переменная "жива" на позиции I если она "жива" на позиции I+1 ...".
Хоть как-то знание даталога в жизни пригодилось 😅
источник

EM

Evgenii Moiseenko in Compiler Development
Peter Sovietov
Есть очень красивая формулировка liveness-задачи в терминах языка Datalog.
Один уважаемый мной специалист в области PLT в своих лекциях представил код на Datalog для решения задачи.
Не уверен, что он проверял этот код. А вот у меня интерпретатор Даталога есть по рукой. И я попробовал -- а оно толком не работает.
Пришлось разбираться, исправлять. Теперь предлагаю вам обоснованно указать, какой из двух приведенных вариантов корректен :)

1)
live(X, I) <- use(X, I).
live(X, I) <- live(X, J), succ(I, J), ~def(X, I).

2)
live(X, I) <- use(X, I).
live(X, I) <- live(X, J), succ(J, I), ~def(X, I).
А вы каким даталогом пользуетесь? Самописный?
источник

PS

Peter Sovietov in Compiler Development
Evgenii Moiseenko
А вы каким даталогом пользуетесь? Самописный?
Нет, я пользуюсь встроенным в Z3.
источник

EM

Evgenii Moiseenko in Compiler Development
👍👍👍
источник

EM

Evgenii Moiseenko in Compiler Development
Я хочу сесть и написать свой, чтобы разобраться уже как magic sets работают, но все времени нет (
источник

PS

Peter Sovietov in Compiler Development
Я тоже бы хотел. В Z3 очень неудобно получать результаты fixedpoint-решателя. Возвращается целое AST-дерево, которое приходится разбирать.
источник