diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 77c7701cb80dadd4e480b8b4e2fa70d990c7301c..07da35b6c6ab13814a7ecbc2ed1706efd4cd2c30 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2003-09-10  Joe Buck  <jbuck@welsh-buck.org>
+
+	* c-decl.c (poplevel): Eliminate use of |= in function_body assignment.
+
 2003-09-10  Jerry Quinn  <jlquinn@optonline.net>
 
 	* real.c: Update URL to VAX floating point docs.
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index b72f257b4c309c22645894e9f06dfe5edf838de1..26a012a021c60295ca57fdcf572814fc5575e105 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -505,7 +505,8 @@ poplevel (int keep, int dummy ATTRIBUTE_UNUSED, int functionbody)
   tree decl;
   tree p;
 
-  scope->function_body |= functionbody;
+  /* The following line does not use |= due to a bug in HP's C compiler */
+  scope->function_body = scope->function_body | functionbody;
 
   if (keep == KEEP_MAYBE)
     keep = (scope->names || scope->tags);