================ @@ -14585,11 +14585,18 @@ void Sema::CheckAddressOfPackedMember(Expr *rhs) { _2, _3, _4)); } +static ExprResult UsualUnaryConversionsNoPromoteInt(Sema &S, Expr *E) { + // Don't promote integer types + if (QualType Ty = E->getType(); S.getASTContext().isPromotableIntegerType(Ty)) + return S.DefaultFunctionArrayLvalueConversion(E); + return S.UsualUnaryConversions(E); ---------------- efriedma-quic wrote:
It's a little weird that the resulting type can be larger than what integer promotion would produce (without this patch, `struct S { long l : 4; }; S s; static_assert(sizeof(__builtin_elementwise_abs(s.l)) == 4);`). But maybe that's fine. https://github.com/llvm/llvm-project/pull/119423 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits