diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8b2dda7f07f3bfc73b997eeb26b04684880cc8a3..972dbfb7d9df0205c30b3e0795d242cd7f554085 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-07-25  Rask Ingemann Lambertsen  <rask@sygehus.dk>
+
+	* gcc.dg/torture/pr30313.c (struct S): Make sure the bit-field is
+	  exactly as wide as an int.
+
 2007-07-25  Danny Smith  <dannysmith@users.sourceforge.net>
 
 	* gcc.dg/compat/struct-layout-1_generate.c (COMPAT_PRLL):
diff --git a/gcc/testsuite/gcc.dg/torture/pr30313.c b/gcc/testsuite/gcc.dg/torture/pr30313.c
index 1df85f7edc2bccfff9e9fb91ead201d30a7b973b..aefeb7866f91bd6d367531673dbf1582bb2326b4 100644
--- a/gcc/testsuite/gcc.dg/torture/pr30313.c
+++ b/gcc/testsuite/gcc.dg/torture/pr30313.c
@@ -4,7 +4,15 @@ static inline void bar(){}
 
 struct S
 {
+#if __INT_MAX__ == 32767
+  signed int i: 16;
+#elif __INT_MAX__ == 2147483647
   signed int i: 32;
+#elif __INT_MAX__ == 9223372036854775807
+  signed int i: 64;
+#else
+#error Please add support for your target here
+#endif
 };
 
 int main()