/* { dg-do run } */ /* { dg-skip-if "not implemented" { ! { i?86*-*-* x86_64*-*-* sparc*-*-* aarch64*-*-* nvptx*-*-* s390*-*-* loongarch64*-*-* } } } */ /* { dg-options "-O2" } */ #include int result = 0; int __attribute__((noipa)) __attribute__ ((zero_call_used_regs("skip"))) foo1 (int x) { return (x + 1); } int __attribute__((noipa)) __attribute__ ((zero_call_used_regs("used-gpr-arg"))) foo2 (int x) { return (x + 2); } int __attribute__((noipa)) __attribute__ ((zero_call_used_regs("used-gpr"))) foo3 (int x) { return (x + 3); } int __attribute__((noipa)) __attribute__ ((zero_call_used_regs("used-arg"))) foo4 (int x) { return (x + 4); } int __attribute__((noipa)) __attribute__ ((zero_call_used_regs("used"))) foo5 (int x) { return (x + 5); } int __attribute__((noipa)) __attribute__ ((zero_call_used_regs("all-gpr-arg"))) foo6 (int x) { return (x + 6); } int __attribute__((noipa)) __attribute__ ((zero_call_used_regs("all-gpr"))) foo7 (int x) { return (x + 7); } int __attribute__((noipa)) __attribute__ ((zero_call_used_regs("all-arg"))) foo8 (int x) { return (x + 8); } int __attribute__((noipa)) __attribute__ ((zero_call_used_regs("all"))) foo9 (int x) { return (x + 9); } int main() { result = foo1 (1); result += foo2 (1); result += foo3 (1); result += foo4 (1); result += foo5 (1); result += foo6 (1); result += foo7 (1); result += foo8 (1); result += foo9 (1); assert (result == 54); return 0; }