Files
mercury/tests/valid/stack_opt_simplify.m
Peter Wang 38ae31cf88 Run a simplication pass on procedures before doing liveness
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.
2005-02-21 00:13:39 +00:00

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").