Re: [llvm] a34d63c - [๐˜€๐—ฝ๐—ฟ] changes introduced through rebase

Jon Roelofs via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 4 13:05:55 PST 2023



> On Dec 4, 2023, at 12:53โ€ฏPM, Jon Roelofs <jonathan_roelofs at apple.com> wrote:
> 
> 
> 
>> On Dec 4, 2023, at 12:49โ€ฏPM, Tom Stellard <tstellar at redhat.com> wrote:
>> 
>> On 12/4/23 11:01, Jon Roelofs wrote:
>>> +Tom, Medhi
>>> Should we disable personal branches until this gets fixed? This issue isnโ€™t limited to use of the tool.
>> 
>> Are people using user branches other than with spr?
> 
> These two look like they might not be SPR branches:
> 
> remotes/origin/users/boomanaiden154/exegesis-orcjit1

https://lists.llvm.org/pipermail/llvm-branch-commits/2023-November/022154.html

> remotes/origin/users/paschalis-mpeis/replace-with-veclip-scalable-vec

https://lists.llvm.org/pipermail/llvm-branch-commits/2023-November/022319.html

> 
> 
> Jon
> 
>> 
>> -Tom
>> 
>>> Jon
>>>> On Dec 4, 2023, at 10:55โ€ฏAM, David Blaikie <dblaikie at gmail.com> wrote:
>>>> 
>>>> Ah, thanks for the link to the bug, might be good to hold off on further use of the tool until it's fixed (except where needed for testing) as it's unfortunate noise to add to the already rather noisy llvm-commits fire hose.
>>>> 
>>>> Glad to see there's progress being made on a dependent patch review process though, awesome!
>>>> 
>>>> On Mon, Dec 4, 2023 at 10:54โ€ฏAM Jon Roelofs <jonathan_roelofs at apple.com <mailto:jonathan_roelofs at apple.com>> wrote:
>>>> 
>>>>   re-sending, since this email account wasnโ€™t subscribed to the list, and the list rejected it.
>>>> 
>>>>>   On Dec 4, 2023, at 10:50โ€ฏAM, Jon Roelofs <jonathan_roelofs at apple.com <mailto:jonathan_roelofs at apple.com>> wrote:
>>>>> 
>>>>>   The tool is [1]. Thread about it here: [2].
>>>>> 
>>>>>   These arenโ€™t actually commits on the `main` branch. Rather, the infrastructure code has a bug [3] that causes email to be sent to the list when commits are added to personal branches in the users/<username> branch namespace. I have a patch up to fix that, but it needs review [4] and deployment.
>>>>> 
>>>>>   When this stacked set of PRs eventually lands on `main`, the `[spr]`-titled commits and the branch theyโ€™re on will go away.
>>>>> 
>>>>> 
>>>>>   1: https://github.com/getcord/spr <https://github.com/getcord/spr>
>>>>>   2: https://discourse.llvm.org/t/update-on-github-pull-requests/71540/146?u=jroelofs <https://discourse.llvm.org/t/update-on-github-pull-requests/71540/146?u=jroelofs>
>>>>>   3: https://github.com/llvm/llvm-project/issues/71185 <https://github.com/llvm/llvm-project/issues/71185>
>>>>>   4: https://github.com/llvm/llvm-admin/pull/7 <https://github.com/llvm/llvm-admin/pull/7>
>>>>> 
>>>>> 
>>>>>   Cheers,
>>>>> 
>>>>>   Jon
>>>>> 
>>>>>>   On Dec 4, 2023, at 10:38โ€ฏAM, David Blaikie <dblaikie at gmail.com <mailto:dblaikie at gmail.com>> wrote:
>>>>>> 
>>>>>>   There's a lot of these "[๐˜€๐—ฝ๐—ฟ] changes introduced through rebase" patches you've committed, presumably through some tooling - what are they? I assume they're some accident of tooling, and probably aren't intentional, or otherwise shouldn't be made/maybe are meant to be squashed into the actual commits you're trying to make?
>>>>>> 
>>>>>>   On Tue, Nov 28, 2023 at 2:25โ€ฏPM Jon Roelofs via llvm-commits <llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>> wrote:
>>>>>> 
>>>>>> 
>>>>>>       Author: Jon Roelofs
>>>>>>       Date: 2023-11-28T14:25:01-08:00
>>>>>>       New Revision: a34d63cab61b3d7bd327b6a90ee4b9e3ed568e85
>>>>>> 
>>>>>>       URL: https://github.com/llvm/llvm-project/commit/a34d63cab61b3d7bd327b6a90ee4b9e3ed568e85 <https://github.com/llvm/llvm-project/commit/a34d63cab61b3d7bd327b6a90ee4b9e3ed568e85>
>>>>>>       DIFF: https://github.com/llvm/llvm-project/commit/a34d63cab61b3d7bd327b6a90ee4b9e3ed568e85.diff <https://github.com/llvm/llvm-project/commit/a34d63cab61b3d7bd327b6a90ee4b9e3ed568e85.diff>
>>>>>> 
>>>>>>       LOG: [๐˜€๐—ฝ๐—ฟ] changes introduced through rebase
>>>>>> 
>>>>>>       Created using spr 1.3.4
>>>>>> 
>>>>>>       [skip ci]
>>>>>> 
>>>>>>       Added:
>>>>>> 
>>>>>> 
>>>>>>       Modified:
>>>>>>           llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
>>>>>>           llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
>>>>>>           llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
>>>>>>           llvm/test/CodeGen/AArch64/addrsig-macho.ll
>>>>>>           llvm/test/CodeGen/AArch64/ifunc-asm.ll
>>>>>> 
>>>>>>       Removed:
>>>>>>           llvm/test/Verifier/ifunc-macho.ll
>>>>>> 
>>>>>> 
>>>>>>       ################################################################################
>>>>>>       diff  --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
>>>>>>       index 15ff39883680369..b4ac0a70e7fde9c 100644
>>>>>>       --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
>>>>>>       +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
>>>>>>       @@ -2300,6 +2300,32 @@ bool AsmPrinter::doFinalization(Module &M) {
>>>>>>          // through user plugins.
>>>>>>          emitStackMaps();
>>>>>> 
>>>>>>       +  // Print aliases in topological order, that is, for each alias a = b,
>>>>>>       +  // b must be printed before a.
>>>>>>       +  // This is because on some targets (e.g. PowerPC) linker expects aliases in
>>>>>>       +  // such an order to generate correct TOC information.
>>>>>>       +  SmallVector<const GlobalAlias *, 16> AliasStack;
>>>>>>       +  SmallPtrSet<const GlobalAlias *, 16> AliasVisited;
>>>>>>       +  for (const auto &Alias : M.aliases()) {
>>>>>>       +    if (Alias.hasAvailableExternallyLinkage())
>>>>>>       +      continue;
>>>>>>       +    for (const GlobalAlias *Cur = &Alias; Cur;
>>>>>>       +         Cur = dyn_cast<GlobalAlias>(Cur->getAliasee())) {
>>>>>>       +      if (!AliasVisited.insert(Cur).second)
>>>>>>       +        break;
>>>>>>       +      AliasStack.push_back(Cur);
>>>>>>       +    }
>>>>>>       +    for (const GlobalAlias *AncestorAlias : llvm::reverse(AliasStack))
>>>>>>       +      emitGlobalAlias(M, *AncestorAlias);
>>>>>>       +    AliasStack.clear();
>>>>>>       +  }
>>>>>>       +
>>>>>>       +  // IFuncs must come before deubginfo in case the backend decides to emit them
>>>>>>       +  // as actual functions, since on MachO targets, we cannot create regular
>>>>>>       +  // sections after DWARF.
>>>>>>       +  for (const auto &IFunc : M.ifuncs())
>>>>>>       +    emitGlobalIFunc(M, IFunc);
>>>>>>       +
>>>>>>          // Finalize debug and EH information.
>>>>>>          for (const HandlerInfo &HI : Handlers) {
>>>>>>            NamedRegionTimer T(HI.TimerName, HI.TimerDescription, HI.TimerGroupName,
>>>>>>       @@ -2339,28 +2365,6 @@ bool AsmPrinter::doFinalization(Module &M) {
>>>>>>            }
>>>>>>          }
>>>>>> 
>>>>>>       -  // Print aliases in topological order, that is, for each alias a = b,
>>>>>>       -  // b must be printed before a.
>>>>>>       -  // This is because on some targets (e.g. PowerPC) linker expects aliases in
>>>>>>       -  // such an order to generate correct TOC information.
>>>>>>       -  SmallVector<const GlobalAlias *, 16> AliasStack;
>>>>>>       -  SmallPtrSet<const GlobalAlias *, 16> AliasVisited;
>>>>>>       -  for (const auto &Alias : M.aliases()) {
>>>>>>       -    if (Alias.hasAvailableExternallyLinkage())
>>>>>>       -      continue;
>>>>>>       -    for (const GlobalAlias *Cur = &Alias; Cur;
>>>>>>       -         Cur = dyn_cast<GlobalAlias>(Cur->getAliasee())) {
>>>>>>       -      if (!AliasVisited.insert(Cur).second)
>>>>>>       -        break;
>>>>>>       -      AliasStack.push_back(Cur);
>>>>>>       -    }
>>>>>>       -    for (const GlobalAlias *AncestorAlias : llvm::reverse(AliasStack))
>>>>>>       -      emitGlobalAlias(M, *AncestorAlias);
>>>>>>       -    AliasStack.clear();
>>>>>>       -  }
>>>>>>       -  for (const auto &IFunc : M.ifuncs())
>>>>>>       -    emitGlobalIFunc(M, IFunc);
>>>>>>       -
>>>>>>          GCModuleInfo *MI = getAnalysisIfAvailable<GCModuleInfo>();
>>>>>>          assert(MI && "AsmPrinter didn't require GCModuleInfo?");
>>>>>>          for (GCModuleInfo::iterator I = MI->end(), E = MI->begin(); I != E; )
>>>>>> 
>>>>>>       diff  --git a/llvm/lib/CodeGen/GlobalISel/CallLowering.cpp b/llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
>>>>>>       index e0080b145d4f995..ce736178afc8b5a 100644
>>>>>>       --- a/llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
>>>>>>       +++ b/llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
>>>>>>       @@ -147,7 +147,7 @@ bool CallLowering::lowerCall(MachineIRBuilder &MIRBuilder, const CallBase &CB,
>>>>>>          if (const GlobalIFunc *IF = dyn_cast<GlobalIFunc>(CalleeV);
>>>>>>              IF && MF.getTarget().getTargetTriple().isOSBinFormatMachO()) {
>>>>>>            // ld64 requires that .symbol_resolvers to be called via a stub, so these
>>>>>>       -    // must always be a diret call.
>>>>>>       +    // must always be a direct call.
>>>>>>            Info.Callee = MachineOperand::CreateGA(IF, 0);
>>>>>>          } else if (const Function *F = dyn_cast<Function>(CalleeV))
>>>>>>            Info.Callee = MachineOperand::CreateGA(F, 0);
>>>>>> 
>>>>>>       diff  --git a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
>>>>>>       index f4128332008fb83..26b3a14e22b2ad9 100644
>>>>>>       --- a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
>>>>>>       +++ b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
>>>>>>       @@ -1965,65 +1965,71 @@ void AArch64AsmPrinter::emitManualSymbolResolver(Module &M,
>>>>>>          OutStreamer->emitLabel(StubHelper);
>>>>>>          emitVisibility(StubHelper, GI.getVisibility());
>>>>>> 
>>>>>>       -  // stp       fp, lr, [sp, #-16]!
>>>>>>       -  // mov       fp, sp
>>>>>>       -  // stp       x1, x0, [sp, #-16]!
>>>>>>       -  // stp       x3, x2, [sp, #-16]!
>>>>>>       -  // stp       x5, x4, [sp, #-16]!
>>>>>>       -  // stp       x7, x6, [sp, #-16]!
>>>>>>       -  // stp       d1, d0, [sp, #-16]!
>>>>>>       -  // stp       d3, d2, [sp, #-16]!
>>>>>>       -  // stp       d5, d4, [sp, #-16]!
>>>>>>       -  // stp       d7, d6, [sp, #-16]!
>>>>>>       +  // stp       fp, lr, [sp, #-16]
>>>>>>       +  // sub       fp, sp, 16
>>>>>>       +  // stp       x1, x0, [sp, #-32]
>>>>>>       +  // stp       x3, x2, [sp, #-48]
>>>>>>       +  // stp       x5, x4, [sp, #-64]
>>>>>>       +  // stp       x7, x6, [sp, #-80]
>>>>>>       +  // stp       d1, d0, [sp, #-96]
>>>>>>       +  // stp       d3, d2, [sp, #-112]
>>>>>>       +  // stp       d5, d4, [sp, #-128]
>>>>>>       +  // stp       d7, d6, [sp, #-144]
>>>>>>       +  // sub       sp, sp, 144
>>>>>>          // bl        _resolver
>>>>>>          // adrp      x16, lazy_pointer at GOTPAGE
>>>>>>          // ldr       x16, [x16, lazy_pointer at GOTPAGEOFF]
>>>>>>          // str       x0, [x16]
>>>>>>          // mov       x16, x0
>>>>>>       -  // ldp       d7, d6, [sp], #16
>>>>>>       -  // ldp       d5, d4, [sp], #16
>>>>>>       -  // ldp       d3, d2, [sp], #16
>>>>>>       -  // ldp       d1, d0, [sp], #16
>>>>>>       -  // ldp       x7, x6, [sp], #16
>>>>>>       -  // ldp       x5, x4, [sp], #16
>>>>>>       -  // ldp       x3, x2, [sp], #16
>>>>>>       -  // ldp       x1, x0, [sp], #16
>>>>>>       -  // ldp       fp, lr, [sp], #16
>>>>>>       +  // add       sp, sp, 144
>>>>>>       +  // ldp       d7, d6, [sp, #-144]
>>>>>>       +  // ldp       d5, d4, [sp, #-128]
>>>>>>       +  // ldp       d3, d2, [sp, #-112]
>>>>>>       +  // ldp       d1, d0, [sp, #-96]
>>>>>>       +  // ldp       x7, x6, [sp, #-80]
>>>>>>       +  // ldp       x5, x4, [sp, #-64]
>>>>>>       +  // ldp       x3, x2, [sp, #-48]
>>>>>>       +  // ldp       x1, x0, [sp, #-32]
>>>>>>       +  // ldp       fp, lr, [sp, #-16]
>>>>>>          // br        x16
>>>>>> 
>>>>>>       -  OutStreamer->emitInstruction(MCInstBuilder(AArch64::STPXpre)
>>>>>>       -                                   .addReg(AArch64::SP)
>>>>>>       +  OutStreamer->emitInstruction(MCInstBuilder(AArch64::STPXi)
>>>>>>                                           .addReg(AArch64::FP)
>>>>>>                                           .addReg(AArch64::LR)
>>>>>>                                           .addReg(AArch64::SP)
>>>>>>                                           .addImm(-2),
>>>>>>                                       *STI);
>>>>>> 
>>>>>>       -  OutStreamer->emitInstruction(MCInstBuilder(AArch64::ADDXri)
>>>>>>       +  OutStreamer->emitInstruction(MCInstBuilder(AArch64::SUBXri)
>>>>>>                                           .addReg(AArch64::FP)
>>>>>>                                           .addReg(AArch64::SP)
>>>>>>       -                                   .addImm(0)
>>>>>>       +                                   .addImm(16)
>>>>>>                                           .addImm(0),
>>>>>>                                       *STI);
>>>>>> 
>>>>>>       -  for (int I = 0; I != 4; ++I)
>>>>>>       -    OutStreamer->emitInstruction(MCInstBuilder(AArch64::STPXpre)
>>>>>>       -                                     .addReg(AArch64::SP)
>>>>>>       -                                     .addReg(AArch64::X1 + 2 * I)
>>>>>>       -                                     .addReg(AArch64::X0 + 2 * I)
>>>>>>       +  for (int I = 0; I != 8; I += 2)
>>>>>>       +    OutStreamer->emitInstruction(MCInstBuilder(AArch64::STPXi)
>>>>>>       +                                     .addReg(AArch64::X1 + I)
>>>>>>       +                                     .addReg(AArch64::X0 + I)
>>>>>>                                             .addReg(AArch64::SP)
>>>>>>       -                                     .addImm(-2),
>>>>>>       +                                     .addImm(-4 - I),
>>>>>>                                         *STI);
>>>>>> 
>>>>>>       -  for (int I = 0; I != 4; ++I)
>>>>>>       -    OutStreamer->emitInstruction(MCInstBuilder(AArch64::STPDpre)
>>>>>>       +  for (int I = 0; I != 8; I += 2)
>>>>>>       +    OutStreamer->emitInstruction(MCInstBuilder(AArch64::STPDi)
>>>>>>       +                                     .addReg(AArch64::D1 + I)
>>>>>>       +                                     .addReg(AArch64::D0 + I)
>>>>>>                                             .addReg(AArch64::SP)
>>>>>>       -                                     .addReg(AArch64::D1 + 2 * I)
>>>>>>       -                                     .addReg(AArch64::D0 + 2 * I)
>>>>>>       -                                     .addReg(AArch64::SP)
>>>>>>       -                                     .addImm(-2),
>>>>>>       +                                     .addImm(-12 - I),
>>>>>>                                         *STI);
>>>>>> 
>>>>>>       +  OutStreamer->emitInstruction(MCInstBuilder(AArch64::SUBXri)
>>>>>>       +                                   .addReg(AArch64::SP)
>>>>>>       +                                   .addReg(AArch64::SP)
>>>>>>       +                                   .addImm(144)
>>>>>>       +                                   .addImm(0),
>>>>>>       +                               *STI);
>>>>>>       +
>>>>>>          OutStreamer->emitInstruction(
>>>>>>              MCInstBuilder(AArch64::BL)
>>>>>>                  .addOperand(MCOperand::createExpr(lowerConstant(GI.getResolver()))),
>>>>>>       @@ -2070,30 +2076,34 @@ void AArch64AsmPrinter::emitManualSymbolResolver(Module &M,
>>>>>>                                           .addImm(0),
>>>>>>                                       *STI);
>>>>>> 
>>>>>>       -  for (int I = 3; I != -1; --I)
>>>>>>       -    OutStreamer->emitInstruction(MCInstBuilder(AArch64::LDPDpost)
>>>>>>       -                                     .addReg(AArch64::SP)
>>>>>>       -                                     .addReg(AArch64::D1 + 2 * I)
>>>>>>       -                                     .addReg(AArch64::D0 + 2 * I)
>>>>>>       +  OutStreamer->emitInstruction(MCInstBuilder(AArch64::ADDXri)
>>>>>>       +                                   .addReg(AArch64::SP)
>>>>>>       +                                   .addReg(AArch64::SP)
>>>>>>       +                                   .addImm(144)
>>>>>>       +                                   .addImm(0),
>>>>>>       +                               *STI);
>>>>>>       +
>>>>>>       +  for (int I = 6; I != -2; I -= 2)
>>>>>>       +    OutStreamer->emitInstruction(MCInstBuilder(AArch64::LDPDi)
>>>>>>       +                                     .addReg(AArch64::D1 + I)
>>>>>>       +                                     .addReg(AArch64::D0 + I)
>>>>>>                                             .addReg(AArch64::SP)
>>>>>>       -                                     .addImm(2),
>>>>>>       +                                     .addImm(-12 - I),
>>>>>>                                         *STI);
>>>>>> 
>>>>>>       -  for (int I = 3; I != -1; --I)
>>>>>>       -    OutStreamer->emitInstruction(MCInstBuilder(AArch64::LDPXpost)
>>>>>>       -                                     .addReg(AArch64::SP)
>>>>>>       -                                     .addReg(AArch64::X1 + 2 * I)
>>>>>>       -                                     .addReg(AArch64::X0 + 2 * I)
>>>>>>       +  for (int I = 6; I != -2; I -= 2)
>>>>>>       +    OutStreamer->emitInstruction(MCInstBuilder(AArch64::LDPXi)
>>>>>>       +                                     .addReg(AArch64::X1 + I)
>>>>>>       +                                     .addReg(AArch64::X0 + I)
>>>>>>                                             .addReg(AArch64::SP)
>>>>>>       -                                     .addImm(2),
>>>>>>       +                                     .addImm(-4 - I),
>>>>>>                                         *STI);
>>>>>> 
>>>>>>       -  OutStreamer->emitInstruction(MCInstBuilder(AArch64::LDPXpost)
>>>>>>       -                                   .addReg(AArch64::SP)
>>>>>>       +  OutStreamer->emitInstruction(MCInstBuilder(AArch64::LDPXi)
>>>>>>                                           .addReg(AArch64::FP)
>>>>>>                                           .addReg(AArch64::LR)
>>>>>>                                           .addReg(AArch64::SP)
>>>>>>       -                                   .addImm(2),
>>>>>>       +                                   .addImm(-2),
>>>>>>                                       *STI);
>>>>>> 
>>>>>>          OutStreamer->emitInstruction(MCInstBuilder(TM.getTargetTriple().isArm64e()
>>>>>> 
>>>>>>       diff  --git a/llvm/test/CodeGen/AArch64/addrsig-macho.ll b/llvm/test/CodeGen/AArch64/addrsig-macho.ll
>>>>>>       index 980b0e7bc446695..62bc764e0251b33 100644
>>>>>>       --- a/llvm/test/CodeGen/AArch64/addrsig-macho.ll
>>>>>>       +++ b/llvm/test/CodeGen/AArch64/addrsig-macho.ll
>>>>>>       @@ -3,6 +3,19 @@
>>>>>>        ; RUN: llvm-objdump --macho --section-headers %t | FileCheck %s --check-prefix=SECTIONS
>>>>>>        ; RUN: llvm-objdump --macho --reloc %t | FileCheck %s --check-prefix=RELOCS
>>>>>> 
>>>>>>       +; CHECK:     .section __DATA,__data
>>>>>>       +; CHECK: _i1.lazy_pointer:
>>>>>>       +; CHECK:     .section __TEXT,__text,regular,pure_instructions
>>>>>>       +; CHECK: _i1:
>>>>>>       +; CHECK: _i1.stub_helper:
>>>>>>       +; CHECK:     .section __DATA,__data
>>>>>>       +; CHECK: _i2.lazy_pointer:
>>>>>>       +; CHECK:     .section __TEXT,__text,regular,pure_instructions
>>>>>>       +; CHECK: _i2:
>>>>>>       +; CHECK: _i2.stub_helper:
>>>>>>       +
>>>>>>       +; CHECK:     .section __DWARF
>>>>>>       +
>>>>>>        ; CHECK:                       .addrsig{{$}}
>>>>>>        ; CHECK-NEXT:  .addrsig_sym _func03_takeaddr
>>>>>>        ; CHECK-NEXT:  .addrsig_sym _f1
>>>>>>       @@ -118,8 +131,8 @@ declare void @f3() unnamed_addr
>>>>>>        @a1 = alias i32, i32* @g1
>>>>>>        @a2 = internal local_unnamed_addr alias i32, i32* @g2
>>>>>> 
>>>>>>       - at i1 = external ifunc void(), void()* ()* @f1
>>>>>>       - at i2 = external local_unnamed_addr ifunc void(), void()* ()* @f2
>>>>>>       + at i1 = ifunc void(), void()* ()* @f1
>>>>>>       + at i2 = internal local_unnamed_addr ifunc void(), void()* ()* @f2
>>>>>> 
>>>>>>        declare void @llvm.dbg.value(metadata, metadata, metadata)
>>>>>> 
>>>>>> 
>>>>>>       diff  --git a/llvm/test/CodeGen/AArch64/ifunc-asm.ll b/llvm/test/CodeGen/AArch64/ifunc-asm.ll
>>>>>>       index fbc0f74cee46baa..ede669aa52703f7 100644
>>>>>>       --- a/llvm/test/CodeGen/AArch64/ifunc-asm.ll
>>>>>>       +++ b/llvm/test/CodeGen/AArch64/ifunc-asm.ll
>>>>>>       @@ -3,79 +3,82 @@
>>>>>>        ; RUN: llc -mtriple=arm64-apple-darwin %s -filetype=asm -o - -arm64-darwin-ifunc-symbol_resolver=if_supported | FileCheck %s --check-prefixes=MACHO,MACHO-DEFAULT
>>>>>>        ; RUN: llc -mtriple=arm64-apple-darwin %s -filetype=asm -o - -arm64-darwin-ifunc-symbol_resolver=never | FileCheck %s --check-prefixes=MACHO,MACHO-MANUAL
>>>>>>        ; RUN: llc -mtriple=arm64-apple-darwin %s -filetype=asm -o - | FileCheck %s --check-prefixes=MACHO,MACHO-MANUAL
>>>>>>       +; RUN: llc -mtriple=arm64-apple-darwin %s -filetype=asm -o - -global-isel | FileCheck %s --check-prefixes=MACHO,MACHO-MANUAL
>>>>>> 
>>>>>>       -define internal ptr @foo_resolver() {
>>>>>>       +define internal ptr @the_resolver() {
>>>>>>        entry:
>>>>>>          ret ptr null
>>>>>>        }
>>>>>>       -; ELF:                    .type foo_resolver, at function
>>>>>>       -; ELF-NEXT:           foo_resolver:
>>>>>>       +; ELF:                    .type the_resolver, at function
>>>>>>       +; ELF-NEXT:           the_resolver:
>>>>>> 
>>>>>>        ; MACHO:                  .p2align 2
>>>>>>       -; MACHO-NEXT:         _foo_resolver
>>>>>>       +; MACHO-NEXT:         _the_resolver
>>>>>> 
>>>>>> 
>>>>>>       - at foo_ifunc = ifunc i32 (i32), ptr @foo_resolver
>>>>>>       -; ELF:                    .globl foo_ifunc
>>>>>>       -; ELF-NEXT:               .type foo_ifunc, at gnu_indirect_function
>>>>>>       -; ELF-NEXT:               .set foo_ifunc, foo_resolver
>>>>>>       + at global_ifunc = ifunc i32 (i32), ptr @the_resolver
>>>>>>       +; ELF:                    .globl global_ifunc
>>>>>>       +; ELF-NEXT:               .type global_ifunc, at gnu_indirect_function
>>>>>>       +; ELF-NEXT:               .set global_ifunc, the_resolver
>>>>>> 
>>>>>>       -; MACHO-LINKER:           .globl _foo_ifunc
>>>>>>       +; MACHO-LINKER:           .globl _global_ifunc
>>>>>>        ; MACHO-LINKER-NEXT:      .p2align 2
>>>>>>       -; MACHO-LINKER-NEXT:  _foo_ifunc:
>>>>>>       -; MACHO-LINKER-NEXT:      .symbol_resolver _foo_ifunc
>>>>>>       -; MACHO-LINKER-NEXT:      b _foo_resolver
>>>>>>       +; MACHO-LINKER-NEXT:  _global_ifunc:
>>>>>>       +; MACHO-LINKER-NEXT:      .symbol_resolver _global_ifunc
>>>>>>       +; MACHO-LINKER-NEXT:      b _the_resolver
>>>>>> 
>>>>>>       -; MACHO-DEFAULT:          .globl _foo_ifunc
>>>>>>       +; MACHO-DEFAULT:          .globl _global_ifunc
>>>>>>        ; MACHO-DEFAULT-NEXT:     .p2align 2
>>>>>>       -; MACHO-DEFAULT-NEXT: _foo_ifunc:
>>>>>>       -; MACHO-DEFAULT-NEXT:     .symbol_resolver _foo_ifunc
>>>>>>       -; MACHO-DEFAULT-NEXT:     b _foo_resolver
>>>>>>       +; MACHO-DEFAULT-NEXT: _global_ifunc:
>>>>>>       +; MACHO-DEFAULT-NEXT:     .symbol_resolver _global_ifunc
>>>>>>       +; MACHO-DEFAULT-NEXT:     b _the_resolver
>>>>>> 
>>>>>>        ; MACHO-MANUAL:           .section __DATA,__data
>>>>>>       -; MACHO-MANUAL-NEXT:      .globl _foo_ifunc.lazy_pointer
>>>>>>       -; MACHO-MANUAL-NEXT:  _foo_ifunc.lazy_pointer:
>>>>>>       -; MACHO-MANUAL-NEXT:      .quad _foo_ifunc.stub_helper
>>>>>>       +; MACHO-MANUAL-NEXT:      .globl _global_ifunc.lazy_pointer
>>>>>>       +; MACHO-MANUAL-NEXT:  _global_ifunc.lazy_pointer:
>>>>>>       +; MACHO-MANUAL-NEXT:      .quad _global_ifunc.stub_helper
>>>>>> 
>>>>>>        ; MACHO-MANUAL:           .section __TEXT,__text,regular,pure_instructions
>>>>>>       -; MACHO-MANUAL-NEXT:      .globl _foo_ifunc
>>>>>>       +; MACHO-MANUAL-NEXT:      .globl _global_ifunc
>>>>>>        ; MACHO-MANUAL-NEXT:      .p2align 2
>>>>>>       -; MACHO-MANUAL-NEXT:  _foo_ifunc:
>>>>>>       -; MACHO-MANUAL-NEXT:      adrp    x16, _foo_ifunc.lazy_pointer at GOTPAGE
>>>>>>       -; MACHO-MANUAL-NEXT:      ldr     x16, [x16, _foo_ifunc.lazy_pointer at GOTPAGEOFF]
>>>>>>       +; MACHO-MANUAL-NEXT:  _global_ifunc:
>>>>>>       +; MACHO-MANUAL-NEXT:      adrp    x16, _global_ifunc.lazy_pointer at GOTPAGE
>>>>>>       +; MACHO-MANUAL-NEXT:      ldr     x16, [x16, _global_ifunc.lazy_pointer at GOTPAGEOFF]
>>>>>>        ; MACHO-MANUAL-NEXT:      ldr     x16, [x16]
>>>>>>        ; MACHO-MANUAL-NEXT:      br      x16
>>>>>>       -; MACHO-MANUAL-NEXT:      .globl  _foo_ifunc.stub_helper
>>>>>>       +; MACHO-MANUAL-NEXT:      .globl  _global_ifunc.stub_helper
>>>>>>        ; MACHO-MANUAL-NEXT:      .p2align        2
>>>>>>       -; MACHO-MANUAL-NEXT:  _foo_ifunc.stub_helper:
>>>>>>       -; MACHO-MANUAL-NEXT:      stp     x29, x30, [sp, #-16]!
>>>>>>       -; MACHO-MANUAL-NEXT:      mov     x29, sp
>>>>>>       -; MACHO-MANUAL-NEXT:      stp     x1, x0, [sp, #-16]!
>>>>>>       -; MACHO-MANUAL-NEXT:      stp     x3, x2, [sp, #-16]!
>>>>>>       -; MACHO-MANUAL-NEXT:      stp     x5, x4, [sp, #-16]!
>>>>>>       -; MACHO-MANUAL-NEXT:      stp     x7, x6, [sp, #-16]!
>>>>>>       -; MACHO-MANUAL-NEXT:      stp     d1, d0, [sp, #-16]!
>>>>>>       -; MACHO-MANUAL-NEXT:      stp     d3, d2, [sp, #-16]!
>>>>>>       -; MACHO-MANUAL-NEXT:      stp     d5, d4, [sp, #-16]!
>>>>>>       -; MACHO-MANUAL-NEXT:      stp     d7, d6, [sp, #-16]!
>>>>>>       -; MACHO-MANUAL-NEXT:      bl      _foo_resolver
>>>>>>       -; MACHO-MANUAL-NEXT:      adrp    x16, _foo_ifunc.lazy_pointer at GOTPAGE
>>>>>>       -; MACHO-MANUAL-NEXT:      ldr     x16, [x16, _foo_ifunc.lazy_pointer at GOTPAGEOFF]
>>>>>>       +; MACHO-MANUAL-NEXT:  _global_ifunc.stub_helper:
>>>>>>       +; MACHO-MANUAL-NEXT:      stp     x29, x30, [sp, #-16]
>>>>>>       +; MACHO-MANUAL-NEXT:      sub     x29, sp, #16
>>>>>>       +; MACHO-MANUAL-NEXT:      stp     x1, x0, [sp, #-32]
>>>>>>       +; MACHO-MANUAL-NEXT:      stp     x3, x2, [sp, #-48]
>>>>>>       +; MACHO-MANUAL-NEXT:      stp     x5, x4, [sp, #-64]
>>>>>>       +; MACHO-MANUAL-NEXT:      stp     x7, x6, [sp, #-80]
>>>>>>       +; MACHO-MANUAL-NEXT:      stp     d1, d0, [sp, #-96]
>>>>>>       +; MACHO-MANUAL-NEXT:      stp     d3, d2, [sp, #-112]
>>>>>>       +; MACHO-MANUAL-NEXT:      stp     d5, d4, [sp, #-128]
>>>>>>       +; MACHO-MANUAL-NEXT:      stp     d7, d6, [sp, #-144]
>>>>>>       +; MACHO-MANUAL-NEXT:      sub     sp, sp, #144
>>>>>>       +; MACHO-MANUAL-NEXT:      bl      _the_resolver
>>>>>>       +; MACHO-MANUAL-NEXT:      adrp    x16, _global_ifunc.lazy_pointer at GOTPAGE
>>>>>>       +; MACHO-MANUAL-NEXT:      ldr     x16, [x16, _global_ifunc.lazy_pointer at GOTPAGEOFF]
>>>>>>        ; MACHO-MANUAL-NEXT:      str     x0, [x16]
>>>>>>        ; MACHO-MANUAL-NEXT:      add     x16, x0, #0
>>>>>>       -; MACHO-MANUAL-NEXT:      ldp     d7, d6, [sp], #16
>>>>>>       -; MACHO-MANUAL-NEXT:      ldp     d5, d4, [sp], #16
>>>>>>       -; MACHO-MANUAL-NEXT:      ldp     d3, d2, [sp], #16
>>>>>>       -; MACHO-MANUAL-NEXT:      ldp     d1, d0, [sp], #16
>>>>>>       -; MACHO-MANUAL-NEXT:      ldp     x7, x6, [sp], #16
>>>>>>       -; MACHO-MANUAL-NEXT:      ldp     x5, x4, [sp], #16
>>>>>>       -; MACHO-MANUAL-NEXT:      ldp     x3, x2, [sp], #16
>>>>>>       -; MACHO-MANUAL-NEXT:      ldp     x1, x0, [sp], #16
>>>>>>       -; MACHO-MANUAL-NEXT:      ldp     x29, x30, [sp], #16
>>>>>>       +; MACHO-MANUAL-NEXT:      add     sp, sp, #144
>>>>>>       +; MACHO-MANUAL-NEXT:      ldp     d7, d6, [sp, #-144]
>>>>>>       +; MACHO-MANUAL-NEXT:      ldp     d5, d4, [sp, #-128]
>>>>>>       +; MACHO-MANUAL-NEXT:      ldp     d3, d2, [sp, #-112]
>>>>>>       +; MACHO-MANUAL-NEXT:      ldp     d1, d0, [sp, #-96]
>>>>>>       +; MACHO-MANUAL-NEXT:      ldp     x7, x6, [sp, #-80]
>>>>>>       +; MACHO-MANUAL-NEXT:      ldp     x5, x4, [sp, #-64]
>>>>>>       +; MACHO-MANUAL-NEXT:      ldp     x3, x2, [sp, #-48]
>>>>>>       +; MACHO-MANUAL-NEXT:      ldp     x1, x0, [sp, #-32]
>>>>>>       +; MACHO-MANUAL-NEXT:      ldp     x29, x30, [sp, #-16]
>>>>>>        ; MACHO-MANUAL-NEXT:      br      x16
>>>>>> 
>>>>>> 
>>>>>>       - at weak_ifunc = weak ifunc i32 (i32), ptr @foo_resolver
>>>>>>       + at weak_ifunc = weak ifunc i32 (i32), ptr @the_resolver
>>>>>>        ; ELF:             .type weak_ifunc, at gnu_indirect_function
>>>>>>        ; MACHO-LINKER:    .symbol_resolver _weak_ifunc
>>>>>>        ; MACHO-MANUAL:    _weak_ifunc.stub_helper:
>>>>>> 
>>>>>>       diff  --git a/llvm/test/Verifier/ifunc-macho.ll b/llvm/test/Verifier/ifunc-macho.ll
>>>>>>       deleted file mode 100644
>>>>>>       index 2e2166645983ac3..000000000000000
>>>>>>       --- a/llvm/test/Verifier/ifunc-macho.ll
>>>>>>       +++ /dev/null
>>>>>>       @@ -1,42 +0,0 @@
>>>>>>       -; RUN:  not llvm-as %s -o /dev/null 2>&1 | FileCheck %s
>>>>>>       -
>>>>>>       -target triple = "arm64-apple-ios"
>>>>>>       -
>>>>>>       -define ptr @resolver() {
>>>>>>       -  ret ptr null
>>>>>>       -}
>>>>>>       -
>>>>>>       - at g = external global i32
>>>>>>       - at inval_objtype = ifunc void (), ptr @g
>>>>>>       -; CHECK: IFunc must have a Function resolver
>>>>>>       -
>>>>>>       -declare ptr @resolver_decl()
>>>>>>       - at inval_resolver_decl = ifunc void (), ptr @resolver_decl
>>>>>>       -; CHECK: IFunc resolver must be a definition
>>>>>>       -; CHECK-NEXT: @inval_resolver_decl
>>>>>>       -
>>>>>>       -define available_externally ptr @resolver_linker_decl() {
>>>>>>       -  ret ptr null
>>>>>>       -}
>>>>>>       - at inval_resolver_decl2 = ifunc void (), ptr @resolver_linker_decl
>>>>>>       -; CHECK: IFunc resolver must be a definition
>>>>>>       -; CHECK-NEXT: @inval_resolver_decl2
>>>>>>       -
>>>>>>       - at ifunc_nonpointer_return_type = ifunc i32 (), ptr @resolver_returns_nonpointer
>>>>>>       -; CHECK: IFunc resolver must return a pointer
>>>>>>       -; CHECK-NEXT: ptr @ifunc_nonpointer_return_type
>>>>>>       -
>>>>>>       -define i32 @resolver_returns_nonpointer() {
>>>>>>       -  ret i32 0
>>>>>>       -}
>>>>>>       -
>>>>>>       - at valid_external = ifunc void (), ptr @resolver
>>>>>>       -; CHECK-NOT: valid_external
>>>>>>       -
>>>>>>       - at inval_linkonce = linkonce ifunc void (), ptr @resolver
>>>>>>       -
>>>>>>       - at inval_weak = weak ifunc void (), ptr @resolver
>>>>>>       -
>>>>>>       - at inval_weak_extern = extern_weak ifunc void (), ptr @resolver
>>>>>>       -
>>>>>>       - at inval_private = private ifunc void (), ptr @resolver
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>       _______________________________________________
>>>>>>       llvm-commits mailing list
>>>>>>       llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
>>>>>>       https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
>>>>>> 
>>>>> 
>>>> 
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20231204/6db2844b/attachment-0001.html>


More information about the llvm-commits mailing list