http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48774
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-04-30
16:14:52 UTC ---
Tiny bit more simplified, without the GRAPH_IS_EDGE and related macros:
unsigned long int s[12][2]
= { { 12, 2114 }, { 12, 37 }, { 12, 1034 }, { 12, 532 },
{ 12, 296 }, { 12, 82 }, { 12, 161 }, { 12, 2368 },
{ 12, 656 }, { 12, 1288 }, { 12, 2564 }, { 12, 1153 } };
struct { int n; unsigned long *edges[12]; } g
= { 12, { &s[0][1], &s[1][1], &s[2][1], &s[3][1],
&s[4][1], &s[5][1], &s[6][1], &s[7][1],
&s[8][1], &s[9][1], &s[10][1], &s[11][1] } };
int
main ()
{
int i, j, v, a[12], c[12], e = 0;
for (i = 0; i < 12; i++)
c[i] = 0;
for (i = 0; i < g.n; i++)
for (j = 0; j < g.n; j++)
{
if (i == j && j < g.edges[0][-1] && (g.edges[i][0] & (1UL << j)))
__builtin_exit (0);
if (j < g.edges[0][-1] && (g.edges[i][0] & (1UL << j)))
c[i]++;
}
for (i = 0; i < 12; i++)
if (c[i] != 3)
__builtin_abort ();
for (v = 0; v < 2; v++)
{
__builtin_memset (a, 0, 12 * sizeof (int));
for (i = 0; i < 12; i++)
if (a[i])
e = i;
}
return e;
}