Author: echristo Date: Mon Apr 2 11:33:47 2018 New Revision: 329001 URL: http://llvm.org/viewvc/llvm-project?rev=329001&view=rev Log: Temporarily revert r328404:
commit 519b97132a4c960e8dedbfe4290d86970d92e995 Author: Richard Trieu <rtr...@google.com> Date: Sat Mar 24 00:52:44 2018 +0000 [ODRHash] Support pointer and reference types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@328404 91177308-0d34-0410-b5e6-96231b3b80d8 As it's breaking some tests. I've communicated with Richard offline about testcases. Modified: cfe/trunk/lib/AST/ODRHash.cpp cfe/trunk/test/Modules/odr_hash.cpp Modified: cfe/trunk/lib/AST/ODRHash.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ODRHash.cpp?rev=329001&r1=329000&r2=329001&view=diff ============================================================================== --- cfe/trunk/lib/AST/ODRHash.cpp (original) +++ cfe/trunk/lib/AST/ODRHash.cpp Mon Apr 2 11:33:47 2018 @@ -642,24 +642,6 @@ public: VisitFunctionType(T); } - void VisitPointerType(const PointerType *T) { - AddQualType(T->getPointeeType()); - VisitType(T); - } - - void VisitReferenceType(const ReferenceType *T) { - AddQualType(T->getPointeeTypeAsWritten()); - VisitType(T); - } - - void VisitLValueReferenceType(const LValueReferenceType *T) { - VisitReferenceType(T); - } - - void VisitRValueReferenceType(const RValueReferenceType *T) { - VisitReferenceType(T); - } - void VisitTypedefType(const TypedefType *T) { AddDecl(T->getDecl()); QualType UnderlyingType = T->getDecl()->getUnderlyingType(); Modified: cfe/trunk/test/Modules/odr_hash.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/odr_hash.cpp?rev=329001&r1=329000&r2=329001&view=diff ============================================================================== --- cfe/trunk/test/Modules/odr_hash.cpp (original) +++ cfe/trunk/test/Modules/odr_hash.cpp Mon Apr 2 11:33:47 2018 @@ -2287,128 +2287,6 @@ Invalid1 i1; } // namespace BaseClass -namespace PointersAndReferences { -#if defined(FIRST) || defined(SECOND) -template<typename> struct Wrapper{}; -#endif - -#if defined(FIRST) -struct S1 { - Wrapper<int*> x; -}; -#elif defined(SECOND) -struct S1 { - Wrapper<float*> x; -}; -#else -S1 s1; -// expected-error@first.h:* {{PointersAndReferences::S1::x' from module 'FirstModule' is not present in definition of 'PointersAndReferences::S1' in module 'SecondModule'}} -// expected-note@second.h:* {{declaration of 'x' does not match}} -#endif - -#if defined(FIRST) -struct S2 { - Wrapper<int &&> x; -}; -#elif defined(SECOND) -struct S2 { - Wrapper<float &&> x; -}; -#else -S2 s2; -// expected-error@first.h:* {{PointersAndReferences::S2::x' from module 'FirstModule' is not present in definition of 'PointersAndReferences::S2' in module 'SecondModule'}} -// expected-note@second.h:* {{declaration of 'x' does not match}} -#endif - -#if defined(FIRST) -struct S3 { - Wrapper<int *> x; -}; -#elif defined(SECOND) -struct S3 { - Wrapper<float *> x; -}; -#else -S3 s3; -// expected-error@first.h:* {{PointersAndReferences::S3::x' from module 'FirstModule' is not present in definition of 'PointersAndReferences::S3' in module 'SecondModule'}} -// expected-note@second.h:* {{declaration of 'x' does not match}} -#endif - -#if defined(FIRST) -struct S4 { - Wrapper<int &> x; -}; -#elif defined(SECOND) -struct S4 { - Wrapper<float &> x; -}; -#else -S4 s4; -// expected-error@first.h:* {{PointersAndReferences::S4::x' from module 'FirstModule' is not present in definition of 'PointersAndReferences::S4' in module 'SecondModule'}} -// expected-note@second.h:* {{declaration of 'x' does not match}} -#endif - -#if defined(FIRST) -struct S5 { - Wrapper<S5 *> x; -}; -#elif defined(SECOND) -struct S5 { - Wrapper<const S5 *> x; -}; -#else -S5 s5; -// expected-error@second.h:* {{'PointersAndReferences::S5::x' from module 'SecondModule' is not present in definition of 'PointersAndReferences::S5' in module 'FirstModule'}} -// expected-note@first.h:* {{declaration of 'x' does not match}} -#endif - -#if defined(FIRST) -struct S6 { - Wrapper<int &> x; -}; -#elif defined(SECOND) -struct S6 { - Wrapper<const int &> x; -}; -#else -S6 s6; -// expected-error@first.h:* {{PointersAndReferences::S6::x' from module 'FirstModule' is not present in definition of 'PointersAndReferences::S6' in module 'SecondModule'}} -// expected-note@second.h:* {{declaration of 'x' does not match}} -#endif - -#define DECLS \ - Wrapper<int *> x1; \ - Wrapper<float *> x2; \ - Wrapper<const float *> x3; \ - Wrapper<int &> x4; \ - Wrapper<int &&> x5; \ - Wrapper<const int &> x6; \ - Wrapper<S1 *> x7; \ - Wrapper<S1 &> x8; \ - Wrapper<S1 &&> x9; - -#if defined(FIRST) || defined(SECOND) -struct Valid1 { - DECLS -}; -#else -Valid1 v1; -#endif - -#if defined(FIRST) || defined(SECOND) -struct Invalid1 { - DECLS - ACCESS -}; -#else -Invalid1 i1; -// expected-error@second.h:* {{'PointersAndReferences::Invalid1' has different definitions in different modules; first difference is definition in module 'SecondModule' found private access specifier}} -// expected-note@first.h:* {{but in 'FirstModule' found public access specifier}} -#endif -#undef DECLS -} // namespace PointersAndReferences - - // Collection of interesting cases below. // Naive parsing of AST can lead to cycles in processing. Ensure _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits