File tree Expand file tree Collapse file tree 2 files changed +14
-0
lines changed
Expand file tree Collapse file tree 2 files changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -9585,6 +9585,10 @@ void Tokenizer::simplifyKeyword()
95859585
95869586 if (mSettings .standards .c >= Standards::C11) {
95879587 while (tok->str () == " _Atomic" ) {
9588+ if (Token::simpleMatch (tok->next (), " (" )) {
9589+ tok->linkAt (1 )->deleteThis ();
9590+ tok->next ()->deleteThis ();
9591+ }
95889592 for (Token* temp: getTypeTokens ())
95899593 temp->isAtomic (true );
95909594 tok->deleteThis ();
Original file line number Diff line number Diff line change @@ -471,6 +471,8 @@ class TestTokenizer : public TestFixture {
471471 TEST_CASE (genericInIf); // #13561
472472
473473 TEST_CASE (preincrementInLambda); // #13312
474+
475+ TEST_CASE (atomicCast); // #12605
474476 }
475477
476478#define tokenizeAndStringify (...) tokenizeAndStringify_(__FILE__, __LINE__, __VA_ARGS__)
@@ -8431,6 +8433,14 @@ class TestTokenizer : public TestFixture {
84318433 " }\n " ;
84328434 ASSERT_NO_THROW (tokenizeAndStringify (code));
84338435 }
8436+
8437+ void atomicCast () { // #12605
8438+ const char code[] = " int atomic_add_int(int *ptr, int v)\n "
8439+ " {\n "
8440+ " return atomic_fetch_add((_Atomic(unsigned int) *)ptr, v) + v;\n "
8441+ " }\n " ;
8442+ ASSERT_NO_THROW (tokenizeAndStringify (code, settingsDefault, false ));
8443+ }
84348444};
84358445
84368446REGISTER_TEST (TestTokenizer)
You can’t perform that action at this time.
0 commit comments