git: 2a9d785d67c6 - main - devel/llvm16: backport upstream powerpc FP fix

From: Brooks Davis <brooks_at_FreeBSD.org>
Date: Fri, 14 Jul 2023 19:07:18 UTC
The branch main has been updated by brooks:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2a9d785d67c6d66268d46f4d3ff0f255dc01e9ea

commit 2a9d785d67c6d66268d46f4d3ff0f255dc01e9ea
Author:     Brooks Davis <brooks@FreeBSD.org>
AuthorDate: 2023-07-14 19:07:06 +0000
Commit:     Brooks Davis <brooks@FreeBSD.org>
CommitDate: 2023-07-14 19:07:06 +0000

    devel/llvm16: backport upstream powerpc FP fix
    
    The upstream commit fde5924dcc69 has been merged to llvm in the FreeBSD
    main branch so merge it here as well.
    
    Issue: https://github.com/llvm/llvm-project/issues/63542
---
 devel/llvm16/Makefile                          |  2 +-
 devel/llvm16/files/patch-backport-fde5924dcc69 | 45 ++++++++++++++++++++++++++
 2 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/devel/llvm16/Makefile b/devel/llvm16/Makefile
index 196dd616cc30..7eaa3bc0f313 100644
--- a/devel/llvm16/Makefile
+++ b/devel/llvm16/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	llvm
 DISTVERSION=	16.0.6
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES=	devel lang
 MASTER_SITES=	https://github.com/llvm/llvm-project/releases/download/llvmorg-${DISTVERSION:S/rc/-rc/}/ \
 		https://${PRE_}releases.llvm.org/${LLVM_RELEASE}${RCDIR}/
diff --git a/devel/llvm16/files/patch-backport-fde5924dcc69 b/devel/llvm16/files/patch-backport-fde5924dcc69
new file mode 100644
index 000000000000..a4fad341afdc
--- /dev/null
+++ b/devel/llvm16/files/patch-backport-fde5924dcc69
@@ -0,0 +1,45 @@
+commit fde5924dcc69fe814085482df259b8cfee236f2c
+Author: Serge Pavlov <sepavloff@gmail.com>
+Date:   Thu Jul 13 11:49:00 2023 +0700
+
+    [clang] Reset FP options before template instantiation
+    
+    AST nodes that may depend on FP options keep them as a difference
+    relative to the options outside the AST node. At the moment of
+    instantiation the FP options may be different from the default values,
+    defined by command-line option. In such case FP attributes would have
+    unexpected values. For example, the code:
+    
+        template <class C> void func_01(int last, C) {
+          func_01(last, int());
+        }
+        void func_02() { func_01(0, 1); }
+        #pragma STDC FENV_ACCESS ON
+    
+    caused compiler crash, because template instantiation takes place at the
+    end of translation unit, where pragma STDC FENV_ACCESS is in effect. As
+    a result, code in the template instantiation would use constrained
+    intrinsics while the function does not have StrictFP attribute.
+    
+    To solve this problem, FP attributes in Sema must be set to default
+    values, defined by command line options.
+    
+    This change resolves https://github.com/llvm/llvm-project/issues/63542.
+    
+    Differential Revision: https://reviews.llvm.org/D154359
+
+diff --git clang/lib/Sema/SemaTemplateInstantiateDecl.cpp clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+index 492fe8ba1b14..9e5f85b0f916 100644
+--- clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
++++ clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+@@ -5087,6 +5087,10 @@ void Sema::InstantiateFunctionDefinition(SourceLocation PointOfInstantiation,
+     // PushDeclContext because we don't have a scope.
+     Sema::ContextRAII savedContext(*this, Function);
+ 
++    FPFeaturesStateRAII SavedFPFeatures(*this);
++    CurFPFeatures = FPOptions(getLangOpts());
++    FpPragmaStack.CurrentValue = FPOptionsOverride();
++
+     if (addInstantiatedParametersToScope(Function, PatternDecl, Scope,
+                                          TemplateArgs))
+       return;