r298816 - Revert 298754 and 298742.
Richard Trieu via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 11 15:48:36 PDT 2017
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 at 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 at 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 at first.h:* {{'Field::S12::x' from module 'FirstModule'
> is not present in definition of 'Field::S12' in module 'SecondModule'}}
> -// expected-note at 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 at first.h:* {{'Field::S13::x' from module 'FirstModule'
> is not present in definition of 'Field::S13' in module 'SecondModule'}}
> -// expected-note at second.h:* {{declaration of 'x' does not match}}
> -#endif
> } // namespace Field
>
> namespace Method {
> @@ -503,20 +476,6 @@ S13 s13;
> // expected-error at 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 at 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 at 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 at 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 at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170411/0c6a22d4/attachment-0001.html>
More information about the cfe-commits
mailing list