aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrooks Davis <brooks@FreeBSD.org>2025-01-10 00:35:34 +0000
committerBrooks Davis <brooks@FreeBSD.org>2025-03-17 18:38:06 +0000
commit4a13ba037fcd08370dccabc65b7fea0357c6b541 (patch)
tree56114bd74b27eeff43f7233ee4970f0be27439be
parent003492f69b680b787b412ddc2dfd996ca9bc360d (diff)
devel/llvm16: backport flang fixes for llvm19
The FLANG option is off by default so this wasn't noted in the llvm19 import. Backport 7bc7672925f81 from upstream LLVM. The patches to fold-real.cpp and reduction-templates.h were hand applied. PR: 283966 Reported by: ohartmann@walstatt.org (cherry picked from commit 9592edb43243a6a2bdef59c99a69e5a309df910f)
-rw-r--r--devel/llvm16/files/patch-backport-7bc7672925f8175
1 files changed, 75 insertions, 0 deletions
diff --git a/devel/llvm16/files/patch-backport-7bc7672925f81 b/devel/llvm16/files/patch-backport-7bc7672925f81
new file mode 100644
index 000000000000..f3c8c2cfe769
--- /dev/null
+++ b/devel/llvm16/files/patch-backport-7bc7672925f81
@@ -0,0 +1,75 @@
+commit 7bc7672925f8154be3b8220365d3f269ac43621c
+Author: David Spickett <david.spickett@linaro.org>
+Date: Mon Jun 3 15:21:26 2024 +0100
+
+ [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.
+
+diff --git flang/include/flang/Evaluate/integer.h flang/include/flang/Evaluate/integer.h
+index 10a13115a39e..4c7d88328a71 100644
+--- flang/include/flang/Evaluate/integer.h
++++ flang/include/flang/Evaluate/integer.h
+@@ -315,7 +315,7 @@ 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;
+diff --git flang/lib/Evaluate/fold-real.cpp flang/lib/Evaluate/fold-real.cpp
+index 238ce34adfb7..f71addcc4094 100644
+--- flang/lib/Evaluate/fold-real.cpp
++++ flang/lib/Evaluate/fold-real.cpp
+ #ifndef _MSC_VER
+ template
+ #endif
+- SCALE(y)};
++ SCALE<Scalar<TBY>>(y)};
+ if (result.flags.test(RealFlag::Overflow)) {
+ context.messages().Say(
+ "SCALE intrinsic folding overflow"_warn_en_US);
+diff --git flang/runtime/reduction-templates.h flang/runtime/reduction-templates.h
+index d102e5642547..a51404c96376 100644
+--- flang/runtime/reduction-templates.h
++++ flang/runtime/reduction-templates.h
+@@ -85,9 +85,9 @@
+ DoTotalReduction<CppType>(x, dim, mask, accumulator, intrinsic, terminator);
+ CppType result;
+ #ifdef _MSC_VER // work around MSVC spurious error
+- accumulator.GetResult(&result);
++ accumulator.GetResult<CppType>(&result);
+ #else
+- accumulator.template GetResult(&result);
++ accumulator.template GetResult<CppType>(&result);
+ #endif
+ return result;
+ }
+@@ -128,7 +128,7 @@
+ #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
+ }
+
+@@ -156,7 +156,7 @@
+ #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
+ }
+