125
124
firstPassDoBlock(Insts, LiveOut, IntersectedSaveList) ->
126
125
lists:foldr(fun firstPassDoInsn/2, {LiveOut,IntersectedSaveList,[]}, Insts).
128
firstPassDoInsn(I, {LiveOut,IntersectedSaveList,PrevInsts} ) ->
127
firstPassDoInsn(I, {LiveOut,IntersectedSaveList,PrevInsts}) ->
131
130
do_pseudo_call(I, {LiveOut,IntersectedSaveList,PrevInsts});
132
131
_ -> % other instructions
133
132
DefinedList = from_list( ?HIPE_X86_LIVENESS:defines(I)),
134
133
UsedList = from_list(?HIPE_X86_LIVENESS:uses(I)),
136
134
NewLiveOut = subtract(union(LiveOut, UsedList), DefinedList),
139
136
{NewLiveOut, NewIntersectedSaveList, [I|PrevInsts]}