diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5ce646c146a..4495a34bbef 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2001-05-25 Diego Novillo + + * gcc.c-torture/compile/20010518-2.c: New file. + * gcc.c-torture/execute/20010518-1.c: New file. + * gcc.c-torture/execute/20010518-2.c: New file. + 2001-05-25 Joseph S. Myers * gcc.dg/c90-arraydecl-1.c, gcc.dg/c99-arraydecl-1.c: New tests. diff --git a/gcc/testsuite/gcc.c-torture/compile/20010518-2.c b/gcc/testsuite/gcc.c-torture/compile/20010518-2.c new file mode 100644 index 00000000000..aa8ce344c05 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20010518-2.c @@ -0,0 +1,13 @@ +/* Large static storage. */ + +#include + +static volatile char chars_1[INT_MAX / 2]; +static volatile char chars_2[1]; + +int +foo (void) +{ + chars_1[10] = 'y'; + chars_2[0] = 'x'; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/20010518-1.c b/gcc/testsuite/gcc.c-torture/execute/20010518-1.c new file mode 100644 index 00000000000..94b2d8f6f25 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20010518-1.c @@ -0,0 +1,28 @@ +/* Leaf functions with many arguments. */ + +int +add (int a, + int b, + int c, + int d, + int e, + int f, + int g, + int h, + int i, + int j, + int k, + int l, + int m) +{ + return a+b+c+d+e+f+g+h+i+j+k+l+m; +} + +int +main(void) +{ + if (add (1,2,3,4,5,6,7,8,9,10,11,12,13) != 91) + abort (); + + exit (0); +} diff --git a/gcc/testsuite/gcc.c-torture/execute/20010518-2.c b/gcc/testsuite/gcc.c-torture/execute/20010518-2.c new file mode 100644 index 00000000000..1990f8e63bc --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20010518-2.c @@ -0,0 +1,38 @@ +/* Mis-aligned packed structures. */ + +typedef struct +{ + char b0; + char b1; + char b2; + char b3; + char b4; + char b5; +} __attribute__ ((packed)) b_struct; + + +typedef struct +{ + short a; + long b; + short c; + short d; + b_struct e; +} __attribute__ ((packed)) a_struct; + + +int +main(void) +{ + volatile a_struct *a; + volatile a_struct b; + + a = &b; + *a = (a_struct){1,2,3,4}; + a->e.b4 = 'c'; + + if (a->a != 1 || a->b != 2 || a->c != 3 || a->d != 4 || a->e.b4 != 'c') + abort (); + + exit (0); +}