diff options
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.cpp | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp index 34b9049..d3bf164 100644 --- a/clang/lib/CodeGen/CodeGenFunction.cpp +++ b/clang/lib/CodeGen/CodeGenFunction.cpp @@ -473,6 +473,14 @@ void CodeGenFunction::ErrorUnsupported(const Stmt *S, const char *Type,  }  void CodeGenFunction::EmitMemSetToZero(llvm::Value *DestPtr, QualType Ty) { +  // Ignore empty classes in C++. +  if (getContext().getLangOptions().CPlusPlus) { +    if (const RecordType *RT = Ty->getAs<RecordType>()) { +      if (cast<CXXRecordDecl>(RT->getDecl())->isEmpty()) +        return; +    } +  } +      const llvm::Type *BP = llvm::Type::getInt8PtrTy(VMContext);    if (DestPtr->getType() != BP)      DestPtr = Builder.CreateBitCast(DestPtr, BP, "tmp");  | 
