aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/20020706-2.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.c-torture/compile/20020706-2.c')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.c-torture/compile/20020706-2.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/20020706-2.c b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/20020706-2.c
new file mode 100644
index 000000000..b84dda60f
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/20020706-2.c
@@ -0,0 +1,26 @@
+// Contributed by Alexandre Oliva <aoliva@redhat.com>
+// From Red Hat case 106165.
+
+typedef unsigned short (FUNC_P) (void *, unsigned char *, unsigned short);
+
+void crashIt(int id, FUNC_P *func, unsigned char *funcparm)
+{
+ unsigned char buff[5], reverse[4];
+ unsigned char *bp = buff;
+ unsigned char *rp = reverse;
+ unsigned short int count = 0;
+ unsigned short cnt;
+ while (id > 0)
+ {
+ *rp++ = (unsigned char) (id & 0x7F);
+ id >>= 7;
+ count++;
+ }
+ cnt = count + 1;
+ while ((count--) > 1)
+ {
+ *bp++ = (unsigned char)(*(--rp) | 0x80);
+ }
+ *bp++ = *(--rp);
+ (void)(*func)(funcparm, buff, cnt);
+}