[PATCH] D137230: [XCOFF] avoid unnecessary Fixups when -function-sections is enabled.
    Digger Lin via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Sat Nov  5 20:04:28 PDT 2022
    
    
  
DiggerLin added inline comments.
================
Comment at: llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp:2223
         &(MF->getFunction()), TM);
+    // If the FuncSectSym is the csect itself, the difference between FuncEnd
+    // and FuncSectSym is an absolute value. To avoid evaluating an MCExpr for
----------------
DiggerLin wrote:
> hubert.reinterpretcast wrote:
> > Can we address this where the MCExpr is handled instead? There may be more ways a similar expression involving a csect as an operand is involved in the future (e.g., assembly parsing).
>  I do not think we should set setFragment of FuncSectSym  in the function  emitTracebackTable.  
> Reason as :
> 
> 1.  because of both Asm path and   "integrated-as" enter into the function emitTracebackTable. Asm path do not have Fragment concept.
> 2.  the emitTracebackTable only do emit trace back table related thing.  we should not put other functionality here.
> 
> 
> I think we may need to set the 
> 
> The fragment value to CurrentFnSym of AsmPrinter in somewhere when "integrated-as" 
> otherwise the CurrentFnSym.isUndefined() is true.
> 
> it will cause the function MCExpr::evaluateAsRelocatableImpl() return "false" when evaluation the fixup of  CurrentFnSym-FuncEnd
> 
> 
> 
maybe you can try to set the fragment of QualName in the function MCSectionXCOFF *MCContext::getXCOFFSection.  
```
   if (Begin)
     Begin->setFragment(F);
+ if (!IsDwarfSec && CsectProp->MappingClass ==XCOFF::XMC_PR){
+    QualName->setFragment(F);
+    QualName->setOffset(0);
+  }
```
not sure whether it work or not.
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D137230/new/
https://reviews.llvm.org/D137230
    
    
More information about the llvm-commits
mailing list