mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-31 05:41:08 +00:00
devel/llvm14: 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/llvm14/work/llvm-project-14.0.6.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)};
| ^
/wrkdirs/usr/ports/devel/llvm14/work/llvm-project-14.0.6.src/flang/lib/Evaluate/fold-real.cpp:72:22: warning: variable 'z' set but not used [-Wunused-but-set-variable]
72 | } else if (auto *z{UnwrapExpr<Expr<SomeComplex>>(args[0])}) {
| ^
/wrkdirs/usr/ports/devel/llvm14/work/llvm-project-14.0.6.src/flang/lib/Evaluate/fold-real.cpp:69:15: warning: variable 'x' set but not used [-Wunused-but-set-variable]
69 | if (auto *x{UnwrapExpr<Expr<SomeReal>>(args[0])}) {
| ^
/wrkdirs/usr/ports/devel/llvm14/work/llvm-project-14.0.6.src/flang/lib/Evaluate/fold-real.cpp:148:60: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
148 | SCALE(y)};
| ^
/wrkdirs/usr/ports/devel/llvm14/work/llvm-project-14.0.6.src/flang/runtime/reduction-templates.h:89:24: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
89 | accumulator.template GetResult(&result);
| ^
/wrkdirs/usr/ports/devel/llvm14/work/llvm-project-14.0.6.src/flang/runtime/reduction-templates.h:130:24: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
130 | accumulator.template GetResult(result, zeroBasedDim);
| ^
/wrkdirs/usr/ports/devel/llvm14/work/llvm-project-14.0.6.src/flang/runtime/reduction-templates.h:158:24: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
158 | accumulator.template GetResult(result, zeroBasedDim);
| ^
/wrkdirs/usr/ports/devel/llvm14/work/grpc-1.62.2/src/core/lib/promise/detail/basic_seq.h:103:38: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
103 | Traits::template CallSeqFactory(f_, *cur_, std::move(arg)));
| ^
Upstream has committed a fix to their main branch [2], but it does not
apply cleanly to 14.0.6, so add a backported patch.
[1] https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#96
[2] 7bc7672925
PR: 280776
Approved by: brooks (maintainer)
MFH: 2024Q3
This commit is contained in:
parent
8c86705f8b
commit
51c043a810
72
devel/llvm14/files/patch-backport-7bc7672925
Normal file
72
devel/llvm14/files/patch-backport-7bc7672925
Normal file
@ -0,0 +1,72 @@
|
||||
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/lib/Evaluate/fold-real.cpp.orig 2022-06-22 16:46:24 UTC
|
||||
+++ flang/lib/Evaluate/fold-real.cpp
|
||||
@@ -145,7 +145,7 @@ Expr<Type<TypeCategory::Real, KIND>> FoldIntrinsicFunc
|
||||
#ifndef _MSC_VER
|
||||
template
|
||||
#endif
|
||||
- SCALE(y)};
|
||||
+ SCALE<Scalar<TBY>>(y)};
|
||||
if (result.flags.test(RealFlag::Overflow)) {
|
||||
context.messages().Say(
|
||||
"SCALE intrinsic folding overflow"_en_US);
|
||||
--- 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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user