(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
nios2/
pr92499-2.c
       1  /* PR target/92499 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -mgpopt=global -G8" } */
       4  
       5  /* Check placement and addressing of flexibly-sized objects with external
       6     linkage.  */
       7  
       8  enum { size = 100 };
       9  
      10  struct flexible
      11  {
      12    int length;
      13    int data[];
      14  };
      15  
      16  extern struct flexible global_flexible;
      17  struct flexible global_flexible =
      18    {
      19      .data = { [size - 1] = 0, }
      20    };
      21  
      22  extern struct flexible global_flexible_nonzero;
      23  struct flexible global_flexible_nonzero =
      24    {
      25      .length = size,
      26      .data = { [size - 1] = 0, }
      27    };
      28  
      29  struct flexible *
      30  get_global_flexible (void)
      31  {
      32    return &global_flexible;
      33  }
      34  
      35  struct flexible *
      36  get_global_flexible_nonzero (void)
      37  {
      38    return &global_flexible_nonzero;
      39  }
      40  
      41  /* To preserve ABI compatibility we place the flexibly-sized objects in
      42     small data sections.  */
      43  
      44  /* { dg-final { scan-assembler-times "\\.sdata" 1 } } */
      45  /* { dg-final { scan-assembler-times "\\.sbss" 1 } } */