zahiraam created this revision. zahiraam added reviewers: aaron.ballman, andrew.w.kaylor. Herald added a project: All. zahiraam requested review of this revision. Herald added a project: clang.
Diagnose when `#pragma clang fp eval_method` doesn't have a supported value. Currently the compiler is crashing. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D121380 Files: clang/include/clang/Basic/DiagnosticParseKinds.td clang/test/Sema/fp-eval-pragma.cpp Index: clang/test/Sema/fp-eval-pragma.cpp =================================================================== --- clang/test/Sema/fp-eval-pragma.cpp +++ clang/test/Sema/fp-eval-pragma.cpp @@ -27,6 +27,16 @@ return 0; } +void apply_pragma_with_wrong_value() { + // expected-error@+1{{unexpected argument 'value' to '#pragma clang fp eval_method'; expected 'source' or '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__; { Index: clang/include/clang/Basic/DiagnosticParseKinds.td =================================================================== --- clang/include/clang/Basic/DiagnosticParseKinds.td +++ clang/include/clang/Basic/DiagnosticParseKinds.td @@ -1489,7 +1489,8 @@ "%select{" "'fast' or 'on' or 'off'|" "'on' or 'off'|" - "'ignore', 'maytrap' or 'strict'}2">; + "'ignore', 'maytrap' or 'strict'|" + "'source' or 'double' or 'extended'}2">; def err_pragma_invalid_keyword : Error< "invalid argument; expected 'enable'%select{|, 'full'}0%select{|, 'assume_safety'}1 or 'disable'">;
Index: clang/test/Sema/fp-eval-pragma.cpp =================================================================== --- clang/test/Sema/fp-eval-pragma.cpp +++ clang/test/Sema/fp-eval-pragma.cpp @@ -27,6 +27,16 @@ return 0; } +void apply_pragma_with_wrong_value() { + // expected-error@+1{{unexpected argument 'value' to '#pragma clang fp eval_method'; expected 'source' or '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__; { Index: clang/include/clang/Basic/DiagnosticParseKinds.td =================================================================== --- clang/include/clang/Basic/DiagnosticParseKinds.td +++ clang/include/clang/Basic/DiagnosticParseKinds.td @@ -1489,7 +1489,8 @@ "%select{" "'fast' or 'on' or 'off'|" "'on' or 'off'|" - "'ignore', 'maytrap' or 'strict'}2">; + "'ignore', 'maytrap' or 'strict'|" + "'source' or 'double' or 'extended'}2">; def err_pragma_invalid_keyword : Error< "invalid argument; expected 'enable'%select{|, 'full'}0%select{|, 'assume_safety'}1 or 'disable'">;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits