Skip to content

Commit

Permalink
Опция -OA маркирует ВСЕ функции как специализируемые (#314)
Browse files Browse the repository at this point in the history
Выяснилось, что на тесте opt-pattern5.sref началось нелинейное
(квадратичное) потребление памяти, из-за чего компилятор стал
вылетать по лимитам. Два предыдущих коммита были попытками обуздать
эту нелинейность, частично успешными. Нелинейность была побеждена
путём принудительного обобщения аргумента функции OutlineConstants
этого теста.

Ранее проблема не выявлялась, т.к. функции в тесте opt-pattern5.sref
не маркировались автоматически для специализации.

Для читабельности коммита в OptTree-AutoMarkup-Spec.ref был добавлен
новый код без удаления старого. Старый будет удалён в следующем
коммите.

Обнаружен случайный тест, требующий более 100 000 000 шагов (конкретно,
за 111 622 480 в режиме -OADS). Тест был добавлен как сохранённый.
В дальнейшем, если удастся оптимизировать компилятор и тест будет
проходить быстрее, порог можно поднять, а тест можно будет удалить.
  • Loading branch information
Mazdaywik committed Aug 15, 2021
1 parent cdbc72d commit 41ce59e
Show file tree
Hide file tree
Showing 4 changed files with 440 additions and 1 deletion.
4 changes: 4 additions & 0 deletions autotests/opt-pattern5.sref
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
$ENTRY Go {
= <RESULT
<OutlineConstants
<gen_e__>
(0 )
(0 )
(0 )
Expand Down Expand Up @@ -52,10 +53,13 @@ $ENTRY Go {
(#LABEL 145 )
(#CmdProfilerStopSentence )
(#CmdEmpty #AlgLeft 2 )
<gen_e__>
>
>;
}

gen_e__ { e.arg = e.arg; }

RESULT {
(#CmdFuncArray 6
('DoGetFileName' )
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
memory-limit = 5000000
step-limit = 100000000
step-limit = 200000000
idents-limit = 5000
enable-debugger = false
dump-file = __dump.txt
Loading

0 comments on commit 41ce59e

Please sign in to comment.