aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/test/bs_match_SUITE.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2016-09-29 12:17:58 +0200
committerBjörn Gustavsson <[email protected]>2016-09-29 12:17:58 +0200
commit3651c6bb09319bd4e87892dc9ae0e6620a5a3e8d (patch)
treed1e312ba372e578f8adb0be5c98281df68c61abb /lib/compiler/test/bs_match_SUITE.erl
parent81082ce34fcaa97b0ef66a5e445fdbf2e3b9644c (diff)
parent05130e485558919344584f9bbfa057efdca94c3d (diff)
downloadotp-3651c6bb09319bd4e87892dc9ae0e6620a5a3e8d.tar.gz
otp-3651c6bb09319bd4e87892dc9ae0e6620a5a3e8d.tar.bz2
otp-3651c6bb09319bd4e87892dc9ae0e6620a5a3e8d.zip
Merge branch 'bjorn/compiler/misc'
* bjorn/compiler/misc: sys_core_fold: Run optimizations to a fixpoint sys_core_fold: Improve case optimization sys_core_fold: Correct scope verification code core_pp: Correct printing of map updates Simplify handling of internal BIFs v3_life: Eliminate special handling of guards Simplify beam_utils bs_match_SUITE: Add a test case for beam_utils bif_SUITE: Cover the remaining uncovered lines erl_bifs: Remove error_logger:warning_map/0 as a safe BIF beam_validator: Correct reporting of y register number beam_jump: Don't try to handle a label at the very end beam_jump: Simplify eliminate_fallthroughs/2 beam_listing: Remove support for listing sys_pre_expand format
Diffstat (limited to 'lib/compiler/test/bs_match_SUITE.erl')
-rw-r--r--lib/compiler/test/bs_match_SUITE.erl25
1 files changed, 23 insertions, 2 deletions
diff --git a/lib/compiler/test/bs_match_SUITE.erl b/lib/compiler/test/bs_match_SUITE.erl
index 224abf6c29..f8af070c44 100644
--- a/lib/compiler/test/bs_match_SUITE.erl
+++ b/lib/compiler/test/bs_match_SUITE.erl
@@ -38,7 +38,8 @@
no_partition/1,calling_a_binary/1,binary_in_map/1,
match_string_opt/1,select_on_integer/1,
map_and_binary/1,unsafe_branch_caching/1,
- bad_literals/1,good_literals/1,constant_propagation/1]).
+ bad_literals/1,good_literals/1,constant_propagation/1,
+ parse_xml/1]).
-export([coverage_id/1,coverage_external_ignore/2]).
@@ -69,7 +70,7 @@ groups() ->
no_partition,calling_a_binary,binary_in_map,
match_string_opt,select_on_integer,
map_and_binary,unsafe_branch_caching,
- bad_literals,good_literals,constant_propagation]}].
+ bad_literals,good_literals,constant_propagation,parse_xml]}].
init_per_suite(Config) ->
@@ -1451,6 +1452,26 @@ constant_propagation_c() ->
X
end.
+parse_xml(_Config) ->
+ <<"<?xmlX">> = do_parse_xml(<<"<?xmlX">>),
+ <<" ">> = do_parse_xml(<<"<?xml ">>),
+ ok.
+
+do_parse_xml(<<"<?xml"/utf8,Rest/binary>> = Bytes) ->
+ %% Delayed sub-binary creation is not safe. A buggy (development)
+ %% version of check_liveness_everywhere() in beam_utils would turn
+ %% on the optimization.
+ Rest1 = case is_next_char_whitespace(Rest) of
+ false ->
+ Bytes;
+ true ->
+ id(Rest)
+ end,
+ id(Rest1).
+
+is_next_char_whitespace(<<C/utf8,_/binary>>) ->
+ C =:= $\s.
+
check(F, R) ->
R = F().