diff options
author | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
---|---|---|
committer | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
commit | 554fd8c5195424bdbcabf5de30fdc183aba391bd (patch) | |
tree | 976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/gcc.c-torture/compile/20020701-1.c | |
download | cbb-gcc-4.6.4-upstream.tar.bz2 cbb-gcc-4.6.4-upstream.tar.xz |
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig;
imported gcc-4.6.4 source tree from verified upstream tarball.
downloading a git-generated archive based on the 'upstream' tag
should provide you with a source tree that is binary identical
to the one extracted from the above tarball.
if you have obtained the source via the command 'git clone',
however, do note that line-endings of files in your working
directory might differ from line-endings of the respective
files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/compile/20020701-1.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20020701-1.c | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020701-1.c b/gcc/testsuite/gcc.c-torture/compile/20020701-1.c new file mode 100644 index 000000000..1258cec28 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20020701-1.c @@ -0,0 +1,75 @@ +/* PR target/7177 + Problem with cris-axis-elf: ICE in global. + Origin: hp@axis.com. */ + +typedef __SIZE_TYPE__ size_t; +void f1 (void *); +char *f2 (const char *); +int atoi (const char *); +char *strchr (const char *, int); +int strcmp (const char *, const char *); +size_t strlen (const char *); +typedef enum { A, B, C } t1; +extern const char _v[]; + +static t1 +f (const char* p1, const char* p2, char p3) +{ + char *v1; + char *v2; + char *a; + char *v3; + char *v4; + char *v5; + char *e; + char *v6; + t1 r = C; + + v1 = f2 (p2); + v4 = f2 (p1); + + a = v2 = v1; + e = v5 = v4; + memcpy (&e, &e, sizeof (e)); + + v3 = strchr (v2, ','); + v6 = strchr (v5, ','); + + while ((_v + 1)[(unsigned) *a] & 4) + a++; + while ((_v + 1)[(unsigned) *e] & 4) + e++; + + if (a == v3 && e == v6) + { + if (p3) + r = atoi (v5) < atoi (v2) ? B : A; + else + r = atoi (v5) > atoi (v2) ? B : A; + v2 = ++a; + v5 = ++e; + v3 = strchr (v2, ','); + v6 = strchr (v5, ','); + + while ((_v + 1)[(unsigned) *a] & 4) + a++; + while ((_v + 1)[(unsigned) *e] & 4) + e++; + + if (a == v3 && e == v6) + { + if (r == B) + r = B; + else if (p3) + r = atoi (v5) < atoi (v2) ? B : A; + else + r = atoi (v5) > atoi (v2) ? B : A; + } + else + r = C; + } + + f1 (v1); + f1 (v4); + return r; +} |