[all-commits] [llvm/llvm-project] a27f40: [X86_64] Fix empty field error in vaarg of C++. (#...

Longsheng Mou via All-commits all-commits at lists.llvm.org
Mon Aug 12 20:35:45 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: a27f40e5d9636b0853e8de0b95d72261f8d34696
      https://github.com/llvm/llvm-project/commit/a27f40e5d9636b0853e8de0b95d72261f8d34696
  Author: Longsheng Mou <moulongsheng at huawei.com>
  Date:   2024-08-13 (Tue, 13 Aug 2024)

  Changed paths:
    M clang/lib/CodeGen/Targets/X86.cpp
    M clang/test/CodeGenCXX/x86_64-vaarg.cpp

  Log Message:
  -----------
  [X86_64] Fix empty field error in vaarg of C++. (#101639)

Such struct types:
```
struct {
  struct{} a;
  long long b;
};

stuct {
  struct{} a;
  double b;
};
```
For such structures, Lo is NoClass and Hi is Integer/SSE. And when this
structure argument is passed, the high part is passed at offset 8 in
memory. So we should do special handling for these types in
EmitVAArg.Fix https://github.com/llvm/llvm-project/issues/79790 and fix
https://github.com/llvm/llvm-project/issues/86371.



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