From c017cee9df6e68af8d275914b0184c0a8965167e Mon Sep 17 00:00:00 2001 From: Jamie Madill Date: Thu, 24 Oct 2019 12:55:10 -0400 Subject: [PATCH] Enable "-Wundefined-reinterpret-cast". A couple cases popped up where we were using an undefined cast. Fix them by rearranging assignment macros to use decltype. Another warning that is enabled in Skia. Bug: angleproject:4046 Change-Id: Ibdbae0b2a96909b101a259ff805b8b2d43a5174b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877479 Commit-Queue: Jamie Madill Reviewed-by: Jamie Madill --- BUILD.gn | 1 + scripts/code_generation_hashes/OpenGL_dispatch_table.json | 4 ++-- src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp | 2 +- src/libANGLE/renderer/gl/FunctionsGL.cpp | 2 +- src/libANGLE/renderer/gl/generate_gl_dispatch_table.py | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index 78dd88a51..fa54baf27 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -144,6 +144,7 @@ config("extra_warnings") { "-Wredundant-parens", "-Wshadow-field", "-Wtautological-type-limit-compare", + "-Wundefined-reinterpret-cast", "-Wunneeded-internal-declaration", # The below warnings are used by WebKit. We enable them to make rolling diff --git a/scripts/code_generation_hashes/OpenGL_dispatch_table.json b/scripts/code_generation_hashes/OpenGL_dispatch_table.json index e749614cc..a43c1da77 100644 --- a/scripts/code_generation_hashes/OpenGL_dispatch_table.json +++ b/scripts/code_generation_hashes/OpenGL_dispatch_table.json @@ -4,11 +4,11 @@ "src/libANGLE/renderer/angle_format.py": "32ba71942c0fd00e6807104f1bb80a3c", "src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp": - "7ebaa7f7525a0fe13f163ec076a8eace", + "ea253c245e64fd67c55904fd28173997", "src/libANGLE/renderer/gl/DispatchTableGL_autogen.h": "27af4da77c5cc60708fd2aabedc983f7", "src/libANGLE/renderer/gl/generate_gl_dispatch_table.py": - "f21314d401e650b4182c4b7d66ac5c9c", + "4f19a7eee17679b3a0ad4abad6fab2c9", "src/libANGLE/renderer/gl/gl_bindings_data.json": "e870a4d86dc69e52dcab9afd78a47c9b", "src/libANGLE/renderer/gl/null_functions.cpp": diff --git a/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp b/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp index 0d98566ab..f7701f770 100644 --- a/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp +++ b/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp @@ -20,7 +20,7 @@ // Check for nullptr so extensions do not overwrite core imports. #define ASSIGN(NAME, FP) \ if (!FP) \ - *reinterpret_cast(&FP) = loadProcAddress(NAME) + FP = reinterpret_cast(loadProcAddress(NAME)) namespace rx { diff --git a/src/libANGLE/renderer/gl/FunctionsGL.cpp b/src/libANGLE/renderer/gl/FunctionsGL.cpp index ab41c6482..4b6f4407a 100644 --- a/src/libANGLE/renderer/gl/FunctionsGL.cpp +++ b/src/libANGLE/renderer/gl/FunctionsGL.cpp @@ -93,7 +93,7 @@ static void INTERNAL_GL_APIENTRY DummyGetShaderiv(GLuint program, GLenum pname, } #endif // defined(ANGLE_ENABLE_OPENGL_NULL) -#define ASSIGN(NAME, FP) *reinterpret_cast(&FP) = loadProcAddress(NAME) +#define ASSIGN(NAME, FP) FP = reinterpret_cast(loadProcAddress(NAME)) FunctionsGL::FunctionsGL() : version(), standard(), extensions() {} diff --git a/src/libANGLE/renderer/gl/generate_gl_dispatch_table.py b/src/libANGLE/renderer/gl/generate_gl_dispatch_table.py index a76c651f1..455d437da 100644 --- a/src/libANGLE/renderer/gl/generate_gl_dispatch_table.py +++ b/src/libANGLE/renderer/gl/generate_gl_dispatch_table.py @@ -111,7 +111,7 @@ dispatch_table_source_template = """// GENERATED FILE - DO NOT EDIT. #endif // defined(ANGLE_ENABLE_OPENGL_NULL) // Check for nullptr so extensions do not overwrite core imports. -#define ASSIGN(NAME, FP) if (!FP) *reinterpret_cast(&FP) = loadProcAddress(NAME) +#define ASSIGN(NAME, FP) if (!FP) FP = reinterpret_cast(loadProcAddress(NAME)) namespace rx {{