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

            Bug ID: 119717
           Summary: ICE in gimplify_expr, at gimplify.cc:20339 due to
                    counted_by attribute
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: qinzhao at gcc dot gnu.org
  Target Milestone: ---

for the following small testing case:
[]$ cat t3.c
#include <stdlib.h>
#include <stddef.h>

struct annotated {
  size_t count;
  [[gnu::counted_by(count)]] char array[];
};

[[gnu::noinline,gnu::noipa]]
static size_t 
size_of (bool x, struct annotated *a)
{
  char *p = (x ? a : 0)->array;
  return __builtin_dynamic_object_size (p, 1);
}

int main()
{
  struct annotated *p = malloc(sizeof *p);
  p->count = 0;
  __builtin_printf ("the bdos whole is %ld\n", size_of (0, p));
  return 0;
}
with latest trunk GCC:

gcc -O2 -Wall t3.c
t3.c: In function ‘size_of’:
t3.c:13:16: internal compiler error: in gimplify_expr, at gimplify.cc:20339
   13 |   char *p = (x ? a : 0)->array;
      |                ^
0x22c9777 internal_error(char const*, ...)
        ../../latest-gcc-write/gcc/diagnostic-global-context.cc:517
0x80fecf fancy_abort(char const*, int, char const*)
        ../../latest-gcc-write/gcc/diagnostic.cc:1749
0xc6cdef gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
        ../../latest-gcc-write/gcc/gimplify.cc:20339
0xc6f17f gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
        ../../latest-gcc-write/gcc/gimplify.cc:20309
0xc898e3 gimplify_cond_expr
        ../../latest-gcc-write/gcc/gimplify.cc:5569
0xc6e51b gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
        ../../latest-gcc-write/gcc/gimplify.cc:19442
0xc704d3 gimplify_stmt(tree_node**, gimple**)
        ../../latest-gcc-write/gcc/gimplify.cc:8454
0xc89767 gimplify_cond_expr
        ../../latest-gcc-write/gcc/gimplify.cc:5529
0xc6e51b gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
        ../../latest-gcc-write/gcc/gimplify.cc:19442
0xc6e747 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
        ../../latest-gcc-write/gcc/gimplify.cc:19609
0xc774a7 gimplify_compound_lval
        ../../latest-gcc-write/gcc/gimplify.cc:3571
0xc6d327 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
        ../../latest-gcc-write/gcc/gimplify.cc:19437
0xc79ffb gimplify_addr_expr
        ../../latest-gcc-write/gcc/gimplify.cc:7777
0xc6ebb3 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
        ../../latest-gcc-write/gcc/gimplify.cc:19535
0xc85c5b gimplify_expr
        ../../latest-gcc-write/gcc/gimplify.cc:20593
0xc85c5b gimplify_arg(tree_node**, gimple**, unsigned long, bool)
        ../../latest-gcc-write/gcc/gimplify.cc:3832
0xc8cc07 gimplify_modify_expr
        ../../latest-gcc-write/gcc/gimplify.cc:7453
0xc6da0b gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*),
int)
        ../../latest-gcc-write/gcc/gimplify.cc:19488
0xc704d3 gimplify_stmt(tree_node**, gimple**)
        ../../latest-gcc-write/gcc/gimplify.cc:8454
0xc885ab gimplify_and_add(tree_node*, gimple**)
        ../../latest-gcc-write/gcc/gimplify.cc:547
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
t: line 13: 2983087 Segmentation fault      (core dumped) ./a.out
139

Reply via email to