From ebd3e2497f79d7f4cb39fef9c862aff01dbaae16 Mon Sep 17 00:00:00 2001 From: Cody Tapscott Date: Mon, 15 Apr 2024 10:16:05 -0400 Subject: [PATCH] inlining: Mark inserted `PiNode`s for refinement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For extended lattice elements, the type of the resulting PiNode can end up imprecise when `tmeet(argextype(argex), mft) ⊑ mft` --- base/compiler/ssair/inlining.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/base/compiler/ssair/inlining.jl b/base/compiler/ssair/inlining.jl index d6853d83b61bc..a98c66c9882e2 100644 --- a/base/compiler/ssair/inlining.jl +++ b/base/compiler/ssair/inlining.jl @@ -565,8 +565,9 @@ function ir_inline_unionsplit!(compact::IncrementalCompact, idx::Int, argexprs:: (isa(argex, SSAValue) || isa(argex, Argument)) || continue aft, mft = fieldtype(atype, i), fieldtype(mtype, i) if !(aft <: mft) + flag = IR_FLAG_REFINED argexprs′[i] = insert_node_here!(compact, - NewInstruction(PiNode(argex, mft), mft, line)) + NewInstruction(PiNode(argex, mft), mft, NoCallInfo(), line, flag)) end end end