@@ -361,6 +361,7 @@ function Base.union!(
361361 )
362362
363363 g. classes[id_1] = new_eclass
364+ modify! (g, new_eclass)
364365
365366 return true
366367end
@@ -425,21 +426,23 @@ function process_unions!(g::EGraph{ExpressionType,AnalysisType})::Int where {Exp
425426 eclass = g. classes[eclass_id_key]
426427
427428 node_data = make (g, node)
428- if ! isnothing (eclass. data)
429- joined_data = join (eclass. data, node_data)
430-
431- if joined_data != eclass. data
432- g. classes[eclass_id_key] = EClass {AnalysisType} (eclass_id, eclass. nodes, eclass. parents, joined_data)
433- # eclass.data = joined_data
429+ if ! isnothing (node_data)
430+ if ! isnothing (eclass. data)
431+ joined_data = join (eclass. data, node_data)
432+
433+ if joined_data != eclass. data
434+ g. classes[eclass_id_key] = EClass {AnalysisType} (eclass_id, eclass. nodes, eclass. parents, joined_data)
435+ # eclass.data = joined_data
436+ modify! (g, eclass)
437+ append! (g. analysis_pending, eclass. parents)
438+ end
439+ else
440+ g. classes[eclass_id_key] = EClass {AnalysisType} (eclass_id, eclass. nodes, eclass. parents, node_data)
441+ # eclass.data = node_data
434442 modify! (g, eclass)
435443 append! (g. analysis_pending, eclass. parents)
436444 end
437- else
438- g. classes[eclass_id_key] = EClass {AnalysisType} (eclass_id, eclass. nodes, eclass. parents, node_data)
439- # eclass.data = node_data
440- modify! (g, eclass)
441445 end
442-
443446 end
444447 end
445448 n_unions
0 commit comments