seen on the gcc-10 branch and trunk 20201003 on arm-linux-gnueabihf. Omitting -g works around the issue.
$ cat signal.i typedef int a __attribute__((aligned(2))); a b[1];
$ gcc -c -g -O0 signal.i signal.i:2:1: error: 'TYPE_CANONICAL' is not compatible 2 | a b[1]; | ^ <array_type 0xf751d7e0 type <integer_type 0xf7a4f3c0 int public SI size <integer_cst 0xf7426e58 constant 32> unit-size <integer_cst 0xf7426e70 constant 4> align:32 warn_if_not_align:0 symtab:-144899760 alias-set -1 canonical-type 0xf7a4f3c0 precision:32 min <integer_cst 0xf74370a8 -2147483648> max <integer_cst 0xf74370c0 2147483647> pointer_to_this <pointer_type 0xf7a4ff00>> SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf751d7e0 domain <integer_type 0xf751d6c0 type <integer_type 0xf7a4f060 sizetype public unsigned SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf7a4f060 precision:32 min <integer_cst 0xf7426e88 0> max <integer_cst 0xf7426000 4294967295>> SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf751d6c0 precision:32 min <integer_cst 0xf7426e88 0> max <integer_cst 0xf7426e88 0>>> signal.i:2:1: error: 'TYPE_MODE' of 'TYPE_CANONICAL' is not compatible <array_type 0xf751d7e0 type <integer_type 0xf7a4f3c0 int public SI size <integer_cst 0xf7426e58 constant 32> unit-size <integer_cst 0xf7426e70 constant 4> align:32 warn_if_not_align:0 symtab:-144899760 alias-set -1 canonical-type 0xf7a4f3c0 precision:32 min <integer_cst 0xf74370a8 -2147483648> max <integer_cst 0xf74370c0 2147483647> pointer_to_this <pointer_type 0xf7a4ff00>> SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf751d7e0 domain <integer_type 0xf751d6c0 type <integer_type 0xf7a4f060 sizetype public unsigned SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf7a4f060 precision:32 min <integer_cst 0xf7426e88 0> max <integer_cst 0xf7426000 4294967295>> SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf751d6c0 precision:32 min <integer_cst 0xf7426e88 0> max <integer_cst 0xf7426e88 0>>> <array_type 0xf751d600 type <integer_type 0xf751d660 a SI size <integer_cst 0xf7426e58 constant 32> unit-size <integer_cst 0xf7426e70 constant 4> user align:16 warn_if_not_align:0 symtab:-144899808 alias-set -1 canonical-type 0xf7a4f3c0 precision:32 min <integer_cst 0xf74370a8 -2147483648> max <integer_cst 0xf74370c0 2147483647>> no-force-blk BLK size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4> user align:16 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf751d7e0 domain <integer_type 0xf751d6c0 type <integer_type 0xf7a4f060 sizetype public unsigned SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf7a4f060 precision:32 min <integer_cst 0xf7426e88 0> max <integer_cst 0xf7426000 4294967295>> SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4> align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf751d6c0 precision:32 min <integer_cst 0xf7426e88 0> max <integer_cst 0xf7426e88 0>>> signal.i:2:1: internal compiler error: 'verify_type' failed 0x980721 verify_type(tree_node const*) ../../src/gcc/tree.c:14727 0x3969e3 gen_type_die_with_usage ../../src/gcc/dwarf2out.c:25498 0x397fe9 gen_type_die ../../src/gcc/dwarf2out.c:25728 0x393fd5 gen_decl_die ../../src/gcc/dwarf2out.c:26399 0x394aed dwarf2out_decl ../../src/gcc/dwarf2out.c:26908 0x394f8f dwarf2out_early_global_decl ../../src/gcc/dwarf2out.c:26565 0x1c59b1 finish_decl(tree_node*, unsigned int, tree_node*, tree_node*, tree_node*) ../../src/gcc/c/c-decl.c:5453 0x223611 c_parser_declaration_or_fndef ../../src/gcc/c/c-parser.c:2336 0x22bbdf c_parser_external_declaration ../../src/gcc/c/c-parser.c:1745 0x22c451 c_parser_translation_unit ../../src/gcc/c/c-parser.c:1618 0x22c451 c_parse_file() ../../src/gcc/c/c-parser.c:21752 0x279abd c_common_parse_file() ../../src/gcc/c-family/c-opts.c:1190 Please submit a full bug report, with preprocessed source if appropriate.
gcc is configured with
--with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --enable-checking=yes,extra,rtl --enable-default-pie
a gcc configured with --enable-checking=release doesn't show this, however segfaults in an unreproducible way in other places.
seen on the gcc-10 branch and trunk 20201003 on arm-linux- gnueabihf. Omitting -g works around the issue.
$ cat signal.i _((aligned( 2)));
typedef int a __attribute_
a b[1];
$ gcc -c -g -O0 signal.i
pointer_ to_this <pointer_type 0xf7a4ff00>>
align: 32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf7a4f060 precision:32 min <integer_cst 0xf7426e88 0> max <integer_cst 0xf7426000 4294967295>>
pointer_ to_this <pointer_type 0xf7a4ff00>>
align: 32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf7a4f060 precision:32 min <integer_cst 0xf7426e88 0> max <integer_cst 0xf7426000 4294967295>>
align: 32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf7a4f060 precision:32 min <integer_cst 0xf7426e88 0> max <integer_cst 0xf7426000 4294967295>> type(tree_ node const*)
../../ src/gcc/ tree.c: 14727 die_with_ usage
../../ src/gcc/ dwarf2out. c:25498
../../ src/gcc/ dwarf2out. c:25728
../../ src/gcc/ dwarf2out. c:26399
../../ src/gcc/ dwarf2out. c:26908 early_global_ decl
../../ src/gcc/ dwarf2out. c:26565 decl(tree_ node*, unsigned int, tree_node*, tree_node*, tree_node*)
../../ src/gcc/ c/c-decl. c:5453 declaration_ or_fndef
../../ src/gcc/ c/c-parser. c:2336 external_ declaration
../../ src/gcc/ c/c-parser. c:1745 translation_ unit
../../ src/gcc/ c/c-parser. c:1618
../../ src/gcc/ c/c-parser. c:21752 parse_file( )
../../ src/gcc/ c-family/ c-opts. c:1190
signal.i:2:1: error: 'TYPE_CANONICAL' is not compatible
2 | a b[1];
| ^
<array_type 0xf751d7e0
type <integer_type 0xf7a4f3c0 int public SI
size <integer_cst 0xf7426e58 constant 32>
unit-size <integer_cst 0xf7426e70 constant 4>
align:32 warn_if_not_align:0 symtab:-144899760 alias-set -1 canonical-type 0xf7a4f3c0 precision:32 min <integer_cst 0xf74370a8 -2147483648> max <integer_cst 0xf74370c0 2147483647>
SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4>
align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf751d7e0
domain <integer_type 0xf751d6c0
type <integer_type 0xf7a4f060 sizetype public unsigned SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4>
SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4>
align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf751d6c0 precision:32 min <integer_cst 0xf7426e88 0> max <integer_cst 0xf7426e88 0>>>
signal.i:2:1: error: 'TYPE_MODE' of 'TYPE_CANONICAL' is not compatible
<array_type 0xf751d7e0
type <integer_type 0xf7a4f3c0 int public SI
size <integer_cst 0xf7426e58 constant 32>
unit-size <integer_cst 0xf7426e70 constant 4>
align:32 warn_if_not_align:0 symtab:-144899760 alias-set -1 canonical-type 0xf7a4f3c0 precision:32 min <integer_cst 0xf74370a8 -2147483648> max <integer_cst 0xf74370c0 2147483647>
SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4>
align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf751d7e0
domain <integer_type 0xf751d6c0
type <integer_type 0xf7a4f060 sizetype public unsigned SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4>
SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4>
align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf751d6c0 precision:32 min <integer_cst 0xf7426e88 0> max <integer_cst 0xf7426e88 0>>>
<array_type 0xf751d600
type <integer_type 0xf751d660 a SI
size <integer_cst 0xf7426e58 constant 32>
unit-size <integer_cst 0xf7426e70 constant 4>
user align:16 warn_if_not_align:0 symtab:-144899808 alias-set -1 canonical-type 0xf7a4f3c0 precision:32 min <integer_cst 0xf74370a8 -2147483648> max <integer_cst 0xf74370c0 2147483647>>
no-force-blk BLK size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4>
user align:16 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf751d7e0
domain <integer_type 0xf751d6c0
type <integer_type 0xf7a4f060 sizetype public unsigned SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4>
SI size <integer_cst 0xf7426e58 32> unit-size <integer_cst 0xf7426e70 4>
align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0xf751d6c0 precision:32 min <integer_cst 0xf7426e88 0> max <integer_cst 0xf7426e88 0>>>
signal.i:2:1: internal compiler error: 'verify_type' failed
0x980721 verify_
0x3969e3 gen_type_
0x397fe9 gen_type_die
0x393fd5 gen_decl_die
0x394aed dwarf2out_decl
0x394f8f dwarf2out_
0x1c59b1 finish_
0x223611 c_parser_
0x22bbdf c_parser_
0x22c451 c_parser_
0x22c451 c_parse_file()
0x279abd c_common_
Please submit a full bug report,
with preprocessed source if appropriate.
gcc is configured with
--with-arch=armv7-a --with- fpu=vfpv3- d16 --with-float=hard --with-mode=thumb checking= yes,extra, rtl default- pie
--enable-
--enable-
a gcc configured with --enable- checking= release doesn't show this, however segfaults in an unreproducible way in other places.