summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/compile/20020701-1.c
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/gcc.c-torture/compile/20020701-1.c
downloadcbb-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.c75
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;
+}