[all-commits] [llvm/llvm-project] b355ea: [CIR] Accept a union whose members do not cover it...

Adam Smith via All-commits all-commits at lists.llvm.org
Mon Sep 14 20:39:44 PDT 2026


  Branch: refs/heads/users/adams381/cir-callconv-union-tail-padding
  Home:   https://github.com/llvm/llvm-project
  Commit: b355ea4e66a6a304c9bf028aada340f1751aeb4b
      https://github.com/llvm/llvm-project/commit/b355ea4e66a6a304c9bf028aada340f1751aeb4b
  Author: Adam Smith <adams at nvidia.com>
  Date:   2026-09-14 (Mon, 14 Sep 2026)

  Changed paths:
    M clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
    M clang/test/CIR/CodeGen/call-conv-lowering-x86_64-non-byval.cpp
    A clang/test/CIR/CodeGen/call-conv-lowering-x86_64-union-tail-padding.c
    M clang/test/CIR/Transforms/abi-lowering/x86_64-aggregate-nyi.cir
    M clang/test/CIR/Transforms/abi-lowering/x86_64-union.cir

  Log Message:
  -----------
  [CIR] Accept a union whose members do not cover its declared size

Past two eightbytes the x86_64 classifier never reads a union's members
to pick a coerce type.  It either classifies the record as memory, which
needs no coerce type at all, or it classifies SSE followed by SSEUP, and
then the coerce type is a vector as wide as the whole record.

Assisted-by: Cursor / claude-opus-5



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