mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-23 21:33:49 +00:00
Estimated hours taken: 1.5 Branches: main, release compiler/stack_opt.m: Run a simplication pass on procedures before doing liveness computation. This avoids the compiler throwing an exception for the test case below. tests/valid/stack_opt_simplify.m: tests/valid/Mmakefile: Add a test case.
23 lines
725 B
Mathematica
23 lines
725 B
Mathematica
% Regression test. `stack_opt_cell' used to call `detect_liveness_proc'
|
|
% without doing a simplification on the procedure beforehand:
|
|
%
|
|
% % mmc --optimize-saved-vars -C stack_opt_simplify.m
|
|
% stack_opt_simplify.m:023: In `bar':
|
|
% stack_opt_simplify.m:023: warning: determinism declaration could be tighter.
|
|
% stack_opt_simplify.m:023: Declared `semidet', inferred `erroneous'.
|
|
% Uncaught Mercury exception:
|
|
% Software Error: goal_info_get_post_births: no code_gen_info
|
|
|
|
:- module stack_opt_simplify.
|
|
:- interface.
|
|
:- pred foo is det.
|
|
|
|
:- implementation.
|
|
:- import_module require.
|
|
|
|
foo :- ( bar -> true ; true ).
|
|
|
|
% If declared as `is erroneous' then the abort doesn't occur.
|
|
:- pred bar is semidet.
|
|
bar :- error("bar").
|