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

            Bug ID: 58165
           Summary: [4.8/4.9 regression] internal compiler error:
                    verify_flow_info
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: regression
          Assignee: unassigned at gcc dot gnu.org
          Reporter: aivchenk at gmail dot com

extern "C" {
  float sqrtf(float);
}

class V
{
public:
  double length2 () const {}
  double length () const
  {
    return sqrtf(length2());
  }

  V& normalize()
  {
    length();
    return *this;
  }
};

class B1
{
public:
  virtual ~B1 ();
};

class B2: public B1
{
public:
  B2(const V& p0,const V& p1,const V& p2) : B1() {}
};

class A1
{
public:
  virtual ~A1 ();
};

struct A2: public A1
{
  V m_v;

  virtual void foo (V v)
  {
    V v1 (v);
    B2 tA (m_v, m_v, m_v);
    V v2 = v1.normalize();
  }
};

void bar ()
{
  A2 a;
}

Compile: g++ -c -O3 test.C
test.C: In member function ‘virtual void A2::foo(V)’:
test.C:43:16: error: BB 6 is missing an EH edge
   virtual void foo (V v)
                ^
test.C:43:16: internal compiler error: verify_flow_info failed
0x8b31ce verify_flow_info()
        src/gcc/gcc/cfghooks.c:260
0xbceee7 execute_function_todo
        src/gcc/gcc/passes.c:1633
0xbce1b3 do_per_function
        src/gcc/gcc/passes.c:1358
0xbcefd7 execute_todo
        src/gcc/gcc/passes.c:1660

_________________________________________
The case came from android ndk r9: it's 4.8 is unable to compile bullet lib.
After some investigation I found that it's the same as in usual 4.8-release
with just android sysroot (The reason is that 'sqrtf' is defined in Bionic
without throw, if you add throw() to it, as it is in glibc, the ICE will
disappear again).


The guilty revision is:


Author: eraman <eraman@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Fri Jun 15 17:35:11 2012 +0000

    2012-06-15   Easwaran Raman  <era...@google.com>

        * passes.c (init_optimization_passes): Remove pass_call_cdce
        from its current position and insert after pass_dce.



    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@188675
138bc75d-0d04-0410-961f-82ee72b054a4

Reply via email to