ports/devel/llvm13/files/patch-backport-7bc7672925
Dimitry Andric e34a77083e 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] 7bc7672925

PR:		281486
Approved by:	brooks (maintainer)
MFH:		2024Q3
2024-09-14 09:21:04 +02:00

61 lines
2.3 KiB
Text

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
}