157 lines
5.1 KiB
Diff
157 lines
5.1 KiB
Diff
|
|
From c80316a3efc9244af035e1ebfe2b4df15d691c96 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Sergey Avseyev <sergey.avseyev@gmail.com>
|
||
|
|
Date: Thu, 10 Jan 2019 07:37:09 +0300
|
||
|
|
Subject: [PATCH] generate gcc pragmas to ignore -Wclass-memaccess
|
||
|
|
|
||
|
|
---
|
||
|
|
samples/monster_generated.h | 7 +++++++
|
||
|
|
src/idl_gen_cpp.cpp | 7 +++++++
|
||
|
|
tests/monster_test_generated.h | 21 +++++++++++++++++++
|
||
|
|
.../namespace_test1_generated.h | 7 +++++++
|
||
|
|
tests/union_vector/union_vector_generated.h | 14 +++++++++++++
|
||
|
|
5 files changed, 56 insertions(+)
|
||
|
|
|
||
|
|
diff --git a/samples/monster_generated.h b/samples/monster_generated.h
|
||
|
|
index 5ac4be3..ae1fd04 100644
|
||
|
|
--- a/samples/monster_generated.h
|
||
|
|
+++ b/samples/monster_generated.h
|
||
|
|
@@ -164,7 +164,14 @@ FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Vec3 FLATBUFFERS_FINAL_CLASS {
|
||
|
|
|
||
|
|
public:
|
||
|
|
Vec3() {
|
||
|
|
+#if defined(__GNUC__)
|
||
|
|
+#pragma GCC diagnostic push
|
||
|
|
+#pragma GCC diagnostic ignored "-Wclass-memaccess"
|
||
|
|
+#endif
|
||
|
|
memset(this, 0, sizeof(Vec3));
|
||
|
|
+#if defined(__GNUC__)
|
||
|
|
+#pragma GCC diagnostic pop
|
||
|
|
+#endif
|
||
|
|
}
|
||
|
|
Vec3(float _x, float _y, float _z)
|
||
|
|
: x_(flatbuffers::EndianScalar(_x)),
|
||
|
|
diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp
|
||
|
|
index a0abfdd..8d35673 100644
|
||
|
|
--- a/src/idl_gen_cpp.cpp
|
||
|
|
+++ b/src/idl_gen_cpp.cpp
|
||
|
|
@@ -2585,7 +2585,14 @@ class CppGenerator : public BaseGenerator {
|
||
|
|
|
||
|
|
// Generate a default constructor.
|
||
|
|
code_ += " {{STRUCT_NAME}}() {";
|
||
|
|
+ code_ += "#if defined(__GNUC__)";
|
||
|
|
+ code_ += "#pragma GCC diagnostic push";
|
||
|
|
+ code_ += "#pragma GCC diagnostic ignored \"-Wclass-memaccess\"";
|
||
|
|
+ code_ += "#endif";
|
||
|
|
code_ += " memset(this, 0, sizeof({{STRUCT_NAME}}));";
|
||
|
|
+ code_ += "#if defined(__GNUC__)";
|
||
|
|
+ code_ += "#pragma GCC diagnostic pop";
|
||
|
|
+ code_ += "#endif";
|
||
|
|
code_ += " }";
|
||
|
|
|
||
|
|
// Generate a constructor that takes all fields as arguments.
|
||
|
|
diff --git a/tests/monster_test_generated.h b/tests/monster_test_generated.h
|
||
|
|
index 0f5e252..4b0aa9f 100644
|
||
|
|
--- a/tests/monster_test_generated.h
|
||
|
|
+++ b/tests/monster_test_generated.h
|
||
|
|
@@ -269,7 +269,14 @@ FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(2) Test FLATBUFFERS_FINAL_CLASS {
|
||
|
|
|
||
|
|
public:
|
||
|
|
Test() {
|
||
|
|
+#if defined(__GNUC__)
|
||
|
|
+#pragma GCC diagnostic push
|
||
|
|
+#pragma GCC diagnostic ignored "-Wclass-memaccess"
|
||
|
|
+#endif
|
||
|
|
memset(this, 0, sizeof(Test));
|
||
|
|
+#if defined(__GNUC__)
|
||
|
|
+#pragma GCC diagnostic pop
|
||
|
|
+#endif
|
||
|
|
}
|
||
|
|
Test(int16_t _a, int8_t _b)
|
||
|
|
: a_(flatbuffers::EndianScalar(_a)),
|
||
|
|
@@ -312,7 +319,14 @@ FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(16) Vec3 FLATBUFFERS_FINAL_CLASS {
|
||
|
|
|
||
|
|
public:
|
||
|
|
Vec3() {
|
||
|
|
+#if defined(__GNUC__)
|
||
|
|
+#pragma GCC diagnostic push
|
||
|
|
+#pragma GCC diagnostic ignored "-Wclass-memaccess"
|
||
|
|
+#endif
|
||
|
|
memset(this, 0, sizeof(Vec3));
|
||
|
|
+#if defined(__GNUC__)
|
||
|
|
+#pragma GCC diagnostic pop
|
||
|
|
+#endif
|
||
|
|
}
|
||
|
|
Vec3(float _x, float _y, float _z, double _test1, Color _test2, const Test &_test3)
|
||
|
|
: x_(flatbuffers::EndianScalar(_x)),
|
||
|
|
@@ -384,7 +398,14 @@ FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Ability FLATBUFFERS_FINAL_CLASS {
|
||
|
|
|
||
|
|
public:
|
||
|
|
Ability() {
|
||
|
|
+#if defined(__GNUC__)
|
||
|
|
+#pragma GCC diagnostic push
|
||
|
|
+#pragma GCC diagnostic ignored "-Wclass-memaccess"
|
||
|
|
+#endif
|
||
|
|
memset(this, 0, sizeof(Ability));
|
||
|
|
+#if defined(__GNUC__)
|
||
|
|
+#pragma GCC diagnostic pop
|
||
|
|
+#endif
|
||
|
|
}
|
||
|
|
Ability(uint32_t _id, uint32_t _distance)
|
||
|
|
: id_(flatbuffers::EndianScalar(_id)),
|
||
|
|
diff --git a/tests/namespace_test/namespace_test1_generated.h b/tests/namespace_test/namespace_test1_generated.h
|
||
|
|
index d82a577..a7637bc 100644
|
||
|
|
--- a/tests/namespace_test/namespace_test1_generated.h
|
||
|
|
+++ b/tests/namespace_test/namespace_test1_generated.h
|
||
|
|
@@ -56,7 +56,14 @@ FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) StructInNestedNS FLATBUFFERS_FINAL_CLASS
|
||
|
|
|
||
|
|
public:
|
||
|
|
StructInNestedNS() {
|
||
|
|
+#if defined(__GNUC__)
|
||
|
|
+#pragma GCC diagnostic push
|
||
|
|
+#pragma GCC diagnostic ignored "-Wclass-memaccess"
|
||
|
|
+#endif
|
||
|
|
memset(this, 0, sizeof(StructInNestedNS));
|
||
|
|
+#if defined(__GNUC__)
|
||
|
|
+#pragma GCC diagnostic pop
|
||
|
|
+#endif
|
||
|
|
}
|
||
|
|
StructInNestedNS(int32_t _a, int32_t _b)
|
||
|
|
: a_(flatbuffers::EndianScalar(_a)),
|
||
|
|
diff --git a/tests/union_vector/union_vector_generated.h b/tests/union_vector/union_vector_generated.h
|
||
|
|
index c5b2250..57d208e 100644
|
||
|
|
--- a/tests/union_vector/union_vector_generated.h
|
||
|
|
+++ b/tests/union_vector/union_vector_generated.h
|
||
|
|
@@ -188,7 +188,14 @@ FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) Rapunzel FLATBUFFERS_FINAL_CLASS {
|
||
|
|
|
||
|
|
public:
|
||
|
|
Rapunzel() {
|
||
|
|
+#if defined(__GNUC__)
|
||
|
|
+#pragma GCC diagnostic push
|
||
|
|
+#pragma GCC diagnostic ignored "-Wclass-memaccess"
|
||
|
|
+#endif
|
||
|
|
memset(this, 0, sizeof(Rapunzel));
|
||
|
|
+#if defined(__GNUC__)
|
||
|
|
+#pragma GCC diagnostic pop
|
||
|
|
+#endif
|
||
|
|
}
|
||
|
|
Rapunzel(int32_t _hair_length)
|
||
|
|
: hair_length_(flatbuffers::EndianScalar(_hair_length)) {
|
||
|
|
@@ -213,7 +220,14 @@ FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) BookReader FLATBUFFERS_FINAL_CLASS {
|
||
|
|
|
||
|
|
public:
|
||
|
|
BookReader() {
|
||
|
|
+#if defined(__GNUC__)
|
||
|
|
+#pragma GCC diagnostic push
|
||
|
|
+#pragma GCC diagnostic ignored "-Wclass-memaccess"
|
||
|
|
+#endif
|
||
|
|
memset(this, 0, sizeof(BookReader));
|
||
|
|
+#if defined(__GNUC__)
|
||
|
|
+#pragma GCC diagnostic pop
|
||
|
|
+#endif
|
||
|
|
}
|
||
|
|
BookReader(int32_t _books_read)
|
||
|
|
: books_read_(flatbuffers::EndianScalar(_books_read)) {
|
||
|
|
--
|
||
|
|
2.20.1
|
||
|
|
|