Commit Graph

2 Commits

Author SHA1 Message Date
Zoltan Somogyi
fdd141bf77 Clean up the tests in the other test directories.
tests/invalid/*.{m,err_exp}:
tests/misc_tests/*.m:
tests/mmc_make/*.m:
tests/par_conj/*.m:
tests/purity/*.m:
tests/stm/*.m:
tests/string_format/*.m:
tests/structure_reuse/*.m:
tests/submodules/*.m:
tests/tabling/*.m:
tests/term/*.m:
tests/trailing/*.m:
tests/typeclasses/*.m:
tests/valid/*.m:
tests/warnings/*.{m,exp}:
    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 tests
    that check compiler error messages, expect the new line numbers.

browser/cterm.m:
browser/tree234_cc.m:
    Import only one module per line.

tests/hard_coded/boyer.m:
    Fix something I missed.
2015-02-16 12:32:18 +11:00
Paul Bone
dde8f920eb Fix bug #309
Make existential casts from dummy types assign the value NULL rather than
reading a bogus value.

Bug #309 occurs when a dummy type is existentially quantified and the
resulting existentially typed value needs to get placed on the stack for
some reason.  The stack slot chosen in these cases has a negative stack slot
number, as it was allocated for the dummy typed value, this can cause the
code generator to crash.

We fix this by transforming an existential cast from a dummy type to an
assignment of the value zero during LLDS code generation.  Normally these
casts are transformed to copies from the old variable's rval into the new
variable's lval.  This fixes the problem because a constant such as zero
does not need a stack slot.  Using zero rather than an arbitrary value (that
may have been left in a register) may also minimise the amount of pointers
kept to memory that could be freed.

compiler/call_gen.m:
    As above.

tests/valid/exists_dummy.m:
tests/valid/Mmakefile:
    Added a test case for bug #309
2014-01-28 14:40:35 +11:00