Skip to content

[erlc] Crash in beam_ssa_opt with -0.0 #8097

Open
@RobinMorisset

Description

@RobinMorisset

Describe the bug
Running erlc on the following:

-feature(maybe_expr, enable).
-module(test258136).
-export([f/0]).

f() ->
    <<
        (ok)
     || _ := {_V1} <- ok,
        (maybe
            {} ?= _V1
        else
            -0.0 ->
                [];
            0.0 ->
                []
        end)
    >>.

crashes with the following message:

Function: '-f/0-lbc$^0/2-0-'/2
Sub pass ssa_opt_type_start
/home/rmorisset/minimized/test258136.erl: internal error in pass beam_ssa_opt:
exception error: no case clause matching {{1,{t_float,{-0.0,-0.0}}},{1,{t_float,{0.0,0.0}}}}
  in function  beam_types:join/2 (beam_types.erl, line 256)
  in call from beam_ssa_type:join_types_1/3 (beam_ssa_type.erl, line 2896)
  in call from beam_ssa_type:update_successor/3 (beam_ssa_type.erl, line 2077)
  in call from beam_ssa_type:update_switch/8 (beam_ssa_type.erl, line 2036)
  in call from beam_ssa_type:update_successors/5 (beam_ssa_type.erl, line 2001)
  in call from beam_ssa_type:sig_bs/8 (beam_ssa_type.erl, line 258)
  in call from beam_ssa_type:sig_function_1/4 (beam_ssa_type.erl, line 221)
  in call from beam_ssa_type:do_sig_function/4 (beam_ssa_type.erl, line 169)

Affected versions

Metadata

Metadata

Assignees

Labels

bugIssue is reported as a bugteam:VMAssigned to OTP team VM

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions