Skip to content

TLS with large code model on x86_64-apple-darwin asserts #80831

Closed
@nikic

Description

@nikic
Contributor
target triple = "x86_64-apple-macosx10.12.0"

@g = external thread_local global i8

define ptr @test() {
  ret ptr @g
}

!llvm.module.flags = !{!0}

!0 = !{i32 1, !"Code Model", i32 4}

Results in:

llc: /home/npopov/repos/llvm-project/llvm/lib/Target/X86/X86ISelLowering.cpp:35071: MachineBasicBlock *llvm::X86TargetLowering::EmitLoweredTLSCall(MachineInstr &, MachineBasicBlock *) const: Assertion `MI.getOperand(3).isGlobal() && "This should be a global"' failed.

Activity

added this to the LLVM 18.X Release milestone on Feb 6, 2024
llvmbot

llvmbot commented on Feb 6, 2024

@llvmbot
Member

@llvm/issue-subscribers-backend-x86

Author: Nikita Popov (nikic)

```llvm target triple = "x86_64-apple-macosx10.12.0"

@g = external thread_local global i8

define ptr @test() {
ret ptr @g
}

!llvm.module.flags = !{!0}

!0 = !{i32 1, !"Code Model", i32 4}

Results in:

llc: /home/npopov/repos/llvm-project/llvm/lib/Target/X86/X86ISelLowering.cpp:35071: MachineBasicBlock *llvm::X86TargetLowering::EmitLoweredTLSCall(MachineInstr &, MachineBasicBlock *) const: Assertion `MI.getOperand(3).isGlobal() && "This should be a global"' failed.

</details>
nikic

nikic commented on Feb 6, 2024

@nikic
ContributorAuthor

Without large code model:

# *** IR Dump After Argument Stack Rebase (x86argumentstackrebase) ***:
# Machine code for function test: IsSSA, TracksLiveness

bb.0 (%ir-block.0):
  ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
  TLSCall_64 $rip, 1, $noreg, target-flags(x86-tlvp) @g, $noreg, implicit-def $rax, implicit-def dead $eflags, implicit-def dead $df, implicit $rsp, implicit $ssp
  ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
  %0:gr64 = COPY $rax
  $rax = COPY %0:gr64
  RET 0, $rax

With large code model:

# *** IR Dump After Argument Stack Rebase (x86argumentstackrebase) ***:
# Machine code for function test: IsSSA, TracksLiveness

bb.0 (%ir-block.0):
  ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
  %0:gr64 = MOV64ri32 target-flags(x86-tlvp) @g
  TLSCall_64 killed %0:gr64, 1, $noreg, 0, $noreg, implicit-def $rax, implicit-def dead $eflags, implicit-def dead $df, implicit $rsp, implicit $ssp
  ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
  %1:gr64 = COPY $rax
  $rax = COPY %1:gr64
  RET 0, $rax
nikic

nikic commented on Feb 6, 2024

@nikic
ContributorAuthor

Bisects to c04a05d @aeubanks

aeubanks

aeubanks commented on Feb 6, 2024

@aeubanks
Contributor

taking a look

moved this from Needs Triage to Needs Fix in LLVM Release Statuson Feb 6, 2024
added a commit that references this issue on Feb 6, 2024
5ef649d
added a commit that references this issue on Feb 7, 2024
66a2881

18 remaining items

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Done

    Relationships

    None yet

      Development

      Participants

      @nikic@EugeneZelenko@aeubanks@llvmbot

      Issue actions

        TLS with large code model on x86_64-apple-darwin asserts · Issue #80831 · llvm/llvm-project