This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, master has been updated
       via  55a5b56e083c4c2d4e768212422991a22569ecb4 (commit)
       via  65f8eb5ae548a764bf41c43f5622888fcd8b3133 (commit)
       via  15e211df803a7bcfeefc7b2aa91741f308fb609c (commit)
       via  22aa6b67b41808bb9c27aeb0f8f662cd81466843 (commit)
       via  1fe0d72eb6aef12148be0b37d73cf31fbd5f9ca0 (commit)
      from  1fea56c3bd99be6c7a6bfaa1454ba67e7a04da72 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=55a5b56e083c4c2d4e768212422991a22569ecb4
commit 55a5b56e083c4c2d4e768212422991a22569ecb4
Merge: 65f8eb5 22aa6b6
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Tue Sep 25 12:41:43 2018 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Tue Sep 25 08:41:49 2018 -0400

    Merge topic 'refactor-backtrace'
    
    22aa6b67b4 cmListFileCache: Refactor cmListFileBacktrace internals
    1fe0d72eb6 clang-tidy: exclude 'misc-noexcept-move-constructor'
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Merge-request: !2410


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=65f8eb5ae548a764bf41c43f5622888fcd8b3133
commit 65f8eb5ae548a764bf41c43f5622888fcd8b3133
Merge: 1fea56c 15e211d
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Tue Sep 25 12:39:37 2018 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Tue Sep 25 08:39:46 2018 -0400

    Merge topic 'doc-vs-cmake-A'
    
    15e211df80 Help: Suggest using -A to specify platform for VS generators
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Merge-request: !2411


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=15e211df803a7bcfeefc7b2aa91741f308fb609c
commit 15e211df803a7bcfeefc7b2aa91741f308fb609c
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Mon Sep 24 15:00:46 2018 -0400
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Tue Sep 25 06:52:35 2018 -0400

    Help: Suggest using -A to specify platform for VS generators
    
    We already suggest `-T` for the toolset.  Create a dedicated section for
    platform selection and suggest `-A`.  Provide examples.

diff --git a/Help/generator/Visual Studio 10 2010.rst b/Help/generator/Visual 
Studio 10 2010.rst
index b8d6872..0446b8c 100644
--- a/Help/generator/Visual Studio 10 2010.rst  
+++ b/Help/generator/Visual Studio 10 2010.rst  
@@ -3,18 +3,6 @@ Visual Studio 10 2010
 
 Generates Visual Studio 10 (VS 2010) project files.
 
-The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set
-to specify a target platform name (architecture).
-
-For compatibility with CMake versions prior to 3.1, one may specify
-a target platform name optionally at the end of this generator name:
-
-``Visual Studio 10 2010 Win64``
-  Specify target platform ``x64``.
-
-``Visual Studio 10 2010 IA64``
-  Specify target platform ``Itanium``.
-
 For compatibility with CMake versions prior to 3.0, one may specify this
 generator using the name ``Visual Studio 10`` without the year component.
 
@@ -24,6 +12,27 @@ Project Types
 Only Visual C++ and C# projects may be generated.  Other types of
 projects (Database, Website, etc.) are not supported.
 
+Platform Selection
+^^^^^^^^^^^^^^^^^^
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
+via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
+name (architecture).  For example:
+
+* ``cmake -G "Visual Studio 10 2010" -A Win32``
+* ``cmake -G "Visual Studio 10 2010" -A x64``
+* ``cmake -G "Visual Studio 10 2010" -A Itanium``
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of the generator name.
+This is supported only for:
+
+``Visual Studio 10 2010 Win64``
+  Specify target platform ``x64``.
+
+``Visual Studio 10 2010 IA64``
+  Specify target platform ``Itanium``.
+
 Toolset Selection
 ^^^^^^^^^^^^^^^^^
 
diff --git a/Help/generator/Visual Studio 11 2012.rst b/Help/generator/Visual 
Studio 11 2012.rst
index 8e9998a..8fddbb3 100644
--- a/Help/generator/Visual Studio 11 2012.rst  
+++ b/Help/generator/Visual Studio 11 2012.rst  
@@ -3,11 +3,31 @@ Visual Studio 11 2012
 
 Generates Visual Studio 11 (VS 2012) project files.
 
-The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set
-to specify a target platform name (architecture).
+For compatibility with CMake versions prior to 3.0, one may specify this
+generator using the name "Visual Studio 11" without the year component.
+
+Project Types
+^^^^^^^^^^^^^
+
+Only Visual C++ and C# projects may be generated.  Other types of
+projects (JavaScript, Database, Website, etc.) are not supported.
+
+Platform Selection
+^^^^^^^^^^^^^^^^^^
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
+via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
+name (architecture).  For example:
+
+* ``cmake -G "Visual Studio 11 2012" -A Win32``
+* ``cmake -G "Visual Studio 11 2012" -A x64``
+* ``cmake -G "Visual Studio 11 2012" -A ARM``
+* ``cmake -G "Visual Studio 11 2012" -A <WinCE-SDK>``
+  (Specify a target platform matching a Windows CE SDK name.)
 
 For compatibility with CMake versions prior to 3.1, one may specify
-a target platform name optionally at the end of this generator name:
+a target platform name optionally at the end of the generator name.
+This is supported only for:
 
 ``Visual Studio 11 2012 Win64``
   Specify target platform ``x64``.
@@ -18,15 +38,6 @@ a target platform name optionally at the end of this 
generator name:
 ``Visual Studio 11 2012 <WinCE-SDK>``
   Specify target platform matching a Windows CE SDK name.
 
-For compatibility with CMake versions prior to 3.0, one may specify this
-generator using the name "Visual Studio 11" without the year component.
-
-Project Types
-^^^^^^^^^^^^^
-
-Only Visual C++ and C# projects may be generated.  Other types of
-projects (JavaScript, Database, Website, etc.) are not supported.
-
 Toolset Selection
 ^^^^^^^^^^^^^^^^^
 
diff --git a/Help/generator/Visual Studio 12 2013.rst b/Help/generator/Visual 
Studio 12 2013.rst
index 03f7586..8b4c162 100644
--- a/Help/generator/Visual Studio 12 2013.rst  
+++ b/Help/generator/Visual Studio 12 2013.rst  
@@ -3,18 +3,6 @@ Visual Studio 12 2013
 
 Generates Visual Studio 12 (VS 2013) project files.
 
-The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set
-to specify a target platform name (architecture).
-
-For compatibility with CMake versions prior to 3.1, one may specify
-a target platform name optionally at the end of this generator name:
-
-``Visual Studio 12 2013 Win64``
-  Specify target platform ``x64``.
-
-``Visual Studio 12 2013 ARM``
-  Specify target platform ``ARM``.
-
 For compatibility with CMake versions prior to 3.0, one may specify this
 generator using the name "Visual Studio 12" without the year component.
 
@@ -24,6 +12,27 @@ Project Types
 Only Visual C++ and C# projects may be generated.  Other types of
 projects (JavaScript, Powershell, Python, etc.) are not supported.
 
+Platform Selection
+^^^^^^^^^^^^^^^^^^
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
+via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
+name (architecture).  For example:
+
+* ``cmake -G "Visual Studio 12 2013" -A Win32``
+* ``cmake -G "Visual Studio 12 2013" -A x64``
+* ``cmake -G "Visual Studio 12 2013" -A ARM``
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of the generator name.
+This is supported only for:
+
+``Visual Studio 12 2013 Win64``
+  Specify target platform ``x64``.
+
+``Visual Studio 12 2013 ARM``
+  Specify target platform ``ARM``.
+
 Toolset Selection
 ^^^^^^^^^^^^^^^^^
 
diff --git a/Help/generator/Visual Studio 14 2015.rst b/Help/generator/Visual 
Studio 14 2015.rst
index e55bc73..917d8e5 100644
--- a/Help/generator/Visual Studio 14 2015.rst  
+++ b/Help/generator/Visual Studio 14 2015.rst  
@@ -3,11 +3,26 @@ Visual Studio 14 2015
 
 Generates Visual Studio 14 (VS 2015) project files.
 
-The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set
-to specify a target platform name (architecture).
+Project Types
+^^^^^^^^^^^^^
+
+Only Visual C++ and C# projects may be generated.  Other types of
+projects (JavaScript, Powershell, Python, etc.) are not supported.
+
+Platform Selection
+^^^^^^^^^^^^^^^^^^
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
+via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
+name (architecture).  For example:
+
+* ``cmake -G "Visual Studio 14 2015" -A Win32``
+* ``cmake -G "Visual Studio 14 2015" -A x64``
+* ``cmake -G "Visual Studio 14 2015" -A ARM``
 
 For compatibility with CMake versions prior to 3.1, one may specify
-a target platform name optionally at the end of this generator name:
+a target platform name optionally at the end of the generator name.
+This is supported only for:
 
 ``Visual Studio 14 2015 Win64``
   Specify target platform ``x64``.
@@ -15,12 +30,6 @@ a target platform name optionally at the end of this 
generator name:
 ``Visual Studio 14 2015 ARM``
   Specify target platform ``ARM``.
 
-Project Types
-^^^^^^^^^^^^^
-
-Only Visual C++ and C# projects may be generated.  Other types of
-projects (JavaScript, Powershell, Python, etc.) are not supported.
-
 Toolset Selection
 ^^^^^^^^^^^^^^^^^
 
diff --git a/Help/generator/Visual Studio 15 2017.rst b/Help/generator/Visual 
Studio 15 2017.rst
index 809be4b..42a3bb6 100644
--- a/Help/generator/Visual Studio 15 2017.rst  
+++ b/Help/generator/Visual Studio 15 2017.rst  
@@ -3,18 +3,6 @@ Visual Studio 15 2017
 
 Generates Visual Studio 15 (VS 2017) project files.
 
-The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set
-to specify a target platform name (architecture).
-
-For compatibility with CMake versions prior to 3.1, one may specify
-a target platform name optionally at the end of this generator name:
-
-``Visual Studio 15 2017 Win64``
-  Specify target platform ``x64``.
-
-``Visual Studio 15 2017 ARM``
-  Specify target platform ``ARM``.
-
 Project Types
 ^^^^^^^^^^^^^
 
@@ -37,6 +25,28 @@ one of the instances, that instance will be used.  
Otherwise, if more
 than one instance is installed we do not define which one is chosen
 by default.
 
+Platform Selection
+^^^^^^^^^^^^^^^^^^
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
+via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
+name (architecture).  For example:
+
+* ``cmake -G "Visual Studio 15 2017" -A Win32``
+* ``cmake -G "Visual Studio 15 2017" -A x64``
+* ``cmake -G "Visual Studio 15 2017" -A ARM``
+* ``cmake -G "Visual Studio 15 2017" -A ARM64``
+
+For compatibility with CMake versions prior to 3.1, one may specify
+a target platform name optionally at the end of the generator name.
+This is supported only for:
+
+``Visual Studio 15 2017 Win64``
+  Specify target platform ``x64``.
+
+``Visual Studio 15 2017 ARM``
+  Specify target platform ``ARM``.
+
 Toolset Selection
 ^^^^^^^^^^^^^^^^^
 
diff --git a/Help/generator/Visual Studio 9 2008.rst b/Help/generator/Visual 
Studio 9 2008.rst
index 40471b9..a29033f 100644
--- a/Help/generator/Visual Studio 9 2008.rst   
+++ b/Help/generator/Visual Studio 9 2008.rst   
@@ -3,11 +3,22 @@ Visual Studio 9 2008
 
 Generates Visual Studio 9 2008 project files.
 
-The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set
-to specify a target platform name.
+Platform Selection
+^^^^^^^^^^^^^^^^^^
+
+The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set, perhaps
+via the :manual:`cmake(1)` ``-A`` option, to specify a target platform
+name (architecture).  For example:
+
+* ``cmake -G "Visual Studio 9 2008" -A Win32``
+* ``cmake -G "Visual Studio 9 2008" -A x64``
+* ``cmake -G "Visual Studio 9 2008" -A Itanium``
+* ``cmake -G "Visual Studio 9 2008" -A <WinCE-SDK>``
+  (Specify a target platform matching a Windows CE SDK name.)
 
 For compatibility with CMake versions prior to 3.1, one may specify
-a target platform name optionally at the end of this generator name:
+a target platform name optionally at the end of the generator name.
+This is supported only for:
 
 ``Visual Studio 9 2008 Win64``
   Specify target platform ``x64``.

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=22aa6b67b41808bb9c27aeb0f8f662cd81466843
commit 22aa6b67b41808bb9c27aeb0f8f662cd81466843
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Mon Sep 24 09:21:29 2018 -0400
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Mon Sep 24 17:29:15 2018 -0400

    cmListFileCache: Refactor cmListFileBacktrace internals
    
    Replace use of raw pointers and explicit reference counting with
    `std::shared_ptr<>`.  Use a discriminated union to store either the
    bottom level or a call/file context in each heap-allocated entry.
    This avoids storing a copy of the bottom in every `cmListFileBacktrace`
    instance and shrinks the structure to a single `shared_ptr`.

diff --git a/Source/cmListFileCache.cxx b/Source/cmListFileCache.cxx
index b468257..e465e1a 100644
--- a/Source/cmListFileCache.cxx
+++ b/Source/cmListFileCache.cxx
@@ -11,6 +11,7 @@
 
 #include <algorithm>
 #include <assert.h>
+#include <memory>
 #include <sstream>
 
 cmCommandContext::cmCommandName& cmCommandContext::cmCommandName::operator=(
@@ -285,91 +286,66 @@ bool cmListFileParser::AddArgument(cmListFileLexer_Token* 
token,
   return true;
 }
 
-struct cmListFileBacktrace::Entry : public cmListFileContext
+// We hold either the bottom scope of a directory or a call/file context.
+// Discriminate these cases via the parent pointer.
+struct cmListFileBacktrace::Entry
 {
-  Entry(cmListFileContext const& lfc, Entry* up)
-    : cmListFileContext(lfc)
-    , Up(up)
-    , RefCount(0)
+  Entry(cmStateSnapshot bottom)
+    : Bottom(bottom)
   {
-    if (this->Up) {
-      this->Up->Ref();
-    }
   }
-  ~Entry()
+
+  Entry(std::shared_ptr<Entry const> parent, cmListFileContext lfc)
+    : Context(std::move(lfc))
+    , Parent(std::move(parent))
   {
-    if (this->Up) {
-      this->Up->Unref();
-    }
   }
-  void Ref() { ++this->RefCount; }
-  void Unref()
+
+  ~Entry()
   {
-    if (--this->RefCount == 0) {
-      delete this;
+    if (this->Parent) {
+      this->Context.~cmListFileContext();
+    } else {
+      this->Bottom.~cmStateSnapshot();
     }
   }
-  Entry* Up;
-  unsigned int RefCount;
-};
 
-cmListFileBacktrace::cmListFileBacktrace(cmStateSnapshot const& bottom,
-                                         Entry* up,
-                                         cmListFileContext const& lfc)
-  : Bottom(bottom)
-  , Cur(new Entry(lfc, up))
-{
-  assert(this->Bottom.IsValid());
-  this->Cur->Ref();
-}
-
-cmListFileBacktrace::cmListFileBacktrace(cmStateSnapshot const& bottom,
-                                         Entry* cur)
-  : Bottom(bottom)
-  , Cur(cur)
-{
-  if (this->Cur) {
-    assert(this->Bottom.IsValid());
-    this->Cur->Ref();
-  }
-}
+  bool IsBottom() const { return !this->Parent; }
 
-cmListFileBacktrace::cmListFileBacktrace()
-  : Bottom()
-  , Cur(nullptr)
-{
-}
+  union
+  {
+    cmStateSnapshot Bottom;
+    cmListFileContext Context;
+  };
+  std::shared_ptr<Entry const> Parent;
+};
 
 cmListFileBacktrace::cmListFileBacktrace(cmStateSnapshot const& snapshot)
-  : Bottom(snapshot.GetCallStackBottom())
-  , Cur(nullptr)
+  : TopEntry(std::make_shared<Entry const>(snapshot.GetCallStackBottom()))
 {
 }
 
-cmListFileBacktrace::cmListFileBacktrace(cmListFileBacktrace const& r)
-  : Bottom(r.Bottom)
-  , Cur(r.Cur)
+cmListFileBacktrace::cmListFileBacktrace(std::shared_ptr<Entry const> parent,
+                                         cmListFileContext const& lfc)
+  : TopEntry(std::make_shared<Entry const>(std::move(parent), lfc))
 {
-  if (this->Cur) {
-    assert(this->Bottom.IsValid());
-    this->Cur->Ref();
-  }
 }
 
-cmListFileBacktrace& cmListFileBacktrace::operator=(
-  cmListFileBacktrace const& r)
+cmListFileBacktrace::cmListFileBacktrace(std::shared_ptr<Entry const> top)
+  : TopEntry(std::move(top))
 {
-  cmListFileBacktrace tmp(r);
-  std::swap(this->Cur, tmp.Cur);
-  std::swap(this->Bottom, tmp.Bottom);
-  return *this;
 }
 
-cmListFileBacktrace::~cmListFileBacktrace()
+cmStateSnapshot cmListFileBacktrace::GetBottom() const
 {
-  if (this->Cur) {
-    this->Cur->Unref();
+  cmStateSnapshot bottom;
+  if (Entry const* cur = this->TopEntry.get()) {
+    while (Entry const* parent = cur->Parent.get()) {
+      cur = parent;
+    }
+    bottom = cur->Bottom;
   }
+  return bottom;
 }
 
 cmListFileBacktrace cmListFileBacktrace::Push(std::string const& file) const
@@ -380,54 +356,61 @@ cmListFileBacktrace cmListFileBacktrace::Push(std::string 
const& file) const
   // skipped during call stack printing.
   cmListFileContext lfc;
   lfc.FilePath = file;
-  return cmListFileBacktrace(this->Bottom, this->Cur, lfc);
+  return this->Push(lfc);
 }
 
 cmListFileBacktrace cmListFileBacktrace::Push(
   cmListFileContext const& lfc) const
 {
-  return cmListFileBacktrace(this->Bottom, this->Cur, lfc);
+  assert(this->TopEntry);
+  assert(!this->TopEntry->IsBottom() || this->TopEntry->Bottom.IsValid());
+  return cmListFileBacktrace(this->TopEntry, lfc);
 }
 
 cmListFileBacktrace cmListFileBacktrace::Pop() const
 {
-  assert(this->Cur);
-  return cmListFileBacktrace(this->Bottom, this->Cur->Up);
+  assert(this->TopEntry);
+  assert(!this->TopEntry->IsBottom());
+  return cmListFileBacktrace(this->TopEntry->Parent);
 }
 
 cmListFileContext const& cmListFileBacktrace::Top() const
 {
-  if (this->Cur) {
-    return *this->Cur;
-  }
-  static cmListFileContext const empty;
-  return empty;
+  assert(this->TopEntry);
+  return this->TopEntry->Context;
 }
 
 void cmListFileBacktrace::PrintTitle(std::ostream& out) const
 {
-  if (!this->Cur) {
+  // The title exists only if we have a call on top of the bottom.
+  if (!this->TopEntry || this->TopEntry->IsBottom()) {
     return;
   }
-  cmOutputConverter converter(this->Bottom);
-  cmListFileContext lfc = *this->Cur;
-  if (!this->Bottom.GetState()->GetIsInTryCompile()) {
+  cmListFileContext lfc = this->TopEntry->Context;
+  cmStateSnapshot bottom = this->GetBottom();
+  cmOutputConverter converter(bottom);
+  if (!bottom.GetState()->GetIsInTryCompile()) {
     lfc.FilePath = converter.ConvertToRelativePath(
-      this->Bottom.GetState()->GetSourceDirectory(), lfc.FilePath);
+      bottom.GetState()->GetSourceDirectory(), lfc.FilePath);
   }
   out << (lfc.Line ? " at " : " in ") << lfc;
 }
 
 void cmListFileBacktrace::PrintCallStack(std::ostream& out) const
 {
-  if (!this->Cur || !this->Cur->Up) {
+  // The call stack exists only if we have at least two calls on top
+  // of the bottom.
+  if (!this->TopEntry || this->TopEntry->IsBottom() ||
+      this->TopEntry->Parent->IsBottom()) {
     return;
   }
 
   bool first = true;
-  cmOutputConverter converter(this->Bottom);
-  for (Entry* i = this->Cur->Up; i; i = i->Up) {
-    if (i->Name.empty()) {
+  cmStateSnapshot bottom = this->GetBottom();
+  cmOutputConverter converter(bottom);
+  for (Entry const* cur = this->TopEntry->Parent.get(); !cur->IsBottom();
+       cur = cur->Parent.get()) {
+    if (cur->Context.Name.empty()) {
       // Skip this whole-file scope.  When we get here we already will
       // have printed a more-specific context within the file.
       continue;
@@ -436,10 +419,10 @@ void cmListFileBacktrace::PrintCallStack(std::ostream& 
out) const
       first = false;
       out << "Call Stack (most recent call first):\n";
     }
-    cmListFileContext lfc = *i;
-    if (!this->Bottom.GetState()->GetIsInTryCompile()) {
+    cmListFileContext lfc = cur->Context;
+    if (!bottom.GetState()->GetIsInTryCompile()) {
       lfc.FilePath = converter.ConvertToRelativePath(
-        this->Bottom.GetState()->GetSourceDirectory(), lfc.FilePath);
+        bottom.GetState()->GetSourceDirectory(), lfc.FilePath);
     }
     out << "  " << lfc << "\n";
   }
@@ -448,16 +431,19 @@ void cmListFileBacktrace::PrintCallStack(std::ostream& 
out) const
 size_t cmListFileBacktrace::Depth() const
 {
   size_t depth = 0;
-  if (this->Cur == nullptr) {
-    return 0;
-  }
-
-  for (Entry* i = this->Cur->Up; i; i = i->Up) {
-    depth++;
+  if (Entry const* cur = this->TopEntry.get()) {
+    for (; !cur->IsBottom(); cur = cur->Parent.get()) {
+      ++depth;
+    }
   }
   return depth;
 }
 
+bool cmListFileBacktrace::Empty() const
+{
+  return !this->TopEntry || this->TopEntry->IsBottom();
+}
+
 std::ostream& operator<<(std::ostream& os, cmListFileContext const& lfc)
 {
   os << lfc.FilePath;
diff --git a/Source/cmListFileCache.h b/Source/cmListFileCache.h
index 70f7166..2c91f7a 100644
--- a/Source/cmListFileCache.h
+++ b/Source/cmListFileCache.h
@@ -6,6 +6,7 @@
 #include "cmConfigure.h" // IWYU pragma: keep
 
 #include <iosfwd>
+#include <memory> // IWYU pragma: keep
 #include <stddef.h>
 #include <string>
 #include <vector>
@@ -115,18 +116,20 @@ public:
   // Default-constructed backtrace may not be used until after
   // set via assignment from a backtrace constructed with a
   // valid snapshot.
-  cmListFileBacktrace();
+  cmListFileBacktrace() = default;
 
   // Construct an empty backtrace whose bottom sits in the directory
   // indicated by the given valid snapshot.
   cmListFileBacktrace(cmStateSnapshot const& snapshot);
 
-  // Backtraces may be copied and assigned as values.
-  cmListFileBacktrace(cmListFileBacktrace const& r);
-  cmListFileBacktrace& operator=(cmListFileBacktrace const& r);
-  ~cmListFileBacktrace();
+  // Backtraces may be copied, moved, and assigned as values.
+  cmListFileBacktrace(cmListFileBacktrace const&) = default;
+  cmListFileBacktrace(cmListFileBacktrace&&) noexcept = default;
+  cmListFileBacktrace& operator=(cmListFileBacktrace const&) = default;
+  cmListFileBacktrace& operator=(cmListFileBacktrace&&) noexcept = default;
+  ~cmListFileBacktrace() = default;
 
-  cmStateSnapshot GetBottom() const { return this->Bottom; }
+  cmStateSnapshot GetBottom() const;
 
   // Get a backtrace with the given file scope added to the top.
   // May not be called until after construction with a valid snapshot.
@@ -153,14 +156,15 @@ public:
   // Get the number of 'frames' in this backtrace
   size_t Depth() const;
 
+  // Return true if this backtrace is empty.
+  bool Empty() const;
+
 private:
   struct Entry;
-
-  cmStateSnapshot Bottom;
-  Entry* Cur;
-  cmListFileBacktrace(cmStateSnapshot const& bottom, Entry* up,
+  std::shared_ptr<Entry const> TopEntry;
+  cmListFileBacktrace(std::shared_ptr<Entry const> parent,
                       cmListFileContext const& lfc);
-  cmListFileBacktrace(cmStateSnapshot const& bottom, Entry* cur);
+  cmListFileBacktrace(std::shared_ptr<Entry const> top);
 };
 
 struct cmListFile

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1fe0d72eb6aef12148be0b37d73cf31fbd5f9ca0
commit 1fe0d72eb6aef12148be0b37d73cf31fbd5f9ca0
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Mon Sep 24 17:28:25 2018 -0400
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Mon Sep 24 17:29:15 2018 -0400

    clang-tidy: exclude 'misc-noexcept-move-constructor'
    
    Our installation is producing false positives on move constructors
    and assignment operators that are clearly marked `noexcept`.

diff --git a/.clang-tidy b/.clang-tidy
index 8d79b0c..ebe3c20 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -5,6 +5,7 @@ misc-*,\
 -misc-incorrect-roundings,\
 -misc-macro-parentheses,\
 -misc-misplaced-widening-cast,\
+-misc-noexcept-move-constructor,\
 -misc-static-assert,\
 modernize-*,\
 -modernize-deprecated-headers,\

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

Summary of changes:
 .clang-tidy                              |   1 +
 Help/generator/Visual Studio 10 2010.rst |  33 ++++---
 Help/generator/Visual Studio 11 2012.rst |  35 ++++---
 Help/generator/Visual Studio 12 2013.rst |  33 ++++---
 Help/generator/Visual Studio 14 2015.rst |  27 +++--
 Help/generator/Visual Studio 15 2017.rst |  34 ++++---
 Help/generator/Visual Studio 9 2008.rst  |  17 +++-
 Source/cmListFileCache.cxx               | 164 ++++++++++++++-----------------
 Source/cmListFileCache.h                 |  26 ++---
 9 files changed, 210 insertions(+), 160 deletions(-)


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
https://cmake.org/mailman/listinfo/cmake-commits

Reply via email to