[all-commits] [llvm/llvm-project] 6de45b: [clang] Fix reading long doubles with va_arg on x8...

Martin Storsjö via All-commits all-commits at lists.llvm.org
Mon Jun 7 12:47:40 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 6de45b9e6a2c4b69ca82916a4cc1b4b8636d79b3
      https://github.com/llvm/llvm-project/commit/6de45b9e6a2c4b69ca82916a4cc1b4b8636d79b3
  Author: Martin Storsjö <martin at martin.st>
  Date:   2021-06-07 (Mon, 07 Jun 2021)

  Changed paths:
    M clang/lib/CodeGen/TargetInfo.cpp
    M clang/test/CodeGen/mingw-long-double.c
    M clang/test/CodeGen/win64-i128.c
    M clang/test/CodeGenCXX/ext-int.cpp

  Log Message:
  -----------
  [clang] Fix reading long doubles with va_arg on x86_64 mingw

On x86_64 mingw, long doubles are always passed indirectly as
arguments (see an existing case in WinX86_64ABIInfo::classify);
generalize the existing code for reading varargs - any non-aggregate
type that is larger than 64 bits (which would be both long double
in mingw, and __int128) are passed indirectly too.

This makes reading varargs consistent with how they're passed,
fixing interop with both gcc and clang callers, for long double
and __int128.

Differential Revision: https://reviews.llvm.org/D103452




More information about the All-commits mailing list