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

Paul Eggert <eggert at gnu dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |eggert at gnu dot org

--- Comment #8 from Paul Eggert <eggert at gnu dot org> ---
(In reply to Jakub Jelinek from comment #7)

> Or just rewrite whatever you are doing to something that doesn't suffer from
> this.  Say:
>   (tail) = Vframe_list;
>   while ((frame1 = XCAR (tail), 1))
>     {
>       body...;
>       tail = XCDR (tail);
>       if (!CONSP (tail))
>         break;
>     }

Unfortunately that wouldn't be right, since Vframe_list might be Qnil so the
first XCAR would be invalid.

In Emacs I worked around the problem by adding an unnecessary initialization to
the frame1 variable that GCC was complaining about; see:

https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=65ac27783a959a8339c2aab0f1e54d9b508a1f1f

and look for "GCC bug 85563"; Emacs has an UNINIT macro that is used to pacify
GCC when GCC isn't smart enough to see that a variable does not need to be
initialized.

Anyway, thanks for looking into it.

Reply via email to