r299989 should prevent the build breakages. I have recommited my changes in r300001.
On Sun, Mar 26, 2017 at 11:32 AM, Vassil Vassilev via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: vvassilev > Date: Sun Mar 26 13:32:53 2017 > New Revision: 298816 > > URL: http://llvm.org/viewvc/llvm-project?rev=298816&view=rev > Log: > Revert 298754 and 298742. > > They broke llvm modules builds and our internal modules infrastructure. > > Modified: > cfe/trunk/include/clang/Basic/DiagnosticSerializationKinds.td > cfe/trunk/lib/AST/ODRHash.cpp > cfe/trunk/lib/Serialization/ASTReader.cpp > cfe/trunk/test/Modules/odr_hash.cpp > > Modified: cfe/trunk/include/clang/Basic/DiagnosticSerializationKinds.td > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/ > DiagnosticSerializationKinds.td?rev=298816&r1=298815&r2=298816&view=diff > ============================================================ > ================== > --- cfe/trunk/include/clang/Basic/DiagnosticSerializationKinds.td > (original) > +++ cfe/trunk/include/clang/Basic/DiagnosticSerializationKinds.td Sun Mar > 26 13:32:53 2017 > @@ -148,7 +148,7 @@ def err_module_odr_violation_mismatch_de > "method %4 is %select{not const|const}5|" > "method %4 is %select{not inline|inline}5|" > "method %4 that has %5 parameter%s5|" > - "method %4 with %ordinal5 parameter of type %6%select{| decayed from > %8}7|" > + "method %4 with %ordinal5 parameter of type %6|" > "method %4 with %ordinal5 parameter named %6|" > "method %4 with %ordinal5 parameter with %select{no |}6default > argument|" > "method %4 with %ordinal5 parameter with default argument}3">; > @@ -173,7 +173,7 @@ def note_module_odr_violation_mismatch_d > "method %2 is %select{not const|const}3|" > "method %2 is %select{not inline|inline}3|" > "method %2 that has %3 parameter%s3|" > - "method %2 with %ordinal3 parameter of type %4%select{| decayed from > %6}5|" > + "method %2 with %ordinal3 parameter of type %4|" > "method %2 with %ordinal3 parameter named %4|" > "method %2 with %ordinal3 parameter with %select{no |}4default > argument|" > "method %2 with %ordinal3 parameter with different default argument}1">; > > Modified: cfe/trunk/lib/AST/ODRHash.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ > ODRHash.cpp?rev=298816&r1=298815&r2=298816&view=diff > ============================================================ > ================== > --- cfe/trunk/lib/AST/ODRHash.cpp (original) > +++ cfe/trunk/lib/AST/ODRHash.cpp Sun Mar 26 13:32:53 2017 > @@ -330,10 +330,6 @@ public: > Hash.AddQualType(T); > } > > - void VisitQualifiers(Qualifiers Quals) { > - ID.AddInteger(Quals.getAsOpaqueValue()); > - } > - > void Visit(const Type *T) { > ID.AddInteger(T->getTypeClass()); > Inherited::Visit(T); > @@ -341,43 +337,6 @@ public: > > void VisitType(const Type *T) {} > > - void VisitAdjustedType(const AdjustedType *T) { > - AddQualType(T->getOriginalType()); > - AddQualType(T->getAdjustedType()); > - VisitType(T); > - } > - > - void VisitDecayedType(const DecayedType *T) { > - AddQualType(T->getDecayedType()); > - AddQualType(T->getPointeeType()); > - VisitAdjustedType(T); > - } > - > - void VisitArrayType(const ArrayType *T) { > - AddQualType(T->getElementType()); > - ID.AddInteger(T->getSizeModifier()); > - VisitQualifiers(T->getIndexTypeQualifiers()); > - VisitType(T); > - } > - void VisitConstantArrayType(const ConstantArrayType *T) { > - T->getSize().Profile(ID); > - VisitArrayType(T); > - } > - > - void VisitDependentSizedArrayType(const DependentSizedArrayType *T) { > - AddStmt(T->getSizeExpr()); > - VisitArrayType(T); > - } > - > - void VisitIncompleteArrayType(const IncompleteArrayType *T) { > - VisitArrayType(T); > - } > - > - void VisitVariableArrayType(const VariableArrayType *T) { > - AddStmt(T->getSizeExpr()); > - VisitArrayType(T); > - } > - > void VisitBuiltinType(const BuiltinType *T) { > ID.AddInteger(T->getKind()); > VisitType(T); > > Modified: cfe/trunk/lib/Serialization/ASTReader.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ > Serialization/ASTReader.cpp?rev=298816&r1=298815&r2=298816&view=diff > ============================================================ > ================== > --- cfe/trunk/lib/Serialization/ASTReader.cpp (original) > +++ cfe/trunk/lib/Serialization/ASTReader.cpp Sun Mar 26 13:32:53 2017 > @@ -9586,33 +9586,13 @@ void ASTReader::diagnoseOdrViolations() > for (unsigned I = 0; I < FirstNumParameters; ++I) { > const ParmVarDecl *FirstParam = FirstMethod->getParamDecl(I); > const ParmVarDecl *SecondParam = SecondMethod->getParamDecl(I); > - > - QualType FirstParamType = FirstParam->getType(); > - QualType SecondParamType = SecondParam->getType(); > - if (FirstParamType != SecondParamType) { > - if (const DecayedType *ParamDecayedType = > - FirstParamType->getAs<DecayedType>()) { > - ODRDiagError(FirstMethod->getLocation(), > - FirstMethod->getSourceRange(), > MethodParameterType) > - << FirstName << (I + 1) << FirstParamType << true > - << ParamDecayedType->getOriginalType(); > - } else { > - ODRDiagError(FirstMethod->getLocation(), > - FirstMethod->getSourceRange(), > MethodParameterType) > - << FirstName << (I + 1) << FirstParamType << false; > - } > - > - if (const DecayedType *ParamDecayedType = > - SecondParamType->getAs<DecayedType>()) { > - ODRDiagNote(SecondMethod->getLocation(), > - SecondMethod->getSourceRange(), > MethodParameterType) > - << SecondName << (I + 1) << SecondParamType << true > - << ParamDecayedType->getOriginalType(); > - } else { > - ODRDiagNote(SecondMethod->getLocation(), > - SecondMethod->getSourceRange(), > MethodParameterType) > - << SecondName << (I + 1) << SecondParamType << false; > - } > + if (FirstParam->getType() != SecondParam->getType()) { > + ODRDiagError(FirstMethod->getLocation(), > + FirstMethod->getSourceRange(), > MethodParameterType) > + << FirstName << (I + 1) << FirstParam->getType(); > + ODRDiagNote(SecondMethod->getLocation(), > + SecondMethod->getSourceRange(), > MethodParameterType) > + << SecondName << (I + 1) << SecondParam->getType(); > ParameterMismatch = true; > break; > } > > Modified: cfe/trunk/test/Modules/odr_hash.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ > Modules/odr_hash.cpp?rev=298816&r1=298815&r2=298816&view=diff > ============================================================ > ================== > --- cfe/trunk/test/Modules/odr_hash.cpp (original) > +++ cfe/trunk/test/Modules/odr_hash.cpp Sun Mar 26 13:32:53 2017 > @@ -275,33 +275,6 @@ S11 s11; > // expected-note@first.h:* {{but in 'FirstModule' found field 'x' with a > different initializer}} > #endif > > -#if defined(FIRST) > -struct S12 { > - unsigned x[5]; > -}; > -#elif defined(SECOND) > -struct S12 { > - unsigned x[7]; > -}; > -#else > -S12 s12; > -// expected-error@first.h:* {{'Field::S12::x' from module 'FirstModule' > is not present in definition of 'Field::S12' in module 'SecondModule'}} > -// expected-note@second.h:* {{declaration of 'x' does not match}} > -#endif > - > -#if defined(FIRST) > -struct S13 { > - unsigned x[7]; > -}; > -#elif defined(SECOND) > -struct S13 { > - double x[7]; > -}; > -#else > -S13 s13; > -// expected-error@first.h:* {{'Field::S13::x' from module 'FirstModule' > is not present in definition of 'Field::S13' in module 'SecondModule'}} > -// expected-note@second.h:* {{declaration of 'x' does not match}} > -#endif > } // namespace Field > > namespace Method { > @@ -503,20 +476,6 @@ S13 s13; > // expected-error@second.h:* {{'Method::S13' has different definitions > in different modules; first difference is definition in module > 'SecondModule' found method 'A' with 1st parameter with default argument}} > // expected-note@first.h:* {{but in 'FirstModule' found method 'A' with > 1st parameter with different default argument}} > #endif > - > -#if defined(FIRST) > -struct S14 { > - void A(int x[2]) {} > -}; > -#elif defined(SECOND) > -struct S14 { > - void A(int x[3]) {} > -}; > -#else > -S14 s14; > -// expected-error@second.h:* {{'Method::S14' has different definitions > in different modules; first difference is definition in module > 'SecondModule' found method 'A' with 1st parameter of type 'int *' decayed > from 'int [3]'}} > -// expected-note@first.h:* {{but in 'FirstModule' found method 'A' with > 1st parameter of type 'int *' decayed from 'int [2]'}} > -#endif > } // namespace Method > > // Naive parsing of AST can lead to cycles in processing. Ensure > @@ -638,52 +597,74 @@ S3 s3; > > // Interesting cases that should not cause errors. struct S should not > error > // while struct T should error at the access specifier mismatch at the > end. > -#define ALL_DECLS \ > -public: \ > -private: \ > -protected: \ > - static_assert(1 == 1, "Message"); \ > - static_assert(2 == 2); \ > - \ > - int x; \ > - double y; \ > - \ > - INT z; \ > - \ > - unsigned a : 1; \ > - unsigned b : 2 * 2 + 5 / 2; \ > - \ > - mutable int c = sizeof(x + y); \ > - \ > - void method() {} \ > - static void static_method() {} \ > - virtual void virtual_method() {} \ > - virtual void pure_virtual_method() = 0; \ > - inline void inline_method() {} \ > - void volatile_method() volatile {} \ > - void const_method() const {} \ > - \ > - typedef int typedef_int; \ > - using using_int = int; \ > - \ > - void method_one_arg(int x) {} \ > - void method_one_arg_default_argument(int x = 5 + 5) {} \ > - void method_decayed_type(int x[5]) {} \ > - \ > - int constant_arr[5]; \ > - \ > - double last_decl; > - > namespace AllDecls { > #if defined(FIRST) > typedef int INT; > struct S { > - ALL_DECLS > + public: > + private: > + protected: > + > + static_assert(1 == 1, "Message"); > + static_assert(2 == 2); > + > + int x; > + double y; > + > + INT z; > + > + unsigned a : 1; > + unsigned b : 2*2 + 5/2; > + > + mutable int c = sizeof(x + y); > + > + void method() {} > + static void static_method() {} > + virtual void virtual_method() {} > + virtual void pure_virtual_method() = 0; > + inline void inline_method() {} > + void volatile_method() volatile {} > + void const_method() const {} > + > + typedef int typedef_int; > + using using_int = int; > + > + void method_one_arg(int x) {} > + void method_one_arg_default_argument(int x = 5 + 5) {} > }; > #elif defined(SECOND) > typedef int INT; > struct S { > - ALL_DECLS > + public: > + private: > + protected: > + > + static_assert(1 == 1, "Message"); > + static_assert(2 == 2); > + > + int x; > + double y; > + > + INT z; > + > + unsigned a : 1; > + unsigned b : 2 * 2 + 5 / 2; > + > + mutable int c = sizeof(x + y); > + > + void method() {} > + static void static_method() {} > + virtual void virtual_method() {} > + virtual void pure_virtual_method() = 0; > + inline void inline_method() {} > + void volatile_method() volatile {} > + void const_method() const {} > + > + typedef int typedef_int; > + using using_int = int; > + > + void method_one_arg(int x) {} > + void method_one_arg_default_argument(int x = 5 + 5) {} > }; > #else > S *s; > @@ -692,14 +673,72 @@ S *s; > #if defined(FIRST) > typedef int INT; > struct T { > - ALL_DECLS > + public: > + private: > + protected: > + > + static_assert(1 == 1, "Message"); > + static_assert(2 == 2); > + > + int x; > + double y; > + > + INT z; > + > + unsigned a : 1; > + unsigned b : 2 * 2 + 5 / 2; > + > + mutable int c = sizeof(x + y); > + > + void method() {} > + static void static_method() {} > + virtual void virtual_method() {} > + virtual void pure_virtual_method() = 0; > + inline void inline_method() {} > + void volatile_method() volatile {} > + void const_method() const {} > + > + typedef int typedef_int; > + using using_int = int; > + > + void method_one_arg(int x) {} > + void method_one_arg_default_argument(int x = 5 + 5) {} > > private: > }; > #elif defined(SECOND) > typedef int INT; > struct T { > - ALL_DECLS > + public: > + private: > + protected: > + > + static_assert(1 == 1, "Message"); > + static_assert(2 == 2); > + > + int x; > + double y; > + > + INT z; > + > + unsigned a : 1; > + unsigned b : 2 * 2 + 5 / 2; > + > + mutable int c = sizeof(x + y); > + > + void method() {} > + static void static_method() {} > + virtual void virtual_method() {} > + virtual void pure_virtual_method() = 0; > + inline void inline_method() {} > + void volatile_method() volatile {} > + void const_method() const {} > + > + typedef int typedef_int; > + using using_int = int; > + > + void method_one_arg(int x) {} > + void method_one_arg_default_argument(int x = 5 + 5) {} > > public: > }; > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits