qiucf added inline comments.
================ Comment at: clang/lib/CodeGen/TargetInfo.cpp:5159 BT->getKind() == BuiltinType::LongDouble || + BT->getKind() == BuiltinType::Ibm128 || (getContext().getTargetInfo().hasFloat128Type() && ---------------- rjmccall wrote: > qiucf wrote: > > rjmccall wrote: > > > I hesitate to ask this, but does `__ibm128` form homogeneous aggregates > > > with `double`s? > > > Homogeneous floating-point aggregates can have up to four IBM EXTENDED > > > PRECISION members, four IEEE BINARY 128 QUADRUPLE PRECISION members, four > > > _Decimal128 members, or eight members of other floating-point types. > > > (Unions are treated as their largest member. For homogeneous unions, > > > different union alternatives may have different sizes, provided that all > > > union members are homogeneous with respect to each other.) They are > > > passed in floating-point registers if parameters of that type would be > > > passed in floating-point registers. They are passed in vector registers > > > if parameters of that type would be passed in vector registers. They are > > > passed as if each member was specified as a separate parameter. > > > > Yes. > No, I mean, would an `__ibm128` in a struct with a pair of `double`s be > treated as if it were 4 `double`s, or is it considered non-homogeneous the > same way that a struct with e.g. 4 `float`s and 2 `double`s would be > non-homogeneous? Ah, I think not. `__ibm128` (PowerPC `long double` also produces `ppc_fp128`) is distinct type in determining homogeneous aggregates. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D93377/new/ https://reviews.llvm.org/D93377 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits