https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101177
Bug ID: 101177
Summary: sh3: internal compiler error: Illegal instruction
Product: gcc
Version: 9.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: roland.illig at gmx dot de
Target Milestone: ---
$ cat lex.c
int
lex_input(void);
int
lex_character_constant(void);
int
lex_character_constant(void)
{
int c = lex_input();
if (c == 7)
return c;
c &= 255;
return c == 0 ? -1 : c;
}
$ /home/rillig/builds/sh3-tools/bin/sh--netbsdelf-gcc --version
sh--netbsdelf-gcc (NetBSD nb1 20200907) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
$ /home/rillig/builds/sh3-tools/bin/sh--netbsdelf-gcc lex.c -O1
sh--netbsdelf-gcc: internal compiler error: Illegal instruction signal
terminated program cc1
$ gdb --args /home/rillig/builds/sh3-tools/libexec/gcc/sh--netbsdelf/9.3.0/cc1
lex.c -O1
(gdb) r
(gdb) bt
#0 0x0000000000675ddc in df_ref_create_structure(df_ref_class,
df_collection_rec*, rtx_def*, rtx_def**, basic_block_def*, df_insn_info*,
df_ref_type, int) ()
#1 0x0000000000676b90 in df_ref_record(df_ref_class, df_collection_rec*,
rtx_def*, rtx_def**, basic_block_def*, df_insn_info*, df_ref_type, int) ()
#2 0x0000000000676dc9 in df_uses_record(df_collection_rec*, rtx_def**,
df_ref_type, basic_block_def*, df_insn_info*, int) ()
#3 0x0000000000676e91 in df_uses_record(df_collection_rec*, rtx_def**,
df_ref_type, basic_block_def*, df_insn_info*, int) ()
#4 0x0000000000678274 in df_insn_refs_collect(df_collection_rec*,
basic_block_def*, df_insn_info*) ()
#5 0x000000000067b617 in df_insn_rescan(rtx_insn*) ()
#6 0x00000000006dc3a1 in emit_pattern_after_noloc(rtx_def*, rtx_insn*,
basic_block_def*, rtx_insn* (*)(rtx_def*)) ()
#7 0x00000000006dc3d3 in emit_pattern_after_setloc(rtx_def*, rtx_insn*,
unsigned int, rtx_insn* (*)(rtx_def*)) ()
#8 0x00000000006dcc12 in emit_insn_after_setloc(rtx_def*, rtx_insn*, unsigned
int) ()
#9 0x00000000006dce92 in try_split(rtx_def*, rtx_insn*, int) ()
#10 0x00000000006dd275 in try_split(rtx_def*, rtx_insn*, int) ()
#11 0x00000000006dd275 in try_split(rtx_def*, rtx_insn*, int) ()
...
#1979 0x00000000006dd275 in try_split(rtx_def*, rtx_insn*, int) ()
#1980 0x00000000006dd275 in try_split(rtx_def*, rtx_insn*, int) ()
#1981 0x0000000000905d33 in split_insn(rtx_insn*) ()
#1982 0x0000000000909c96 in split_all_insns() ()
#1983 0x0000000000909dc3 in (anonymous
namespace)::pass_split_all_insns::execute(function*) ()
#1984 0x00000000008d2044 in execute_one_pass(opt_pass*) ()
#1985 0x00000000008d29a8 in execute_pass_list_1(opt_pass*) ()
#1986 0x00000000008d29ba in execute_pass_list_1(opt_pass*) ()
#1987 0x00000000008d29e0 in execute_pass_list(function*, opt_pass*) ()
#1988 0x000000000064fe9f in cgraph_node::expand() ()
#1989 0x0000000000651375 in symbol_table::compile() ()
#1990 0x0000000000652c7f in symbol_table::finalize_compilation_unit() ()
#1991 0x000000000098b57d in compile_file() ()
#1992 0x000000000098da13 in toplev::main(int, char**) ()
#1993 0x0000000000f36e1c in main ()
The code is extracted from:
https://github.com/NetBSD/src/blob/3f158578dbda380f096b448cf750251299159488/usr.bin/xlint/lint1/lex.c