https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94245
Bug ID: 94245
Summary: [10 Regression] ICE in ipa_find_agg_cst_for_param, at
ipa-prop.c:3467 since r10-7237-g4e3d3e40726e1b68
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P3
Component: ipa
Assignee: unassigned at gcc dot gnu.org
Reporter: marxin at gcc dot gnu.org
CC: marxin at gcc dot gnu.org, rguenth at gcc dot gnu.org
Target Milestone: ---
I hope it's the last fallout:
$ cat x.ii
template < typename, typename, typename, typename, typename = int >
class _Rb_tree {
typedef int *_Link_type;
struct _Alloc_node {
_Alloc_node(_Rb_tree &__t) : _M_t(__t) {}
template < typename _Arg > _Link_type operator()(_Arg) {
_M_t._M_create_node(0);
}
_Rb_tree &_M_t;
};
template < typename _Args > void _M_create_node(_Args);
template < typename _NodeGen > void _M_clone_node(int, _NodeGen &__node_gen)
{
int *__trans_tmp_1 = __node_gen(__trans_tmp_1);
}
template < typename _NodeGen > _Link_type _M_copy(int, int, _NodeGen &);
template < typename _NodeGen > void _M_copy(_Rb_tree, _NodeGen __gen) {
_M_copy(0, 0, __gen);
}
void _M_copy(_Rb_tree __x) {
_Alloc_node __an(*this);
_M_copy(__x, __an);
}
public:
_Rb_tree(const _Rb_tree &__x) { _M_copy(__x); }
};
template < typename _Key, typename _Val, typename _KoV, typename _Compare,
typename _Alloc >
template < typename _NodeGen >
typename _Rb_tree< _Key, _Val, _KoV, _Compare, _Alloc >::_Link_type
_Rb_tree< _Key, _Val, _KoV, _Compare, _Alloc >::_M_copy(int __x, int,
_NodeGen &__node_gen) {
_M_clone_node(__x, __node_gen);
}
class map {
_Rb_tree< int, int, int, int > _M_t;
};
class Trans_NS___cxx11_basic_string;
template < typename V > class static_map {
map _m;
public:
static_map(Trans_NS___cxx11_basic_string, V);
operator map() { return _m; }
};
class Trans_NS___cxx11_basic_string {
public:
Trans_NS___cxx11_basic_string(char *);
};
int handle_volume_rcp_update(int, int &, int &);
map dispatch =
static_map< int(int, int &, int &) >("", handle_volume_rcp_update);
$ g++ x.ii -O2 -flto -fPIC -shared
x.ii: In member function ‘int* _Rb_tree< <template-parameter-1-1>,
<template-parameter-1-2>, <template-parameter-1-3>, <template-parameter-1-4>,
<template-parameter-1-5> >::_Alloc_node::operator()(_Arg)’:
x.ii:8:5: warning: no return statement in function returning non-void
[-Wreturn-type]
8 | }
| ^
x.ii: In member function ‘int* _Rb_tree< <template-parameter-1-1>,
<template-parameter-1-2>, <template-parameter-1-3>, <template-parameter-1-4>,
<template-parameter-1-5> >::_M_copy(int, int, _NodeGen&)’:
x.ii:34:1: warning: no return statement in function returning non-void
[-Wreturn-type]
34 | }
| ^
x.ii: At global scope:
x.ii:52:42: warning: ISO C++ forbids converting a string constant to ‘char*’
[-Wwrite-strings]
52 | static_map< int(int, int &, int &) >("", handle_volume_rcp_update);
| ^~
during IPA pass: cp
lto1: internal compiler error: in ipa_find_agg_cst_for_param, at
ipa-prop.c:3467
0x6584b9 ipa_find_agg_cst_for_param(ipa_agg_value_set*, tree_node*, long, bool,
bool*)
../../gcc/ipa-prop.c:3467
0x6584b9 ipa_find_agg_cst_for_param(ipa_agg_value_set*, tree_node*, long, bool,
bool*)
../../gcc/ipa-prop.c:3440
0xadc8bf evaluate_conditions_for_known_args
../../gcc/ipa-fnsummary.c:371
0xae6369 estimate_ipcp_clone_size_and_time(cgraph_node*, vec<tree_node*,
va_heap, vl_ptr>, vec<ipa_polymorphic_call_context, va_heap, vl_ptr>,
vec<ipa_agg_value_set, va_heap, vl_ptr>, int*, sreal*, sreal*, int*)
../../gcc/ipa-fnsummary.c:3658
0x165e31f perform_estimation_of_a_value
../../gcc/ipa-cp.c:3397
0x16662a3 estimate_local_effects
../../gcc/ipa-cp.c:3623
0x166ffbf propagate_constants_topo
../../gcc/ipa-cp.c:3819
0x166ffbf ipcp_propagate_stage
../../gcc/ipa-cp.c:3915
0x166ffbf ipcp_driver
../../gcc/ipa-cp.c:5911
0x166ffbf execute
../../gcc/ipa-cp.c:6004