[all-commits] [llvm/llvm-project] 4fabe6: Use internal linkage for __NoopCoro_ResumeDestroy ...

Daniel Paoliello via All-commits all-commits at lists.llvm.org
Thu Sep 18 09:24:57 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 4fabe6ffae885bddc52500ad59bc535febfaa494
      https://github.com/llvm/llvm-project/commit/4fabe6ffae885bddc52500ad59bc535febfaa494
  Author: Daniel Paoliello <danpao at microsoft.com>
  Date:   2025-09-18 (Thu, 18 Sep 2025)

  Changed paths:
    M llvm/lib/Transforms/Coroutines/CoroEarly.cpp
    M llvm/test/Transforms/Coroutines/coro-noop-pacbti.ll
    M llvm/test/Transforms/Coroutines/coro-noop.ll

  Log Message:
  -----------
  Use internal linkage for __NoopCoro_ResumeDestroy (#159407)

`__NoopCoro_ResumeDestroy` currently has private linkage, which causes
[issues for
Arm64EC](https://github.com/llvm/llvm-project/issues/158341). The
Arm64EC lowering is trying to mangle and add thunks for
`__NoopCoro_ResumeDestroy`, since it sees that it's address is taken
(and, therefore, might be called from x64 code via a function pointer).
MSVC's linker requires that the function be placed in COMDAT (`LNK1361:
non COMDAT symbol '.L#__NoopCoro_ResumeDestroy' in hybrid binary`) which
trips an assert in the verifier (`comdat global value has private
linkage`) and the subsequent linking step fails since the private symbol
isn't in the symbol table.

Since there is no reason to use private linkage for
`__NoopCoro_ResumeDestroy` and other coro related functions have also
been [switched to internal linkage to improve
debugging](https://github.com/llvm/llvm-project/pull/151224), this
change switches to using internal linkage.

Fixes #158341



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list