modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/compile/20020701-1.c (about)

     1  /* PR target/7177
     2     Problem with cris-axis-elf: ICE in global.
     3     Origin: hp@axis.com.  */
     4  
     5  typedef __SIZE_TYPE__ size_t;
     6  void f1 (void *);
     7  char *f2 (const char *);
     8  int atoi (const char *);
     9  char *strchr (const char *, int);
    10  int strcmp (const char *, const char *);
    11  size_t strlen (const char *);
    12  typedef enum { A, B, C } t1;
    13  extern const char _v[];
    14  
    15  static t1
    16  f (const char* p1, const char* p2, char p3)
    17  {
    18    char *v1;
    19    char *v2;
    20    char *a;
    21    char *v3;
    22    char *v4;
    23    char *v5;
    24    char *e;
    25    char *v6;
    26    t1 r = C;
    27  
    28    v1 = f2 (p2);
    29    v4 = f2 (p1);
    30  
    31    a = v2 = v1;
    32    e = v5 = v4;
    33    memcpy (&e, &e, sizeof (e));
    34  
    35    v3 = strchr (v2, ',');
    36    v6 = strchr (v5, ',');
    37  
    38    while ((_v + 1)[(unsigned) *a] & 4)
    39      a++;
    40    while ((_v + 1)[(unsigned) *e] & 4)
    41      e++;
    42  
    43    if (a == v3 && e == v6)
    44      {
    45        if (p3)
    46          r = atoi (v5) < atoi (v2) ? B : A;
    47        else
    48          r = atoi (v5) > atoi (v2) ? B : A;
    49        v2 = ++a;
    50        v5 = ++e;
    51        v3 = strchr (v2, ',');
    52        v6 = strchr (v5, ',');
    53  
    54        while ((_v + 1)[(unsigned) *a] & 4)
    55          a++;
    56        while ((_v + 1)[(unsigned) *e] & 4)
    57          e++;
    58  
    59        if (a == v3 && e == v6)
    60          {
    61            if (r == B)
    62              r = B;
    63            else if (p3)
    64              r = atoi (v5) < atoi (v2) ? B : A;
    65            else
    66              r = atoi (v5) > atoi (v2) ? B : A;
    67          }
    68        else
    69          r = C;
    70      }
    71  
    72    f1 (v1);
    73    f1 (v4);
    74    return r;
    75  }