Fix some testcases after my computed goto patch
For some reason I did not see these failures in my testing. Sorry about that. Anyways this fixes the testcases by adding a cast to __INTPTR_TYPE__ and then a cast to void*. Committed after testing them on x86_64-linux-gnu. gcc/testsuite/ChangeLog: * gcc.c-torture/compile/920826-1.c: Fix computed goto. * gcc.c-torture/compile/pr27863.c: Likewise. * gcc.c-torture/compile/pr70190.c: Likewise. * gcc.dg/torture/pr89135.c: Likewise. * gcc.dg/torture/pr90071.c: Likewise. * gcc.dg/vect/bb-slp-pr97709.c: Likewise.
This commit is contained in:
parent
2da5ec9851
commit
c6dbe7a56d
6 changed files with 6 additions and 6 deletions
|
@ -1,3 +1,3 @@
|
|||
/* { dg-require-effective-target indirect_jumps } */
|
||||
|
||||
f(int*x){goto*(char)*x;}
|
||||
f(int*x){goto*(void*)(__INTPTR_TYPE__)(char)*x;}
|
||||
|
|
|
@ -27,5 +27,5 @@ _loc66:;
|
|||
*++esp=(long)&&_loc119;
|
||||
_loc119:;
|
||||
SetTermStruc:
|
||||
goto *(*esp--);
|
||||
goto *(void*)(__INTPTR_TYPE__)(*esp--);
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ fn1 ()
|
|||
static char a[] = "foo";
|
||||
static void *b[] = { &&l1, &&l2 };
|
||||
goto *(b[1]);
|
||||
l1: goto *(a[0]);
|
||||
l1: goto *(void*)(__INTPTR_TYPE__)(a[0]);
|
||||
l2: return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ h:
|
|||
g = foo ();
|
||||
*o = g;
|
||||
if (c)
|
||||
goto *d;
|
||||
goto *(void*)d;
|
||||
}
|
||||
}
|
||||
goto *i;
|
||||
|
|
|
@ -21,6 +21,6 @@ h: ++e;
|
|||
goto i;
|
||||
}
|
||||
f:
|
||||
goto *({ d || e < 0 || e >= 2; });
|
||||
goto *(void*)(__INTPTR_TYPE__)({ d || e < 0 || e >= 2; });
|
||||
&e;
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ e()
|
|||
void *f[] = {&&g, &&h, &&i, &&j};
|
||||
int d, c;
|
||||
j:
|
||||
goto *a;
|
||||
goto *(void*)(__INTPTR_TYPE__)a;
|
||||
g:
|
||||
d = 0;
|
||||
h:
|
||||
|
|
Loading…
Add table
Reference in a new issue