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

Gaius Mulley <gaius at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |gaius at gcc dot gnu.org

--- Comment #2 from Gaius Mulley <gaius at gcc dot gnu.org> ---
Created attachment 54361
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54361&action=edit
Proposed fix

I believe this fixes the bug.

PR-108557 Stuck compilation for empty file

Trying to compile an empty file causes cc1gm2 to hang.
The bug was that M2LexBuf.mod called m2flex.GetToken after
an eof token was seen which resulted in m2flex attempting
to read from stdin.  The bug fix detects eof per file and
blocks a subsequent to m2flex.GetToken.

gcc/m2/ChangeLog:

        * gm2-compiler/M2Comp.mod:  Import MetaString0.
        (ExamineCompilationUnit): New variable Message.
        Create and format error string.
        * gm2-compiler/M2LexBuf.mod: New variable SeenEof.
        (GetNonEofToken): New procedure.
        (Init): Set SeenEof to FALSE.
        (GetToken): Use GetNonEofToken instead of calls to
        m2flex.GetToken and GetToken.
        (AddTok): Detect eoftok and set SeenEof.

gcc/testsuite/ChangeLog:

        * gm2/pim/fail/empty.mod: New test.

Reply via email to