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



--- Comment #13 from Steve Ellcey <sje at gcc dot gnu.org> 2013-01-09 23:09:15 
UTC ---

Here is a C++ test case in case it involves differences from the C examples.

This comes from libstdc++-v3/libsupc++/pointer_type_info.cc



% cat bug4.cc

namespace std

{

  class type_info {

  public:

    bool operator==(const type_info& __arg) const

    {

      return (__name[0] != '*' && __builtin_strcmp (__name, __arg.__name) ==

0);

    }

    virtual bool __is_function_p() const;

    const char *__name;

  };

}

  class __pbase_type_info : public std::type_info

  {

  public:

    const std::type_info* __pointee;

  };

  class __pointer_type_info : public __pbase_type_info

  {

    virtual bool

    __pointer_catch(const __pbase_type_info* __thr_type, void** __thr_obj,

      unsigned __outer) const;

};

bool __pointer_type_info::__pointer_catch (const __pbase_type_info

*thrown_type,

                 void **thr_obj,

                 unsigned outer) const

{

  if (outer < 2 && *__pointee == typeid (void))

      return !thrown_type->__pointee->__is_function_p ();

}

g++ -c -mips64r2 -mabi=64 -O2 -g bug4.cc

bug4.cc: In member function 'virtual bool

__pointer_type_info::__pointer_catch(const __pbase_type_info*, void**, unsigned

int) const':

bug4.cc:24:6: note: non-delegitimized UNSPEC unknown (230) found in variable

location

 bool __pointer_type_info::__pointer_catch (const __pbase_type_info

*thrown_type,

      ^

%

Reply via email to