diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0d4e023..cc4971b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+Sun Oct 31 13:32:15 CET 1999  Marc Lehmann <pcg@goof.com>
+
+	* toplev.c (rest_of_compilation): Seperate the setjmp/vfork clobber
+        warning from -Wuninitialized and put it under -W.
+        * function.c (uninitialized_vars_warning): Warn only when the
+        corresponding flag is set.
+
 Sun Oct 31 01:53:30 1999  Jeffrey A Law  (law@cygnus.com)
 
 	* combine.c (combine_simplify_rtx): Renamed from simplify_rtx.  All
diff --git a/gcc/function.c b/gcc/function.c
index f6f5d88..10a33da 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -5075,7 +5075,8 @@ uninitialized_vars_warning (block)
   register tree decl, sub;
   for (decl = BLOCK_VARS (block); decl; decl = TREE_CHAIN (decl))
     {
-      if (TREE_CODE (decl) == VAR_DECL
+      if (warn_uninitialized
+          && TREE_CODE (decl) == VAR_DECL
 	  /* These warnings are unreliable for and aggregates
 	     because assigning the fields one by one can fail to convince
 	     flow.c that the entire aggregate was initialized.
@@ -5094,7 +5095,8 @@ uninitialized_vars_warning (block)
 	  && regno_uninitialized (REGNO (DECL_RTL (decl))))
 	warning_with_decl (decl,
 			   "`%s' might be used uninitialized in this function");
-      if (TREE_CODE (decl) == VAR_DECL
+      if (extra_warnings
+          && TREE_CODE (decl) == VAR_DECL
 	  && DECL_RTL (decl) != 0
 	  && GET_CODE (DECL_RTL (decl)) == REG
 	  && regno_clobbered_at_setjmp (REGNO (DECL_RTL (decl))))
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 6f8883b..cce00ee 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -4010,10 +4010,11 @@ rest_of_compilation (decl)
 	   life_analysis (insns, max_reg_num (), rtl_dump_file, 1);
 	 });
 
-      if (warn_uninitialized)
+      if (warn_uninitialized || extra_warnings)
 	{
 	  uninitialized_vars_warning (DECL_INITIAL (decl));
-	  setjmp_args_warning ();
+          if (extra_warnings)
+	    setjmp_args_warning ();
 	}
     }