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

            Bug ID: 82765
           Summary: ICE at -Os on valid code on x86_64-linux-gnu: in
                    tree_to_shwi, at tree.c:6611
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: helloqirun at gmail dot com
  Target Milestone: ---

It happens at -Os and in 64-bit mode only.

$ gcc-trunk -v
Using built-in specs.
COLLECT_GCC=gcc-trunk
COLLECT_LTO_WRAPPER=/home/absozero/trunk/root-gcc/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc/configure --prefix=/home/absozero/trunk/root-gcc
--enable-languages=c,c++ --disable-werror --enable-multilib
Thread model: posix
gcc version 8.0.0 20171028 (experimental) [trunk revision 254197] (GCC) 



$ gcc-trunk -Os abc.c
abc.c: In function ‘main’:
abc.c:2:26: warning: initialization of ‘int *’ from incompatible pointer type
‘int (*)[1]’ [-Wincompatible-pointer-types]
 int main() { int *b[] = {a, a[1820408606019012862278468], a, a, a}; }
                          ^
abc.c:2:26: note: (near initialization for ‘b[0]’)
abc.c:2:31: warning: integer constant is too large for its type
 int main() { int *b[] = {a, a[1820408606019012862278468], a, a, a}; }
                               ^~~~~~~~~~~~~~~~~~~~~~~~~
abc.c:2:59: warning: initialization of ‘int *’ from incompatible pointer type
‘int (*)[1]’ [-Wincompatible-pointer-types]
 int main() { int *b[] = {a, a[1820408606019012862278468], a, a, a}; }
                                                           ^
abc.c:2:59: note: (near initialization for ‘b[2]’)
abc.c:2:62: warning: initialization of ‘int *’ from incompatible pointer type
‘int (*)[1]’ [-Wincompatible-pointer-types]
 int main() { int *b[] = {a, a[1820408606019012862278468], a, a, a}; }
                                                              ^
abc.c:2:62: note: (near initialization for ‘b[3]’)
abc.c:2:65: warning: initialization of ‘int *’ from incompatible pointer type
‘int (*)[1]’ [-Wincompatible-pointer-types]
 int main() { int *b[] = {a, a[1820408606019012862278468], a, a, a}; }
                                                                 ^
abc.c:2:65: note: (near initialization for ‘b[4]’)
abc.c:2:19: internal compiler error: in tree_to_shwi, at tree.c:6611
 int main() { int *b[] = {a, a[1820408606019012862278468], a, a, a}; }
                   ^
0xec4467 tree_to_shwi(tree_node const*)
        ../../gcc/gcc/tree.c:6611
0xf1c62d decode_addr_const
        ../../gcc/gcc/varasm.c:2897
0xf1d807 const_hash_1
        ../../gcc/gcc/varasm.c:3038
0xf1d90e const_hash_1
        ../../gcc/gcc/varasm.c:3068
0xf1da1b const_hash_1
        ../../gcc/gcc/varasm.c:3028
0xf1dc42 tree_output_constant_def(tree_node*)
        ../../gcc/gcc/varasm.c:3545
0xa4d1ff gimplify_init_constructor
        ../../gcc/gcc/gimplify.c:4801
0xa4e134 gimplify_modify_expr_rhs
        ../../gcc/gcc/gimplify.c:5128
0xa4e779 gimplify_modify_expr
        ../../gcc/gcc/gimplify.c:5471
0xa412e9 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
        ../../gcc/gcc/gimplify.c:11334
0xa44248 gimplify_stmt(tree_node**, gimple**)
        ../../gcc/gcc/gimplify.c:6550
0xa48283 gimplify_and_add(tree_node*, gimple**)
        ../../gcc/gcc/gimplify.c:440
0xa48283 gimplify_decl_expr
        ../../gcc/gcc/gimplify.c:1681
0xa403f2 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
        ../../gcc/gcc/gimplify.c:11530
0xa44248 gimplify_stmt(tree_node**, gimple**)
        ../../gcc/gcc/gimplify.c:6550
0xa452ee gimplify_bind_expr
        ../../gcc/gcc/gimplify.c:1292
0xa411e2 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
        ../../gcc/gcc/gimplify.c:11534
0xa44248 gimplify_stmt(tree_node**, gimple**)
        ../../gcc/gcc/gimplify.c:6550
0xa3fcc3 gimplify_statement_list
        ../../gcc/gcc/gimplify.c:1734
0xa3fcc3 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
        ../../gcc/gcc/gimplify.c:11762
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.



$ cat abc.c
int a[1][1];
int main() { int *b[] = {a, a[1820408606019012862278468], a, a, a}; }

Reply via email to