diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 03464628c28b860bdf10e8883e58bb1c20680db0..e7df520bd530923369d856720dd31331030847e1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2005-04-01  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* gcov-io.h (GCOV_CHECK, GCOV_CHECK_READING,
+	GCOV_CHECK_WRITING): Remove.
+	(gcov_position, gcov_rewrite): Use gcc_assert.
+	* gcov-io.c (gcov_open, gcov_write_words, gcov_write_length,
+	gcov_read_words, gcov_sync, gcov_seek): Use gcc_assert.
+	* libgcov.c (__gcov_merge_single, __gcov_merge_delta): Use
+	gcc_assert.
+
 2005-04-01  Kazu Hirata  <kazu@cs.umass.edu>
 
 	* tree-inline.c: Fix a typo.
diff --git a/gcc/gcov-io.c b/gcc/gcov-io.c
index 640a55a976f236f5c27f82031838ef2dbb54495c..67e08f0935eff46bfcdf515cf5b7f7fe5f21c0a9 100644
--- a/gcc/gcov-io.c
+++ b/gcc/gcov-io.c
@@ -74,7 +74,7 @@ gcov_open (const char *name, int mode)
   s_flock.l_pid = getpid ();
 #endif
   
-  GCOV_CHECK (!gcov_var.file);
+  gcc_assert (!gcov_var.file);
   gcov_var.start = 0;
   gcov_var.offset = gcov_var.length = 0;
   gcov_var.overread = -1u;
@@ -221,14 +221,14 @@ gcov_write_words (unsigned words)
 {
   gcov_unsigned_t *result;
 
-  GCOV_CHECK_WRITING ();
+  gcc_assert (gcov_var.mode < 0);
 #if IN_LIBGCOV
   if (gcov_var.offset >= GCOV_BLOCK_SIZE)
     {
       gcov_write_block (GCOV_BLOCK_SIZE);
       if (gcov_var.offset)
 	{
-	  GCOV_CHECK (gcov_var.offset == 1);
+	  gcc_assert (gcov_var.offset == 1);
 	  memcpy (gcov_var.buffer, gcov_var.buffer + GCOV_BLOCK_SIZE, 4);
 	}
     }
@@ -323,9 +323,9 @@ gcov_write_length (gcov_position_t position)
   gcov_unsigned_t length;
   gcov_unsigned_t *buffer;
 
-  GCOV_CHECK_WRITING ();
-  GCOV_CHECK (position + 2 <= gcov_var.start + gcov_var.offset);
-  GCOV_CHECK (position >= gcov_var.start);
+  gcc_assert (gcov_var.mode < 0);
+  gcc_assert (position + 2 <= gcov_var.start + gcov_var.offset);
+  gcc_assert (position >= gcov_var.start);
   offset = position - gcov_var.start;
   length = gcov_var.offset - offset - 2;
   buffer = (gcov_unsigned_t *) &gcov_var.buffer[offset];
@@ -380,14 +380,14 @@ gcov_read_words (unsigned words)
   const gcov_unsigned_t *result;
   unsigned excess = gcov_var.length - gcov_var.offset;
   
-  GCOV_CHECK_READING ();
+  gcc_assert (gcov_var.mode > 0);
   if (excess < words)
     {
       gcov_var.start += gcov_var.offset;
 #if IN_LIBGCOV
       if (excess)
 	{
-	  GCOV_CHECK (excess == 1);
+	  gcc_assert (excess == 1);
 	  memcpy (gcov_var.buffer, gcov_var.buffer + gcov_var.offset, 4);
 	}
 #else
@@ -396,7 +396,7 @@ gcov_read_words (unsigned words)
       gcov_var.offset = 0;
       gcov_var.length = excess;
 #if IN_LIBGCOV
-      GCOV_CHECK (!gcov_var.length || gcov_var.length == 1);
+      gcc_assert (!gcov_var.length || gcov_var.length == 1);
       excess = GCOV_BLOCK_SIZE;
 #else
       if (gcov_var.length + words > gcov_var.alloc)
@@ -494,7 +494,7 @@ gcov_read_summary (struct gcov_summary *summary)
 GCOV_LINKAGE void
 gcov_sync (gcov_position_t base, gcov_unsigned_t length)
 {
-  GCOV_CHECK_READING ();
+  gcc_assert (gcov_var.mode > 0);
   base += length;
   if (base - gcov_var.start <= gcov_var.length)
     gcov_var.offset = base - gcov_var.start;
@@ -513,7 +513,7 @@ gcov_sync (gcov_position_t base, gcov_unsigned_t length)
 GCOV_LINKAGE void
 gcov_seek (gcov_position_t base)
 {
-  GCOV_CHECK_WRITING ();
+  gcc_assert (gcov_var.mode < 0);
   if (gcov_var.offset)
     gcov_write_block (gcov_var.offset);
   fseek (gcov_var.file, base << 2, SEEK_SET);
diff --git a/gcc/gcov-io.h b/gcc/gcov-io.h
index eaa23adcb4743de8c876d6d0a3d05aac1a0e6b95..904f5419dba3894e8d7b291877c52a98c191ef72 100644
--- a/gcc/gcov-io.h
+++ b/gcc/gcov-io.h
@@ -546,26 +546,12 @@ GCOV_LINKAGE void gcov_write_length (gcov_position_t /*position*/);
 GCOV_LINKAGE time_t gcov_time (void);
 #endif
 
-/* Make sure the library is used correctly.  */
-#if IN_LIBGCOV
-#if ENABLE_CHECKING
-#define GCOV_CHECK(EXPR) (!(EXPR) ? abort (), 0 : 0)
-#else
-/* Include EXPR, so that unused variable warnings do not occur.  */
-#define GCOV_CHECK(EXPR) ((void)(0 && (EXPR)))
-#endif
-#else
-#define GCOV_CHECK(EXPR) gcc_assert (EXPR)
-#endif
-#define GCOV_CHECK_READING() GCOV_CHECK(gcov_var.mode > 0)
-#define GCOV_CHECK_WRITING() GCOV_CHECK(gcov_var.mode < 0)
-
 /* Save the current position in the gcov file.  */
 
 static inline gcov_position_t
 gcov_position (void)
 {
-  GCOV_CHECK_READING ();
+  gcc_assert (gcov_var.mode > 0);
   return gcov_var.start + gcov_var.offset;
 }
 
@@ -583,7 +569,7 @@ gcov_is_error (void)
 static inline void
 gcov_rewrite (void)
 {
-  GCOV_CHECK_READING ();
+  gcc_assert (gcov_var.mode > 0);
   gcov_var.mode = -1;
   gcov_var.start = 0;
   gcov_var.offset = 0;
diff --git a/gcc/libgcov.c b/gcc/libgcov.c
index 49cf3c7004ceb86348ff104d6c13041293dfbcc6..6e9c9d3a70b9a848c8eb028762641395a1abd9cc 100644
--- a/gcc/libgcov.c
+++ b/gcc/libgcov.c
@@ -519,7 +519,7 @@ __gcov_merge_single (gcov_type *counters, unsigned n_counters)
   unsigned i, n_measures;
   gcov_type value, counter, all;
 
-  GCOV_CHECK (!(n_counters % 3));
+  gcc_assert (!(n_counters % 3));
   n_measures = n_counters / 3;
   for (i = 0; i < n_measures; i++, counters += 3)
     {
@@ -558,7 +558,7 @@ __gcov_merge_delta (gcov_type *counters, unsigned n_counters)
   unsigned i, n_measures;
   gcov_type last, value, counter, all;
 
-  GCOV_CHECK (!(n_counters % 4));
+  gcc_assert (!(n_counters % 4));
   n_measures = n_counters / 4;
   for (i = 0; i < n_measures; i++, counters += 4)
     {