erlang/otp

internal error in erlc, bad key in pass beam_ssa_bsm

RobinMorisset opened this issue · 0 comments

On master, running erlc on the following code:

-module(amb_get_alias).

f(<<_>>) ->
    0;
f(X) ->
    +(case X of
        <<_>> ->
            X;
        [] ->
            X
    end).

results in the following error message:

Sub pass combine_matches
amb_get_alias.erl: internal error in pass beam_ssa_bsm:
exception error: bad key: 19
  in function  map_get/2
     called as map_get(19,
 #{0 => [0],
   1 => [1,0],
   3 => [3,8,0],
   4 => [4,8,0],
   6 => [6,4,8,0],
   8 => [8,0],
   9 => [9,17,3,8,0],
   10 => [10,17,3,8,0],
   13 => [13,17,3,8,0],
   15 => [15,13,17,3,8,0],
   17 => [17,3,8,0],
   21 => [21,10,17,3,8,0],
   23 => [23,9,17,3,8,0],
   24 => [24,0],
   25 => [25,24,0],
   26 => [26,25,24,0],
   27 => [27,26,25,24,0],
   28 => [28,24,0],
   29 => [29,28,24,0],
   30 => [30,24,0],
   31 => [31,30,24,0],
   32 => [32,24,0],
   33 => [33,32,24,0]})
     *** argument 1: not present in map
  in call from beam_ssa_bsm:amb_get_alias/3 (beam_ssa_bsm.erl, line 360)
  in call from beam_ssa_bsm:'-amb_assign_set/3-anonymous-1-'/2 (beam_ssa_bsm.erl, line 335)
  in call from lists:mapfoldl_1/3 (lists.erl, line 1462)
  in call from lists:mapfoldl_1/3 (lists.erl, line 1463)
  in call from beam_ssa_bsm:amb_assign_set/3 (beam_ssa_bsm.erl, line 334)
  in call from lists:mapfoldl_1/3 (lists.erl, line 1462)
  in call from beam_ssa_bsm:amb_1/3 (beam_ssa_bsm.erl, line 323)