Skip to content

Commit

Permalink
FIXED/HALF: зацикливание оптимизатора при использовании -OA (#263)
Browse files Browse the repository at this point in the history
  • Loading branch information
Mazdaywik committed Jun 27, 2020
1 parent a011221 commit 27ce595
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion src/compiler/OptTree-Drive.ref
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,24 @@ $ENTRY OptTree-Drive-Prepare {

(s.OptDrive s.OptIntrinsic)
e.AST-B (DriveInfo e.DriveInfo) e.AST-E
= <UpdateDriveInfo s.OptDrive s.OptIntrinsic (e.DriveInfo) e.AST-B e.AST-E>;
= <UpdateDriveInfo s.OptDrive s.OptIntrinsic (e.DriveInfo) e.AST-B e.AST-E>

/*
TODO: УДАЛИТЬ ЭТОТ КОСТЫЛЬ!!!

Функция UpdateDriveInfo дублирует имена оптимизируемых функций,
из-за чего большой цикл «разметка-оптимизация-разметка» не завершается
(на каждой итерации в DriveInfo появляются новые дубликаты тех же имён).

Правильнее исправить функцию UpdateDriveInfo, однако она была обновлена
в ветке cstyler-intrinsic, которая ещё не объединена с master.
Если исправить логику в UpdateDriveInfo, то обнаружатся конфликты.

Поэтому вносим временный костыль, который будет удалён после слияния
cstyler-intrinsic и master.
*/
: (DriveInfo (e.Names) e.Functions) e.AST
= (DriveInfo (<Unique e.Names>) <Unique e.Functions>) e.AST;

(s.OptDrive s.OptIntrinsic) e.AST
= (/* no names */) /* no info */ : e.EmptyInfo
Expand Down

0 comments on commit 27ce595

Please sign in to comment.