Sure, I fixed this in r368610. Erik
> On Aug 12, 2019, at 11:39 AM, Richard Smith <rich...@metafoo.co.uk> wrote: > > On Mon, 12 Aug 2019 at 11:30, Erik Pilkington via cfe-commits > <cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>> wrote: > Author: epilk > Date: Mon Aug 12 11:31:27 2019 > New Revision: 368600 > > URL: http://llvm.org/viewvc/llvm-project?rev=368600&view=rev > <http://llvm.org/viewvc/llvm-project?rev=368600&view=rev> > Log: > [Sema] Require a complete type for __builtin_bit_cast operands > > Fixes llvm.org/PR42936 <http://llvm.org/PR42936> > > Modified: > cfe/trunk/lib/Sema/SemaCast.cpp > cfe/trunk/test/SemaCXX/builtin-bit-cast.cpp > > Modified: cfe/trunk/lib/Sema/SemaCast.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCast.cpp?rev=368600&r1=368599&r2=368600&view=diff > > <http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCast.cpp?rev=368600&r1=368599&r2=368600&view=diff> > ============================================================================== > --- cfe/trunk/lib/Sema/SemaCast.cpp (original) > +++ cfe/trunk/lib/Sema/SemaCast.cpp Mon Aug 12 11:31:27 2019 > @@ -2803,6 +2803,14 @@ void CastOperation::CheckBuiltinBitCast( > SrcExpr = Self.CreateMaterializeTemporaryExpr(SrcType, SrcExpr.get(), > > /*IsLValueReference=*/false); > > + if (Self.RequireCompleteType(OpRange.getBegin(), DestType, > + diag::err_typecheck_cast_to_incomplete) || > + Self.RequireCompleteType(OpRange.getBegin(), SrcType, > + diag::err_incomplete_type)) { > > Nit: we should check the source type for completeness before performing > temporary materialization conversion, as materializing a temporary only makes > sense for a complete type. > > + SrcExpr = ExprError(); > + return; > + } > + > CharUnits DestSize = Self.Context.getTypeSizeInChars(DestType); > CharUnits SourceSize = Self.Context.getTypeSizeInChars(SrcType); > if (DestSize != SourceSize) { > > Modified: cfe/trunk/test/SemaCXX/builtin-bit-cast.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/builtin-bit-cast.cpp?rev=368600&r1=368599&r2=368600&view=diff > > <http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/builtin-bit-cast.cpp?rev=368600&r1=368599&r2=368600&view=diff> > ============================================================================== > --- cfe/trunk/test/SemaCXX/builtin-bit-cast.cpp (original) > +++ cfe/trunk/test/SemaCXX/builtin-bit-cast.cpp Mon Aug 12 11:31:27 2019 > @@ -37,3 +37,12 @@ constexpr unsigned long ul = __builtin_b > > // expected-error@+1 {{__builtin_bit_cast destination type must be trivially > copyable}} > constexpr long us = __builtin_bit_cast(unsigned long &, 0L); > + > +namespace PR42936 { > +template <class T> struct S { int m; }; > + > +extern S<int> extern_decl; > + > +int x = __builtin_bit_cast(int, extern_decl); > +S<char> y = __builtin_bit_cast(S<char>, 0); > +} > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org> > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > <https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits>
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits