On Mon, Sep 21, 2015 at 02:51:26AM +0000, Song, Ruiling wrote: > > + > > + void Liveness::replaceRegs(const map<Register, Register> &replaceMap) > > + { > > + > > + for (auto &pair : liveness) { > > + BlockInfo &info = *pair.second; > > + BasicBlock *bb = const_cast<BasicBlock *>(&info.bb); > > + for (auto &pair : replaceMap) { > > + Register from = pair.first; > > + Register to = pair.second; > > + if (info.liveOut.contains(from)) { > > + info.liveOut.erase(from); > > + info.liveOut.insert(to); > Why do we need to insert into definedPhiRegs ? other parts LGTM. The replacing of "from --> to" indicates "to" has multiple definitions. We use definedPhiRegs to track such type of values and avoid to treat them as uniform latter. It's a little bit hacky and we may need to re-write the uniform analysis completely in the future. But for now, I prefer to keep it as is.
Thanks, Zhigang Gong. > > Thanks! > Ruiling > > > + bb->definedPhiRegs.insert(to); > > + } > > + if (info.upwardUsed.contains(from)) { > > + info.upwardUsed.erase(from); > > + info.upwardUsed.insert(to); > > + } > > + } > > + } > > + } > > + > > _______________________________________________ > Beignet mailing list > Beignet@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/beignet