diff --git a/ACSLLexer.cpp b/ACSLLexer.cpp
index 4a775181821b9fd23970f4011922e1c158b25404..3a6be1c6183e0d6a1e83fbd161f05c7f1161cc76 100644
--- a/ACSLLexer.cpp
+++ b/ACSLLexer.cpp
@@ -25,6 +25,10 @@
 //  Implementation of the ACSL++ lexer.
 //
 
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
 #include <sstream>
 #include <climits>
 #include <string>
@@ -39,6 +43,9 @@
 #include "clang/Sema/Lookup.h"
 #include "clang/Basic/TargetInfo.h"
 #include "clang/Lex/MacroArgs.h"
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
 
 #include "ACSLLexer.h"
 #include "intermediate_format.h"
diff --git a/ACSLParser.cpp b/ACSLParser.cpp
index 471a81d546388c4560317040088b21fd5f497097..52196ba4c1677582656365bc21b242c2a3520f88 100644
--- a/ACSLParser.cpp
+++ b/ACSLParser.cpp
@@ -25,6 +25,10 @@
 //   Implementation of the ACSL++ parser.
 //
 
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
 #include "clang/Basic/Version.h"
 #include "llvm/ADT/SmallString.h"
 #include "clang/AST/ASTContext.h"
@@ -34,6 +38,9 @@
 #include "clang/Sema/Lookup.h"
 #include "clang/Basic/TargetInfo.h"
 #include "clang/Lex/MacroArgs.h"
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
 
 #include "ACSLParser.h"
 
diff --git a/ClangVisitor.cpp b/ClangVisitor.cpp
index 086d1e7c3d7e0c48cafc67ac06ea9ba28bd22a18..1633ccd0b1841b29985013f33f0dd2d4d402ccaf 100644
--- a/ClangVisitor.cpp
+++ b/ClangVisitor.cpp
@@ -25,6 +25,10 @@
 //   Definition of a translator clang -> intermediate_format (-> cabs -> cil).
 //
 
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
 #include "clang/AST/ASTContext.h"
 #include "clang/AST/ASTConsumer.h"
 #include "clang/AST/APValue.h"
@@ -43,6 +47,10 @@
 #include <sstream>
 #include <cstddef>
 #include <list>
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
 #include "ClangVisitor.h"
 
 void
diff --git a/Clang_utils.h b/Clang_utils.h
index b8e0af21e8ee7f62a2ef924a4c36980c7992b017..4d8ffdee09b70bf8dae399a3386a6dd94126f518 100644
--- a/Clang_utils.h
+++ b/Clang_utils.h
@@ -36,10 +36,17 @@
 #include <set>
 #include <map>
 #include <functional>
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
 #include "clang/Basic/Version.h"
 #include "clang/AST/ASTContext.h"
 #include "clang/AST/DeclCXX.h"
 #include "clang/AST/DeclTemplate.h"
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
 
 extern "C" {
 #include "intermediate_format.h"
diff --git a/FramaCIRGen.cpp b/FramaCIRGen.cpp
index bf32409496d44a92fc2b46afc602004889c71ea8..ca4bddb8ea6d75d417663844d7122942469c5ddc 100644
--- a/FramaCIRGen.cpp
+++ b/FramaCIRGen.cpp
@@ -25,6 +25,10 @@
 //   Definition of a translator clang -> intermediate_format (-> cabs -> cil).
 //
 
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
 #include "clang/AST/RecursiveASTVisitor.h"
 #include "clang/AST/ASTContext.h"
 #include "clang/AST/ASTConsumer.h"
@@ -48,6 +52,9 @@
 #include <sstream>
 #include <cstddef>
 #include <list>
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
 
 #include "ClangVisitor.h"
 
diff --git a/Makefile.clang b/Makefile.clang
index 9b9251a836e6fef94b3eb41531f0f539e9de519d..0233cd6b6eb42fc54e06ade36f425ea7f5cbf031 100644
--- a/Makefile.clang
+++ b/Makefile.clang
@@ -52,7 +52,8 @@ OBJS=\
 
 DEPS=$(OBJS:.o=.d)
 CXXFLAGS?=$(CLANG_CXXFLAGS)
-CXXFLAGS+=-Wno-enum-compare -DCLANG_BIN_DIR=\"$(CLANG_BIN_DIR)\" -Wall
+CXXFLAGS+=-DCLANG_BIN_DIR=\"$(CLANG_BIN_DIR)\" \
+          -Wall -Wno-comment -Wno-enum-compare
 CFLAGS?=$(CLANG_CFLAGS)
 CFLAGS+=-Wno-enum-compare
 
diff --git a/RTTITable.h b/RTTITable.h
index 8d3dc5bf55666da5e512d56c55523a3fd35da5eb..15b039a303e628a95605fc25561641f72f0db3d9 100644
--- a/RTTITable.h
+++ b/RTTITable.h
@@ -28,8 +28,16 @@
 #ifndef Table_RTTIH
 #define Table_RTTIH
 
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
 #include <list>
 #include "clang/AST/DeclCXX.h"
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
 #include "Clang_utils.h"
 
 extern "C" {
diff --git a/VisitTable.h b/VisitTable.h
index eaf4b7e0a5c0d7ced3cb22a8f8218a28106a626b..1f0ed4c9dffe454c20d95a9e29d1db52b1090a98 100644
--- a/VisitTable.h
+++ b/VisitTable.h
@@ -28,7 +28,15 @@
 #ifndef Visit_TableH
 #define Visit_TableH
 
+#ifdef __GNUC__
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wclass-memaccess"
+#endif
 #include "clang/AST/DeclCXX.h"
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
 #include "Clang_utils.h"
 
 extern "C" {