1224090Sdougb/* This caused an ICE on s390 due to incorrect secondary
2234010Sdougb   output reloads.  */
3224090Sdougb
4224090Sdougb/* { dg-do compile } */
5224090Sdougb/* { dg-options "-O2 -fprofile-generate" } */
6224090Sdougb
7224090Sdougbchar *
8224090Sdougbtest(char *ret, int *counter, void *schema,
9224090Sdougb     const char* name, const char *namespace,
10224090Sdougb     void *node, int topLevel)
11224090Sdougb{
12224090Sdougb  char buf[30];
13224090Sdougb  int val;
14224090Sdougb
15224090Sdougb  if (counter == 0) return 0;
16234010Sdougb  if (schema == 0) return 0;
17224090Sdougb  if (name == 0) return 0;
18224090Sdougb
19224090Sdougb  __builtin_memset (ret, 0, 100);
20224090Sdougb  lookup (schema, name, -1);
21224090Sdougb  val = hash (schema, name, namespace, name, ret);
22224090Sdougb  if (val == 0) return ret;
23224090Sdougb
24224090Sdougb  if (topLevel != 0)
25224090Sdougb    {
26224090Sdougb      error (1, 0, 0, node, "%s", name);
27224090Sdougb      return 0;
28224090Sdougb    }
29224090Sdougb
30224090Sdougb  __snprintf_chk (buf, 29, 1, 30, "#eCont %d", ++*counter);
31234010Sdougb  val = hash (schema, name, buf, namespace, ret);
32224090Sdougb  if (val == 0) return ret;
33224090Sdougb
34234010Sdougb  error (1, 0, 0, node, "%s", name);
35224090Sdougb  return 0;
36224090Sdougb}
37224090Sdougb