Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 16 Aug 2024 15:44:48 GMT
From:      Dimitry Andric <dim@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-branches@FreeBSD.org
Subject:   git: 1efe047448b0 - 2024Q3 - devel/llvm14: fix build with clang 19
Message-ID:  <202408161544.47GFimud095960@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch 2024Q3 has been updated by dim:

URL: https://cgit.FreeBSD.org/ports/commit/?id=1efe047448b0922f2057dd2fc382f9b498f8a098

commit 1efe047448b0922f2057dd2fc382f9b498f8a098
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2024-08-12 13:43:49 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2024-08-16 15:44:13 +0000

    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] https://github.com/llvm/llvm-project/commit/7bc7672925f8154be3b8220365d3f269ac43621c
    
    PR:             280776
    Approved by:    brooks (maintainer)
    MFH:            2024Q3
    
    (cherry picked from commit 51c043a810db5af08a918fd7bfc31086ead88265)
---
 devel/llvm14/files/patch-backport-7bc7672925 | 72 ++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)

diff --git a/devel/llvm14/files/patch-backport-7bc7672925 b/devel/llvm14/files/patch-backport-7bc7672925
new file mode 100644
index 000000000000..e0c65d86e71f
--- /dev/null
+++ b/devel/llvm14/files/patch-backport-7bc7672925
@@ -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
+ }
+ 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202408161544.47GFimud095960>