diff options
author | Björn Gustavsson <[email protected]> | 2016-05-31 12:44:13 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2016-05-31 12:44:13 +0200 |
commit | 52f65fe8a1d4ccb31d2c38d1923ccb73a9059a92 (patch) | |
tree | 35903a83c15ea8ca9bb4b7b1fa75e6fc0ebdfc3f /lib/compiler/test/guard_SUITE.erl | |
parent | 0e40609c64538a58466de8cddf2a7f0aebaf65ef (diff) | |
parent | b1b27719d713c0e62d3242bbf1da0600ea0a651f (diff) | |
download | otp-52f65fe8a1d4ccb31d2c38d1923ccb73a9059a92.tar.gz otp-52f65fe8a1d4ccb31d2c38d1923ccb73a9059a92.tar.bz2 otp-52f65fe8a1d4ccb31d2c38d1923ccb73a9059a92.zip |
Merge branch 'bjorn/compiler/misc'
* bjorn/compiler/misc:
Eliminate unsafe use of Y registers
beam_validator: Add is_bitstring/1 as a safe BIF
beam_validator: Remove uncovered line
Teach beam_utils:is_pure_test/1 to handle is_bitstr and is_function2
beam_utils: Simplify handling of 'return' to eliminate uncovered line
beam_jump: Clean up handling of labels before func_info
beam_expect: Correctly handle blocks with multiple allocs
v3_codegen: Don't confuse beam_validator
v3_codegen: Correct code generation for an error/1 call in a guard
beam_receive: Don't crash when encountering nonsensical code
Diffstat (limited to 'lib/compiler/test/guard_SUITE.erl')
-rw-r--r-- | lib/compiler/test/guard_SUITE.erl | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/compiler/test/guard_SUITE.erl b/lib/compiler/test/guard_SUITE.erl index 83298e546e..6302f82f29 100644 --- a/lib/compiler/test/guard_SUITE.erl +++ b/lib/compiler/test/guard_SUITE.erl @@ -1835,6 +1835,8 @@ bad_guards(Config) when is_list(Config) -> fc(catch bad_guards_3(not_a_map, [x])), fc(catch bad_guards_3(42, [x])), + fc(catch bad_guards_4()), + ok. %% beam_bool used to produce GC BIF instructions whose @@ -1852,6 +1854,12 @@ bad_guards_2(M, [_]) when M#{a := 0, b => 0}, map_size(M) -> bad_guards_3(M, [_]) when is_map(M) andalso M#{a := 0, b => 0}, length(M) -> ok. +%% v3_codegen would generate a jump to the failure label, but +%% without initializing x(0). The code at the failure label expected +%% x(0) to be initialized. + +bad_guards_4() when not (error#{}); {not 0.0} -> freedom. + %% Building maps in a guard in a 'catch' would crash v3_codegen. guard_in_catch(_Config) -> |