[Bug ipa/59176] [4.9 Regression] ICE edge points to wrong declaration / verify_cgraph_node failed
trippels at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Mar 24 19:16:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59176
--- Comment #18 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
markus@x4 tmp % cat test.ii
class ASN1Object
{
public:
virtual ~ASN1Object ();
};
class A
{
virtual unsigned m_fn1 () const;
};
class B
{
public:
ASN1Object Element;
virtual unsigned m_fn1 (bool) const;
};
template <class BASE> class C : public BASE
{
};
class D : ASN1Object, public B
{
};
class G : public D
{
unsigned m_fn1 (bool) const {}
};
class F : A
{
public:
F (A);
unsigned m_fn1 () const
{
int a;
a = m_fn2 ().m_fn1 (0);
return a;
}
const B &m_fn2 () const { return m_groupParameters; }
C<G> m_groupParameters;
};
template <class D> void BenchMarkKeyAgreement (int *, int *, int)
{
A f;
D d (f);
}
void BenchmarkAll2 () { BenchMarkKeyAgreement<F>(0, 0, 0); }
markus@x4 tmp % g++ -c -O3 test.ii
test.ii:46:60: error: edge points to wrong declaration:
void BenchmarkAll2 () { BenchMarkKeyAgreement<F>(0, 0, 0); }
^
<function_decl 0x7fd4c010fa00 m_fn1.constprop
type <function_type 0x7fd4c00d3348
type <integer_type 0x7fd4bff4a738 unsigned int public unsigned SI
size <integer_cst 0x7fd4bff4c440 constant 32>
unit size <integer_cst 0x7fd4bff4c460 constant 4>
align 32 symtab 0 alias set -1 canonical type 0x7fd4bff4a738
precision 32 min <integer_cst 0x7fd4bff4c480 0> max <integer_cst 0x7fd4bff4c420
4294967295>
pointer_to_this <pointer_type 0x7fd4c0060150>>
QI
size <integer_cst 0x7fd4bff4c280 constant 8>
unit size <integer_cst 0x7fd4bff4c2a0 constant 1>
align 8 symtab 0 alias set -1 canonical type 0x7fd4c00d3348
arg-types <tree_list 0x7fd4bff48b40 value <void_type 0x7fd4bff5d000
void>>>
readonly addressable used nothrow private static autoinline decl_5 QI
defer-output file test.ii line 25 col 12 align 16 context <record_type
0x7fd4c00b7e70 G>>
Instead of: <function_decl 0x7fd4c00b8c00 _ZThn8_NK1G5m_fn1Eb
type <method_type 0x7fd4c00ba150
type <integer_type 0x7fd4bff4a738 unsigned int public unsigned SI
size <integer_cst 0x7fd4bff4c440 constant 32>
unit size <integer_cst 0x7fd4bff4c460 constant 4>
align 32 symtab 0 alias set -1 canonical type 0x7fd4bff4a738
precision 32 min <integer_cst 0x7fd4bff4c480 0> max <integer_cst 0x7fd4bff4c420
4294967295>
pointer_to_this <pointer_type 0x7fd4c0060150>>
QI
size <integer_cst 0x7fd4bff4c280 constant 8>
unit size <integer_cst 0x7fd4bff4c2a0 constant 1>
align 8 symtab 0 alias set -1 canonical type 0x7fd4c00ba150 method
basetype <record_type 0x7fd4c00b7e70 G>
arg-types <tree_list 0x7fd4c00abca8 value <pointer_type 0x7fd4c00ba1f8>
chain <tree_list 0x7fd4c00ab3c0 value <boolean_type 0x7fd4bff4abd0
bool>
chain <tree_list 0x7fd4bff48b40 value <void_type 0x7fd4bff5d000
void>>>>
pointer_to_this <pointer_type 0x7fd4c00baa80>>
readonly addressable asm_written used public weak virtual decl_5 QI file
test.ii line 25 col 12 align 8 context <record_type 0x7fd4c00b7e70 G>
arguments <parm_decl 0x7fd4c00bb380 this
type <pointer_type 0x7fd4c00ba2a0 type <record_type 0x7fd4c00ba0a8 G>
readonly unsigned DI
size <integer_cst 0x7fd4bff4c0c0 constant 64>
unit size <integer_cst 0x7fd4bff4c0e0 constant 8>
align 64 symtab 0 alias set -1 canonical type 0x7fd4c00ba2a0>
readonly unsigned DI file test.ii line 25 col 25 size <integer_cst
0x7fd4bff4c0c0 64> unit size <integer_cst 0x7fd4bff4c0e0 8>
align 64 context <function_decl 0x7fd4c00b8c00 _ZThn8_NK1G5m_fn1Eb>
arg-type <pointer_type 0x7fd4c00ba2a0>
chain <parm_decl 0x7fd4c00bb400 D.2326 type <boolean_type
0x7fd4bff4abd0 bool>
unsigned QI file test.ii line 25 col 19 size <integer_cst
0x7fd4bff4c280 8> unit size <integer_cst 0x7fd4bff4c2a0 1>
align 8 context <function_decl 0x7fd4c00b8c00 _ZThn8_NK1G5m_fn1Eb>
arg-type <integer_type 0x7fd4bff4a690 int>>>
full-name "virtual unsigned int G::_ZThn8_NK1G5m_fn1Eb(bool) const"
>
_ZNK1F5m_fn1Ev/3 (virtual unsigned int F::m_fn1() const) @0x7fd4c00c4290
Type: function definition analyzed
Visibility: externally_visible public weak comdat comdat_group:_ZNK1F5m_fn1Ev
one_only virtual
Address is taken.
References:
Referring: _ZTV1F/31 (addr)
Availability: available
First run: 0
Function flags: body
Called by:
Calls: _ZNK1G5m_fn1Eb.constprop.1/73 (1.00 per call) (can throw external)
test.ii:46:60: internal compiler error: verify_cgraph_node failed
More information about the Gcc-bugs
mailing list