(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
builtin-object-size-7.c
       1  /* { dg-do run } */
       2  /* { dg-options "-O2" } */
       3  
       4  #include "builtin-object-size-common.h"
       5  
       6  struct A
       7  {
       8    int i, j, k;
       9    char buf[255];
      10    int l, m, n, o;
      11  };
      12  
      13  int
      14  main (void)
      15  {
      16    const size_t s = sizeof (struct A);
      17    const size_t o = __builtin_offsetof (struct A, buf);
      18    struct A *a = malloc (s);
      19    struct A *b = malloc (o + 212);
      20    if (__builtin_object_size (a->buf, 0) != s - o)
      21      FAIL ();
      22    if (__builtin_object_size (a->buf, 1) != sizeof (a->buf))
      23      FAIL ();
      24    if (__builtin_object_size (a->buf, 2) != s - o)
      25      FAIL ();
      26    if (__builtin_object_size (a->buf, 3) != sizeof (a->buf))
      27      FAIL ();
      28    if (__builtin_object_size (&a->buf[0], 0) != s - o)
      29      FAIL ();
      30    if (__builtin_object_size (&a->buf[0], 1) != sizeof (a->buf))
      31      FAIL ();
      32    if (__builtin_object_size (&a->buf[0], 2) != s - o)
      33      FAIL ();
      34    if (__builtin_object_size (&a->buf[0], 3) != sizeof (a->buf))
      35      FAIL ();
      36    if (__builtin_object_size (&a->buf[6], 0) != s - o - 6)
      37      FAIL ();
      38    if (__builtin_object_size (&a->buf[6], 1) != sizeof (a->buf) - 6)
      39      FAIL ();
      40    if (__builtin_object_size (&a->buf[6], 2) != s - o - 6)
      41      FAIL ();
      42    if (__builtin_object_size (&a->buf[6], 3) != sizeof (a->buf) - 6)
      43      FAIL ();
      44    if (__builtin_object_size (b->buf, 0) != 212)
      45      FAIL ();
      46    if (__builtin_object_size (b->buf, 1) != 212)
      47      FAIL ();
      48    if (__builtin_object_size (b->buf, 2) != 212)
      49      FAIL ();
      50    if (__builtin_object_size (b->buf, 3) != 212)
      51      FAIL ();
      52    if (__builtin_object_size (&b->buf[0], 0) != 212)
      53      FAIL ();
      54    if (__builtin_object_size (&b->buf[0], 1) != 212)
      55      FAIL ();
      56    if (__builtin_object_size (&b->buf[0], 2) != 212)
      57      FAIL ();
      58    if (__builtin_object_size (&b->buf[0], 3) != 212)
      59      FAIL ();
      60    if (__builtin_object_size (&b->buf[28], 0) != 212 - 28)
      61      FAIL ();
      62    if (__builtin_object_size (&b->buf[28], 1) != 212 - 28)
      63      FAIL ();
      64    if (__builtin_object_size (&b->buf[28], 2) != 212 - 28)
      65      FAIL ();
      66    if (__builtin_object_size (&b->buf[28], 3) != 212 - 28)
      67      FAIL ();
      68    DONE ();
      69  }