public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: optimization/8391: g++ 3.1.1 and 3.2 infinite loop on legal code
@ 2002-10-29 10:19 paolo
  0 siblings, 0 replies; 2+ messages in thread
From: paolo @ 2002-10-29 10:19 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, spencer

Synopsis: g++ 3.1.1 and 3.2 infinite loop on legal code

State-Changed-From-To: open->analyzed
State-Changed-By: paolo
State-Changed-When: Tue Oct 29 10:19:04 2002
State-Changed-Why:
    Confirmed on i686-pc-linux-gnu, both mainline and 3_2-branch.
    Regression from 2.95.x and 3.0.x -> high priority.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8391


^ permalink raw reply	[flat|nested] 2+ messages in thread

* optimization/8391: g++ 3.1.1 and 3.2 infinite loop on legal code
@ 2002-10-29  9:26 spencer
  0 siblings, 0 replies; 2+ messages in thread
From: spencer @ 2002-10-29  9:26 UTC (permalink / raw)
  To: gcc-gnats; +Cc: spencer


>Number:         8391
>Category:       optimization
>Synopsis:       g++ 3.1.1 and 3.2 infinite loop on legal code
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Tue Oct 29 09:26:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Brad Spencer
>Release:        gcc-3.2
>Organization:
>Environment:
gcc-3.1.1 sparc-sun-solaris2.8 target on i686-pc-linux-gnu
gcc-3.2 sparc-sun-solaris2.8 target on i686-pc-linux-gnu
gcc-3.2 i686-pc-linux-gnu native
>Description:
The following code causes the compiler to loop infinitely in cc1plus for the targets described above.  

This compiles successfully on other (commercial) compilers.

$ /opt/gcc-3.1.1-cross/sparc-sun-solaris2.8/bin/sparc-sun-solaris2.8-g++ -v
Reading specs from /opt/gcc-3.1.1-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.1.1/specs
Configured with: ../../gcc-3.1.1/configure --with-dwarf2 --enable-languages=c,c++ --enable-threads=single --disable-shared --prefix=/opt/gcc-3.1.1-cross/sparc-sun-solaris2.8 --target=sparc-sun-solaris2.8 -v --with-headers=/build/spencer/gcc-cross/sparc-sun-solaris2.8/target-stuff/include/ --with-lib=/build/spencer/gcc-cross/sparc-sun-solaris2.8/target-stuff/lib --with-gnu-as --with-gnu-ld --disable-multilib
Thread model: single
gcc version 3.1.1

$ /opt/gcc-3.2-cross/sparc-sun-solaris2.8/bin/sparc-sun-solaris2.8-g++ -v
Reading specs from /opt/gcc-3.2-cross/sparc-sun-solaris2.8/lib/gcc-lib/sparc-sun-solaris2.8/3.2/specs
Configured with: ../../gcc-3.2/configure --with-dwarf2 --enable-languages=c,c++ --enable-threads=single --disable-shared --prefix=/opt/gcc-3.2-cross/sparc-sun-solaris2.8 --target=sparc-sun-solaris2.8 --with-headers=/build/eng-linux1/spencer/gcc-cross/sparc-sun-solaris2.8/target-stuff/include/ --with-lib=/opt/gcc-3.2-cross/sparc-sun-solaris2.8/sparc-sun-solaris2.8/lib --with-gnu-as --with-gnu-ld --disable-multilib --enable-concept-checks --enable-clocale=ieee_1003.1-2001
Thread model: single
gcc version 3.2

$ g++ -v
Reading specs from /opt/gcc-3.2-cross/i686-pc-linux-gnu/lib/gcc-lib/i686-pc-linux-gnu/3.2/specs
Configured with: ../../gcc-3.2/configure --with-dwarf2 --enable-languages=c,c++ --enable-threads=single --disable-shared --prefix=/opt/gcc-3.2-cross/i686-pc-linux-gnu --with-gnu-as --with-gnu-ld --with-as=/opt/gcc-3.2-cross/i686-pc-linux-gnu/bin/as --with-ld=/opt/gcc-3.2-cross/i686-pc-linux-gnu/bin/ld --disable-multilib --enable-clocale=gnu
Thread model: single
gcc version 3.2

// g++ -Wall -c -O foo.o foo.cc


#include <iostream>
#include <string>

namespace Namespace
{
  class Object
  {
  public:
    Object() {}
    virtual ~Object() {}

  public:
    struct Writer
    {
      virtual bool operator()(const char *data, const size_t size) = 0;
    };

    virtual bool write(Writer &writer) const;
  };

  // convenience output operator
  inline std::ostream &operator<<(std::ostream &out,
                                  const Object &obj)
  {
    class ContentWriter : public Object::Writer
    {
      std::ostream         &m_out;
    public:
      ContentWriter(std::ostream &out)
        : m_out(out)
      {}
      
      virtual bool operator()(const char *data, const size_t size) {
        return m_out.write(data, size);
      }

    } contentWriter(out);
    
    obj.write(contentWriter);
    return out;
  }
}

void
f(Namespace::Object &req)
{
  std::cout << req;
}
>How-To-Repeat:
Compile the file.  The compilation never completes.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2002-10-29 18:19 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-10-29 10:19 optimization/8391: g++ 3.1.1 and 3.2 infinite loop on legal code paolo
  -- strict thread matches above, loose matches on Subject: below --
2002-10-29  9:26 spencer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).