From 799d96ec395fc617fedea40676da32f532d1534b Mon Sep 17 00:00:00 2001 From: Alexandre Ganea Date: Mon, 6 May 2019 13:41:54 +0000 Subject: [PATCH] Fix compilation warnings when compiling with GCC 7.3 Differential Revision: https://reviews.llvm.org/D61046 llvm-svn: 360044 --- llvm/lib/Target/AMDGPU/R600ISelLowering.cpp | 6 ++++++ llvm/unittests/IR/ConstantRangeTest.cpp | 1 + llvm/unittests/Support/TypeTraitsTest.cpp | 21 +++++++++++++++++++ .../Transforms/Scalar/CMakeLists.txt | 5 +++++ .../Transforms/Scalar/LoopPassManagerTest.cpp | 10 --------- 5 files changed, 33 insertions(+), 10 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/R600ISelLowering.cpp b/llvm/lib/Target/AMDGPU/R600ISelLowering.cpp index 9f7635dd8676..4aa2778c6147 100644 --- a/llvm/lib/Target/AMDGPU/R600ISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/R600ISelLowering.cpp @@ -1714,6 +1714,12 @@ static SDValue CompactSwizzlableVector( if (NewBldVec[i].isUndef()) continue; + // Fix spurious warning with gcc 7.3 -O3 + // warning: array subscript is above array bounds [-Warray-bounds] + // if (NewBldVec[i] == NewBldVec[j]) { + // ~~~~~~~~~~~^ + if (i >= 4) + continue; for (unsigned j = 0; j < i; j++) { if (NewBldVec[i] == NewBldVec[j]) { NewBldVec[i] = DAG.getUNDEF(NewBldVec[i].getValueType()); diff --git a/llvm/unittests/IR/ConstantRangeTest.cpp b/llvm/unittests/IR/ConstantRangeTest.cpp index a1c66f33abbb..b6a794f09187 100644 --- a/llvm/unittests/IR/ConstantRangeTest.cpp +++ b/llvm/unittests/IR/ConstantRangeTest.cpp @@ -459,6 +459,7 @@ void testBinarySetOperationExhaustive(Fn1 OpFn, Fn2 InResultFn) { } } + (void)HaveInterrupt3; assert(!HaveInterrupt3 && "Should have at most three ranges"); ConstantRange SmallestCR = OpFn(CR1, CR2, ConstantRange::Smallest); diff --git a/llvm/unittests/Support/TypeTraitsTest.cpp b/llvm/unittests/Support/TypeTraitsTest.cpp index d33dee97ecab..e7a102543e66 100644 --- a/llvm/unittests/Support/TypeTraitsTest.cpp +++ b/llvm/unittests/Support/TypeTraitsTest.cpp @@ -7,6 +7,7 @@ //===----------------------------------------------------------------------===// #include "llvm/Support/type_traits.h" +#include "gtest/gtest.h" namespace { @@ -71,6 +72,26 @@ template void TrivialityTester(); template void TrivialityTester(); template void TrivialityTester(); +TEST(Triviality, Tester) { + TrivialityTester(); + TrivialityTester(); + TrivialityTester(); + TrivialityTester(); + + TrivialityTester(); + TrivialityTester(); + TrivialityTester(); + TrivialityTester(); + TrivialityTester(); + + TrivialityTester(); + TrivialityTester(); + TrivialityTester(); + TrivialityTester(); + TrivialityTester(); + TrivialityTester(); +} + } // namespace triviality } // end anonymous namespace diff --git a/llvm/unittests/Transforms/Scalar/CMakeLists.txt b/llvm/unittests/Transforms/Scalar/CMakeLists.txt index 2762799d6124..3d01d5c53341 100644 --- a/llvm/unittests/Transforms/Scalar/CMakeLists.txt +++ b/llvm/unittests/Transforms/Scalar/CMakeLists.txt @@ -10,3 +10,8 @@ set(LLVM_LINK_COMPONENTS add_llvm_unittest(ScalarTests LoopPassManagerTest.cpp ) + +# Workaround for the gcc 6.1 bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80916. +if (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0) + set_source_files_properties(LoopPassManagerTest.cpp PROPERTIES COMPILE_FLAGS -Wno-unused-function) +endif() diff --git a/llvm/unittests/Transforms/Scalar/LoopPassManagerTest.cpp b/llvm/unittests/Transforms/Scalar/LoopPassManagerTest.cpp index fc94b6e8c1ab..0743cba852da 100644 --- a/llvm/unittests/Transforms/Scalar/LoopPassManagerTest.cpp +++ b/llvm/unittests/Transforms/Scalar/LoopPassManagerTest.cpp @@ -20,19 +20,9 @@ #include "llvm/IR/PassManager.h" #include "llvm/Support/SourceMgr.h" -// Workaround for the gcc 6.1 bug PR80916. -#if defined(__GNUC__) && __GNUC__ > 5 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-function" -#endif - #include "gmock/gmock.h" #include "gtest/gtest.h" -#if defined(__GNUC__) && __GNUC__ > 5 -# pragma GCC diagnostic pop -#endif - using namespace llvm; namespace {