[Bug target/106876] ICE in extract_insn with -mforce-indirect-call -fPIC -fprofile-generate
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Sep 8 01:34:45 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106876
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to fail| |8.1.0
Summary|[13 Regression] ICE in |ICE in extract_insn with
|extract_insn, at |-mforce-indirect-call -fPIC
|recog.cc:2791 since |-fprofile-generate
|r13-465-g4df735e01e319997 |
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
A simple change like this (changing everything to struct causing everything to
be public) shows the problem has been there since GCC 8 (when
-mforce-indirect-call support was added).
```
template <class Derived>
struct base {
friend void bar(Derived& d) {
d.bar();
}
};
struct derived : base<derived> {
friend class base<derived>;
void bar() {}
};
int main() {
derived d;
bar(d);
}
```
-mforce-indirect-call -fPIC -fprofile-generate -g0
```
<source>: In member function 'void derived::bar()':
<source>:11:15: error: unrecognizable insn:
void bar() {}
^
(call_insn/u 6 3 7 2 (parallel [
(set (reg:DI 0 ax)
(call:DI (mem:QI (symbol_ref:DI ("__tls_get_addr")) [0 S1 A8])
(const_int 0 [0])))
(unspec:DI [
(symbol_ref:DI ("__gcov_indirect_call_callee") [flags 0x50]
<var_decl 0x7f58d6ae95a0 __gcov_indirect_call_callee>)
(reg/f:DI 7 sp)
] UNSPEC_TLS_GD)
]) -1
(expr_list:REG_EH_REGION (const_int -2147483648 [0xffffffff80000000])
(nil))
(nil))
during RTL pass: vregs
dump file: <source>.235r.vregs
<source>:11:15: internal compiler error: in extract_insn, at recog.c:2304
```
More information about the Gcc-bugs
mailing list