https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88587
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2019-01-07
CC| |jakub at gcc dot gnu.org,
| |marxin at gcc dot gnu.org
Summary|internal compiler error: in |ICE in
|expand_debug_locations, at |expand_debug_locations, at
|cfgexpand.c:5450 |cfgexpand.c:5450
Ever confirmed|0 |1
--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> ---
Confirmed, there's a reduced test-case:
$ cat pr88587.c
__attribute__((target_clones("default,sse2"))) void a() {
__attribute__((__vector_size__(4 * sizeof(float)))) int b = {};
}
$ gcc -c -m32 -mno-sse -O -g pr88587.c
during RTL pass: expand
pr88587.c: In function ‘a.sse2.0’:
pr88587.c:1:53: internal compiler error: in expand_debug_locations, at
cfgexpand.c:5450
1 | __attribute__((target_clones("default,sse2"))) void a() {
| ^
0x8f386a expand_debug_locations
/home/marxin/Programming/gcc/gcc/cfgexpand.c:5446
0x8f6961 execute
/home/marxin/Programming/gcc/gcc/cfgexpand.c:6505
It's quite strange that following is fine:
$ cat pr88587-2.c
__attribute__((target("default"))) void a() {
__attribute__((__vector_size__(4 * sizeof(float)))) int b = {};
}
__attribute__((target("sse2"))) void a2() {
__attribute__((__vector_size__(4 * sizeof(float)))) int b = {};
}
$ gcc -c -m32 -mno-sse -O -g pr88587-2.c
I'll investigate how precisely the debug insn looks like in both situations.