[PATCH] D35056: GCC ABI incompatibility when passing object with trivial copy ctor, trivial dtor, and non-trivial move ctor
Vassil Vassilev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Aug 6 12:20:05 PDT 2017
v.g.vassilev updated this revision to Diff 109932.
v.g.vassilev marked an inline comment as done.
v.g.vassilev added a comment.
We set the record's property denoting whether we can pass the decl by registers as a last step of `Sema::CheckCompletedCXXClass`. We cannot do it any earlier than that because we have not computed the triviality information.
This patch still eagerly defines too many implicit members. As discussed with @rsmith, he will take care of the non-trivial refactoring of `Sema::ShouldDeleteSpecialMember` to fix this regression.
This patch passes all tests in codegen but still fails a few which are sensitive to the amount of implicit members being created:
Failing Tests (13):
Clang :: CodeCompletion/ordinary-name-cxx11.cpp
Clang :: Misc/ast-dump-color.cpp
Clang :: Misc/ast-dump-decl.cpp
Clang :: Misc/ast-dump-invalid.cpp
Clang-Unit :: AST/./ASTTests/CXXMethodDecl.CXXMethodDeclWithNoExceptSpecification
Clang-Unit :: ASTMatchers/./ASTMatchersTests/ConstructorDeclaration.IsImplicit
Clang-Unit :: ASTMatchers/./ASTMatchersTests/ConstructorDeclaration.Kinds
Clang-Unit :: ASTMatchers/./ASTMatchersTests/DeclarationMatcher.MatchNot
Clang-Unit :: ASTMatchers/./ASTMatchersTests/DeclarationMatcher.hasMethod
Clang-Unit :: ASTMatchers/./ASTMatchersTests/DeclaratorDecl.MatchesDeclaratorDecls
Clang-Unit :: ASTMatchers/./ASTMatchersTests/Matcher.References
Clang-Unit :: ASTMatchers/./ASTMatchersTests/TypeMatcher.MatchesClassType
Clang-Unit :: ASTMatchers/Dynamic/./DynamicASTMatchersTests/RegistryTest.VariadicOp
Expected Passes : 10786
Expected Failures : 17
Unsupported Tests : 195
Unexpected Failures: 13
https://reviews.llvm.org/D35056
Files:
include/clang/AST/DeclCXX.h
include/clang/Sema/Sema.h
lib/AST/ASTImporter.cpp
lib/AST/DeclCXX.cpp
lib/CodeGen/CGCXXABI.cpp
lib/CodeGen/ItaniumCXXABI.cpp
lib/Sema/SemaDeclCXX.cpp
lib/Serialization/ASTReaderDecl.cpp
lib/Serialization/ASTWriter.cpp
test/CodeGenCXX/uncopyable-args.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D35056.109932.patch
Type: text/x-patch
Size: 15380 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170806/c59b8d1b/attachment.bin>
More information about the cfe-commits
mailing list