diff --git a/base/compiler/ssair/ir.jl b/base/compiler/ssair/ir.jl index a86e125fcb3070..039d557b2e9e8a 100644 --- a/base/compiler/ssair/ir.jl +++ b/base/compiler/ssair/ir.jl @@ -1000,7 +1000,11 @@ function process_node!(compact::IncrementalCompact, result_idx::Int, inst::Instr elseif isa(stmt, GotoNode) && compact.cfg_transforms_enabled result[result_idx][:inst] = GotoNode(compact.bb_rename_succ[stmt.label]) result_idx += 1 - elseif isa(stmt, GlobalRef) || isa(stmt, GotoNode) + elseif isa(stmt, GlobalRef) + result[result_idx][:inst] = stmt + result[result_idx][:type] = argextype(stmt, compact) + result_idx += 1 + elseif isa(stmt, GotoNode) result[result_idx][:inst] = stmt result_idx += 1 elseif isa(stmt, GotoIfNot) && compact.cfg_transforms_enabled diff --git a/test/compiler/inline.jl b/test/compiler/inline.jl index 9347acc83f13f0..aa5297066b67ba 100644 --- a/test/compiler/inline.jl +++ b/test/compiler/inline.jl @@ -1069,3 +1069,15 @@ end @test fully_eliminated() do issue41694(2) end + +global x44200::Int = 0 +function f44200() + global x = 0 + while x < 10 + x += 1 + end + x +end +let src = code_typed1(f44200) + @test count(x -> isa(x, Core.PiNode), src.code) == 0 +end