Fix profiledbootstrap with release checking
Richard Biener
richard.guenther@gmail.com
Fri Jan 16 11:10:00 GMT 2015
On Fri, Jan 16, 2015 at 9:34 AM, Markus Trippelsdorf
<markus@trippelsdorf.de> wrote:
> On 2015.01.16 at 00:15 +0100, Jan Hubicka wrote:
>> Hi,
>> can_remove_node_now_p assumes that the node in question has no direct calls, this
>> however is not checked in inline_call that leads to alias to be removed from
>> comdat group while it should not.
>>
>> Bootstrapped/regtested x86_64-linux, comitted.
>
> Here's a testcase for this issue. OK for trunk?
Ok.
Thanks,
Richard.
> 2015-01-16 Markus Trippelsdorf <markus@trippelsdorf.de>
>
> PR ipa/64163
> PR ipa/64612
> * g++.dg/ipa/pr64612.C: New test.
>
> /* { dg-do compile } */
> /* { dg-options "-fPIC -O3 -std=c++11" } */
> /* { dg-final { scan-assembler "_ZN5QListI7QStringED1Ev" } } */
>
> class A
> {
> public:
> bool deref ();
> };
> class QString;
> struct B
> {
> A ref;
> };
> template <typename> class QList
> {
> B d;
> public:
> ~QList ();
> class const_iterator
> {
> };
> const_iterator constBegin ();
> void clear ();
> void dealloc ();
> };
> template <typename T> QList<T>::~QList ()
> {
> if (d.ref.deref ())
> dealloc ();
> }
> template <typename T>
> void
> QList<T>::clear ()
> {
> QList ();
> }
> class A1 : public QList<QString>
> {
> };
> class B1
> {
> public:
> B1 (A1);
> };
> struct F
> {
> void addMatch (const QString &&);
> A1 m_matchingMimeTypes;
> };
> class G
> {
> A1 matchingGlobs (const QString &) const;
> };
> void
> F::addMatch (const QString &&)
> {
> m_matchingMimeTypes.clear ();
> }
> A1
> G::matchingGlobs (const QString &) const
> {
> A1 a;
> for (B1 b (a);;)
> ;
> }
>
> --
> Markus
More information about the Gcc-patches
mailing list