aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2024-09-13 20:00:46 +0000
committerDimitry Andric <dim@FreeBSD.org>2024-09-14 07:21:04 +0000
commite34a77083e96050812b4f082efc716dd16069c82 (patch)
tree6961179809e140d5297742c137f61a3cdbfabcf4
parent116901442f2c9f551e3c818db63b3e84f27437aa (diff)
downloadports-e34a77083e96050812b4f082efc716dd16069c82.tar.gz
ports-e34a77083e96050812b4f082efc716dd16069c82.zip
devel/llvm13: fix build with clang 19
Clang 19 now implements CWG 96 [1], which requires a template argument list after a 'template' keyword, resulting in errors similar to: /wrkdirs/usr/ports/devel/llvm13/work/llvm-project-13.0.1.src/flang/include/flang/Evaluate/integer.h:310:32: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw] 310 | auto back{FROM::template ConvertSigned(result.value)}; | ^ Upstream has committed a fix to their main branch [2], but it does not apply cleanly to 13.0.1, so add a backported patch. [1] https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#96 [2] https://github.com/llvm/llvm-project/commit/7bc7672925f8154be3b8220365d3f269ac43621c PR: 281486 Approved by: brooks (maintainer) MFH: 2024Q3
-rw-r--r--devel/llvm13/files/patch-backport-7bc767292561
1 files changed, 61 insertions, 0 deletions
diff --git a/devel/llvm13/files/patch-backport-7bc7672925 b/devel/llvm13/files/patch-backport-7bc7672925
new file mode 100644
index 000000000000..6778cb80991a
--- /dev/null
+++ b/devel/llvm13/files/patch-backport-7bc7672925
@@ -0,0 +1,61 @@
+From 7bc7672925f8154be3b8220365d3f269ac43621c Mon Sep 17 00:00:00 2001
+From: David Spickett <david.spickett@linaro.org>
+Date: Mon, 3 Jun 2024 15:21:26 +0100
+Subject: [PATCH] [flang] Fix compilation errors due to new clang template
+ requirements (#94204)
+
+Since https://github.com/llvm/llvm-project/pull/80801 clang requires a
+template argument list after the use of the template keyword.
+
+https://lab.llvm.org/buildbot/#/builders/176/builds/10230
+
+error: a template argument list is expected after a name prefixed by the
+template keyword [-Wmissing-template-arg-list-after-template-kw]
+
+This fixes the instances found by the AArch64 Linux builds.
+---
+ flang/include/flang/Evaluate/integer.h | 2 +-
+ flang/lib/Evaluate/fold-real.cpp | 7 ++++---
+ flang/runtime/reduction-templates.h | 8 ++++----
+ 3 files changed, 9 insertions(+), 8 deletions(-)
+
+--- flang/include/flang/Evaluate/integer.h.orig 2022-06-22 16:46:24 UTC
++++ flang/include/flang/Evaluate/integer.h
+@@ -307,7 +307,7 @@ class Integer { (public)
+ }
+ result.overflow = false;
+ } else if constexpr (bits < FROM::bits) {
+- auto back{FROM::template ConvertSigned(result.value)};
++ auto back{FROM::template ConvertSigned<Integer>(result.value)};
+ result.overflow = back.value.CompareUnsigned(that) != Ordering::Equal;
+ }
+ return result;
+--- flang/runtime/reduction-templates.h.orig 2022-06-22 16:46:24 UTC
++++ flang/runtime/reduction-templates.h
+@@ -86,7 +86,7 @@ inline CppTypeFor<CAT, KIND> GetTotalReduction(const D
+ #ifdef _MSC_VER // work around MSVC spurious error
+ accumulator.GetResult(&result);
+ #else
+- accumulator.template GetResult(&result);
++ accumulator.template GetResult<CppType>(&result);
+ #endif
+ return result;
+ }
+@@ -127,7 +127,7 @@ inline void ReduceDimToScalar(const Descriptor &x, int
+ #ifdef _MSC_VER // work around MSVC spurious error
+ accumulator.GetResult(result, zeroBasedDim);
+ #else
+- accumulator.template GetResult(result, zeroBasedDim);
++ accumulator.template GetResult<TYPE>(result, zeroBasedDim);
+ #endif
+ }
+
+@@ -155,7 +155,7 @@ inline void ReduceDimMaskToScalar(const Descriptor &x,
+ #ifdef _MSC_VER // work around MSVC spurious error
+ accumulator.GetResult(result, zeroBasedDim);
+ #else
+- accumulator.template GetResult(result, zeroBasedDim);
++ accumulator.template GetResult<TYPE>(result, zeroBasedDim);
+ #endif
+ }
+