[llvm-branch-commits] [cfe-branch] r310067 - Merging r309975: (except the docs/ part)

Hans Wennborg via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Aug 4 09:48:43 PDT 2017


Author: hans
Date: Fri Aug  4 09:48:43 2017
New Revision: 310067

URL: http://llvm.org/viewvc/llvm-project?rev=310067&view=rev
Log:
Merging r309975: (except the docs/ part)
------------------------------------------------------------------------
r309975 | rsmith | 2017-08-03 12:24:27 -0700 (Thu, 03 Aug 2017) | 4 lines

Don't emit undefined-internal warnings for CXXDeductionGuideDecls.

Patch by ~paul (cynecx on phabricator)! Some test massaging by me.

------------------------------------------------------------------------

Modified:
    cfe/branches/release_50/   (props changed)
    cfe/branches/release_50/lib/Sema/Sema.cpp
    cfe/branches/release_50/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp

Propchange: cfe/branches/release_50/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Aug  4 09:48:43 2017
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:308455,308824,308897,308996,309058,309112-309113,309226,309327,309382-309383,309488,309503,309523,309722,309752
+/cfe/trunk:308455,308824,308897,308996,309058,309112-309113,309226,309327,309382-309383,309488,309503,309523,309722,309752,309975
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_50/lib/Sema/Sema.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_50/lib/Sema/Sema.cpp?rev=310067&r1=310066&r2=310067&view=diff
==============================================================================
--- cfe/branches/release_50/lib/Sema/Sema.cpp (original)
+++ cfe/branches/release_50/lib/Sema/Sema.cpp Fri Aug  4 09:48:43 2017
@@ -542,6 +542,9 @@ void Sema::getUndefinedButUsed(
     // __attribute__((weakref)) is basically a definition.
     if (ND->hasAttr<WeakRefAttr>()) continue;
 
+    if (isa<CXXDeductionGuideDecl>(ND))
+      continue;
+
     if (FunctionDecl *FD = dyn_cast<FunctionDecl>(ND)) {
       if (FD->isDefined())
         continue;

Modified: cfe/branches/release_50/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_50/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp?rev=310067&r1=310066&r2=310067&view=diff
==============================================================================
--- cfe/branches/release_50/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp (original)
+++ cfe/branches/release_50/test/SemaCXX/cxx1z-class-template-argument-deduction.cpp Fri Aug  4 09:48:43 2017
@@ -1,4 +1,9 @@
-// RUN: %clang_cc1 -std=c++1z -verify %s
+// RUN: %clang_cc1 -std=c++1z -verify %s -DERRORS
+// RUN: %clang_cc1 -std=c++1z -verify %s -UERRORS
+
+// This test is split into two because we only produce "undefined internal"
+// warnings if we didn't produce any errors.
+#if ERRORS
 
 namespace std {
   using size_t = decltype(sizeof(0));
@@ -280,3 +285,21 @@ namespace tuple_tests {
     scoped_lock l = {};
   }
 }
+
+#else
+
+// expected-no-diagnostics
+namespace undefined_warnings {
+  // Make sure we don't get an "undefined but used internal symbol" warning for the deduction guide here.
+  namespace {
+    template <typename T>
+    struct TemplDObj {
+      explicit TemplDObj(T func) noexcept {}
+    };
+    auto test1 = TemplDObj(0);
+
+    TemplDObj(float) -> TemplDObj<double>;
+    auto test2 = TemplDObj(.0f);
+  }
+}
+#endif




More information about the llvm-branch-commits mailing list