jyknight added a comment.

The idea of moving the copies to a new MachineBasicBlock seems a reasonable 
solution. That said, it does mean there will be allocatable physical registers 
which are live-in to the following block, which is generally not allowed. As 
far as I can tell, I _think_ that should be fine in this particular 
circumstance, but I'm a little uneasy that I might be missing some reason why 
it'll be incorrect.

I'm more uncomfortable with the scanning/splitting after-the-fact in 
ScheduleDAGSDNodes.cpp, and then the successor lists subsequently being 
incorrect. However, I wasn't immediately able to say what I'd suggest doing 
instead, so I spent some time yesterday poking around with this patch to see if 
I could find something that seemed better. I now believe it will be cleaner to 
have the inline-asm tell SelectionDAGISel::FinishBasicBlock to just emit the 
copies in another block, which we do in some other situations, already. But, 
I'm still poking at that to see how it'll end up -- I can't say I'm sure that's 
the right answer at the moment.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69868/new/

https://reviews.llvm.org/D69868



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to