aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAugusto F. Hack <hack.augusto@gmail.com>2018-07-22 06:08:47 +0800
committerAugusto F. Hack <hack.augusto@gmail.com>2018-08-06 06:21:33 +0800
commit6c3b48ddfcfb0849e1083cea8d4fae4446511be1 (patch)
tree026b6acf54761cec4cc5573c9e3147e6270f1f63
parent20c65f9af1f42620db7b77543717a2b341771daf (diff)
downloaddexon-solidity-6c3b48ddfcfb0849e1083cea8d4fae4446511be1.tar.gz
dexon-solidity-6c3b48ddfcfb0849e1083cea8d4fae4446511be1.tar.zst
dexon-solidity-6c3b48ddfcfb0849e1083cea8d4fae4446511be1.zip
Added guards for unknown pragmas
Removed push/pop if there was no change to the warnings *in the same file* for a given compiler. This assumes the imported boost headers use a warning stack themselves. The pragmas don't seem to be required anymore, but were not removed to mantain compatibility with older versions of the boost library. Compiled with - clang version 6.0.1 (tags/RELEASE_601/final) - gcc (GCC) 8.1.1 20180531 against: - libboost 1.67.0-5
-rw-r--r--cmake/EthCompilerSettings.cmake13
-rw-r--r--libdevcore/Common.h2
-rw-r--r--libevmasm/KnownState.h14
-rw-r--r--liblll/CodeFragment.cpp10
4 files changed, 21 insertions, 18 deletions
diff --git a/cmake/EthCompilerSettings.cmake b/cmake/EthCompilerSettings.cmake
index 515057fa..b0786ce2 100644
--- a/cmake/EthCompilerSettings.cmake
+++ b/cmake/EthCompilerSettings.cmake
@@ -36,13 +36,6 @@ if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MA
add_compile_options(-Wextra)
add_compile_options(-Werror)
- # Disable warnings about unknown pragmas (which is enabled by -Wall). I assume we have external
- # dependencies (probably Boost) which have some of these. Whatever the case, we shouldn't be
- # disabling these globally. Instead, we should pragma around just the problem #includes.
- #
- # TODO - Track down what breaks if we do NOT do this.
- add_compile_options(-Wno-unknown-pragmas)
-
# Configuration-specific compiler settings.
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -DETH_DEBUG")
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
@@ -73,13 +66,13 @@ if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MA
# TODO - Is this even necessary? Why?
# See http://stackoverflow.com/questions/19774778/when-is-it-necessary-to-use-use-the-flag-stdlib-libstdc.
add_compile_options(-stdlib=libstdc++)
-
+
# Tell Boost that we're using Clang's libc++. Not sure exactly why we need to do.
add_definitions(-DBOOST_ASIO_HAS_CLANG_LIBCXX)
-
+
# Use fancy colors in the compiler diagnostics
add_compile_options(-fcolor-diagnostics)
-
+
# See "How to silence unused command line argument error with clang without disabling it?"
# When using -Werror with clang, it transforms "warning: argument unused during compilation" messages
# into errors, which makes sense.
diff --git a/libdevcore/Common.h b/libdevcore/Common.h
index 2543855d..0363d9a2 100644
--- a/libdevcore/Common.h
+++ b/libdevcore/Common.h
@@ -40,7 +40,6 @@
#include <libdevcore/vector_ref.h>
#if defined(__GNUC__)
-#pragma warning(push)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-parameter"
#endif // defined(__GNUC__)
@@ -57,7 +56,6 @@
#include <boost/multiprecision/cpp_int.hpp>
#if defined(__GNUC__)
-#pragma warning(pop)
#pragma GCC diagnostic pop
#endif // defined(__GNUC__)
diff --git a/libevmasm/KnownState.h b/libevmasm/KnownState.h
index 8568b163..cd50550e 100644
--- a/libevmasm/KnownState.h
+++ b/libevmasm/KnownState.h
@@ -29,12 +29,18 @@
#include <tuple>
#include <memory>
#include <ostream>
-#pragma warning(push)
-#pragma GCC diagnostic push
+
+#if defined(__clang__)
+#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wredeclared-class-member"
+#endif // defined(__clang__)
+
#include <boost/bimap.hpp>
-#pragma warning(pop)
-#pragma GCC diagnostic pop
+
+#if defined(__clang__)
+#pragma clang diagnostic pop
+#endif // defined(__clang__)
+
#include <libdevcore/CommonIO.h>
#include <libdevcore/Exceptions.h>
#include <libevmasm/ExpressionClasses.h>
diff --git a/liblll/CodeFragment.cpp b/liblll/CodeFragment.cpp
index 3e82889a..0aef05a9 100644
--- a/liblll/CodeFragment.cpp
+++ b/liblll/CodeFragment.cpp
@@ -22,12 +22,18 @@
#include "CodeFragment.h"
#include <boost/algorithm/string.hpp>
-#pragma warning(push)
+
+#if defined(__GNUC__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-parameter"
+#endif // defined(__GNUC__)
+
#include <boost/spirit/include/support_utree.hpp>
-#pragma warning(pop)
+
+#if defined(__GNUC__)
#pragma GCC diagnostic pop
+#endif // defined(__GNUC__)
+
#include <libdevcore/CommonIO.h>
#include <libevmasm/Instruction.h>
#include "CompilerState.h"