1  /* { dg-do compile } */
       2  /* { dg-options "-march=rv32gc -mabi=ilp32 -fno-section-anchors" } */
       3  
       4  /* Check for %lo overflow.  Adding an offset larger than the alignment can
       5     overflow if the data is allocated to an address mod 4KB that is between
       6     2KB-offset+1 and 2KB-1.  */
       7  typedef long long int int64_t;
       8  
       9  #pragma pack(push)
      10  #pragma pack(1)
      11  struct S0 {
      12     signed f0 : 4;
      13     const volatile int64_t  f1;
      14     volatile signed f2 : 1;
      15     signed f3 : 31;
      16     unsigned f4 : 8;
      17     signed f5 : 20;
      18     unsigned f6 : 5;
      19  };
      20  #pragma pack(pop)
      21  
      22  struct S0 g_3030 = {0,-9L,-0,-22553,7,-841,1};
      23  
      24  int64_t
      25  sub (void)
      26  {
      27    return g_3030.f1;
      28  }
      29  /* { dg-final { scan-assembler-not "%lo\\(g_3030\\+4\\)" } } */