[LLVMdev] Fix the aggressive anti-dep breaker's subregister definition handling (original) (raw)

Daniil Troshkov troshkovdanil at gmail.com
Sat Jan 24 09:05:50 PST 2015


Hello Hal!

r 202294 Fix the aggressive anti-dep breaker's subregister definition handling

There is a problem.

For example: r0.64 = {r0.32, r1.32} r2.64 = {r2.32, r3.32)

def1(r0.32) def2(r1.32) def3(r0.32) use(r0.64)

Try to rename def1(r0.32). According current algo we get smth like:

def1(r2.32) def2(r1.32) def3(r0.32) use(r2.64)

Because r0.64 was still not defined.

Patch to fix it:

Index: lib/CodeGen/AggressiveAntiDepBreaker.cpp

--- lib/CodeGen/AggressiveAntiDepBreaker.cpp (revision 227005) +++ lib/CodeGen/AggressiveAntiDepBreaker.cpp (working copy) @@ -326,6 +326,7 @@ void AggressiveAntiDepBreaker::PrescanInstruction(MachineInstr *MI, unsigned Count, std::set& PassthruRegs) {

registers.

visited @@ -403,7 +404,16 @@ // because we're iterating bottom-up) need to be linked to the same group // as this definition. if (TRI->isSuperRegister(Reg, *AI) && State->IsLive(*AI))

++SubR)

-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150124/4ae3c0f0/attachment.html> -------------- next part -------------- A non-text attachment was scrubbed... Name: AggressiveAntiDepBreaker.cpp.patch Type: application/octet-stream Size: 2020 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150124/4ae3c0f0/attachment.obj>



More information about the llvm-dev mailing list