/* { dg-do compile { target R_flag_in_section } } */
/* { dg-final { scan-assembler ".text.*,\"axR\"" } } */
/* { dg-final { scan-assembler ".bss.*,\"awR\"" } } */
/* { dg-final { scan-assembler ".data.*,\"awR\"" } } */
/* { dg-final { scan-assembler ".rodata.*,\"aR\"" } } */
/* { dg-final { scan-assembler ".data.used_foo_sec,\"awR\"" } } */

void __attribute__((used,retain)) used_fn (void) { }
void unused_fn (void) { }
void __attribute__((hot,used,retain)) used_hot_fn (void) { }
void __attribute__((hot)) unused_hot_fn (void) { }
void __attribute__((cold,used,retain)) used_cold_fn (void) { }
void __attribute__((cold)) unused_cold_fn (void) { }
int __attribute__((used,retain)) used_bss = 0;
int __attribute__((used,retain)) used_data = 1;
const int __attribute__((used,retain)) used_rodata = 2;
int __attribute__((used,retain)) used_comm;
static int __attribute__((used,retain)) used_lcomm;

int unused_bss = 0;
int unused_data = 1;
const int unused_rodata = 2;
int unused_comm;
static int unused_lcomm;

/* Test switching back to the used,retained sections.  */
void __attribute__((used,retain)) used_fn2 (void) { }
int __attribute__((used,retain)) used_bss2 = 0;
int __attribute__((used,retain)) used_data2 = 1;
const int __attribute__((used,retain)) used_rodata2 = 2;
int __attribute__((used,retain)) used_comm2;
static int __attribute__((used,retain)) used_lcomm2;

int __attribute__((used,retain,section(".data.used_foo_sec"))) used_foo = 2;
