From 0a223d981e6d57a051c77a65cdee9f7024e1bc35 Mon Sep 17 00:00:00 2001 From: Erik Pilkington Date: Mon, 12 Aug 2019 18:31:27 +0000 Subject: [Sema] Require a complete type for __builtin_bit_cast operands Fixes llvm.org/PR42936 llvm-svn: 368600 --- clang/lib/Sema/SemaCast.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'clang/lib/Sema') diff --git a/clang/lib/Sema/SemaCast.cpp b/clang/lib/Sema/SemaCast.cpp index f184eda2f27..7a1d52ad4ea 100644 --- a/clang/lib/Sema/SemaCast.cpp +++ b/clang/lib/Sema/SemaCast.cpp @@ -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)) { + SrcExpr = ExprError(); + return; + } + CharUnits DestSize = Self.Context.getTypeSizeInChars(DestType); CharUnits SourceSize = Self.Context.getTypeSizeInChars(SrcType); if (DestSize != SourceSize) { -- cgit v1.2.3