summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp
diff options
context:
space:
mode:
authorAlexander Kornienko <alexfh@google.com>2016-04-23 00:00:08 +0000
committerAlexander Kornienko <alexfh@google.com>2016-04-23 00:00:08 +0000
commit5142c0d7fa8aecf32b4b202798a20d9c65ae18ce (patch)
treed3bde45c98d517f8a8664d5cb5877821d0b456b3 /clang-tools-extra/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp
parent99ed6057992ff8cb25a0c533cf84de37cf80a279 (diff)
downloadbcm5719-llvm-5142c0d7fa8aecf32b4b202798a20d9c65ae18ce.tar.gz
bcm5719-llvm-5142c0d7fa8aecf32b4b202798a20d9c65ae18ce.zip
[clang-tidy] Fix misc-macro-repeated-side-effects false positive with stringified arguments
llvm-svn: 267254
Diffstat (limited to 'clang-tools-extra/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp')
-rw-r--r--clang-tools-extra/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp b/clang-tools-extra/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp
index e8ad7c57efc..699966a8140 100644
--- a/clang-tools-extra/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/MacroRepeatedSideEffectsCheck.cpp
@@ -86,6 +86,7 @@ unsigned MacroRepeatedPPCallbacks::countArgumentExpansions(
int SkipParenCount = 0;
// Has a __builtin_constant_p been found?
bool FoundBuiltin = false;
+ bool PrevTokenIsHash = false;
// Count when "?" is reached. The "Current" will get this value when the ":"
// is reached.
std::stack<unsigned, SmallVector<unsigned, 8>> CountAtQuestion;
@@ -98,6 +99,16 @@ unsigned MacroRepeatedPPCallbacks::countArgumentExpansions(
if (FoundBuiltin && T.isOneOf(tok::question, tok::ampamp, tok::pipepipe))
return Max;
+ // Skip stringified tokens.
+ if (T.is(tok::hash)) {
+ PrevTokenIsHash = true;
+ continue;
+ }
+ if (PrevTokenIsHash) {
+ PrevTokenIsHash = false;
+ continue;
+ }
+
// Handling of ? and :.
if (T.is(tok::question)) {
CountAtQuestion.push(Current);
OpenPOWER on IntegriCloud