On Wed, 2016-08-17 at 09:51 -0400, David Malcolm wrote: > On Wed, 2016-08-17 at 10:12 +0200, Andreas Schwab wrote: > > ../../gcc/input.c:1470:1: error: 'const char* > > get_source_range_for_char(cpp_reader*, string_concat_db*, > > location_t, > > cpp_ttype, int, source_range*)' defined but not used [ > > -Werror=unused > > -function] > > get_source_range_for_char (cpp_reader *pfile, > > ^~~~~~~~~~~~~~~~~~~~~~~~~ > > I'm guessing you have a --enable-checking=release build, and that > this > is happening in stage2. My testing was with a debug build. > > Sorry about this. > > Does the attached patch fix it for you? (I verified that it builds > without warnings with both plain and --enable-checking=release > configurations; bootstrapping it now)
That one didn't actually bootstrap for me, due to: In file included from ../../../src/gcc/input.c:25:0: ../../../src/gcc/selftest.h: In function ‘void selftest::assert_num_substring_ranges(const selftest::location&, selftest::lexer_test&, location_t, cpp_ttype, int)’: ../../../src/gcc/selftest.h:155:3: error: ‘actual_num_ranges’ may be used uninitialized in this function [-Werror=maybe-uninitialized] if ((EXPECTED) == (ACTUAL)) \ ^~ ../../../src/gcc/input.c:2084:7: note: ‘actual_num_ranges’ was declared here int actual_num_ranges; ^~~~~~~~~~~~~~~~~ cc1plus: all warnings being treated as errors apparently due to get_num_source_ranges_for_substring being inlined into assert_num_substring_ranges, and then the logic being too complicated for -Wmaybe-uninitialized to follow. I was able to satisfy a reduced version of the function that demonstrated the false warning by adding "noreturn" to selftest::fail, but not the full version, so as a simple fix, I've initialized actual_num_ranges to a dummy value. I've committed the attached fix to trunk (as r239550), having verified bootstrap®rtest on x86_64-pc-linux-gnu (debug build), and verified the absence of warnings with a release build. Sorry again about the breakage. Dave
From 9c9f9e1c3ff1be538f77c32b9d1cf53baae5e577 Mon Sep 17 00:00:00 2001 From: David Malcolm <dmalc...@redhat.com> Date: Wed, 17 Aug 2016 10:13:20 -0400 Subject: [PATCH] input.c: move test functions within #CHECKING_P and into selftest:: gcc/ChangeLog: * input.c (get_source_range_for_char): Rename to... (selftest::get_source_range_for_char): ...this, and move within the #if CHECKING_P guard. (get_num_source_ranges_for_substring): Rename to... (selftest::get_num_source_ranges_for_substring): ...this, move within the #if CHECKING_P guard, and make static. (selftest::assert_num_substring_ranges): Initialize actual_num_ranges. --- gcc/input.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/gcc/input.c b/gcc/input.c index 653e54d..cfc62f3 100644 --- a/gcc/input.c +++ b/gcc/input.c @@ -1454,6 +1454,12 @@ get_source_location_for_substring (cpp_reader *pfile, return NULL; } +#if CHECKING_P + +namespace selftest { + +/* Selftests of location handling. */ + /* Attempt to populate *OUT_RANGE with source location information on the given character within the string literal found at STRLOC. CHAR_IDX refers to an offset within the execution character set. @@ -1493,7 +1499,7 @@ get_source_range_for_char (cpp_reader *pfile, /* As get_source_range_for_char, but write to *OUT the number of ranges that are available. */ -const char * +static const char * get_num_source_ranges_for_substring (cpp_reader *pfile, string_concat_db *concats, location_t strloc, @@ -1513,12 +1519,6 @@ get_num_source_ranges_for_substring (cpp_reader *pfile, return NULL; } -#if CHECKING_P - -namespace selftest { - -/* Selftests of location handling. */ - /* A class for writing out a temporary sourcefile for use in selftests of input handling. */ @@ -2081,7 +2081,7 @@ assert_num_substring_ranges (const location &loc, cpp_reader *pfile = test.m_parser; string_concat_db *concats = &test.m_concats; - int actual_num_ranges; + int actual_num_ranges = -1; const char *err = get_num_source_ranges_for_substring (pfile, concats, strloc, type, &actual_num_ranges); -- 1.8.5.3