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

Reply via email to