]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Merge commit fde5924dcc69 from llvm-project (by Serge Pavlov):
authorDimitry Andric <dim@FreeBSD.org>
Thu, 13 Jul 2023 18:57:22 +0000 (20:57 +0200)
committerDimitry Andric <dim@FreeBSD.org>
Sun, 23 Jul 2023 17:38:12 +0000 (19:38 +0200)
commit95955fb872c6a51ff18804b93a2065185955c2a0
treefa8e9ef79bd6557146769de9d7bbafb1583d87ad
parentb2acc21dfbd6fab28b1715c775b43d4914b75e0c
Merge commit fde5924dcc69 from llvm-project (by Serge Pavlov):

  [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

Requested by: pkubaj
PR: 265755, 265758
MFC after: 1 month

(cherry picked from commit 1cd9788408aa9ea4fd0fbc3e06bd9a4eaf8d8d22)
contrib/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp