...instead of attribute "noinline".
For cris-elf, testsuite/gcc.dg/sibcall-3.c and sibcall-4.c "XPASS",
without sibcalls being implemented. On inspection, recurser_void2 is
set to be an assembly-level alias for recurser_void1 as in
".set _recurser_void2,_recurser_void1" for both these cases.
IOW, those "__attribute__((noinline))" should be
"__attribute__((noipa))". The astute reader will notice that I also
adjust test-cases where self-recursion should occur: as mentioned in
sibcall-1.c "self-recursion tail calls are optimized for all targets,
regardless of presence of sibcall patterns". But, that optimization
happens even with "noipa", as observed by the test-cases still passing
for cris-elf after patching. Being of a small mind, I like
consistency, but not all the time, so there's hope.
testsuite:
* gcc.dg/sibcall-1.c, gcc.dg/sibcall-10.c,
gcc.dg/sibcall-2.c, gcc.dg/sibcall-3.c,
gcc.dg/sibcall-4.c, gcc.dg/sibcall-9.c: Replace
attribute "noinline" with "noipa".
void *trackpoint;
-void __attribute__ ((noinline))
+void __attribute__ ((noipa))
track (int n)
{
char stackpos[1];
reasonably sure is to make them have the same contents (regarding the
n tests). */
-static void __attribute__((noinline)) ATTR
+static void __attribute__((noipa)) ATTR
recurser_void1 (void)
{
if (n == 0 || n == 7 || n == 8)
recurser_void2 ();
}
-static void __attribute__((noinline)) ATTR
+static void __attribute__((noipa)) ATTR
recurser_void2 (void)
{
if (n == 0 || n == 7 || n == 8)
void *trackpoint;
-void __attribute__ ((noinline))
+void __attribute__ ((noipa))
track ()
{
char stackpos[1];
void *trackpoint;
-void __attribute__ ((noinline))
+void __attribute__ ((noipa))
track ()
{
char stackpos[1];
reasonably sure is to make them have the same contents (regarding the
n tests). */
-static void __attribute__((noinline)) ATTR
+static void __attribute__((noipa)) ATTR
recurser_void1 (int n)
{
if (n == 0 || n == 7 || n == 8)
recurser_void2 (n + 1);
}
-static void __attribute__((noinline)) ATTR
+static void __attribute__((noipa)) ATTR
recurser_void2 (int n)
{
if (n == 0 || n == 7 || n == 8)
void *trackpoint;
-void __attribute__ ((noinline))
+void __attribute__ ((noipa))
track (int n)
{
char stackpos[1];
reasonably sure is to make them have the same contents (regarding the
n tests). */
-static void __attribute__((noinline)) ATTR
+static void __attribute__((noipa)) ATTR
recurser_void1 (void)
{
if (n == 0 || n == 7 || n == 8)
recurser_void2 ();
}
-static void __attribute__((noinline)) ATTR
+static void __attribute__((noipa)) ATTR
recurser_void2 (void)
{
if (n == 0 || n == 7 || n == 8)
void *trackpoint;
-void __attribute__ ((noinline))
+void __attribute__ ((noipa))
track ()
{
char stackpos[1];
reasonably sure is to make them have the same contents (regarding the
n tests). */
-static void __attribute__((noinline)) ATTR
+static void __attribute__((noipa)) ATTR
recurser_void1 (int n)
{
if (n == 0 || n == 7 || n == 8)
recurser_void2 (n + 1);
}
-static void __attribute__((noinline)) ATTR
+static void __attribute__((noipa)) ATTR
recurser_void2 (int n)
{
if (n == 0 || n == 7 || n == 8)
void *trackpoint;
-void __attribute__ ((noinline))
+void __attribute__ ((noipa))
track (int n)
{
char stackpos[1];