/* for all the definitions in the block */
/* compute and set the live from */
- if ( ebp->defSet && ! bitVectIsZero(ebp->defSet)) {
- for ( i = 0 ; i < ebp->defSet->size ; i++ ) {
+ if ( ebp->ldefs && ! bitVectIsZero(ebp->ldefs)) {
+ for ( i = 0 ; i < ebp->ldefs->size ; i++ ) {
iCode *dic;
- if (bitVectBitValue(ebp->defSet,i) &&
+ if (bitVectBitValue(ebp->ldefs,i) &&
(dic = hTabItemWithKey(iCodehTab,i))) {
/* if the definition has a from & it is greater */
for ( lrange = hTabFirstItem(liveRanges,&k); lrange;
lrange = hTabNextItem(liveRanges,&k)) {
+ /* if it is live then add the lrange to ic->rlive */
if (lrange->liveFrom <= ic->seq &&
- lrange->liveTo >= ic->seq )
- ic->rlive = bitVectSetBit(ic->rlive,lrange->key);
+ lrange->liveTo >= ic->seq ) {
+ lrange->isLiveFcall |= (ic->op == CALL || ic->op == PCALL || ic->op == SEND);
+ ic->rlive = bitVectSetBit(ic->rlive,lrange->key);
+ }
}
}
}