Skip to content

Commit 7c4b40c

Browse files
aviatesklazarusA
authored andcommitted
inference: follow up JuliaLang#49260, remove no longer necessary functions (JuliaLang#55430)
1 parent 4e2c775 commit 7c4b40c

File tree

1 file changed

+0
-66
lines changed

1 file changed

+0
-66
lines changed

base/compiler/inferencestate.jl

Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -517,72 +517,6 @@ function compute_trycatch(code::Vector{Any}, bbs::Union{Vector{BasicBlock},Nothi
517517
return handler_info
518518
end
519519

520-
function is_throw_call(e::Expr, code::Vector{Any})
521-
if e.head === :call
522-
f = e.args[1]
523-
if isa(f, SSAValue)
524-
f = code[f.id]
525-
end
526-
if isa(f, GlobalRef)
527-
ff = abstract_eval_globalref_type(f)
528-
if isa(ff, Const) && ff.val === Core.throw
529-
return true
530-
end
531-
end
532-
end
533-
return false
534-
end
535-
536-
function mark_throw_blocks!(src::CodeInfo, handler_info::Union{Nothing,HandlerInfo})
537-
for stmt in find_throw_blocks(src.code, handler_info)
538-
src.ssaflags[stmt] |= IR_FLAG_THROW_BLOCK
539-
end
540-
return nothing
541-
end
542-
543-
# this utility function is incomplete and won't catch every block that always throws, since:
544-
# - it only recognizes direct calls to `throw` within the target code, so it can't mark
545-
# blocks that deterministically call `throw` internally, like those containing `error`.
546-
# - it just does a reverse linear traverse of statements, there's a chance it might miss
547-
# blocks, particularly when there are reverse control edges.
548-
function find_throw_blocks(code::Vector{Any}, handler_info::Union{Nothing,HandlerInfo})
549-
stmts = BitSet()
550-
n = length(code)
551-
for i in n:-1:1
552-
s = code[i]
553-
if isa(s, Expr)
554-
if s.head === :gotoifnot
555-
if i+1 in stmts && s.args[2]::Int in stmts
556-
push!(stmts, i)
557-
end
558-
elseif s.head === :return
559-
# see `ReturnNode` handling
560-
elseif is_throw_call(s, code)
561-
if handler_info === nothing || handler_info.handler_at[i][1] == 0
562-
push!(stmts, i)
563-
end
564-
elseif i+1 in stmts
565-
push!(stmts, i)
566-
end
567-
elseif isa(s, ReturnNode)
568-
# NOTE: it potentially makes sense to treat unreachable nodes
569-
# (where !isdefined(s, :val)) as `throw` points, but that can cause
570-
# worse codegen around the call site (issue #37558)
571-
elseif isa(s, GotoNode)
572-
if s.label in stmts
573-
push!(stmts, i)
574-
end
575-
elseif isa(s, GotoIfNot)
576-
if i+1 in stmts && s.dest in stmts
577-
push!(stmts, i)
578-
end
579-
elseif i+1 in stmts
580-
push!(stmts, i)
581-
end
582-
end
583-
return stmts
584-
end
585-
586520
# check if coverage mode is enabled
587521
function should_insert_coverage(mod::Module, debuginfo::DebugInfo)
588522
coverage_enabled(mod) && return true

0 commit comments

Comments
 (0)