[PATCH] D18046: [X86] Providing correct unwind info in function epilogue
    Kyle Butt via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Fri Jun  2 13:51:43 PDT 2017
    
    
  
iteratee added a comment.
Some initial thoughts. I would like to hide the actual CFI algorithms from the existing passes as much as possible.
================
Comment at: lib/CodeGen/BranchFolding.cpp:412
+  // Outgoing cfa offset set by CurMBB after it's split.
+  int SetOffset = CurMBB.getIncomingCFAOffset();
+  // Outgoing cfa register set by CurMBB after it's split.
----------------
I'd like to see this factored out into MachineBasicBlock. 
Something like recalculateCFI(bool useExistingIncoming)
================
Comment at: lib/CodeGen/BranchFolding.cpp:1033
+
+      // Outgoing cfa offset set by BB.
+      int SetOffset = SameTails[i].getBlock()->getIncomingCFAOffset();
----------------
This looks like the same code above. Please factor this out.
================
Comment at: lib/CodeGen/TailDuplicator.cpp:596
     if (!MI.isPHI() && !MI.isDebugValue())
-      InstrCount += 1;
+      if (!MI.isCFIInstruction())
+        InstrCount += 1;
----------------
Can you create a function on MI: isDirective() and have it return true for debugvalue and CFIInstruction?
================
Comment at: lib/CodeGen/TailDuplicator.cpp:918
+
+    // Update the CFI info for PrevBB.
+    PrevBB->setOutgoingCFAOffset(TailBB->getOutgoingCFAOffset());
----------------
It would nice to not have this in the pass, but rather as an abstraction:
PrevBB->mergeCFIInfo(TailBB);
Repository:
  rL LLVM
https://reviews.llvm.org/D18046
    
    
More information about the llvm-commits
mailing list