blob: e15c3d9da29becc4a0c44eed41ffdc7b333491dd [file] [log] [blame]
/* { dg-do run } */
/* { dg-options "-O2 -ftree-loop-distribute-patterns" } */
static void
__attribute__((noipa, noinline))
foo (char **values, int ndim, char *needquotes, int *dims)
{
int i;
int j = 0;
int k = 0;
char *retval = (char *)__builtin_malloc(1000);
char *p = retval;
char *tmp;
int indx[111];
#define APPENDSTR(str) (__builtin_strcpy(p, (str)), p += __builtin_strlen(p))
#define APPENDCHAR(ch) (*p++ = (ch), *p = '\0')
APPENDCHAR('{');
for (i = 0; i < ndim; i++)
indx[i] = 0;
do
{
for (i = j; i < ndim - 1; i++)
APPENDCHAR('{');
APPENDSTR(values[k]);
k++;
for (i = ndim - 1; i >= 0; i--)
{
indx[i] = (indx[i] + 1) % dims[i];
if (indx[i])
{
APPENDCHAR(',');
break;
}
else
APPENDCHAR('}');
}
j = i;
} while (j != -1);
if (__builtin_strcmp (retval, "{{{0,1},{2,3}}}") != 0)
__builtin_abort ();
}
int main()
{
char* array[4] = {"0", "1", "2", "3"};
char f[] = {0, 0, 0, 0, 0, 0, 0, 0};
int dims[] = {1, 2, 2};
foo (array, 3, f, dims);
return 0;
}