[PATCH] critical-anti-dependency breaker: don't use reg def info from kill insts (PR20308)

Andrew Trick atrick at apple.com
Tue Aug 19 23:32:17 PDT 2014


I'm signing off on this because it seems reasonably safe, though might not be solving the underlying problem. It does need to be reviewed by someone else. Both Hal and Will Schmidt have worked on similar issues very recently so they will be more informed.

I have to say, the presence of the KILL instruction in your Pre-sched code looks fairly misleading if not wrong. It is certainly incorrect in terms of liveness. If the call's %RDI argument is not "undef" then who defines it? If it is live into the call, the KILL should not define it. I would take a closer look at MachineCopyPropagation and other CodeGen passes to determine where things went wrong.

        %RAX<def> = MOV64rm %RIP, 1, %noreg, <ga:@Part_Class>[TF=5], %noreg; mem:LD8[GOT]
        %RDI<def> = KILL %RBP
        CALL64pcrel32 <ga:@Object_NewImage>[TF=6], <regmask>, %RSP<imp-use>, %RDI<imp-use>, %ESI<imp-use>, %EDX<imp-use>, %ECX<imp-use>, %R8<imp-use,kill>, %R9<imp-use,kill>, %RSP<imp-def>, %EAX<imp-def>

http://reviews.llvm.org/D4977






More information about the llvm-commits mailing list