[llvm] 8b73768 - [AIX] Minor cleanup in AsmPrinter. [NFC]
Sean Fertile via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 30 11:15:32 PST 2020
Author: Sean Fertile
Date: 2020-01-30T14:15:02-05:00
New Revision: 8b737688c21a9755cae14cb9343930e0882164ab
URL: https://github.com/llvm/llvm-project/commit/8b737688c21a9755cae14cb9343930e0882164ab
DIFF: https://github.com/llvm/llvm-project/commit/8b737688c21a9755cae14cb9343930e0882164ab.diff
LOG: [AIX] Minor cleanup in AsmPrinter. [NFC]
- Extends the comments related to function descriptors, noting how they
are only used on AIX.
- Changes the condition used to gate the creation of the current function
symbol in AsmPrinter::SetupMachineFunction to reflect being AIX
specific. The creation of the symbol is different because of AIXs
linkage conventions, not because AIX uses function descriptors.
Differential Revision: https://reviews.llvm.org/D73115
Added:
Modified:
llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 72ab38d0f638..cce61d800969 100644
--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -746,7 +746,9 @@ void AsmPrinter::EmitFunctionHeader() {
}
// Emit the function descriptor. This is a virtual function to allow targets
- // to emit their specific function descriptor.
+ // to emit their specific function descriptor. Right now it is only used by
+ // the AIX target. The PowerPC 64-bit V1 ELF target also uses function
+ // descriptors and should be converted to use this hook as well.
if (MAI->needsFunctionDescriptors())
EmitFunctionDescriptor();
@@ -1700,9 +1702,11 @@ void AsmPrinter::SetupMachineFunction(MachineFunction &MF) {
const Function &F = MF.getFunction();
// Get the function symbol.
- if (MAI->needsFunctionDescriptors()) {
- assert(TM.getTargetTriple().isOSAIX() && "Function descriptor is only"
- " supported on AIX.");
+ if (TM.getTargetTriple().isOSAIX()) {
+ // AIX is unique here in that the name of the symbol emitted for the
+ // function body does not have the same name as the source function's
+ // C-linkage name.
+ assert(MAI->needsFunctionDescriptors() && "AIX ABI is descriptor based.");
assert(CurrentFnDescSym && "The function descriptor symbol needs to be"
" initalized first.");
@@ -1710,9 +1714,9 @@ void AsmPrinter::SetupMachineFunction(MachineFunction &MF) {
CurrentFnSym =
OutContext.getOrCreateSymbol("." + CurrentFnDescSym->getName());
+ // Set the containing csect.
MCSectionXCOFF *FnEntryPointSec =
cast<MCSectionXCOFF>(getObjFileLowering().SectionForGlobal(&F, TM));
- // Set the containing csect.
cast<MCSymbolXCOFF>(CurrentFnSym)->setContainingCsect(FnEntryPointSec);
} else {
CurrentFnSym = getSymbol(&MF.getFunction());
More information about the llvm-commits
mailing list