tests/accumulator/*.m:
tests/analysis_*/*.m:
tests/benchmarks*/*.m:
tests/debugger*/*.{m,exp,inp}:
tests/declarative_debugger*/*.{m,exp,inp}:
tests/dppd*/*.m:
tests/exceptions*/*.m:
tests/general*/*.m:
tests/grade_subdirs*/*.m:
tests/hard_coded*/*.m:
Make these tests use four-space indentation, and ensure that
each module is imported on its own line. (I intend to use the latter
to figure out which subdirectories' tests can be executed in parallel.)
These changes usually move code to different lines. For the debugger tests,
specify the new line numbers in .inp files and expect them in .exp files.
Branches: main
Make it possible to store double-precision `float' constructor arguments in
unboxed form, in low-level C grades on 32-bit platforms, i.e. `float' (and
equivalent) arguments may occupy two machine words. However, until we implement
float registers, this does more harm than good so it remains disabled.
compiler/llds.m:
Add a type `cell_arg' to hold information about an argument of a cell
being constructed.
Change `heap_ref' so that we can refer to a pointer with an unknown
tag.
compiler/unify_gen.m:
Use the `cell_arg' type to simplify code related to generating
constructions.
Handle double word arguments in constructions and deconstructions.
Update enumeration packing code to account for the presence of double
width arguments and the `cell_arg' type.
Take double width arguments into account when generating ground terms.
compiler/code_info.m:
Extend `assign_field_lval_expr_to_var' to work for expressions
involving multiple field lvals of the same variable.
Make `assign_cell_to_var' conform to changes.
compiler/code_util.m:
Add a predicate to calculate the size of a cell given its cell_args.
compiler/var_locn.m:
Conform to the use of the `cell_arg' type and the presense of double
width arguments.
Calculate cell size correctly in places.
Move sanity checking from `var_locn_assign_field_lval_expr_to_var'
to `code_info.assign_field_lval_expr_to_var'.
compiler/global_data.m:
Make `rval_type_as_arg' take into account the width of the argument.
Conform to changes.
compiler/c_util.m:
Add a new binop category. Unlike the existing macro_binop category,
the arguments of macros in this category cannot all be assumed to be
of integral types.
compiler/llds_out_data.m:
compiler/llds_out_instr.m:
Output calls to the macros `MR_float_word_bits', `MR_float_from_dword'
and `MR_float_from_dword_ptr' which were introduced previously.
When a `heap_ref' has an unknown tag, make the generated code mask off
the tag bits.
compiler/lco.m:
Disable the optimisation when float arguments are present, on the basis
of whether Mercury floats are wider than a machine word. The comments
about when floats are stored in boxed form are out of date.
compiler/arg_pack.m:
Rename a predicate.
compiler/make_hlds_passes.m:
Update a comment.
compiler/disj_gen.m:
compiler/exprn_aux.m:
compiler/global_data.m:
compiler/llds_to_x86_64.m:
compiler/lookup_switch.m:
compiler/mlds_to_c.m:
compiler/opt_debug.m:
compiler/opt_util.m:
compiler/stack_layout.m:
compiler/string_switch.m:
Conform to changes.
runtime/mercury_float.h:
Add a cast to `MR_float_word_bits' to avoid a gcc error.
tests/hard_coded/Mercury.options:
tests/hard_coded/Mmakefile:
tests/hard_coded/heap_ref_mask_tag.exp:
tests/hard_coded/heap_ref_mask_tag.m:
tests/hard_coded/reuse_double.exp:
tests/hard_coded/reuse_double.m:
Add test cases.
tests/hard_coded/lookup_disj.exp:
tests/hard_coded/lookup_disj.m:
Extend existing test case.