github-actions[bot] wrote: <!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning: <details> <summary> You can test this locally with the following command: </summary> ``````````bash git-clang-format --diff 560c2fd3d427a5e2dc2361abde1142f3fda40253 15061bfbc2dc06de5bac32628389386cadaa5632 -- clang/test/CodeGen/voidptr-vaarg.c clang/test/CodeGenCXX/inline-then-fold-variadics.cpp llvm/include/llvm/Transforms/IPO/ExpandVariadics.h llvm/lib/Transforms/IPO/ExpandVariadics.cpp clang/test/CodeGen/aarch64-ABI-align-packed.c llvm/include/llvm/InitializePasses.h llvm/lib/Passes/PassBuilder.cpp llvm/lib/Passes/PassBuilderPipelines.cpp `````````` </details> <details> <summary> View the diff from clang-format here. </summary> ``````````diff diff --git a/llvm/include/llvm/Transforms/IPO/ExpandVariadics.h b/llvm/include/llvm/Transforms/IPO/ExpandVariadics.h index 02f3aa45ef..f7c9618bad 100644 --- a/llvm/include/llvm/Transforms/IPO/ExpandVariadics.h +++ b/llvm/include/llvm/Transforms/IPO/ExpandVariadics.h @@ -18,9 +18,9 @@ class OptimizationLevel; enum class ExpandVariadicsMode { Unspecified, // Use the implementation defaults - Disable, // Disable the pass entirely - Optimize, // Optimise without changing ABI - Lowering, // Change variadic calling convention + Disable, // Disable the pass entirely + Optimize, // Optimise without changing ABI + Lowering, // Change variadic calling convention }; class ExpandVariadicsPass : public PassInfoMixin<ExpandVariadicsPass> { diff --git a/llvm/lib/Transforms/IPO/ExpandVariadics.cpp b/llvm/lib/Transforms/IPO/ExpandVariadics.cpp index c04e16cb7b..e27c391d88 100644 --- a/llvm/lib/Transforms/IPO/ExpandVariadics.cpp +++ b/llvm/lib/Transforms/IPO/ExpandVariadics.cpp @@ -106,8 +106,7 @@ public: virtual Value *initializeVAList(LLVMContext &Ctx, IRBuilder<> &Builder, AllocaInst *, Value * /*buffer*/) = 0; - struct VAArgSlotInfo - { + struct VAArgSlotInfo { Align Align; // With respect to the call frame bool Indirect; // Passed via a pointer bool Unknown; // Cannot analyse this type, cannot transform the call @@ -178,7 +177,6 @@ public: bool runOnModule(Module &M) override; bool runOnFunction(Module &M, IRBuilder<> &Builder, Function *F); - bool rewriteABI() { return Mode == ExpandVariadicsMode::Lowering; } void memcpyVAListPointers(const DataLayout &DL, IRBuilder<> &Builder, @@ -190,7 +188,6 @@ public: ConstantInt::get(Type::getInt32Ty(Ctx), Size)); } - template <Intrinsic::ID ID, typename InstructionType> bool expandIntrinsicUsers(Module &M, IRBuilder<> &Builder, PointerType *ArgType) { @@ -217,7 +214,6 @@ public: bool expandVAIntrinsicCall(IRBuilder<> &Builder, const DataLayout &DL, VACopyInst *Inst); - FunctionType *inlinableVariadicFunctionType(Module &M, FunctionType *FTy) { // The type of "FTy" with the ... removed and a va_list appended SmallVector<Type *> ArgTypes(FTy->param_begin(), FTy->param_end()); @@ -492,7 +488,8 @@ bool ExpandVariadics::runOnFunction(Module &M, IRBuilder<> &Builder, assert(VariadicWrapper->isDeclaration()); assert(OriginalFunction->use_empty()); - // Create a new function taking va_list containing the implementation of the original + // Create a new function taking va_list containing the implementation of the + // original Function *FixedArityReplacement = deriveFixedArityReplacement(M, Builder, OriginalFunction); assert(OriginalFunction->isDeclaration()); @@ -511,7 +508,6 @@ bool ExpandVariadics::runOnFunction(Module &M, IRBuilder<> &Builder, // 2. a variadic function that unconditionally calls a fixed arity replacement // 3. a fixed arity function equivalent to the original function - // Replace known calls to the variadic with calls to the va_list equivalent for (User *U : llvm::make_early_inc_range(VariadicWrapper->users())) { if (CallBase *CB = dyn_cast<CallBase>(U)) { @@ -524,13 +520,11 @@ bool ExpandVariadics::runOnFunction(Module &M, IRBuilder<> &Builder, } } - Function *const ExternallyAccessible = - rewriteABI() ? FixedArityReplacement : VariadicWrapper; + rewriteABI() ? FixedArityReplacement : VariadicWrapper; Function *const InternalOnly = - rewriteABI() ? VariadicWrapper : FixedArityReplacement; + rewriteABI() ? VariadicWrapper : FixedArityReplacement; - // care needed over other attributes, metadata etc ExternallyAccessible->setLinkage(OriginalFunction->getLinkage()); @@ -548,10 +542,10 @@ bool ExpandVariadics::runOnFunction(Module &M, IRBuilder<> &Builder, if (rewriteABI()) { // All known calls to the function have been removed by expandCall // Resolve everything else by replace all uses with - + VariadicWrapper->replaceAllUsesWith(FixedArityReplacement); - - assert (VariadicWrapper->use_empty()); + + assert(VariadicWrapper->use_empty()); VariadicWrapper->eraseFromParent(); } @@ -613,10 +607,8 @@ ExpandVariadics::deriveFixedArityReplacement(Module &M, IRBuilder<> &Builder, NF->setName(F.getName() + ".valist"); NF->IsNewDbgInfoFormat = F.IsNewDbgInfoFormat; - AttrBuilder ParamAttrs(Ctx); - AttributeList Attrs = NF->getAttributes(); Attrs = Attrs.addParamAttributes(Ctx, NFTy->getNumParams() - 1, ParamAttrs); NF->setAttributes(Attrs); @@ -658,9 +650,11 @@ ExpandVariadics::defineVariadicWrapper(Module &M, IRBuilder<> &Builder, auto *BB = BasicBlock::Create(Ctx, "entry", &F); Builder.SetInsertPoint(BB); - AllocaInst *VaListInstance = Builder.CreateAlloca(VaListTy, nullptr, "va_list"); + AllocaInst *VaListInstance = + Builder.CreateAlloca(VaListTy, nullptr, "va_list"); - Builder.CreateLifetimeStart(VaListInstance, sizeOfAlloca(Ctx, DL, VaListInstance)); + Builder.CreateLifetimeStart(VaListInstance, + sizeOfAlloca(Ctx, DL, VaListInstance)); Builder.CreateIntrinsic(Intrinsic::vastart, {DL.getAllocaPtrType(Ctx)}, {VaListInstance}); @@ -674,9 +668,11 @@ ExpandVariadics::defineVariadicWrapper(Module &M, IRBuilder<> &Builder, CallInst *Result = Builder.CreateCall(FixedArityReplacement, Args); Result->setTailCallKind(CallInst::TCK_Tail); - Builder.CreateIntrinsic(Intrinsic::vaend, {DL.getAllocaPtrType(Ctx)}, {VaListInstance}); - Builder.CreateLifetimeEnd(VaListInstance, sizeOfAlloca(Ctx, DL, VaListInstance)); - + Builder.CreateIntrinsic(Intrinsic::vaend, {DL.getAllocaPtrType(Ctx)}, + {VaListInstance}); + Builder.CreateLifetimeEnd(VaListInstance, + sizeOfAlloca(Ctx, DL, VaListInstance)); + if (Result->getType()->isVoidTy()) Builder.CreateRetVoid(); else @@ -725,7 +721,6 @@ bool ExpandVariadics::expandCall(Module &M, IRBuilder<> &Builder, CallBase *CB, uint64_t CurrentOffset = 0; - for (unsigned I = FuncType->getNumParams(), E = CB->arg_size(); I < E; ++I) { Value *ArgVal = CB->getArgOperand(I); bool IsByVal = CB->paramHasAttr(I, Attribute::ByVal); @@ -863,8 +858,7 @@ bool ExpandVariadics::expandCall(Module &M, IRBuilder<> &Builder, CallBase *CB, if (!ABI->vaListPassedInSSARegister()) { Type *VaListTy = ABI->vaListType(Ctx); Builder.SetInsertPointPastAllocas(CBF); - Builder.SetCurrentDebugLocation( - CB->getStableDebugLoc()); + Builder.SetCurrentDebugLocation(CB->getStableDebugLoc()); VaList = Builder.CreateAlloca(VaListTy, nullptr, "va_list"); Builder.SetInsertPoint(CB); Builder.CreateLifetimeStart(VaList, sizeOfAlloca(Ctx, DL, VaList)); @@ -890,7 +884,7 @@ bool ExpandVariadics::expandCall(Module &M, IRBuilder<> &Builder, CallBase *CB, // Assert won't be true once InvokeInst is implemented in a later patch, // current invariant is established by callinstRewritable() at the start assert(isa<CallInst>(CB)); - + if (CallInst *CI = dyn_cast<CallInst>(CB)) { Value *Dst = NF ? NF : CI->getCalledOperand(); @@ -959,7 +953,8 @@ bool ExpandVariadics::expandVAIntrinsicCall(IRBuilder<> &Builder, } else { // Otherwise emit a vacopy to pick up target-specific handling if any auto &Ctx = Builder.getContext(); - Builder.CreateIntrinsic(Intrinsic::vacopy, {DL.getAllocaPtrType(Ctx)}, {VaStartArg, PassedVaList}); + Builder.CreateIntrinsic(Intrinsic::vacopy, {DL.getAllocaPtrType(Ctx)}, + {VaStartArg, PassedVaList}); } Inst->eraseFromParent(); @@ -996,25 +991,28 @@ template <uint32_t MinAlign, uint32_t MaxAlign> Align clampAlign(Align A) { return A; } - bool simpleScalarType(Type* Parameter) - { - // This is a stop-gap. The MVP can optimise x64 and aarch64 on linux - // for sufficiently simple calls. - if (Parameter->isDoubleTy()) return true; - - if (Parameter->isIntegerTy(32)) return true; - if (Parameter->isIntegerTy(64)) return true; +bool simpleScalarType(Type *Parameter) { + // This is a stop-gap. The MVP can optimise x64 and aarch64 on linux + // for sufficiently simple calls. + if (Parameter->isDoubleTy()) + return true; - if (Parameter->isPointerTy()) { return true; } + if (Parameter->isIntegerTy(32)) + return true; + if (Parameter->isIntegerTy(64)) + return true; - return false; + if (Parameter->isPointerTy()) { + return true; } - + + return false; +} struct AArch64 final : public VariadicABIInfo { // https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst // big endian, little endian ILP32 have their own triples - + bool vaListPassedInSSARegister() override { return false; } Type *vaListType(LLVMContext &Ctx) override { @@ -1089,7 +1087,6 @@ struct AArch64 final : public VariadicABIInfo { } }; - struct Wasm final : public VariadicABIInfo { bool vaListPassedInSSARegister() override { return true; } @@ -1121,7 +1118,6 @@ struct Wasm final : public VariadicABIInfo { } }; - struct X64SystemV final : public VariadicABIInfo { bool vaListPassedInSSARegister() override { return false; } @@ -1154,7 +1150,7 @@ struct X64SystemV final : public VariadicABIInfo { // purpose and floating point regions empty, such that only the overflow // area is used. That means a single contiguous struct can be the backing // store and simpler code to optimise in the inlining case. - + Idxs[2] = ConstantInt::get(I32, 0); Builder.CreateStore( ConstantInt::get(I32, 48), @@ -1187,12 +1183,12 @@ struct X64SystemV final : public VariadicABIInfo { // X64 behaviour in clang: // Slots are at least eight byte aligned and at most naturally aligned // This matches clang, not the ABI docs. - + Align A = clampAlign<8, 0u>(DL.getABITypeAlign(Parameter)); bool Indirect = false; bool Unknown = !simpleScalarType(Parameter); - return {A, Indirect, Unknown}; - } + return {A, Indirect, Unknown}; + } }; std::unique_ptr<VariadicABIInfo> @@ -1204,8 +1200,7 @@ VariadicABIInfo::create(llvm::Triple const &Triple) { return std::make_unique<AArch64>(); } - - case Triple::wasm32: { + case Triple::wasm32: { return std::make_unique<Wasm>(); } @@ -1243,8 +1238,6 @@ PreservedAnalyses ExpandVariadicsPass::run(Module &M, ModuleAnalysisManager &) { ExpandVariadicsPass::ExpandVariadicsPass(OptimizationLevel Level) : ExpandVariadicsPass(Level == OptimizationLevel::O0 ? ExpandVariadicsMode::Disable - : ExpandVariadicsMode::Optimize) -{ -} + : ExpandVariadicsMode::Optimize) {} ExpandVariadicsPass::ExpandVariadicsPass(ExpandVariadicsMode M) : Mode(M) {} `````````` </details> https://github.com/llvm/llvm-project/pull/92850 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits