https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82050
Bug ID: 82050 Summary: ICE on invalid code on x86_64-linux-gnu in column_range, at diagnostic-show-locus.c:1403 Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: helloqirun at gmail dot com Target Milestone: --- The testcase is a bit large. $ 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 20170830 (experimental) [trunk revision 251530] (GCC) $ gcc-trunk abc.c <snipped error message> abc.c:14:58: internal compiler error: in column_range, at diagnostic-show-locus.c:1403 unsigned long long int var_257 = (unsigned long long int) (((8105967947593530303L) | 0) << ((((7049221881134420491ULL) * ((unsigned long long int) (0 ((signed char) 0)) * ((unsigned long long int) (~((8866130261576365991L) / ((long int) (0 (var_255))))))) * ((((unsigned long long int) ((var_253) * (var_83))) * (((13003573118678480506ULL) * ((unsigned long long int) (7295088625879320774L))) * ((unsigned long long int) (!((int) (struct_obj_5.member_1_5)))))) * (((((unsigned long long int) ((int) (struct_obj_5.member_1_6))) * (struct_obj_2.member_1_5)) * (((unsigned long long int) ((int) (var_130))) * (struct_obj_2.member_1_5))) * ((((unsigned long long int) ((int) (var_252))) * (struct_obj_1.member_1_0)) * (((((((unsigned long long int) (struct_obj_3.member_1_4)) & (struct_obj_4.member_1_5)) & (((unsigned long long int) (struct_obj_3.member_1_2)) & (12929547516806536054ULL))) & ((unsigned long long int) ((long int) (struct_obj_1.member_1_4)))) & (((~(var_128)) & ((var_128) ^ (struct_obj_3.member_1_5))) | ((unsigned long long int) ((int) ((signed char) ((var_253) & ((unsigned long long int) (struct_obj_3.member_1_3)))))))) ^ (((unsigned long long int) ((long int) (((long int) ((int) ((signed char) (-113)))) & ((162326598973762782L) & ((long int) ((int) (var_255))))))) ^ (((unsigned long long int) ((long int) (((long int) ((int) (115))) ^ (struct_obj_4.member_1_3)))) & (((struct_obj_2.member_1_0) | (2855696530460496134ULL)) & ((unsigned long long int) (~(var_129)))))))))))) << ((((((unsigned long long int) (struct_obj_1.member_1_3)) ^ (struct_obj_6.member_1_1)) << ((((int) 0) | ((int) 0)) - (68))) - (13835058055282163711ULL)) - (1ULL)))) == ((unsigned long long int) ((int) ((((int) ((((7049221881134420491ULL) * ((unsigned long long int) ((int) ((signed char) ((var_254) / (var_254)))))) * ((unsigned long long int) (~((8866130261576365991L) / ((long int) ((int) (var_255))))))) * ((((unsigned long long int) ((var_253) * (var_257))) * (((13003573118678480506ULL) * ((unsigned long long int) (7295088625879320774L))) * ((unsigned long long int) (!((int) (struct_obj_5.member_1_5)))))) * (((((unsigned long long int) ((int) (struct_obj_5.member_1_6))) * (struct_obj_2.member_1_5)) * (((unsigned long long int) ((int) (var_252))) * (struct_obj_2.member_1_5))) * ((((unsigned long long int) ((int) (var_255))) * (struct_obj_1.member_1_0)) * (((((((unsigned long long int) (struct_obj_3.member_1_4)) & (struct_obj_4.member_1_5)) & (((unsigned long long int) (struct_obj_3.member_1_2)) & (12929547516806536054ULL))) & ((unsigned long long int) ((long int) (struct_obj_1.member_1_4)))) & (((~(var_257)) & ((var_128) ^ (struct_obj_3.member_1_5))) | ((unsigned long long int) ((int) ((signed char) ((var_256) & ((unsigned long long int) (struct_obj_3.member_1_3)))))))) ^ (((unsigned long long int) ((long int) (((long int) ((int) ((signed char) (-113)))) & ((162326598973762782L) & ((long int) ((int) (var_255))))))) ^ (((unsigned long long int) ((long int) (((long int) ((int) (115))) ^ (struct_obj_4.member_1_3)))) & (((struct_obj_2.member_1_0) | (2855696530460496134ULL)) & ((unsigned long long int) (~(var_254)))))))))))) && ((int) (((unsigned long long int) (-(var_129))) == (((((((unsigned long long int) (struct_obj_3.member_1_4)) & (struct_obj_4.member_1_5)) & (((unsigned long long int) (struct_obj_3.member_1_2)) & (12929547516806536054ULL))) & ((unsigned long long int) ((long int) (struct_obj_1.member_1_4)))) & (((~(var_256)) & ((var_84) ^ (struct_obj_3.member_1_5))) | ((unsigned long long int) ((int) ((signed char) ((var_83) & ((unsigned long long int) (struct_obj_3.member_1_3)))))))) ^ (((unsigned long long int) ((long int) (((long int) ((int) ((signed char) (-113)))) & ((162326598973762782L) & ((long int) ((int) (var_130))))))) ^ (((unsigned long long int) ((long int) (((long int) ((int) (115))) ^ (struct_obj_4.member_1_3)))) & (((struct_obj_2.member_1_0) | (2855696530460496134ULL)) & ((unsigned long long int) (~(var_129)))))))))) > (((int) (((4865731590391484303ULL) + (struct_obj_1.member_1_100 ^~~~~~~~ 0x849203 column_range ../../gcc/gcc/diagnostic-show-locus.c:1403 0x14677f8 column_range ../../gcc/gcc/diagnostic-show-locus.c:1424 0x14677f8 get_affected_columns ../../gcc/gcc/diagnostic-show-locus.c:1423 0x1467a9b add_hint ../../gcc/gcc/diagnostic-show-locus.c:1600 0x146a7fc print_trailing_fixits ../../gcc/gcc/diagnostic-show-locus.c:1687 0x146a7fc print_line ../../gcc/gcc/diagnostic-show-locus.c:1909 0x146a7fc diagnostic_show_locus(diagnostic_context*, rich_location*, diagnostic_t) ../../gcc/gcc/diagnostic-show-locus.c:1978 0x915037 c_diagnostic_finalizer ../../gcc/gcc/c-family/c-opts.c:166 0x1464a81 diagnostic_report_diagnostic(diagnostic_context*, diagnostic_info*) ../../gcc/gcc/diagnostic.c:979 0x1464d4e diagnostic_impl ../../gcc/gcc/diagnostic.c:1099 0x1465804 error_at_rich_loc(rich_location*, char const*, ...) ../../gcc/gcc/diagnostic.c:1372 0x882b35 build_component_ref(unsigned int, tree_node*, tree_node*, unsigned int) ../../gcc/gcc/c/c-typeck.c:2410 0x8acf62 c_parser_postfix_expression_after_primary ../../gcc/gcc/c/c-parser.c:8715 0x89df7a c_parser_postfix_expression ../../gcc/gcc/c/c-parser.c:8489 0x8a6f32 c_parser_unary_expression ../../gcc/gcc/c/c-parser.c:7316 0x8a7daf c_parser_cast_expression ../../gcc/gcc/c/c-parser.c:7148 0x8a7fd8 c_parser_binary_expression ../../gcc/gcc/c/c-parser.c:6954 0x8a8db5 c_parser_conditional_expression ../../gcc/gcc/c/c-parser.c:6692 0x8a93c0 c_parser_expr_no_commas ../../gcc/gcc/c/c-parser.c:6609 0x8a9612 c_parser_expression ../../gcc/gcc/c/c-parser.c:8827 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 typedef struct { } struct_1; typedef struct { struct_1 member_2_6; } struct_2; struct_2 struct_obj_1, struct_obj_2, struct_obj_5, struct_obj_6; struct_1 struct_obj_4; fn1() { ((int)struct_obj_6.member_1_1)((int)struct_obj_5.member_1_6)( struct_obj_1.member_1_5 - 0)(struct_obj_1.member_1_20 * struct_obj_1.member_1_5)(0 * struct_obj_1.member_1_5)( struct_obj_4.member_1_100((int)struct_obj_5.member_1_6))( struct_obj_5.member_1_10 & struct_obj_2.member_1_0 | struct_obj_5.member_1_2 & 0); unsigned long long int var_257 = (unsigned long long int) (((8105967947593530303L) | 0) << ((((7049221881134420491ULL) * ((unsigned long long int) (0 ((signed char) 0)) * ((unsigned long long int) (~((8866130261576365991L) / ((long int) (0 (var_255))))))) * ((((unsigned long long int) ((var_253) * (var_83))) * (((13003573118678480506ULL) * ((unsigned long long int) (7295088625879320774L))) * ((unsigned long long int) (!((int) (struct_obj_5.member_1_5)))))) * (((((unsigned long long int) ((int) (struct_obj_5.member_1_6))) * (struct_obj_2.member_1_5)) * (((unsigned long long int) ((int) (var_130))) * (struct_obj_2.member_1_5))) * ((((unsigned long long int) ((int) (var_252))) * (struct_obj_1.member_1_0)) * (((((((unsigned long long int) (struct_obj_3.member_1_4)) & (struct_obj_4.member_1_5)) & (((unsigned long long int) (struct_obj_3.member_1_2)) & (12929547516806536054ULL))) & ((unsigned long long int) ((long int) (struct_obj_1.member_1_4)))) & (((~(var_128)) & ((var_128) ^ (struct_obj_3.member_1_5))) | ((unsigned long long int) ((int) ((signed char) ((var_253) & ((unsigned long long int) (struct_obj_3.member_1_3)))))))) ^ (((unsigned long long int) ((long int) (((long int) ((int) ((signed char) (-113)))) & ((162326598973762782L) & ((long int) ((int) (var_255))))))) ^ (((unsigned long long int) ((long int) (((long int) ((int) (115))) ^ (struct_obj_4.member_1_3)))) & (((struct_obj_2.member_1_0) | (2855696530460496134ULL)) & ((unsigned long long int) (~(var_129)))))))))))) << ((((((unsigned long long int) (struct_obj_1.member_1_3)) ^ (struct_obj_6.member_1_1)) << ((((int) 0) | ((int) 0)) - (68))) - (13835058055282163711ULL)) - (1ULL)))) == ((unsigned long long int) ((int) ((((int) ((((7049221881134420491ULL) * ((unsigned long long int) ((int) ((signed char) ((var_254) / (var_254)))))) * ((unsigned long long int) (~((8866130261576365991L) / ((long int) ((int) (var_255))))))) * ((((unsigned long long int) ((var_253) * (var_257))) * (((13003573118678480506ULL) * ((unsigned long long int) (7295088625879320774L))) * ((unsigned long long int) (!((int) (struct_obj_5.member_1_5)))))) * (((((unsigned long long int) ((int) (struct_obj_5.member_1_6))) * (struct_obj_2.member_1_5)) * (((unsigned long long int) ((int) (var_252))) * (struct_obj_2.member_1_5))) * ((((unsigned long long int) ((int) (var_255))) * (struct_obj_1.member_1_0)) * (((((((unsigned long long int) (struct_obj_3.member_1_4)) & (struct_obj_4.member_1_5)) & (((unsigned long long int) (struct_obj_3.member_1_2)) & (12929547516806536054ULL))) & ((unsigned long long int) ((long int) (struct_obj_1.member_1_4)))) & (((~(var_257)) & ((var_128) ^ (struct_obj_3.member_1_5))) | ((unsigned long long int) ((int) ((signed char) ((var_256) & ((unsigned long long int) (struct_obj_3.member_1_3)))))))) ^ (((unsigned long long int) ((long int) (((long int) ((int) ((signed char) (-113)))) & ((162326598973762782L) & ((long int) ((int) (var_255))))))) ^ (((unsigned long long int) ((long int) (((long int) ((int) (115))) ^ (struct_obj_4.member_1_3)))) & (((struct_obj_2.member_1_0) | (2855696530460496134ULL)) & ((unsigned long long int) (~(var_254)))))))))))) && ((int) (((unsigned long long int) (-(var_129))) == (((((((unsigned long long int) (struct_obj_3.member_1_4)) & (struct_obj_4.member_1_5)) & (((unsigned long long int) (struct_obj_3.member_1_2)) & (12929547516806536054ULL))) & ((unsigned long long int) ((long int) (struct_obj_1.member_1_4)))) & (((~(var_256)) & ((var_84) ^ (struct_obj_3.member_1_5))) | ((unsigned long long int) ((int) ((signed char) ((var_83) & ((unsigned long long int) (struct_obj_3.member_1_3)))))))) ^ (((unsigned long long int) ((long int) (((long int) ((int) ((signed char) (-113)))) & ((162326598973762782L) & ((long int) ((int) (var_130))))))) ^ (((unsigned long long int) ((long int) (((long int) ((int) (115))) ^ (struct_obj_4.member_1_3)))) & (((struct_obj_2.member_1_0) | (2855696530460496134ULL)) & ((unsigned long long int) (~(var_129)))))))))) > (((int) (((4865731590391484303ULL) + (struct_obj_1.member_1_100