diff options
author | Andrew Pinski <apinski@cavium.com> | 2017-04-02 22:13:51 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2017-04-02 15:13:51 -0700 |
commit | c2d4332669d358041e7aa5037271bdb37d471941 (patch) | |
tree | ba896fa4355813b93e90365dfd22d6e26a050afe /gcc | |
parent | 5ada68f2c8e31113dd0ee9c32a0917b66c009dcd (diff) | |
download | gcc-c2d4332669d358041e7aa5037271bdb37d471941.zip gcc-c2d4332669d358041e7aa5037271bdb37d471941.tar.gz gcc-c2d4332669d358041e7aa5037271bdb37d471941.tar.bz2 |
nested-3.c: New testcase.
2017-04-02 Andrew Pinski <apinski@cavium.com>
* gcc.c-torture/compile/nested-3.c: New testcase.
* gcc.c-torture/execute/20170401-1.c: New testcase.
* gcc.c-torture/execute/20170401-2.c: New testcase.
From-SVN: r246639
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/nested-3.c | 18 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/20170401-1.c | 53 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/20170401-2.c | 29 |
4 files changed, 106 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7f236ac..88f1e65 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2017-04-02 Andrew Pinski <apinski@cavium.com> + + * gcc.c-torture/compile/nested-3.c: New testcase. + * gcc.c-torture/execute/20170401-1.c: New testcase. + * gcc.c-torture/execute/20170401-2.c: New testcase. + 2017-03-31 Segher Boessenkool <segher@kernel.crashing.org> PR rtl-optimization/79405 diff --git a/gcc/testsuite/gcc.c-torture/compile/nested-3.c b/gcc/testsuite/gcc.c-torture/compile/nested-3.c new file mode 100644 index 0000000..c46d3f5 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/nested-3.c @@ -0,0 +1,18 @@ +struct a +{ + int t; + int t1; +}; + +int f(int i, int j) +{ + struct a *t; + struct a t1 = {i, j}; + t = &t1; + auto int g(void) __attribute__((noinline)); + int g(void) + { + return t->t + t->t1; + } + return g(); +} diff --git a/gcc/testsuite/gcc.c-torture/execute/20170401-1.c b/gcc/testsuite/gcc.c-torture/execute/20170401-1.c new file mode 100644 index 0000000..191ea6d --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20170401-1.c @@ -0,0 +1,53 @@ +/* PR45070 */ +extern void abort(void); + +struct packed_ushort { + unsigned short ucs; +} __attribute__((packed)); + +struct source { + int pos, length; +}; + +static int flag; + +static void __attribute__((noinline)) fetch(struct source *p) +{ + p->length = 128; +} + +static struct packed_ushort __attribute__((noinline)) next(struct source *p) +{ + struct packed_ushort rv; + + if (p->pos >= p->length) { + if (flag) { + flag = 0; + fetch(p); + return next(p); + } + flag = 1; + rv.ucs = 0xffff; + return rv; + } + rv.ucs = 0; + return rv; +} + +int main(void) +{ + struct source s; + int i; + + s.pos = 0; + s.length = 0; + flag = 0; + + for (i = 0; i < 16; i++) { + struct packed_ushort rv = next(&s); + if ((i == 0 && rv.ucs != 0xffff) + || (i > 0 && rv.ucs != 0)) + abort(); + } + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/20170401-2.c b/gcc/testsuite/gcc.c-torture/execute/20170401-2.c new file mode 100644 index 0000000..bb43258 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20170401-2.c @@ -0,0 +1,29 @@ +void adjust_xy (short *, short *); + +struct adjust_template +{ + short kx_x; + short kx_y; +}; + +static struct adjust_template adjust = {1, 1}; + +main () +{ + short x = 1, y = 1; + + adjust_xy (&x, &y); + + if (x != 2) + abort (); + + exit (0); +} + +void +adjust_xy (x, y) + short *x; + short *y; +{ + *x = adjust.kx_x * *x + adjust.kx_y * *y; +} |