Files
mercury/tests/hard_coded/dense_lookup_switch4.exp
Peter Wang 95f59cf7c9 Fix lookup switches on subtype enums.
compiler/switch_util.m:
    Rename dont_need_bit_vec_check variant of need_bit_vec_check to
    dont_need_bit_vec_check_no_gaps.

    Add dont_need_bit_vec_check_with_gaps (see below).

    Make type_range return the correct min and max values used by a
    subtype enum type. For now, it fails unless the range of values
    is contiguous.

    Make find_int_lookup_switch_params use the min and max values for a
    type returned by type_range, not assuming 0 to the max value.

    Make find_int_lookup_switch_params return
    dont_need_bit_vec_check_with_gaps when a bit vector check is not
    required before a table lookup, yet the table is expected to contain
    dummy rows. This is the case for a cannot_fail switch on a subtype
    enum type type, where the subtype does not use some values between
    the min and max values.

compiler/dense_switch.m:
    Make tagged_case_list_is_dense_switch use the min and max values for
    a type returned by type_range, not assuming 0 to the max value.

compiler/ml_lookup_switch.m:
    Expect the generated lookup table to contain dummy rows or not
    depending on dont_need_bit_vec_check_{with_gaps,no_gaps}.

    Conform to change to need_bit_vec_check.

compiler/lookup_switch.m:
compiler/ml_string_switch.m:
    Conform to change to need_bit_vec_check.

tests/hard_coded/Mmakefile:
tests/hard_coded/dense_lookup_switch4.exp:
tests/hard_coded/dense_lookup_switch4.m:
tests/hard_coded/dense_lookup_switch_non2.exp:
tests/hard_coded/dense_lookup_switch_non2.m:
    Add test cases.
2021-04-09 17:41:23 +10:00

8 lines
49 B
Plaintext

b: 2 -
c: 3 c
d: 4 d
e: 5 -
f: 6 f
g: 7 g
h: 8 -