llvm-project/clang/lib/AST
Eric Fiselier 12a9f344c6 Make __has_unique_object_representations reject empty union types.
Summary:
Clang incorrectly reports empty unions as having a unique object representation. However, this is not correct since `sizeof(EmptyUnion) == 1` AKA it has 8 bits of padding. Therefore it should be treated the same as an empty struct and report `false`.

@erichkeane also suggested this fix should be merged into the 6.0 release branch, so the initial release of `__has_unique_object_representations` is as bug-free as possible. 

Reviewers: erichkeane, rsmith, aaron.ballman, majnemer

Reviewed By: erichkeane

Subscribers: cfe-commits, erichkeane

Differential Revision: https://reviews.llvm.org/D42863

llvm-svn: 324134
2018-02-02 20:30:39 +00:00
..
APValue.cpp Re-commit r289252 and r289285, and fix PR31374 2016-12-15 08:09:08 +00:00
ASTConsumer.cpp Move LocInfoType from Sema to AST. 2016-02-01 17:42:01 +00:00
ASTContext.cpp Make __has_unique_object_representations reject empty union types. 2018-02-02 20:30:39 +00:00
ASTDiagnostic.cpp Added LLVM_FALLTHROUGH to address warning: this statement may fall through. NFC. 2017-06-03 06:31:42 +00:00
ASTDumper.cpp Ensure code complete with !LoadExternal sees all local decls. 2018-01-16 12:33:46 +00:00
ASTImporter.cpp [ASTImporter] Add support to import some AST nodes: 2018-01-27 16:11:45 +00:00
ASTStructuralEquivalence.cpp [ASTImporter] Support LambdaExprs and improve template support 2018-01-26 11:36:54 +00:00
ASTTypeTraits.cpp Teach clang-query to dump types. I couldn't find any existing tests for clang-query's dumping functionality. =( 2016-11-02 23:57:18 +00:00
AttrImpl.cpp [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
CMakeLists.txt Moved QualTypeNames.h from Tooling to AST. 2017-11-08 10:39:03 +00:00
CXXABI.h Fix __has_unique_object_representations implementation 2017-11-30 16:37:02 +00:00
CXXInheritance.cpp Refactor overridden methods iteration to avoid double lookups. 2017-12-17 23:52:45 +00:00
Comment.cpp [AST] Look through attribute type locs when searching for function type 2017-04-26 12:46:27 +00:00
CommentBriefParser.cpp [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
CommentCommandTraits.cpp
CommentLexer.cpp Fix 'unknown documentation command' warning ranges 2016-10-25 10:06:11 +00:00
CommentParser.cpp [cleanup] Remove excessive padding from TextTokenRetokenizer::Position 2016-09-20 18:32:48 +00:00
CommentSema.cpp -Wdocumentation should allow '...' params in variadic function type aliases 2017-10-06 20:51:04 +00:00
DataCollection.cpp [analyzer] Make StmtDataCollector customizable 2017-08-23 16:28:26 +00:00
Decl.cpp [AST] namespace ns { extern "C" { int X; }} prints as "ns::X", not as "X" 2018-02-02 13:34:47 +00:00
DeclBase.cpp PR36181: Teach CodeGen to properly ignore requests to emit dependent entities. 2018-02-01 00:28:36 +00:00
DeclCXX.cpp Serialize the IDNS for a UsingShadowDecl rather than recomputing it. 2018-01-06 01:07:05 +00:00
DeclFriend.cpp [AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-11-10 00:59:22 +00:00
DeclGroup.cpp [AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-11-10 00:59:22 +00:00
DeclObjC.cpp [AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-11-22 21:32:07 +00:00
DeclOpenMP.cpp [OPENMP] Fix for PR31416: Clang crashes on OMPCapturedExpr during source 2016-12-20 16:51:02 +00:00
DeclPrinter.cpp [DeclPrinter] Fix two cases that crash clang -ast-print. 2018-01-17 19:29:39 +00:00
DeclTemplate.cpp D40901: Refactor lazy loading of template specializations. NFC 2017-12-14 23:30:18 +00:00
DeclarationName.cpp [AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-11-21 23:26:08 +00:00
Expr.cpp Silence a bunch of implicit fallthrough warnings 2017-12-19 22:06:11 +00:00
ExprCXX.cpp Silence a bunch of implicit fallthrough warnings 2017-12-19 22:06:11 +00:00
ExprClassification.cpp [Sema] Disallow assigning record lvalues with nested const-qualified fields. 2017-09-19 13:10:30 +00:00
ExprConstant.cpp Track in the AST whether the operand to a UnaryOperator can overflow and then use that logic when evaluating constant expressions and emitting codegen. 2018-01-09 13:07:03 +00:00
ExprObjC.cpp [AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-11-30 22:33:48 +00:00
ExternalASTMerger.cpp [ASTImporter] avoid warnings: unused var, switch covered 2018-01-26 12:06:44 +00:00
ExternalASTSource.cpp [AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-11-08 00:39:18 +00:00
InheritViz.cpp
ItaniumCXXABI.cpp Fix __has_unique_object_representations implementation 2017-11-30 16:37:02 +00:00
ItaniumMangle.cpp Silence a bunch of implicit fallthrough warnings 2017-12-19 22:06:11 +00:00
Linkage.h Give external linkage and mangling to lambdas inside inline variables and variable templates. 2017-09-22 04:25:05 +00:00
Mangle.cpp [modules ts] Ensure that module linkage variables are always emitted and always have their name mangled. 2017-09-07 00:55:55 +00:00
MicrosoftCXXABI.cpp Fix __has_unique_object_representations implementation 2017-11-30 16:37:02 +00:00
MicrosoftMangle.cpp AST: support protocol conformances on id/class/interfaces in MS ABI 2018-01-26 19:08:26 +00:00
NSAPI.cpp Recommit "Add _Float16 as a C/C++ source language type" 2017-09-08 15:15:00 +00:00
NestedNameSpecifier.cpp Refactor functions PrintTemplateArgumentList 2017-11-28 16:14:14 +00:00
ODRHash.cpp [ODRHash] Don't hash friend functions. 2018-01-12 04:42:27 +00:00
OpenMPClause.cpp [AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-11-29 23:27:36 +00:00
ParentMap.cpp [arcmt/objcmt] Fix ParentMap crash with invalid code. 2016-07-14 20:21:16 +00:00
QualTypeNames.cpp Moved QualTypeNames.h from Tooling to AST. 2017-11-08 10:39:03 +00:00
RawCommentList.cpp AST: Improve a couple of comments and cast unused values to void 2016-10-16 20:12:42 +00:00
RecordLayout.cpp [AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-11-10 00:59:22 +00:00
RecordLayoutBuilder.cpp [PR32482] Fix bitfield layout for -mms-bitfield and pragma pack 2018-01-31 21:59:02 +00:00
SelectorLocationsKind.cpp
Stmt.cpp [AST] Inline CompoundStmt contents into the parent allocation. 2017-12-24 16:24:20 +00:00
StmtCXX.cpp [coroutines] Add serialization/deserialization of coroutines 2017-07-25 18:01:49 +00:00
StmtIterator.cpp [AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-11-21 23:26:08 +00:00
StmtObjC.cpp Retire llvm::alignOf in favor of C++11 alignof. 2016-10-20 14:27:22 +00:00
StmtOpenMP.cpp [OPENMP] Add support for cancel constructs in `target teams distribute 2017-11-22 21:12:03 +00:00
StmtPrinter.cpp [OPENMP] Replace calls of getAssociatedStmt(). 2018-01-12 19:39:11 +00:00
StmtProfile.cpp [c++2a] P0515R3: Support for overloaded operator<=>. 2017-12-01 02:13:10 +00:00
StmtViz.cpp
TemplateBase.cpp [AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-11-21 23:26:08 +00:00
TemplateName.cpp [AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-11-21 23:26:08 +00:00
Type.cpp Again reverting an attempt to convert the DeclSpec enums into scoped enums. 2018-01-01 18:23:28 +00:00
TypeLoc.cpp Again reverting an attempt to convert the DeclSpec enums into scoped enums. 2018-01-01 18:23:28 +00:00
TypePrinter.cpp Re-commit r321223, which adds a printing policy to the ASTDumper. 2017-12-21 21:42:42 +00:00
VTTBuilder.cpp [AST] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-12-01 22:04:49 +00:00
VTableBuilder.cpp Refactor overridden methods iteration to avoid double lookups. 2017-12-17 23:52:45 +00:00