From 653b81427c46d7569b6434705494f47ec19bc70f Mon Sep 17 00:00:00 2001
From: Roberto Raggi <qtc-committer@nokia.com>
Date: Wed, 14 Jan 2009 15:16:02 +0100
Subject: [PATCH] Accept gcc attributes in cv-qualifiers.

---
 shared/cplusplus/Parser.cpp          |  3 +++
 tests/auto/cplusplus/ast/ast.pro     |  1 -
 tests/auto/cplusplus/ast/tst_ast.cpp | 10 ++++++++++
 tests/manual/cplusplus/conf.c++      |  1 +
 4 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/shared/cplusplus/Parser.cpp b/shared/cplusplus/Parser.cpp
index ae9f39469a0..eefa3d5b9fe 100644
--- a/shared/cplusplus/Parser.cpp
+++ b/shared/cplusplus/Parser.cpp
@@ -751,6 +751,9 @@ bool Parser::parseCvQualifiers(SpecifierAST *&node)
             spec->specifier_token = consumeToken();
             *ast = spec;
             ast = &(*ast)->next;
+        } else if(LA() == T___ATTRIBUTE__) {
+            parseAttributeSpecifier(*ast);
+            ast = &(*ast)->next;
         } else {
             break;
         }
diff --git a/tests/auto/cplusplus/ast/ast.pro b/tests/auto/cplusplus/ast/ast.pro
index 6974c6bbb4c..39fd14105de 100644
--- a/tests/auto/cplusplus/ast/ast.pro
+++ b/tests/auto/cplusplus/ast/ast.pro
@@ -1,5 +1,4 @@
 load(qttest_p4)
 include(../shared/shared.pri)
 QT = core
-
 SOURCES += tst_ast.cpp
diff --git a/tests/auto/cplusplus/ast/tst_ast.cpp b/tests/auto/cplusplus/ast/tst_ast.cpp
index 5756d2dd224..689da076ea1 100644
--- a/tests/auto/cplusplus/ast/tst_ast.cpp
+++ b/tests/auto/cplusplus/ast/tst_ast.cpp
@@ -36,6 +36,9 @@ public:
     { return parse(source, TranslationUnit::ParseStatement); }
 
 private slots:
+    // declarations
+    void gcc_attributes_1();
+
     // expressions
     void simple_name();
     void template_id();
@@ -54,6 +57,13 @@ private slots:
     void objc_protocol_definition_1();
 };
 
+void tst_AST::gcc_attributes_1()
+{
+    QSharedPointer<TranslationUnit> unit(parseDeclaration("\n"
+"static inline void *__attribute__((__always_inline__)) _mm_malloc(size_t size, size_t align);"
+    ));
+}
+
 void tst_AST::simple_name()
 {
     QSharedPointer<TranslationUnit> unit(parseExpression("a"));
diff --git a/tests/manual/cplusplus/conf.c++ b/tests/manual/cplusplus/conf.c++
index fbfad57a4bc..c179f979272 100644
--- a/tests/manual/cplusplus/conf.c++
+++ b/tests/manual/cplusplus/conf.c++
@@ -5,3 +5,4 @@
 #define __asm__(a...)
 #define   restrict
 #define __restrict
+#define __weak
-- 
GitLab