mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-22 12:53:47 +00:00
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.
69 lines
562 B
Plaintext
69 lines
562 B
Plaintext
p1 a ->
|
|
p1_one f1 1.1
|
|
end
|
|
|
|
p1 b ->
|
|
p1_two f2 2.2
|
|
end
|
|
|
|
p1 c ->
|
|
p1_three f1 3.3
|
|
end
|
|
|
|
p1 d ->
|
|
p1_four f1 4.4
|
|
end
|
|
|
|
p1 e ->
|
|
p1_five f2 5.5
|
|
p1_five2 f3(5) 55.5
|
|
end
|
|
|
|
p1 f ->
|
|
p1_six f4("hex") 6.6
|
|
end
|
|
|
|
p1 g ->
|
|
p1_seven f5(77.7) 7.7
|
|
p1_seven2 f1 777.7
|
|
p1_seven3 f2 7777.7
|
|
end
|
|
|
|
p1 h ->
|
|
p1_eight f1 8.0
|
|
end
|
|
|
|
p2 a ->
|
|
p2_one f1 1.1
|
|
end
|
|
|
|
p2 b ->
|
|
end
|
|
|
|
p2 c ->
|
|
p2_three f1 3.3
|
|
end
|
|
|
|
p2 d ->
|
|
p2_four f1 4.4
|
|
end
|
|
|
|
p2 e ->
|
|
p2_five f2 5.5
|
|
p2_five2 f3(5) 55.5
|
|
end
|
|
|
|
p2 f ->
|
|
p2_six f4("hex") 6.6
|
|
end
|
|
|
|
p2 g ->
|
|
p2_seven f5(77.7) 7.7
|
|
p2_seven2 f1 777.7
|
|
p2_seven3 f2 7777.7
|
|
end
|
|
|
|
p2 h ->
|
|
end
|
|
|