https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78081

            Bug ID: 78081
           Summary: -Wmaybe-initialized false-alarm regression for Emacs
                    regex.c
           Product: gcc
           Version: 6.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: eggert at gnu dot org
  Target Milestone: ---

Created attachment 39869
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=39869&action=edit
test program illustrating -Wmaybe-uninitialized false alarm

I found this when compiling a test version of GNU Emacs with gcc (GCC) 6.2.1
20160916 (Red Hat 6.2.1-2) on x86-64. The problem does not occur with gcc (GCC)
4.8.5 20150623 (Red Hat 4.8.5-4) on x86-64 so this appears to be a regression.

The problem caused the Emacs build to fail when configured with
--enable-gcc-warnings, when compiling src/regex.c. I reduced the problem case
to a relatively small source file u2.i (attached). Compile it with the command:

gcc -S -Werror=maybe-uninitialized -O2 u2.i

GCC will complain as follows and then fail:

u2.i: In function 're_search_2':
u2.i:59:42: error: 'offset2' may be used uninitialized in this function
[-Werro\
r=maybe-uninitialized]
           if (string2) string2 = offset2 + new_base;
                                  ~~~~~~~~^~~~~~~~~~

This diagnostic is incorrect, as offset2 must be initialized, using the same
reasoning that offset1 must be initialized (which GCC gets right).

Reply via email to