blob: 9ef4eac93a7fd707be66519231407fba49334a6e [file] [log] [blame]
/* { dg-do run } */
/* { dg-options "-g -fno-ipa-icf" } */
void __attribute__((noipa))
use (int x)
{
asm volatile ("" : : "r" (x) : "memory");
}
static int __attribute__((noinline))
bar (int i, int k)
{
asm ("" : "+r" (i));
use (i); /* { dg-final { gdb-test . "k" "3" { xfail { ! { aarch64*-*-* && { any-opts "-O0" "-O1" "-Og" } } } } } } */
return 6;
}
volatile int v;
static int __attribute__((noinline))
foo (int i, int k)
{
int r;
v = 9;
k = (k + 14)/k;
r = bar (i, k); /* { dg-final { gdb-test . "k" "3" } } */
return r;
}
volatile int v;
int __attribute__((noipa))
get_val1 (void) {return 20;}
int __attribute__((noipa))
get_val2 (void) {return 7;}
int
main (void)
{
int k = get_val2 ();
int r = foo (get_val1 (), k);
v = r + k; /* k has to live accross the call or all is probably lost */
return 0;
}