Author: Melanie Blower Date: 2019-11-08T14:18:15-08:00 New Revision: d0b3e73175041306474bfb1914ef565e042fb50a
URL: https://github.com/llvm/llvm-project/commit/d0b3e73175041306474bfb1914ef565e042fb50a DIFF: https://github.com/llvm/llvm-project/commit/d0b3e73175041306474bfb1914ef565e042fb50a.diff LOG: Revert "Reapply "Fix crash on switch conditions of non-integer types in templates"" This reverts commit 759948467ea3181615d44d80f74ffeb260180fd0. There were build bot failures in clang-tidy Added: Modified: clang-tools-extra/test/clang-tidy/checkers/bugprone-string-integer-assignment.cpp clang-tools-extra/test/clang-tidy/checkers/misc-unused-parameters.cpp clang/lib/AST/Expr.cpp clang/lib/Sema/SemaChecking.cpp clang/test/SemaCXX/constant-expression-cxx2a.cpp clang/test/SemaTemplate/dependent-names.cpp clang/test/SemaTemplate/enum-argument.cpp clang/test/SemaTemplate/member-access-expr.cpp Removed: clang/test/SemaTemplate/non-integral-switch-cond.cpp ################################################################################ diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone-string-integer-assignment.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone-string-integer-assignment.cpp index 79d41ef77c80..18fe5ef4e5c2 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone-string-integer-assignment.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone-string-integer-assignment.cpp @@ -103,8 +103,6 @@ struct S { static constexpr T t = 0x8000; std::string s; void f(char c) { s += c | static_cast<int>(t); } - // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: an integer is interpreted as a chara - // CHECK-FIXES: {{^}} void f(char c) { s += std::to_string(c | static_cast<int>(t)); } }; template S<int>; diff --git a/clang-tools-extra/test/clang-tidy/checkers/misc-unused-parameters.cpp b/clang-tools-extra/test/clang-tidy/checkers/misc-unused-parameters.cpp index 8e546b44ab74..119eff67318e 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/misc-unused-parameters.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/misc-unused-parameters.cpp @@ -233,7 +233,7 @@ struct a { template <class> class d { a e; - void f() { e.b(0); } + void f() { e.b(); } }; } // namespace } // namespace PR38055 diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index 00ba329642c8..3438c3aadc6b 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -1675,15 +1675,6 @@ MemberExpr *MemberExpr::Create( MemberExpr *E = new (Mem) MemberExpr(Base, IsArrow, OperatorLoc, MemberDecl, NameInfo, T, VK, OK, NOUR); - if (FieldDecl *Field = dyn_cast<FieldDecl>(MemberDecl)) { - DeclContext *DC = MemberDecl->getDeclContext(); - // dyn_cast_or_null is used to handle objC variables which do not - // have a declaration context. - CXXRecordDecl *RD = dyn_cast_or_null<CXXRecordDecl>(DC); - if (RD && RD->isDependentContext() && RD->isCurrentInstantiation(DC)) - E->setTypeDependent(T->isDependentType()); - } - if (HasQualOrFound) { // FIXME: Wrong. We should be looking at the member declaration we found. if (QualifierLoc && QualifierLoc.getNestedNameSpecifier()->isDependent()) { diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index 45a3a7f5b00d..8322a9bf1477 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -14682,8 +14682,6 @@ void Sema::RefersToMemberWithReducedAlignment( bool AnyIsPacked = false; do { QualType BaseType = ME->getBase()->getType(); - if (BaseType->isDependentType()) - return; if (ME->isArrow()) BaseType = BaseType->getPointeeType(); RecordDecl *RD = BaseType->castAs<RecordType>()->getDecl(); diff --git a/clang/test/SemaCXX/constant-expression-cxx2a.cpp b/clang/test/SemaCXX/constant-expression-cxx2a.cpp index c2e443b9bec1..8db705dcdc67 100644 --- a/clang/test/SemaCXX/constant-expression-cxx2a.cpp +++ b/clang/test/SemaCXX/constant-expression-cxx2a.cpp @@ -18,7 +18,6 @@ namespace std { [[nodiscard]] void *operator new(std::size_t, std::align_val_t, const std::nothrow_t&) noexcept; [[nodiscard]] void *operator new[](std::size_t, const std::nothrow_t&) noexcept; [[nodiscard]] void *operator new[](std::size_t, std::align_val_t, const std::nothrow_t&) noexcept; -[[nodiscard]] void *operator new[](std::size_t, std::align_val_t); void operator delete(void*, const std::nothrow_t&) noexcept; void operator delete(void*, std::align_val_t, const std::nothrow_t&) noexcept; void operator delete[](void*, const std::nothrow_t&) noexcept; @@ -1051,7 +1050,7 @@ namespace dynamic_alloc { // Ensure that we don't try to evaluate these for overflow and crash. These // are all value-dependent expressions. p = new char[n]; - p = new ((std::align_val_t)n) char[n]; + p = new (n) char[n]; p = new char(n); } } diff --git a/clang/test/SemaTemplate/dependent-names.cpp b/clang/test/SemaTemplate/dependent-names.cpp index a8de159a1d46..67ef238083f0 100644 --- a/clang/test/SemaTemplate/dependent-names.cpp +++ b/clang/test/SemaTemplate/dependent-names.cpp @@ -273,6 +273,9 @@ namespace PR10187 { } int e[10]; }; + void g() { + S<int>().f(); // expected-note {{here}} + } } namespace A2 { diff --git a/clang/test/SemaTemplate/enum-argument.cpp b/clang/test/SemaTemplate/enum-argument.cpp index a79ed8403e9f..7ff419613990 100644 --- a/clang/test/SemaTemplate/enum-argument.cpp +++ b/clang/test/SemaTemplate/enum-argument.cpp @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -fsyntax-only -verify %s +// expected-no-diagnostics enum Enum { val = 1 }; template <Enum v> struct C { @@ -30,7 +31,7 @@ namespace rdar8020920 { unsigned long long bitfield : e0; void f(int j) { - bitfield + j; // expected-warning {{expression result unused}} + bitfield + j; } }; } diff --git a/clang/test/SemaTemplate/member-access-expr.cpp b/clang/test/SemaTemplate/member-access-expr.cpp index ef10d72a0ef8..8dba2e68d656 100644 --- a/clang/test/SemaTemplate/member-access-expr.cpp +++ b/clang/test/SemaTemplate/member-access-expr.cpp @@ -156,7 +156,7 @@ namespace test6 { void get(B **ptr) { // It's okay if at some point we figure out how to diagnose this // at instantiation time. - *ptr = field; // expected-error {{assigning to 'test6::B *' from incompatible type 'test6::A *}} + *ptr = field; } }; } diff --git a/clang/test/SemaTemplate/non-integral-switch-cond.cpp b/clang/test/SemaTemplate/non-integral-switch-cond.cpp deleted file mode 100644 index 23c8e0ef8d4e..000000000000 --- a/clang/test/SemaTemplate/non-integral-switch-cond.cpp +++ /dev/null @@ -1,14 +0,0 @@ -// RUN: %clang_cc1 -fsyntax-only -verify %s - -struct NOT_AN_INTEGRAL_TYPE {}; - -template <typename T> -struct foo { - NOT_AN_INTEGRAL_TYPE Bad; - void run() { - switch (Bad) { // expected-error {{statement requires expression of integer type ('NOT_AN_INTEGRAL_TYPE' invalid)}} - case 0: - break; - } - } -}; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits