Florian Weimer <fwei...@redhat.com> writes:

> * Eric Gallager:
>
>>> diff --git a/gcc/testsuite/gcc.c-torture/compile/20080910-1.c 
>>> b/gcc/testsuite/gcc.c-torture/compile/20080910-1.c
>>> index bf32775d401..911fb562790 100644
>>> --- a/gcc/testsuite/gcc.c-torture/compile/20080910-1.c
>>> +++ b/gcc/testsuite/gcc.c-torture/compile/20080910-1.c
>>> @@ -1,5 +1,6 @@
>>>  /* This used to crash IRA with -O3 -fPIC.
>>>    See PR 37333.  */
>>> +/* { dg-additional-options "-fpermissive" } */
>>>  struct yy_buffer_state  {
>>>    int yy_is_interactive;
>>>  };
>>
>> The fact that this one appears to be based on a scanner generated by
>> flex gives me pause. Is code from flex/yacc/bison going to need
>> -fpermissive in general, or is this just because it was generated by
>> an old version? If it's only old versions that generate code requiring
>> -fpermissive, when exactly did they stop doing that?
>
> It can be a bit tricky to get bison, flex, and automake to work
> together.  The inter-dependencies can be challenging, and apparently
> it's difficult to teach automake that generating a lexer or parser
> produces both the implementation C file and a header file.  There's a
> fairly generic way to deal with this: write a custom header that
> contains the necessary function declarations and include it everywhere.
> It's not as elegant as using the generated headers, but that can be
> difficult depending on the build system.

Right. The issues with anything Bison (and friends) were usually missing
declarations because of the header dependencies. Nothing intrinsic.

In fact, I can't even remember anything where Bison et. al generated
bad code purely by virtue of the version (even though sometimes comments
would suggest that, I never found any evidence for it, and it was
always the fault of the project itself which we'd then fix).

So, not worried.

>
> However, the problems with this test case aren't related to that.  For
> example, yy_fatal_error is undefined, but is a static function in the
> code generated by flex.  The test case has been preprocessed (that's how
> _IO_getc got there), and the declarations from system headers have been
> removed.
>
> Thanks,
> Florian

Reply via email to