[Bug middle-end/88587] ICE in expand_debug_locations, at cfgexpand.c:5450

marxin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jan 14 15:16:00 GMT 2019


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88587

--- Comment #8 from Martin Liška <marxin at gcc dot gnu.org> ---
> 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.

I was wrong, this also fails, so not target_clone attribute related:

$ cat ~/Programming/testcases/pr88587-2.c
__attribute__((target("default"),always_inline)) void a() {
  __attribute__((__vector_size__(4 * sizeof(float)))) int b = {};
}

__attribute__((target("sse2"))) void a2() {
  a ();
  __attribute__((__vector_size__(4 * sizeof(float)))) int b = {};
}

$ gcc ~/Programming/testcases/pr88587-2.c -c -m32 -mno-sse -O -g
/home/marxin/Programming/testcases/pr88587-2.c:1:55: warning: always_inline
function might not be inlinable [-Wattributes]
 __attribute__((target("default"),always_inline)) void a() {
                                                       ^
during RTL pass: expand
/home/marxin/Programming/testcases/pr88587-2.c: In function ‘a2’:
/home/marxin/Programming/testcases/pr88587-2.c:5:38: internal compiler error:
in expand_debug_locations, at cfgexpand.c:5403
 __attribute__((target("sse2"))) void a2() {
                                      ^~
0x7ffff6996fea __libc_start_main
        ../csu/libc-start.c:308

The ICE is very old, starting from GCC 4.8.0. Before that target attribute was
not known yet.


More information about the Gcc-bugs mailing list