[PATCH] D29986: Fix crash when an incorrect redeclaration only differs in __unaligned type-qualifier
This revision was automatically updated to reflect the committed changes. Closed by commit rL296099: Fix crash when an incorrect redeclaration only differs in __unaligned type… (authored by rogfer01). Changed prior to commit: https://reviews.llvm.org/D29986?vs=88514&id=89617#toc Repository: rL LLVM https://reviews.llvm.org/D29986 Files: cfe/trunk/lib/AST/ASTContext.cpp cfe/trunk/test/Sema/unaligned-qualifier.c Index: cfe/trunk/test/Sema/unaligned-qualifier.c === --- cfe/trunk/test/Sema/unaligned-qualifier.c +++ cfe/trunk/test/Sema/unaligned-qualifier.c @@ -0,0 +1,4 @@ +// RUN: %clang_cc1 %s -verify -fsyntax-only -fms-extensions + +int __unaligned * p1; // expected-note {{previous definition is here}} +int * p1; // expected-error {{redefinition of 'p1' with a different type: 'int *' vs '__unaligned int *'}} Index: cfe/trunk/lib/AST/ASTContext.cpp === --- cfe/trunk/lib/AST/ASTContext.cpp +++ cfe/trunk/lib/AST/ASTContext.cpp @@ -8077,7 +8077,8 @@ // mismatch. if (LQuals.getCVRQualifiers() != RQuals.getCVRQualifiers() || LQuals.getAddressSpace() != RQuals.getAddressSpace() || -LQuals.getObjCLifetime() != RQuals.getObjCLifetime()) +LQuals.getObjCLifetime() != RQuals.getObjCLifetime() || +LQuals.hasUnaligned() != RQuals.hasUnaligned()) return QualType(); // Exactly one GC qualifier difference is allowed: __strong is Index: cfe/trunk/test/Sema/unaligned-qualifier.c === --- cfe/trunk/test/Sema/unaligned-qualifier.c +++ cfe/trunk/test/Sema/unaligned-qualifier.c @@ -0,0 +1,4 @@ +// RUN: %clang_cc1 %s -verify -fsyntax-only -fms-extensions + +int __unaligned * p1; // expected-note {{previous definition is here}} +int * p1; // expected-error {{redefinition of 'p1' with a different type: 'int *' vs '__unaligned int *'}} Index: cfe/trunk/lib/AST/ASTContext.cpp === --- cfe/trunk/lib/AST/ASTContext.cpp +++ cfe/trunk/lib/AST/ASTContext.cpp @@ -8077,7 +8077,8 @@ // mismatch. if (LQuals.getCVRQualifiers() != RQuals.getCVRQualifiers() || LQuals.getAddressSpace() != RQuals.getAddressSpace() || -LQuals.getObjCLifetime() != RQuals.getObjCLifetime()) +LQuals.getObjCLifetime() != RQuals.getObjCLifetime() || +LQuals.hasUnaligned() != RQuals.hasUnaligned()) return QualType(); // Exactly one GC qualifier difference is allowed: __strong is ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D29986: Fix crash when an incorrect redeclaration only differs in __unaligned type-qualifier
rogfer01 added a comment. Sorry for the noise. I was expecting some more formal approval in the usual form of "Ready to land" but if you think it is OK I will commit it shortly. Regards. https://reviews.llvm.org/D29986 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D29986: Fix crash when an incorrect redeclaration only differs in __unaligned type-qualifier
rjmccall added a comment. In https://reviews.llvm.org/D29986#684811, @rogfer01 wrote: > Ping? Are you expecting something even more conclusive than "looks good to me"? Because I sent you that feedback a week ago. :) https://reviews.llvm.org/D29986 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D29986: Fix crash when an incorrect redeclaration only differs in __unaligned type-qualifier
rogfer01 added a comment. Ping? https://reviews.llvm.org/D29986 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D29986: Fix crash when an incorrect redeclaration only differs in __unaligned type-qualifier
rjmccall added a comment. LGTM. https://reviews.llvm.org/D29986 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D29986: Fix crash when an incorrect redeclaration only differs in __unaligned type-qualifier
rogfer01 created this revision. This patch fixes an assertion that is hit when a redeclaration with differing types only differs in the unaligned type-qualifier. https://reviews.llvm.org/D29986 Files: lib/AST/ASTContext.cpp test/Sema/unaligned-qualifier.c Index: test/Sema/unaligned-qualifier.c === --- /dev/null +++ test/Sema/unaligned-qualifier.c @@ -0,0 +1,4 @@ +// RUN: %clang_cc1 %s -verify -fsyntax-only -fms-extensions + +int __unaligned * p1; // expected-note {{previous definition is here}} +int * p1; // expected-error {{redefinition of 'p1' with a different type: 'int *' vs '__unaligned int *'}} Index: lib/AST/ASTContext.cpp === --- lib/AST/ASTContext.cpp +++ lib/AST/ASTContext.cpp @@ -8077,7 +8077,8 @@ // mismatch. if (LQuals.getCVRQualifiers() != RQuals.getCVRQualifiers() || LQuals.getAddressSpace() != RQuals.getAddressSpace() || -LQuals.getObjCLifetime() != RQuals.getObjCLifetime()) +LQuals.getObjCLifetime() != RQuals.getObjCLifetime() || +LQuals.hasUnaligned() != RQuals.hasUnaligned()) return QualType(); // Exactly one GC qualifier difference is allowed: __strong is Index: test/Sema/unaligned-qualifier.c === --- /dev/null +++ test/Sema/unaligned-qualifier.c @@ -0,0 +1,4 @@ +// RUN: %clang_cc1 %s -verify -fsyntax-only -fms-extensions + +int __unaligned * p1; // expected-note {{previous definition is here}} +int * p1; // expected-error {{redefinition of 'p1' with a different type: 'int *' vs '__unaligned int *'}} Index: lib/AST/ASTContext.cpp === --- lib/AST/ASTContext.cpp +++ lib/AST/ASTContext.cpp @@ -8077,7 +8077,8 @@ // mismatch. if (LQuals.getCVRQualifiers() != RQuals.getCVRQualifiers() || LQuals.getAddressSpace() != RQuals.getAddressSpace() || -LQuals.getObjCLifetime() != RQuals.getObjCLifetime()) +LQuals.getObjCLifetime() != RQuals.getObjCLifetime() || +LQuals.hasUnaligned() != RQuals.hasUnaligned()) return QualType(); // Exactly one GC qualifier difference is allowed: __strong is ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits