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

            Bug ID: 82872
           Summary: [6/7/8 Regression] ICE in ignore_overflows on an
                    out-of-bounds index in constexpr
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

The following program causes an ICE.  The likely culprit is r180986 committed
in the GCC 4.7.0 cycle.

$ cat t.C && gcc -S -Wall -Wextra t.C
#include <stddef.h>

constexpr int f ()
{
  struct S { int i, a[1]; };

  return offsetof (S, a[__PTRDIFF_MAX__]);
}

constexpr int i = f ();
In file included from t.C:1:0:
t.C: In function ‘constexpr int f()’:
t.C:7:10: internal compiler error: in ignore_overflows, at cp/cvt.c:583
   return offsetof (S, a[__PTRDIFF_MAX__]);
          ^~~~~~~~
0x7fb263 ignore_overflows
        /ssd/src/gcc/git/gcc/cp/cvt.c:583
0x7fbdd1 ocp_convert(tree_node*, tree_node*, int, int, int)
        /ssd/src/gcc/git/gcc/cp/cvt.c:817
0x7fda55 convert(tree_node*, tree_node*)
        /ssd/src/gcc/git/gcc/cp/cvt.c:1580
0x9c041e fold_offsetof(tree_node*)
        /ssd/src/gcc/git/gcc/c-family/c-common.c:6223
0x93d5ee finish_offsetof(tree_node*, tree_node*, unsigned int)
        /ssd/src/gcc/git/gcc/cp/semantics.c:4038
0x8a0e05 cp_parser_builtin_offsetof
        /ssd/src/gcc/git/gcc/cp/parser.c:9930
0x897a31 cp_parser_primary_expression
        /ssd/src/gcc/git/gcc/cp/parser.c:5335
0x89b2ef cp_parser_postfix_expression
        /ssd/src/gcc/git/gcc/cp/parser.c:7022
0x89e4de cp_parser_unary_expression
        /ssd/src/gcc/git/gcc/cp/parser.c:8363
0x89f4e8 cp_parser_cast_expression
        /ssd/src/gcc/git/gcc/cp/parser.c:9131
0x89f5d8 cp_parser_binary_expression
        /ssd/src/gcc/git/gcc/cp/parser.c:9232
0x8a0204 cp_parser_assignment_expression
        /ssd/src/gcc/git/gcc/cp/parser.c:9519
0x8a0585 cp_parser_expression
        /ssd/src/gcc/git/gcc/cp/parser.c:9688
0x8a586a cp_parser_jump_statement
        /ssd/src/gcc/git/gcc/cp/parser.c:12474
0x8a2959 cp_parser_statement
        /ssd/src/gcc/git/gcc/cp/parser.c:10897
0x8a3612 cp_parser_statement_seq_opt
        /ssd/src/gcc/git/gcc/cp/parser.c:11348
0x8a3508 cp_parser_compound_statement
        /ssd/src/gcc/git/gcc/cp/parser.c:11302
0x8b4a3f cp_parser_function_body
        /ssd/src/gcc/git/gcc/cp/parser.c:21839
0x8b4b4a cp_parser_ctor_initializer_opt_and_function_body
        /ssd/src/gcc/git/gcc/cp/parser.c:21874
0x8bc809 cp_parser_function_definition_after_declarator
        /ssd/src/gcc/git/gcc/cp/parser.c:26765
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.

Reply via email to