[all-commits] [llvm/llvm-project] d84dcb: ARM: Stop setting sincos_stret calling convention

Matt Arsenault via All-commits all-commits at lists.llvm.org
Mon Jul 7 20:48:51 PDT 2025


  Branch: refs/heads/users/arsenm/arm/stop-explicitly-setting-sincos-stret-calling-conv
  Home:   https://github.com/llvm/llvm-project
  Commit: d84dcbfea49fe2c94a8fcc35e4c27de549ff11ca
      https://github.com/llvm/llvm-project/commit/d84dcbfea49fe2c94a8fcc35e4c27de549ff11ca
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2025-07-08 (Tue, 08 Jul 2025)

  Changed paths:
    M llvm/lib/IR/RuntimeLibcalls.cpp

  Log Message:
  -----------
  ARM: Stop setting sincos_stret calling convention

This was going out of its way to explicitly mark these as
ARM_AAPCS_VFP. This has been explicitly set since 8b40366b54bd4,
where the commit message states that "sincos" (not sincos_stret)
has a special calling convention. However, that commit also sets
the calling convention for all libcalls to ARM_AAPCS_VFP, and
getEffectiveCallingConv returns the same for CCC anyway in tests
using isWatchABI triples.

The net result of this appears to be a change in behavior when
using -float-abi=soft with isWatchABI, which have no tests so
I assume this is a theoretical combination.

If I assert
  if (getTargetMachine().getTargetTriple().isWatchABI()) {
    assert(!useSoftFloat());
    assert(getEffectiveCallingConv(CallingConv::C, false) == CallingConv::ARM_AAPCS_VFP);
  }

Only 2 tests fail the second condition, which look like copy paste accidents
using v7k triples with linux and only needed a filler triple. This is a consequence
of strangely using the target architecture in place of the OS ABI check,
as was done in 042a6c1fe19caf48af7e287dc8f6fd5fec158093



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