[all-commits] [llvm/llvm-project] a633da: [FPEnv] Partially implement #pragma STDC FENV_ROUND

Serge Pavlov via All-commits all-commits at lists.llvm.org
Fri Sep 4 02:48:19 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: a633da5391b0e42c0185132e8b532ae9bc34489f
      https://github.com/llvm/llvm-project/commit/a633da5391b0e42c0185132e8b532ae9bc34489f
  Author: Serge Pavlov <sepavloff at gmail.com>
  Date:   2020-09-04 (Fri, 04 Sep 2020)

  Changed paths:
    M clang/include/clang/Basic/DiagnosticParseKinds.td
    M clang/include/clang/Basic/TokenKinds.def
    M clang/include/clang/Parse/Parser.h
    M clang/include/clang/Sema/Sema.h
    M clang/lib/Parse/ParsePragma.cpp
    M clang/lib/Parse/ParseStmt.cpp
    M clang/lib/Parse/Parser.cpp
    M clang/lib/Sema/SemaAttr.cpp
    M clang/test/AST/ast-dump-fpfeatures.cpp
    A clang/test/Parser/pragma-fenv_round.c

  Log Message:
  -----------
  [FPEnv] Partially implement #pragma STDC FENV_ROUND

This change implements pragma STDC FENV_ROUND, which is introduced by
the extension to standard (TS 18661-1). The pragma is implemented only
in frontend, it sets apprpriate state of FPOptions stored in Sema. Use
of these bits in constant evaluation adn/or code generator is not in the
scope of this change.

Parser issues warning on unsuppored pragma when it encounteres pragma
STDC FENV_ROUND, however it makes syntax checks and updates Sema state
as if the pragma were supported.

Primary purpose of the partial implementation is to facilitate
development of non-default floating poin environment. Previously a
developer cannot set non-default rounding mode in sources, this mades
preparing tests for say constant evaluation  substantially complicated.

Differential Revision: https://reviews.llvm.org/D86921




More information about the All-commits mailing list