diff options
author | Zahira Ammarguellat <zahira.ammarguellat@intel.com> | 2022-03-10 08:08:12 -0800 |
---|---|---|
committer | Zahira Ammarguellat <zahira.ammarguellat@intel.com> | 2022-03-10 13:19:53 -0800 |
commit | 15ef06f453c6f9513b476e80dd9567d01fc662e8 (patch) | |
tree | d38a360883d43b85055a3745db79ebdc69ff6aca | |
parent | 035441ff3008c2a1930363751c6db61b71a5f089 (diff) |
Diagnose when `#pragma clang fp eval_method` doesn't have a supported value.
Currently the compiler is crashing.
Differential Revision: https://reviews.llvm.org/D121380
-rw-r--r-- | clang/include/clang/Basic/DiagnosticParseKinds.td | 3 | ||||
-rw-r--r-- | clang/test/Sema/fp-eval-pragma.cpp | 10 |
2 files changed, 12 insertions, 1 deletions
diff --git a/clang/include/clang/Basic/DiagnosticParseKinds.td b/clang/include/clang/Basic/DiagnosticParseKinds.td index 92ae27d6212a..7af15f5504ff 100644 --- a/clang/include/clang/Basic/DiagnosticParseKinds.td +++ b/clang/include/clang/Basic/DiagnosticParseKinds.td @@ -1489,7 +1489,8 @@ def err_pragma_fp_invalid_argument : Error< "%select{" "'fast' or 'on' or 'off'|" "'on' or 'off'|" - "'ignore', 'maytrap' or 'strict'}2">; + "'ignore', 'maytrap' or 'strict'|" + "'source', 'double' or 'extended'}2">; def err_pragma_invalid_keyword : Error< "invalid argument; expected 'enable'%select{|, 'full'}0%select{|, 'assume_safety'}1 or 'disable'">; diff --git a/clang/test/Sema/fp-eval-pragma.cpp b/clang/test/Sema/fp-eval-pragma.cpp index 42d88fd438e8..571b8097e9ab 100644 --- a/clang/test/Sema/fp-eval-pragma.cpp +++ b/clang/test/Sema/fp-eval-pragma.cpp @@ -27,6 +27,16 @@ int foo2() { return 0; } +void apply_pragma_with_wrong_value() { + // expected-error@+1{{unexpected argument 'value' to '#pragma clang fp eval_method'; expected 'source', 'double' or 'extended'}} +#pragma clang fp eval_method(value) +} + +int foo3() { + apply_pragma_with_wrong_value(); + return 0; +} + void foo() { auto a = __FLT_EVAL_METHOD__; { |