From beb997799d823aece097494f156c6d277d26571c Mon Sep 17 00:00:00 2001 From: eopXD Date: Thu, 27 Oct 2022 00:42:46 -0700 Subject: [PATCH] [Clang] Improve diagnostic message for loop hint pragma Originally the loop hint is not displayed correctly in the diagnostic. This patch fixes it. Reviewed By: Meinersbur Differential Revision: https://reviews.llvm.org/D136784 --- clang/lib/Parse/ParsePragma.cpp | 4 +++- clang/test/Parser/pragma-loop.cpp | 18 +++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/clang/lib/Parse/ParsePragma.cpp b/clang/lib/Parse/ParsePragma.cpp index 123d94e..cddc378 100644 --- a/clang/lib/Parse/ParsePragma.cpp +++ b/clang/lib/Parse/ParsePragma.cpp @@ -1303,7 +1303,9 @@ struct PragmaLoopHintInfo { static std::string PragmaLoopHintString(Token PragmaName, Token Option) { StringRef Str = PragmaName.getIdentifierInfo()->getName(); - std::string ClangLoopStr = (llvm::Twine("clang loop ") + Str).str(); + std::string ClangLoopStr("clang loop "); + if (Str == "loop" && Option.getIdentifierInfo()) + ClangLoopStr += Option.getIdentifierInfo()->getName(); return std::string(llvm::StringSwitch(Str) .Case("loop", ClangLoopStr) .Case("unroll_and_jam", Str) diff --git a/clang/test/Parser/pragma-loop.cpp b/clang/test/Parser/pragma-loop.cpp index 750affb..0203e90 100644 --- a/clang/test/Parser/pragma-loop.cpp +++ b/clang/test/Parser/pragma-loop.cpp @@ -305,34 +305,34 @@ void foo(void) { void foo(int *List, int Length) { int i; #pragma clang loop vectorize(enable, extra) -/* expected-warning {{extra tokens at end of '#pragma clang loop loop' - ignored}}*/ while (i-6 < Length) { +/* expected-warning {{extra tokens at end of '#pragma clang loop vectorize' - ignored}}*/ while (i-6 < Length) { List[i] = i; } #pragma clang loop interleave(enable, extra) -/* expected-warning {{extra tokens at end of '#pragma clang loop loop' - ignored}}*/ while (i-6 < Length) { +/* expected-warning {{extra tokens at end of '#pragma clang loop interleave' - ignored}}*/ while (i-6 < Length) { List[i] = i; } #pragma clang loop unroll(enable, extra) -/* expected-warning {{extra tokens at end of '#pragma clang loop loop' - ignored}}*/ while (i-6 < Length) { +/* expected-warning {{extra tokens at end of '#pragma clang loop unroll' - ignored}}*/ while (i-6 < Length) { List[i] = i; } #pragma clang loop vectorize_predicate(enable, extra) -/* expected-warning {{extra tokens at end of '#pragma clang loop loop' - ignored}}*/ while (i-6 < Length) { +/* expected-warning {{extra tokens at end of '#pragma clang loop vectorize_predicate' - ignored}}*/ while (i-6 < Length) { List[i] = i; } #pragma clang loop pipeline(disable, extra) -/* expected-warning {{extra tokens at end of '#pragma clang loop loop' - ignored}}*/ while (i-6 < Length) { +/* expected-warning {{extra tokens at end of '#pragma clang loop pipeline' - ignored}}*/ while (i-6 < Length) { List[i] = i; } -/* expected-warning {{extra tokens at end of '#pragma clang loop loop' - ignored}}*/ #pragma clang loop vectorize_width(2, scalable, extra) -/* expected-warning {{extra tokens at end of '#pragma clang loop loop' - ignored}}*/ #pragma clang loop interleave_count(2, extra) -/* expected-warning {{extra tokens at end of '#pragma clang loop loop' - ignored}}*/ #pragma clang loop unroll_count(2, extra) -/* expected-warning {{extra tokens at end of '#pragma clang loop loop' - ignored}}*/ #pragma clang loop pipeline_initiation_interval(2, extra) +/* expected-warning {{extra tokens at end of '#pragma clang loop vectorize_width' - ignored}}*/ #pragma clang loop vectorize_width(2, scalable, extra) +/* expected-warning {{extra tokens at end of '#pragma clang loop interleave_count' - ignored}}*/ #pragma clang loop interleave_count(2, extra) +/* expected-warning {{extra tokens at end of '#pragma clang loop unroll_count' - ignored}}*/ #pragma clang loop unroll_count(2, extra) +/* expected-warning {{extra tokens at end of '#pragma clang loop pipeline_initiation_interval' - ignored}}*/ #pragma clang loop pipeline_initiation_interval(2, extra) while (i-6 < Length) { List[i] = i; } -- 2.7.4