diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 4b4e42c95c94..cb18209818f3 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2004-06-11  Andrew Pinski  <pinskia@physics.uc.edu>
+
+	* decl.c (grokdeclarator): Do not depend on C99's _Bool's behavior.
+
 2004-06-11  Mark Mitchell  <mark@codesourcery.com>
 
 	PR c++/15862
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index ad6226052800..950bac10b733 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -7055,9 +7055,9 @@ grokdeclarator (tree declarator,
   
   staticp = 0;
   inlinep = !! RIDBIT_SETP (RID_INLINE, specbits);
-  virtualp = RIDBIT_SETP (RID_VIRTUAL, specbits);
+  virtualp = !! RIDBIT_SETP (RID_VIRTUAL, specbits);
   RIDBIT_RESET (RID_VIRTUAL, specbits);
-  explicitp = RIDBIT_SETP (RID_EXPLICIT, specbits) != 0;
+  explicitp = !! RIDBIT_SETP (RID_EXPLICIT, specbits);
   RIDBIT_RESET (RID_EXPLICIT, specbits);
 
   if (RIDBIT_SETP (RID_STATIC, specbits))
@@ -7069,7 +7069,7 @@ grokdeclarator (tree declarator,
 		dname);
       staticp = 0;
     }
-  friendp = RIDBIT_SETP (RID_FRIEND, specbits);
+  friendp = !! RIDBIT_SETP (RID_FRIEND, specbits);
   RIDBIT_RESET (RID_FRIEND, specbits);
 
   if (dependant_name && !friendp)