diff --git a/shared/cplusplus/Parser.cpp b/shared/cplusplus/Parser.cpp
index ae9f39469a0671c7732d26cf3ae617a9e92e7be0..eefa3d5b9fe978bdcc6ecc7b4c1fcfcfa8c174e7 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 6974c6bbb4c69f78c5816767bbcab9d083121ae2..39fd14105de2e394305c223f6e76f6047eb139e0 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 5756d2dd2245053c564ee73eea2f9dca11b70da0..689da076ea1c6045778d23da6ec97eb0dafefc4e 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 fbfad57a4bc2157303aac6103ef7e15ca056e1d5..c179f979272ee673d3b78d5b8748271f73c0fc0e 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