https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70590
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P1
Status|UNCONFIRMED |NEW
Last reconfirmed| |2016-04-08
Target Milestone|--- |6.0
Ever confirmed|0 |1
--- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
trippels@gcc2-power8 xslt % cat txMozillaXMLOutput.ii
struct nsCycleCollectionParticipant;
struct A {
void incr(void *, nsCycleCollectionParticipant *);
void decr(void *, nsCycleCollectionParticipant *);
};
template <class T> struct B {
T *assign_with_AddRef_aRawPtr;
T *assign_assuming_AddRef_oldPtr;
void operator=(T *) {
assign_with_AddRef_aRawPtr->AddRef();
assign_assuming_AddRef_oldPtr->Release();
}
};
struct nsCycleCollectionParticipant {};
struct C {
struct cycleCollection : nsCycleCollectionParticipant {
static constexpr nsCycleCollectionParticipant *GetParticipant() {
return &_cycleCollectorGlobal;
}
} static _cycleCollectorGlobal;
void AddRef() { mRefCnt.incr(0, cycleCollection::GetParticipant()); }
void Release() { mRefCnt.decr(0, cycleCollection::GetParticipant()); }
A mRefCnt;
};
struct D {
D(bool);
B<C> mNodeInfoManager;
};
D::D(bool) { mNodeInfoManager = 0; }
trippels@gcc2-power8 xslt % c++ -c -O2 txMozillaXMLOutput.ii
txMozillaXMLOutput.ii: In member function ‘void C::AddRef()’:
txMozillaXMLOutput.ii:29:36: error: location references block not in block tree
D::D(bool) { mNodeInfoManager = 0; }
^
&_cycleCollectorGlobal
A::incr (D.2923, 0B, &_cycleCollectorGlobal);
txMozillaXMLOutput.ii:29:36: internal compiler error: verify_gimple failed
0x10b189e3 verify_gimple_in_cfg(function*, bool)
../../gcc/gcc/tree-cfg.c:5125
0x109ba45f execute_function_todo
../../gcc/gcc/passes.c:1958
0x109bb223 do_per_function
../../gcc/gcc/passes.c:1652
0x109bb42f execute_todo
../../gcc/gcc/passes.c:2010