From 72628e8f32331444fbed1a9842b28c5da604859f Mon Sep 17 00:00:00 2001 From: arkpar Date: Tue, 13 Jan 2015 11:18:08 +0100 Subject: [PATCH] fixed warnings for msvc build --- cmake/EthCompilerSettings.cmake | 13 +++++++++++-- libserpent/rewriteutils.cpp | 2 +- libserpent/util.cpp | 2 +- libsolidity/AST.h | 0 libsolidity/CompilerContext.cpp | 4 ++-- libsolidity/CompilerContext.h | 6 +++--- libsolidity/CompilerStack.cpp | 2 +- libsolidity/Types.h | 2 +- libsolidity/Utils.h | 6 ++++++ test/SolidityEndToEndTest.cpp | 4 ++++ test/boostTest.cpp | 2 +- test/vm.cpp | 2 +- 12 files changed, 32 insertions(+), 13 deletions(-) mode change 100644 => 100755 cmake/EthCompilerSettings.cmake mode change 100644 => 100755 libserpent/rewriteutils.cpp mode change 100644 => 100755 libserpent/util.cpp mode change 100644 => 100755 libsolidity/AST.h mode change 100644 => 100755 libsolidity/Utils.h diff --git a/cmake/EthCompilerSettings.cmake b/cmake/EthCompilerSettings.cmake old mode 100644 new mode 100755 index 24252cc0b..12adc1d02 --- a/cmake/EthCompilerSettings.cmake +++ b/cmake/EthCompilerSettings.cmake @@ -28,8 +28,17 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") # specify Exception Handling Model in msvc - set(CMAKE_C_FLAGS "/EHsc") - set(CMAKE_CXX_FLAGS "/EHsc") + # disable unknown pragma warning (4068) + # disable unsafe function warning (4996) + # disable decorated name length exceeded, name was truncated (4503) + # disable warning C4535: calling _set_se_translator() requires /EHa (for boost tests) + # declare Windows XP requirement + add_compile_options(/EHsc /wd4068 /wd4996 /wd4503 -D_WIN32_WINNT=0x0501) + # disable empty object file warning + set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} /ignore:4221") + # warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/SAFESEH' specification + # warning LNK4099: pdb was not found with lib + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ignore:4099,4075") # windows likes static set(ETH_STATIC 1) diff --git a/libserpent/rewriteutils.cpp b/libserpent/rewriteutils.cpp old mode 100644 new mode 100755 index e6429434a..7296a5e27 --- a/libserpent/rewriteutils.cpp +++ b/libserpent/rewriteutils.cpp @@ -54,7 +54,7 @@ bool isValidFunctionName(std::string f) { vfMap[validFunctions[i][0]] = true; } } - return vfMap.count(f); + return vfMap.count(f) != 0; } // Cool function for debug purposes (named cerrStringList to make diff --git a/libserpent/util.cpp b/libserpent/util.cpp old mode 100644 new mode 100755 index 4b99a5ea5..18a8bafc2 --- a/libserpent/util.cpp +++ b/libserpent/util.cpp @@ -260,7 +260,7 @@ std::string get_file_contents(std::string filename) { std::string contents; in.seekg(0, std::ios::end); - contents.resize(in.tellg()); + contents.resize((unsigned)in.tellg()); in.seekg(0, std::ios::beg); in.read(&contents[0], contents.size()); in.close(); diff --git a/libsolidity/AST.h b/libsolidity/AST.h old mode 100644 new mode 100755 diff --git a/libsolidity/CompilerContext.cpp b/libsolidity/CompilerContext.cpp index 18357bf0c..5d10a5f95 100644 --- a/libsolidity/CompilerContext.cpp +++ b/libsolidity/CompilerContext.cpp @@ -53,8 +53,8 @@ void CompilerContext::addAndInitializeVariable(VariableDeclaration const& _decla { addVariable(_declaration); - unsigned const size = _declaration.getType()->getSizeOnStack(); - for (unsigned i = 0; i < size; ++i) + int const size = _declaration.getType()->getSizeOnStack(); + for (int i = 0; i < size; ++i) *this << u256(0); m_asm.adjustDeposit(-size); } diff --git a/libsolidity/CompilerContext.h b/libsolidity/CompilerContext.h index 795f447ab..14672c956 100644 --- a/libsolidity/CompilerContext.h +++ b/libsolidity/CompilerContext.h @@ -51,10 +51,10 @@ public: void adjustStackOffset(int _adjustment) { m_asm.adjustDeposit(_adjustment); } - bool isMagicGlobal(Declaration const* _declaration) const { return m_magicGlobals.count(_declaration); } - bool isFunctionDefinition(Declaration const* _declaration) const { return m_functionEntryLabels.count(_declaration); } + bool isMagicGlobal(Declaration const* _declaration) const { return m_magicGlobals.count(_declaration) != 0; } + bool isFunctionDefinition(Declaration const* _declaration) const { return m_functionEntryLabels.count(_declaration) != 0; } bool isLocalVariable(Declaration const* _declaration) const; - bool isStateVariable(Declaration const* _declaration) const { return m_stateVariables.count(_declaration); } + bool isStateVariable(Declaration const* _declaration) const { return m_stateVariables.count(_declaration) != 0; } eth::AssemblyItem getFunctionEntryLabel(FunctionDefinition const& _function) const; /// Returns the distance of the given local variable from the top of the local variable stack. diff --git a/libsolidity/CompilerStack.cpp b/libsolidity/CompilerStack.cpp index 174f9cd22..904c77c5a 100644 --- a/libsolidity/CompilerStack.cpp +++ b/libsolidity/CompilerStack.cpp @@ -39,7 +39,7 @@ namespace solidity bool CompilerStack::addSource(string const& _name, string const& _content) { - bool existed = m_sources.count(_name); + bool existed = m_sources.count(_name) != 0; reset(true); m_sources[_name].scanner = make_shared(CharStream(_content), _name); return existed; diff --git a/libsolidity/Types.h b/libsolidity/Types.h index deabe1160..1ccdd706a 100644 --- a/libsolidity/Types.h +++ b/libsolidity/Types.h @@ -178,7 +178,7 @@ public: int getNumBits() const { return m_bits; } bool isHash() const { return m_modifier == Modifier::HASH || m_modifier == Modifier::ADDRESS; } bool isAddress() const { return m_modifier == Modifier::ADDRESS; } - int isSigned() const { return m_modifier == Modifier::SIGNED; } + bool isSigned() const { return m_modifier == Modifier::SIGNED; } static const MemberList AddressMemberList; diff --git a/libsolidity/Utils.h b/libsolidity/Utils.h old mode 100644 new mode 100755 index 8d6a3ab08..1411f66b4 --- a/libsolidity/Utils.h +++ b/libsolidity/Utils.h @@ -45,5 +45,11 @@ inline void solAssertAux(bool _condition, std::string const& _errorDescription, << ::boost::throw_line(_line)); } +inline void solAssertAux(void const* _pointer, std::string const& _errorDescription, unsigned _line, + char const* _file, char const* _function) +{ + solAssertAux(_pointer != nullptr, _errorDescription, _line, _file, _function); +} + } } diff --git a/test/SolidityEndToEndTest.cpp b/test/SolidityEndToEndTest.cpp index 2afe875f2..9543497a7 100644 --- a/test/SolidityEndToEndTest.cpp +++ b/test/SolidityEndToEndTest.cpp @@ -28,6 +28,10 @@ #include #include +#ifdef _MSC_VER +#pragma warning(disable: 4307) //integral constant overflow for high_bits_cleaning +#endif + using namespace std; namespace dev diff --git a/test/boostTest.cpp b/test/boostTest.cpp index cef3cc0a7..1523a7a11 100644 --- a/test/boostTest.cpp +++ b/test/boostTest.cpp @@ -23,6 +23,6 @@ #define BOOST_TEST_MODULE EthereumTests #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" +#define BOOST_DISABLE_WIN32 //disables SEH warning #include -#pragma warning(pop) #pragma GCC diagnostic pop diff --git a/test/vm.cpp b/test/vm.cpp index 6ae95f256..8b8c75a04 100644 --- a/test/vm.cpp +++ b/test/vm.cpp @@ -345,7 +345,7 @@ void doVMTests(json_spirit::mValue& v, bool _fillin) output = vm->go(fev, fev.simpleTrace()).toBytes(); gas = vm->gas(); } - catch (VMException const& _e) + catch (VMException const&) { cnote << "Safe VM Exception"; vmExceptionOccured = true;