[llvm] r305506 - Added braces to work around gcc warning in googletest: suggest explicit braces to avoid ambiguous 'else'. NFC.
Reid Kleckner via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 15 14:14:49 PDT 2017
GTest actually uses this crazy braceless switch/default pattern to suppress
these warnings:
// The GNU compiler emits a warning if nested "if" statements are followed
by
// an "else" statement and braces are not used to explicitly disambiguate
the
// "else" binding. This leads to problems with code like:
//
// if (gate)
// ASSERT_*(condition) << "Some message";
//
// The "switch (0) case 0:" idiom is used to suppress this.
#ifdef __INTEL_COMPILER
# define GTEST_AMBIGUOUS_ELSE_BLOCKER_
#else
# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: //
NOLINT
#endif
It sounds like you are compiling with a new version of GCC for which this
idiom doesn't suppress the warning.
Could you please file a bug with gtest with your gcc version to investigate
and work around these warnings?
On Thu, Jun 15, 2017 at 2:00 PM, Galina Kistanova via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: gkistanova
> Date: Thu Jun 15 16:00:40 2017
> New Revision: 305506
>
> URL: http://llvm.org/viewvc/llvm-project?rev=305506&view=rev
> Log:
> Added braces to work around gcc warning in googletest: suggest explicit
> braces to avoid ambiguous 'else'. NFC.
>
> Modified:
> llvm/trunk/unittests/ADT/SCCIteratorTest.cpp
> llvm/trunk/unittests/ADT/StringRefTest.cpp
> llvm/trunk/unittests/CodeGen/LowLevelTypeTest.cpp
> llvm/trunk/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp
> llvm/trunk/unittests/Support/CommandLineTest.cpp
>
> Modified: llvm/trunk/unittests/ADT/SCCIteratorTest.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/
> ADT/SCCIteratorTest.cpp?rev=305506&r1=305505&r2=305506&view=diff
> ============================================================
> ==================
> --- llvm/trunk/unittests/ADT/SCCIteratorTest.cpp (original)
> +++ llvm/trunk/unittests/ADT/SCCIteratorTest.cpp Thu Jun 15 16:00:40 2017
> @@ -63,8 +63,9 @@ TEST(SCCIteratorTest, AllSmallGraphs) {
> // Check that every node in the SCC is reachable from every other
> node in
> // the SCC.
> for (unsigned i = 0; i != NUM_NODES; ++i)
> - if (NodesInThisSCC.count(i))
> + if (NodesInThisSCC.count(i)) {
> EXPECT_TRUE(NodesInThisSCC.isSubsetOf(G.
> NodesReachableFrom(i)));
> + }
>
> // OK, now that we now that every node in the SCC is reachable from
> every
> // other, this means that the set of nodes reachable from any node
> in the
> @@ -78,8 +79,9 @@ TEST(SCCIteratorTest, AllSmallGraphs) {
> NodesReachableFromSCC.Meet(NodesInThisSCC.Complement());
>
> for (unsigned j = 0; j != NUM_NODES; ++j)
> - if (ReachableButNotInSCC.count(j))
> + if (ReachableButNotInSCC.count(j)) {
> EXPECT_TRUE(G.NodesReachableFrom(j).Meet(
> NodesInThisSCC).isEmpty());
> + }
>
> // The result must be the same for all other nodes in this SCC,
> so
> // there is no point in checking them.
>
> Modified: llvm/trunk/unittests/ADT/StringRefTest.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/
> ADT/StringRefTest.cpp?rev=305506&r1=305505&r2=305506&view=diff
> ============================================================
> ==================
> --- llvm/trunk/unittests/ADT/StringRefTest.cpp (original)
> +++ llvm/trunk/unittests/ADT/StringRefTest.cpp Thu Jun 15 16:00:40 2017
> @@ -882,8 +882,9 @@ TEST(StringRefTest, getAsDouble) {
> double Result;
> StringRef S(Entry.Str);
> EXPECT_EQ(Entry.ShouldFail, S.getAsDouble(Result,
> Entry.AllowInexact));
> - if (!Entry.ShouldFail)
> + if (!Entry.ShouldFail) {
> EXPECT_EQ(Result, Entry.D);
> + }
> }
> }
>
>
> Modified: llvm/trunk/unittests/CodeGen/LowLevelTypeTest.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/
> CodeGen/LowLevelTypeTest.cpp?rev=305506&r1=305505&r2=305506&view=diff
> ============================================================
> ==================
> --- llvm/trunk/unittests/CodeGen/LowLevelTypeTest.cpp (original)
> +++ llvm/trunk/unittests/CodeGen/LowLevelTypeTest.cpp Thu Jun 15 16:00:40
> 2017
> @@ -137,8 +137,9 @@ TEST(LowLevelTypeTest, Vector) {
> if ((Elts % 2) == 0) {
> EXPECT_EQ(S * (Elts / 2), HalfEltIfEvenTy.getSizeInBits());
> EXPECT_EQ(S, HalfEltIfEvenTy.getScalarSizeInBits());
> - if (Elts > 2)
> + if (Elts > 2) {
> EXPECT_EQ(Elts / 2, HalfEltIfEvenTy.getNumElements());
> + }
> }
>
> EXPECT_EQ(S * (Elts * 2), DoubleEltTy.getSizeInBits());
>
> Modified: llvm/trunk/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/
> DebugInfo/DWARF/DWARFDebugInfoTest.cpp?rev=305506&r1=305505&r2=305506&
> view=diff
> ============================================================
> ==================
> --- llvm/trunk/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp (original)
> +++ llvm/trunk/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp Thu Jun
> 15 16:00:40 2017
> @@ -311,8 +311,9 @@ void TestAllForms() {
> EXPECT_EQ(Data2, toReference(DieDG.find(Attr_DW_FORM_ref2), 0));
> EXPECT_EQ(Data4, toReference(DieDG.find(Attr_DW_FORM_ref4), 0));
> EXPECT_EQ(Data8, toReference(DieDG.find(Attr_DW_FORM_ref8), 0));
> - if (Version >= 4)
> + if (Version >= 4) {
> EXPECT_EQ(Data8_2, toReference(DieDG.find(Attr_DW_FORM_ref_sig8),
> 0));
> + }
> EXPECT_EQ(UData[0], toReference(DieDG.find(Attr_DW_FORM_ref_udata),
> 0));
>
> //----------------------------------------------------------
> ------------
> @@ -320,15 +321,17 @@ void TestAllForms() {
> //----------------------------------------------------------
> ------------
> EXPECT_EQ(1ULL, toUnsigned(DieDG.find(Attr_DW_FORM_flag_true), 0));
> EXPECT_EQ(0ULL, toUnsigned(DieDG.find(Attr_DW_FORM_flag_false), 1));
> - if (Version >= 4)
> + if (Version >= 4) {
> EXPECT_EQ(1ULL, toUnsigned(DieDG.find(Attr_DW_FORM_flag_present),
> 0));
> + }
>
> //----------------------------------------------------------
> ------------
> // Test SLEB128 based forms
> //----------------------------------------------------------
> ------------
> EXPECT_EQ(SData, toSigned(DieDG.find(Attr_DW_FORM_sdata), 0));
> - if (Version >= 5)
> + if (Version >= 5) {
> EXPECT_EQ(ICSData, toSigned(DieDG.find(Attr_DW_FORM_implicit_const),
> 0));
> + }
>
> //----------------------------------------------------------
> ------------
> // Test ULEB128 based forms
> @@ -340,9 +343,10 @@ void TestAllForms() {
> //----------------------------------------------------------
> ------------
> EXPECT_EQ(Dwarf32Values[0],
> toReference(DieDG.find(Attr_DW_FORM_GNU_ref_alt), 0));
> - if (Version >= 4)
> + if (Version >= 4) {
> EXPECT_EQ(Dwarf32Values[1],
> toSectionOffset(DieDG.find(Attr_DW_FORM_sec_offset), 0));
> + }
>
> //----------------------------------------------------------
> ------------
> // Add an address at the end to make sure we can decode this value
>
> Modified: llvm/trunk/unittests/Support/CommandLineTest.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/
> Support/CommandLineTest.cpp?rev=305506&r1=305505&r2=305506&view=diff
> ============================================================
> ==================
> --- llvm/trunk/unittests/Support/CommandLineTest.cpp (original)
> +++ llvm/trunk/unittests/Support/CommandLineTest.cpp Thu Jun 15 16:00:40
> 2017
> @@ -180,8 +180,9 @@ void testCommandLineTokenizer(ParserFunc
> parse(Input, Saver, Actual, /*MarkEOLs=*/false);
> EXPECT_EQ(OutputSize, Actual.size());
> for (unsigned I = 0, E = Actual.size(); I != E; ++I) {
> - if (I < OutputSize)
> + if (I < OutputSize) {
> EXPECT_STREQ(Output[I], Actual[I]);
> + }
> }
> }
>
> @@ -528,8 +529,9 @@ TEST(CommandLineTest, GetRegisteredSubco
> EXPECT_FALSE(Opt1);
> EXPECT_FALSE(Opt2);
> for (auto *S : cl::getRegisteredSubcommands()) {
> - if (*S)
> + if (*S) {
> EXPECT_EQ("sc1", S->getName());
> + }
> }
>
> cl::ResetAllOptionOccurrences();
> @@ -538,8 +540,9 @@ TEST(CommandLineTest, GetRegisteredSubco
> EXPECT_FALSE(Opt1);
> EXPECT_FALSE(Opt2);
> for (auto *S : cl::getRegisteredSubcommands()) {
> - if (*S)
> + if (*S) {
> EXPECT_EQ("sc2", S->getName());
> + }
> }
> }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170615/f3ec7255/attachment.html>
More information about the llvm-commits
mailing list