This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
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] << ')';
}
}