bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [GNU Bison 3.0.4] testsuite: 430 431 432 failed


From: Akim Demaille
Subject: Re: [GNU Bison 3.0.4] testsuite: 430 431 432 failed
Date: Mon, 26 Jan 2015 18:32:43 +0100

Hi Dennis!

Thanks for the report.

> Le 25 janv. 2015 à 08:34, address@hidden a écrit :
> 
> 
> System type is Oracle Solaris 10 on Niagara T2 class SPARC :
> 
> node000$ uname -a
> SunOS node000 5.10 Generic_150400-19 sun4v sparc
> SUNW,SPARC-Enterprise-T5220
> 
> node000$ psrinfo -pv
> The physical processor has 32 virtual processors (0-31)
>  UltraSPARC-T2 (chipid 0, clock 1165 MHz)

And the compiler, according to the log, is:

| configure:4835: /opt/solarisstudio12.4/bin/cc -V >&5
| cc: Sun C 5.13 SunOS_sparc 2014/10/20

> 3 failed unexpectedly.

All three errors are the same one:

> #                             -*- compilation -*-
> 430. c++.at:374: testing Variants lalr1.cc parse.assert api.token.constructor 
> ...
> ./c++.at:374: bison -fno-caret -o list.cc list.y
> ./c++.at:374: $BISON_CXX_WORKS
> stderr:
> stdout:
> ./c++.at:374: $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o list list.cc $LIBS
> stderr:
> "list.y", line 75: Error: The operation 
> "std::ostream<<std::list<std::string>" is illegal.
> "list.cc", line 1701:     Where, temwhileinst: While instantiating 
> "yy::parser::basic_symbol<yy::parser::by_type>::clear()".
> "list.cc", line 1701:     Where, teminstend: Instantiated from non-template 
> code.
> 1 Error(s) detected.
> stdout:
> ./c++.at:374: exit code was 2, expected 0
> 430. c++.at:374: 430. Variants lalr1.cc parse.assert api.token.constructor 
> (c++.at:374): FAILED (c++.at:374)

Line list.y:75 is:

%destructor { std::cerr << "Destroy: " << $$ << '\n'; } <*>;

which is supposed to call this:

  // Printing a list of strings (for %printer).
  // Koening look up will look into std, since that's an std::list.
  namespace std
  {
    std::ostream&
    operator<<(std::ostream& o, const strings_type& s)
    {
      o << '(';
      for (strings_type::const_iterator i = s.begin (); i != s.end (); ++i)
        {
          if (i != s.begin ())
            o << ", ";
          o << *i;
        }
      return o << ')';
    }
  }

The problem appears to be that the code is emitted too late
in the file, so your compiler does not consider it.  Well,
that's my guess.

While at it, I decided to use std::vector instead of std::list,
and to avoid putting things in std::, which is officially
"undefined behavior".  So could you please try to attached
patch to see if it fixes the problem?  It's also in the "next"
branch right now if you want to try it.


> 9 tests were skipped.

These skipped tests are:

187. Prologue syncline (synclines.at:173): skipped (synclines.at:173)

could you please run

  make check TESTSUITEFLAGS='-x -d -v 187'

and send the results, to see if we can avoid skipping these
tests?  Thanks!

Attachment: sun-cc.patch
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]