From 8f56f22b84b52238dca066cc431c6e82f5380fe4 Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Thu, 24 Jan 2019 14:01:17 -0500
Subject: cmListCommand: Avoid std::function move constructor on aarch64

Since commit 5a0784ddea (clang-tidy: Pass by value, 2019-01-21), some of
the `RunCMake.{list,PositionIndependentCode}` cases have crashed on an
aarch64 build with GCC 6.  Avoiding use of the `std::function` move
constructor avoids the crash.  Use a strict preprocessor condition to
use this workaround only where needed.
---
 Source/cmListCommand.cxx | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx
index 05b22cf..b24c5ba 100644
--- a/Source/cmListCommand.cxx
+++ b/Source/cmListCommand.cxx
@@ -666,7 +666,12 @@ bool cmListCommand::HandleTransformCommand(
     ActionDescriptor(std::string name, int arity, transform_type transform)
       : Name(std::move(name))
       , Arity(arity)
+#if defined(__GNUC__) && __GNUC__ == 6 && defined(__aarch64__)
+      // std::function move constructor miscompiles on this architecture
+      , Transform(transform)
+#else
       , Transform(std::move(transform))
+#endif
     {
     }
 
-- 
cgit v0.12