[PATCH] D34806: [MergeFunctions] Merge small functions if possible without a thunk
    whitequark via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Wed Jun 28 22:24:18 PDT 2017
    
    
  
whitequark added inline comments.
================
Comment at: lib/Transforms/IPO/MergeFunctions.cpp:653
+  if (F->size() == 1) {
+    if (F->front().size() <= 2) {
+      DEBUG(dbgs() << "writeThunk: " << F->getName() 
----------------
jfb wrote:
> So I know that you're just moving code, but why these numbers? What's the usual thunk size? You also need to consider alignment (both of the function and thunks). IIRC there was a bunch of waste with alignment even when merge funcs ran, and I don't think it got fixed.
This checks for one basic block with one instruction in it apart from terminator. I think the idea is that you don't want to write a thunk for a thunk, and also a call instruction is typically larger than simple arithmetics, so you also don't want to write a thunk for that.
Regarding the alignment, I'm not sure I know all implications of changing that.
================
Comment at: lib/Transforms/IPO/MergeFunctions.cpp:785
-  // FIXME: Should still merge them if they are unnamed_addr and produce an
-  // alias.
-  if (NewFunction->size() == 1) {
----------------
jfb wrote:
> Weird that this code was way late here.
> 
> This fixme isn't relevant right? It's handled at line 631 it seems like.
Yeah, I fixed it in D34805, on which this patch is based on.
Repository:
  rL LLVM
https://reviews.llvm.org/D34806
    
    
More information about the llvm-commits
mailing list