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

Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-08-15
     Ever confirmed|0                           |1

--- Comment #2 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Testcase from comment2 now passes.

But here's a new variant:

markus@x4 xslt % cat test.ii
#pragma GCC visibility push(hidden)
class A
{
public:
  unsigned long m_fn1 () const;
};
class B;
class C
{
public:
  ;
  virtual bool m_fn2 (void) = 0;
};
class D
{
  virtual bool m_fn3 (const int &p1, B *p2) = 0;
};
class F : public D
{
  bool m_fn3 (const int &p1, B *p2);
  A mPredicates;
};
class B
{
};
class G : public B
{
  virtual unsigned int m_fn4 () = 0;
};
class H : public G
{
public:
  int txNodeSetContext_aContextNodeSet;
  H (B *p1) {}
  int
  m_fn5 ()
  {
    return mPosition < m_fn4 ();
  }
  unsigned int m_fn4 ();
  unsigned int mPosition;
};

unsigned int a;
C *b;
bool
F::m_fn3 (const int &p1, B *p2)
{
  if (!b->m_fn2 ())
    return false;
  unsigned int c = mPredicates.m_fn1 ();
  for (1; 1 < c; ++a)
    {
      H d (p2);
      while (d.m_fn5 ())
        {
          do
            {
            }
          while (0);
        }
    }
}

markus@x4 xslt % /var/tmp/gcc_test/usr/local/bin/c++ -c -O2 test.ii
test.ii: In member function ‘virtual bool F::m_fn3(const int&, B*)’:
test.ii:63:1: internal compiler error: Segmentation fault
 }
 ^
0xb9ddcf crash_signal
        ../../gcc/gcc/toplev.c:337
0x9fd5ea decl_maybe_in_construction_p(tree_node*, tree_node*,
gimple_statement_base*, tree_node*)
        ../../gcc/gcc/ipa-devirt.c:2214
0x9fe561 get_polymorphic_call_info(tree_node*, tree_node*, tree_node**, long*,
ipa_polymorphic_call_context*, gimple_statement_base*)
        ../../gcc/gcc/ipa-devirt.c:2436
0x848244 cgraph_node::create_indirect_edge(gimple_statement_base*, int, long,
int)
        ../../gcc/gcc/cgraph.c:968
0x852af1 cgraph_clone_edge(cgraph_edge*, cgraph_node*, gimple_statement_base*,
unsigned int, long, int, bool)
        ../../gcc/gcc/cgraphclones.c:139
0x85427f cgraph_node::create_version_clone(tree_node*, vec<cgraph_edge*,
va_heap, vl_ptr>, bitmap_head*)
        ../../gcc/gcc/cgraphclones.c:876
0x8543c7 cgraph_node::create_version_clone_with_body(vec<cgraph_edge*, va_heap,
vl_ptr>, vec<ipa_replace_map*, va_gc, vl_embed>*, bitmap_head*, bool,
bitmap_head*, basic_block_def*, char const*)
        ../../gcc/gcc/cgraphclones.c:943
0x10d1adb split_function
        ../../gcc/gcc/ipa-split.c:1235
0x10d5d8e execute_split_functions
        ../../gcc/gcc/ipa-split.c:1636
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
markus@x4 xslt %

Reply via email to