http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56768

             Bug #: 56768
           Summary: [4.7] ICE in make_decl_rtl, at varasm.c:1147
    Classification: Unclassified
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: ppluzhni...@google.com


Google ref b/8485258

Does *not* reproduce on trunk
Does reproduce using gcc-4_7 (r197167)

Test case:

struct Iter
{
  int& operator* ();
  void operator++ ();
};

bool operator!= (Iter &, Iter &);

struct Container
{
  Iter begin () const;
  Iter end () const;
};

struct J
{
    virtual J *mutable_child ();
};

struct M
{
    M (const Container &);
    J ns_;
};
namespace
{
  J MakeNamespace (const Container &src)
  {
    J a;
    J *b = 0;
    for (const int &c: src)
      b = b ? b->mutable_child () : &a;
    return a;
  }
}
M::M (const Container &ns):ns_ (MakeNamespace (ns))
{
}

cc1plus pp.ii -std=c++11 -quiet && echo ok
ok

cc1plus pp.ii -std=c++11 -quiet -O2
pp.ii: In constructor ‘M::M(const Container&)’:
pp.ii:36:1: internal compiler error: in make_decl_rtl, at varasm.c:1147
Please submit a full bug report,

Reply via email to