@@ -669,12 +669,13 @@ end
669
669
670
670
function refine_effects! (interp:: AbstractInterpreter , opt:: OptimizationState , sv:: PostOptAnalysisState )
671
671
if ! is_effect_free (sv. result. ipo_effects) && sv. all_effect_free && ! isempty (sv. ea_analysis_pending)
672
- ir = sv. ir
673
- nargs = Int (opt. src. nargs)
674
- estate = EscapeAnalysis. analyze_escapes (ir, nargs, optimizer_lattice (interp), get_escape_cache (interp))
675
- argescapes = EscapeAnalysis. ArgEscapeCache (estate)
676
- stack_analysis_result! (sv. result, argescapes)
677
- validate_mutable_arg_escapes! (estate, sv)
672
+ # ir = sv.ir
673
+ # nargs = Int(opt.src.nargs)
674
+ # eresult = EscapeAnalysis.analyze_escapes(ir, nargs, optimizer_lattice(interp), get_escape_cache(interp))
675
+ # argescapes = EscapeAnalysis.ArgEscapeCache(eresult)
676
+ # stack_analysis_result!(sv.result, argescapes)
677
+ # validate_mutable_arg_escapes!(eresult, sv)
678
+ sv. all_effect_free = false
678
679
end
679
680
680
681
any_refinable (sv) || return false
@@ -716,7 +717,7 @@ function iscall_with_boundscheck(@nospecialize(stmt), sv::PostOptAnalysisState)
716
717
end
717
718
718
719
function check_all_args_noescape! (sv:: PostOptAnalysisState , ir:: IRCode , @nospecialize (stmt),
719
- estate :: EscapeAnalysis.EscapeState )
720
+ eresult :: EscapeAnalysis.EscapeResult )
720
721
stmt isa Expr || return false
721
722
if isexpr (stmt, :invoke )
722
723
startidx = 2
@@ -735,7 +736,7 @@ function check_all_args_noescape!(sv::PostOptAnalysisState, ir::IRCode, @nospeci
735
736
end
736
737
# See if we can find the allocation
737
738
if isa (arg, Argument)
738
- if has_no_escape (estate [arg])
739
+ if has_no_escape (eresult [arg])
739
740
# Even if we prove everything else effect_free, the best we can
740
741
# say is :effect_free_if_argmem_only
741
742
if sv. effect_free_if_argmem_only === nothing
@@ -746,23 +747,23 @@ function check_all_args_noescape!(sv::PostOptAnalysisState, ir::IRCode, @nospeci
746
747
end
747
748
return false
748
749
elseif isa (arg, SSAValue)
749
- has_no_escape (estate [arg]) || return false
750
- check_all_args_noescape! (sv, ir, ir[arg][:stmt ], estate ) || return false
750
+ has_no_escape (eresult [arg]) || return false
751
+ check_all_args_noescape! (sv, ir, ir[arg][:stmt ], eresult ) || return false
751
752
else
752
753
return false
753
754
end
754
755
end
755
756
return true
756
757
end
757
758
758
- function validate_mutable_arg_escapes! (estate :: EscapeAnalysis.EscapeState , sv:: PostOptAnalysisState )
759
+ function validate_mutable_arg_escapes! (eresult :: EscapeAnalysis.EscapeResult , sv:: PostOptAnalysisState )
759
760
ir = sv. ir
760
761
for idx in sv. ea_analysis_pending
761
762
# See if any mutable memory was allocated in this function and determined
762
763
# not to escape.
763
764
inst = ir[SSAValue (idx)]
764
765
stmt = inst[:stmt ]
765
- if ! check_all_args_noescape! (sv, ir, stmt, estate )
766
+ if ! check_all_args_noescape! (sv, ir, stmt, eresult )
766
767
return sv. all_effect_free = false
767
768
end
768
769
end
0 commit comments