summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZahira Ammarguellat <zahira.ammarguellat@intel.com>2022-03-10 08:08:12 -0800
committerZahira Ammarguellat <zahira.ammarguellat@intel.com>2022-03-10 13:19:53 -0800
commit15ef06f453c6f9513b476e80dd9567d01fc662e8 (patch)
treed38a360883d43b85055a3745db79ebdc69ff6aca
parent035441ff3008c2a1930363751c6db61b71a5f089 (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.td3
-rw-r--r--clang/test/Sema/fp-eval-pragma.cpp10
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__;
{