From d52eba9d7c3e2406418516a13389b470781a1880 Mon Sep 17 00:00:00 2001 From: David Spickett Date: Mon, 3 Jun 2024 10:13:01 +0000 Subject: [PATCH] [flang] Fix compilation errors due to new clang template requirements 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(-) diff --git a/flang/include/flang/Evaluate/integer.h b/flang/include/flang/Evaluate/integer.h index 10a13115a39e0..4c7d88328a71e 100644 --- a/flang/include/flang/Evaluate/integer.h +++ b/flang/include/flang/Evaluate/integer.h @@ -315,7 +315,7 @@ class Integer { } result.overflow = false; } else if constexpr (bits < FROM::bits) { - auto back{FROM::template ConvertSigned(result.value)}; + auto back{FROM::template ConvertSigned(result.value)}; result.overflow = back.value.CompareUnsigned(that) != Ordering::Equal; } return result; diff --git a/flang/lib/Evaluate/fold-real.cpp b/flang/lib/Evaluate/fold-real.cpp index 238ce34adfb76..f71addcc4094a 100644 --- a/flang/lib/Evaluate/fold-real.cpp +++ b/flang/lib/Evaluate/fold-real.cpp @@ -381,13 +381,14 @@ Expr> FoldIntrinsicFunction( std::move(funcRef), ScalarFunc( [&](const Scalar &x, const Scalar &y) -> Scalar { - ValueWithRealFlags> result{x. + ValueWithRealFlags> result{ + x. // MSVC chokes on the keyword "template" here in a call to a // member function template. #ifndef _MSC_VER - template + template #endif - SCALE(y)}; + SCALE>(y)}; if (result.flags.test(RealFlag::Overflow) && context.languageFeatures().ShouldWarn( common::UsageWarning::FoldingException)) { diff --git a/flang/runtime/reduction-templates.h b/flang/runtime/reduction-templates.h index d102e5642547d..a51404c963762 100644 --- a/flang/runtime/reduction-templates.h +++ b/flang/runtime/reduction-templates.h @@ -91,14 +91,14 @@ inline RT_API_ATTRS CppTypeFor GetTotalReduction(const Descriptor &x, #ifdef _MSC_VER // work around MSVC spurious error accumulator.GetResult(); #else - accumulator.template GetResult(); + accumulator.template GetResult(); #endif } else { CppType result; #ifdef _MSC_VER // work around MSVC spurious error accumulator.GetResult(&result); #else - accumulator.template GetResult(&result); + accumulator.template GetResult(&result); #endif return result; } @@ -141,7 +141,7 @@ inline RT_API_ATTRS void ReduceDimToScalar(const Descriptor &x, #ifdef _MSC_VER // work around MSVC spurious error accumulator.GetResult(result, zeroBasedDim); #else - accumulator.template GetResult(result, zeroBasedDim); + accumulator.template GetResult(result, zeroBasedDim); #endif } @@ -169,7 +169,7 @@ inline RT_API_ATTRS 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(result, zeroBasedDim); #endif }