[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