[all-commits] [llvm/llvm-project] 2c6a38: Re-land "[MS] Overhaul how clang passes overaligne...

Reid Kleckner via All-commits all-commits at lists.llvm.org
Tue Feb 11 16:49:33 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 2c6a3896ab1de706389f27c921cf58084650f439
      https://github.com/llvm/llvm-project/commit/2c6a3896ab1de706389f27c921cf58084650f439
  Author: Reid Kleckner <rnk at google.com>
  Date:   2020-02-11 (Tue, 11 Feb 2020)

  Changed paths:
    M clang/include/clang/CodeGen/CGFunctionInfo.h
    M clang/lib/CodeGen/CGCall.cpp
    M clang/lib/CodeGen/TargetInfo.cpp
    M clang/test/CodeGen/x86_32-arguments-win32.c
    A clang/test/CodeGenCXX/inalloca-overaligned.cpp
    A clang/test/CodeGenCXX/inalloca-vector.cpp

  Log Message:
  -----------
  Re-land "[MS] Overhaul how clang passes overaligned args on x86_32"

This brings back 2af74e27ed7d0832cbdde9cb969aaca7a42e99f9 and reverts
eaabaf7e04fe98990a8177a3e053346395efde1c.

The changes were correct, the code that was broken contained an ODR
violation that assumed that these types are passed equivalently:
  struct alignas(uint64_t) Wrapper { uint64_t P };
  void f(uint64_t p);
  void f(Wrapper p);

MSVC does not pass them the same way, and so clang-cl should not pass
them the same way either.




More information about the All-commits mailing list