/* { dg-do compile } */ | |
/* { dg-options "-O2 -fdump-tree-tailc-details" } */ | |
/* Test provided by Richard Earnshaw in PR 14312. */ | |
void bar (int i); | |
void baz (int *); | |
void | |
foo (int *x) | |
{ | |
if (*x < 0) | |
{ | |
baz (x); | |
return; | |
} | |
bar (*x); | |
} | |
/* The test has no local call-clobbered variables. Only the memory | |
tag for 'x' is call-clobbered. And since tags are not real | |
variables, they ought to be ignored. There should be two tail | |
calls here. */ | |
/* { dg-final { scan-tree-dump-times "Found tail call" 2 "tailc"} } */ |