diff --git a/llvm/include/llvm/CodeGen/AsmPrinter.h b/llvm/include/llvm/CodeGen/AsmPrinter.h index 48fa6c478464c..07b92871a0f08 100644 --- a/llvm/include/llvm/CodeGen/AsmPrinter.h +++ b/llvm/include/llvm/CodeGen/AsmPrinter.h @@ -887,7 +887,6 @@ class AsmPrinter : public MachineFunctionPass { virtual void emitGlobalIFunc(Module &M, const GlobalIFunc &GI); private: - /// This method decides whether the specified basic block requires a label. bool shouldEmitLabelForBasicBlock(const MachineBasicBlock &MBB) const; diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index 94e76a43bf38d..bd90047a411a6 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -959,7 +959,6 @@ void Verifier::visitGlobalIFunc(const GlobalIFunc &GI) { GlobalIFunc::getResolverFunctionType(GI.getValueType()); Check(ResolverTy == ResolverFuncTy->getPointerTo(GI.getAddressSpace()), "IFunc resolver has incorrect type", &GI); - } void Verifier::visitNamedMDNode(const NamedMDNode &NMD) { @@ -2240,7 +2239,8 @@ void Verifier::verifyFunctionAttrs(FunctionType *FT, AttributeList Attrs, } // Check EVEX512 feature. - if (MaxParameterWidth >= 512 && Attrs.hasFnAttr("target-features") && TT.isX86()) { + if (MaxParameterWidth >= 512 && Attrs.hasFnAttr("target-features") && + TT.isX86()) { StringRef TF = Attrs.getFnAttr("target-features").getValueAsString(); Check(!TF.contains("+avx512f") || !TF.contains("-evex512"), "512-bit vector arguments require 'evex512' for AVX512", V); diff --git a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp index 2dab8e126c9ab..f4128332008fb 100644 --- a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp +++ b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp @@ -71,10 +71,15 @@ using namespace llvm; namespace { -enum class IFuncLowering { SymbolResolverIfSupported, SymbolResolverAlways, SymbolResolverNever }; +enum class IFuncLowering { + SymbolResolverIfSupported, + SymbolResolverAlways, + SymbolResolverNever +}; static cl::opt PreferredIFuncLowering( - "arm64-darwin-ifunc-symbol_resolver", cl::init(IFuncLowering::SymbolResolverNever), + "arm64-darwin-ifunc-symbol_resolver", + cl::init(IFuncLowering::SymbolResolverNever), cl::desc("Pick the lowering for ifuncs on darwin platforms"), cl::Hidden, cl::values( clEnumValN( @@ -1853,8 +1858,8 @@ void AArch64AsmPrinter::emitLinkerSymbolResolver(Module &M, OutStreamer->emitSymbolAttribute(Name, MCSA_SymbolResolver); emitVisibility(Name, GI.getVisibility()); - // ld-prime does not seem to support aliases of symbol resolvers, so we have to - // tail call the resolver manually. + // ld-prime does not seem to support aliases of symbol resolvers, so we have + // to tail call the resolver manually. OutStreamer->emitInstruction( MCInstBuilder(AArch64::B) .addOperand(MCOperand::createExpr(lowerConstant(GI.getResolver()))), @@ -1887,8 +1892,9 @@ void AArch64AsmPrinter::emitManualSymbolResolver(Module &M, assert(GI.hasLocalLinkage() && "Invalid ifunc linkage"); }; - MCSymbol *LazyPointer = TM.getObjFileLowering()->getContext().getOrCreateSymbol( - "_" + GI.getName() + ".lazy_pointer"); + MCSymbol *LazyPointer = + TM.getObjFileLowering()->getContext().getOrCreateSymbol( + "_" + GI.getName() + ".lazy_pointer"); MCSymbol *StubHelper = TM.getObjFileLowering()->getContext().getOrCreateSymbol( "_" + GI.getName() + ".stub_helper"); @@ -1943,9 +1949,10 @@ void AArch64AsmPrinter::emitManualSymbolResolver(Module &M, } OutStreamer->emitInstruction(MCInstBuilder(AArch64::LDRXui) - .addReg(AArch64::X16) - .addReg(AArch64::X16) - .addImm(0), *STI); + .addReg(AArch64::X16) + .addReg(AArch64::X16) + .addImm(0), + *STI); OutStreamer->emitInstruction(MCInstBuilder(TM.getTargetTriple().isArm64e() ? AArch64::BRAAZ diff --git a/llvm/lib/Target/X86/X86AsmPrinter.cpp b/llvm/lib/Target/X86/X86AsmPrinter.cpp index 5241aa6e1c0ea..37158900d2404 100644 --- a/llvm/lib/Target/X86/X86AsmPrinter.cpp +++ b/llvm/lib/Target/X86/X86AsmPrinter.cpp @@ -556,6 +556,8 @@ void X86AsmPrinter::emitGlobalIFunc(Module &M, const GlobalIFunc &GI) { JMP.setOpcode(X86::JMP_4); JMP.addOperand(MCOperand::createExpr(lowerConstant(GI.getResolver()))); OutStreamer->emitInstruction(JMP, *Subtarget); + + // FIXME: do the manual .symbol_resolver lowering that we did in AArch64AsmPrinter. } static bool printAsmMRegister(const X86AsmPrinter &P, const MachineOperand &MO,