diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 424dd559f9a7ee9ccc0dc21f1304025e1ebb3f99..1e5ba50b21a99f244bc0248339395cb1de612ac3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2004-02-19  Hans-Peter Nilsson  <hp@axis.com>
+
+	PR target/14209
+	* gcc.c-torture/execute/20040218-1.c: New test.
+
 2004-02-19  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
 
 	PR c++/14181
diff --git a/gcc/testsuite/gcc.c-torture/execute/20040218-1.c b/gcc/testsuite/gcc.c-torture/execute/20040218-1.c
new file mode 100644
index 0000000000000000000000000000000000000000..4d1541af8bfa9b36b2754dfbaa5be144c3159e79
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20040218-1.c
@@ -0,0 +1,37 @@
+/* PR target/14209.  Bug in cris.md, shrinking access size of
+   postincrement.
+   Origin: <hp@axis.com>.  */
+
+long int xb (long int *y) __attribute__ ((__noinline__));
+long int xw (long int *y) __attribute__ ((__noinline__));
+short int yb (short int *y) __attribute__ ((__noinline__));
+
+long int xb (long int *y)
+{
+  long int xx = *y & 255;
+  return xx + y[1];
+}
+
+long int xw (long int *y)
+{
+  long int xx = *y & 65535;
+  return xx + y[1];
+}
+
+short int yb (short int *y)
+{
+  short int xx = *y & 255;
+  return xx + y[1];
+}
+
+int main (void)
+{
+  long int y[] = {-1, 16000};
+  short int yw[] = {-1, 16000};
+
+  if (xb (y) != 16255
+      || xw (y) != 81535
+      || yb (yw) != 16255)
+    abort ();
+  exit (0);
+}