[PATCH] D52010: RegAllocFast: Rewrite and improve
    Matt Arsenault via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Thu Mar 21 13:51:02 PDT 2019
    
    
  
arsenm added inline comments.
================
Comment at: lib/CodeGen/RegAllocFast.cpp:390-393
   // The LiveRegMap is keyed by an unsigned (the virtreg number), so the order
   // of spilling here is deterministic, if arbitrary.
-  for (LiveReg &LR : LiveVirtRegs) {
-    if (!LR.PhysReg)
+  MachineBasicBlock::iterator InsertBefore = getMBBBeginInsertionPoint(MBB);
+  for (const LiveReg &LR : LiveVirtRegs) {
----------------
This is problematic for AMDGPU. The order of the spills matters in the case the registers used are needed to restore the exec mask in the target block. Additionally, getMBBBeginInsertionPoint should be using SkipPHIsAndLabels so that isBasicBlockPrologue is respected.
Because of this the updates to test/CodeGen/AMDGPU/control-flow-fastregalloc.ll are wrong
Repository:
  rL LLVM
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D52010/new/
https://reviews.llvm.org/D52010
    
    
More information about the llvm-commits
mailing list