Add missing test case
2015-04-13 Terry Guo <terry.guo@arm.com> PR target/65710 * gcc.target/arm/pr65710.c: New. From-SVN: r222037
This commit is contained in:
parent
b801e1afc9
commit
5ff9ab9ba3
@ -1,3 +1,8 @@
|
||||
2015-04-13 Terry Guo <terry.guo@arm.com>
|
||||
|
||||
PR target/65710
|
||||
* gcc.target/arm/pr65710.c: New.
|
||||
|
||||
2015-04-12 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/65747
|
||||
|
118
gcc/testsuite/gcc.target/arm/pr65710.c
Normal file
118
gcc/testsuite/gcc.target/arm/pr65710.c
Normal file
@ -0,0 +1,118 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-march=armv6-m -mthumb -O3 -w -mfloat-abi=soft" } */
|
||||
|
||||
struct ST {
|
||||
char *buffer;
|
||||
int used;
|
||||
};
|
||||
|
||||
struct ST *h;
|
||||
|
||||
enum { no_op, duplicate, pop_failure_jump, dummy_failure_jump };
|
||||
|
||||
typedef struct {
|
||||
unsigned pointer;
|
||||
} byte_fail_stack_elt_t;
|
||||
|
||||
typedef struct { unsigned avail; } byte_fail_stack_type;
|
||||
|
||||
typedef union {
|
||||
byte_fail_stack_elt_t word;
|
||||
struct {
|
||||
unsigned match_null_string_p : 2;
|
||||
unsigned is_active : 1;
|
||||
unsigned ever_matched_something : 1;
|
||||
} bits;
|
||||
} byte_register_info_type;
|
||||
|
||||
static int a;
|
||||
int b = 0;
|
||||
int c, e, f;
|
||||
int *d, *g;
|
||||
|
||||
int
|
||||
byte_re_match_2_internal_size2(const int p2, int p3, const int p4) {
|
||||
int i, p;
|
||||
char *j;
|
||||
char k, l, m, n = h;
|
||||
byte_fail_stack_type o;
|
||||
byte_fail_stack_elt_t *q;
|
||||
unsigned int s = (unsigned int)h;
|
||||
long t, u;
|
||||
char **v, *w, **x, **y, **t1;
|
||||
byte_register_info_type *z, *t2 = __builtin_alloca(s);
|
||||
x = __builtin_alloca(s);
|
||||
y = __builtin_alloca(s);
|
||||
z = __builtin_alloca(sizeof(byte_register_info_type));
|
||||
k = p4 + byte_re_match_2_internal_size2;
|
||||
if (p3)
|
||||
f = p4;
|
||||
for (;;) {
|
||||
if (h == h->used) {
|
||||
g = f;
|
||||
if (o.avail) {
|
||||
b = 1;
|
||||
for (; i < s; i++)
|
||||
t1[i] = w;
|
||||
goto fail;
|
||||
}
|
||||
e = 30 > s;
|
||||
d = p4;
|
||||
d[s] = 1;
|
||||
return;
|
||||
}
|
||||
switch (*h->buffer++) {
|
||||
case no_op:
|
||||
while (m && n ?: *g)
|
||||
;
|
||||
y[*h->buffer] = z[*h->buffer].bits.match_null_string_p ? w == &a ?: w : w;
|
||||
w = g;
|
||||
if (t) {
|
||||
char r = h;
|
||||
while (r && z[r].bits.is_active)
|
||||
r--;
|
||||
if (r == 0)
|
||||
;
|
||||
else
|
||||
u = r;
|
||||
}
|
||||
switch (*j++)
|
||||
case dummy_failure_jump:
|
||||
i = j;
|
||||
if (i)
|
||||
if (z[*h->buffer].bits.ever_matched_something) {
|
||||
unsigned r;
|
||||
z[*h->buffer].bits.ever_matched_something = r = *h->buffer;
|
||||
for (; r + *(h->buffer + 1); r++) {
|
||||
v = x[r];
|
||||
w[r] = y[r];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case duplicate: {
|
||||
char *t3 = p2 + p3;
|
||||
if (t3)
|
||||
break;
|
||||
}
|
||||
if ((p3 ?: p4) == k)
|
||||
goto fail;
|
||||
case pop_failure_jump:
|
||||
for (; c; c--)
|
||||
t2[c].word = q[o.avail];
|
||||
char t4;
|
||||
q = t4 = __builtin_allocamemcpy(t4 ?: (p <<= 1));
|
||||
}
|
||||
continue;
|
||||
fail : {
|
||||
unsigned t5;
|
||||
t = q;
|
||||
t5 = u;
|
||||
for (; t5 >= t; t5--)
|
||||
v[t5] = q[--o.avail].pointer;
|
||||
switch (*h->buffer)
|
||||
case pop_failure_jump:
|
||||
goto fail;
|
||||
}
|
||||
m = &l;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user