This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] adding missing LTO to some warning options (PR 78606)


On 01/10/2017 11:16 PM, Martin Sebor wrote:
+  __builtin_sprintf (d, "%32s", "x");   /* { dg-warning "directive writing 32 bytes into a region of size 12" "-Wformat-length" { xfail *-*-* } } */

This xpasses for me on an older system:
...
XPASS: gcc.dg/pr78768.c -Wformat-overflow (test for warnings, line 11)
...

The mechanism is as follows:
- the system doesn't have linker plugin support, and sets
  HAVE_LTO_PLUGIN to 0
- consequently, opts.c:finish_options() sets x_flag_fat_lto_objects to 1
  in cc1
- cgraphunit.c:symbol_table::compile() does not return
  here:
  ...
     /* Do nothing else if any IPA pass found errors or if we are just
        streaming LTO.  */
     if (seen_error ()
        || (!in_lto_p && flag_lto && !flag_fat_lto_objects))
      {
        timevar_pop (TV_CGRAPHOPT);
        return;
      }
  ...
  and ends up calling expand_all_functions, which calls
  pass_sprintf_length
- the warning is generated by cc1

Maybe the test needs:
...
/* { dg-require-linker-plugin "" } */
...
?

Thanks,
- Tom


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]