This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [LTO] Committed merge feedback to the branch


On Fri, 2 Oct 2009, Diego Novillo wrote:

> On Fri, Oct 2, 2009 at 06:45, Richard Guenther <rguenther@suse.de> wrote:
> 
> > How would that happen? ÂI assumed we only ever emit things from
> > the cgraph and varpool...
> 
> These are things reachable from BINFO_VIRTUALS, DECL_ABSTRACT_ORIGIN,
> etc.  We then try to merge to share them again on the reader side, but
> fail to find an assembler name for them (which is the only thing we
> can use to merge them).  One could argue that these should be cleared
> out, though BINFO_VIRTUALS are used for obj_type_ref folding.

Testcase from soplex, ICEs at -shared -fPIC -flto.

Richard.

namespace std __attribute__ ((__visibility__ ("default")))
{
  template<class _CharT>     struct char_traits;
  template<typename _CharT, typename _Traits = char_traits<_CharT> >
      class basic_ostream;
  template<typename _CharT, typename _Traits = char_traits<_CharT> >
      class istreambuf_iterator;
  typedef basic_ostream<char> ostream;
  template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
      class num_get;
  class locale   {
      class facet;
  };
  class locale::facet   {
  };
  enum _Ios_Iostate { _S_beg = 0, _S_cur = 1, _S_end = 2,
      _S_ios_seekdir_end = 1L << 16     };
  class ios_base   {
  public:
      typedef _Ios_Iostate iostate;
  };
  template<typename _CharT, typename _InIter>
      class num_get : public locale::facet     {
	  typedef _InIter iter_type;
	  template<typename _ValueT> iter_type
	      _M_extract_int(iter_type, iter_type, ios_base&,
			     ios_base::iostate&, _ValueT&) const;
	  virtual iter_type
	      do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const;
      };
  extern template class num_get<char>;
  template<typename _CharT, typename _Traits>
      class basic_ios : public ios_base     {
	  typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
	      __num_get_type;
	  const __num_get_type* _M_num_get;
      };
  template<typename _CharT, typename _Traits>
      class basic_ostream : virtual public basic_ios<_CharT, _Traits>     {
      public:
	  typedef basic_ostream<_CharT, _Traits> __ostream_type;
	  __ostream_type&       operator<<(double __f)       { }
      };
  typedef double Real;
  class Vector {
  public:
      Real operator[](int n) const    { }
  };
  std::ostream& operator<<(std::ostream& s, const Vector& vec)
    {
      int i;
      s << vec[i] << ')';
    }
}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]