diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fa2797eea51a5f05088127b8c1aec45e24ab05f5..89258a3a623892c5750e9cd8c2254100607526f6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
+	-msse/-msse2/-msse3.
+
 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 3609dac47151a42d4bfdd21ba94150418e0d2490..2b3024cc39b61bbeedb7dda083fb7735c5c05c89 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -1571,25 +1571,28 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value)
       if (!value)
 	{
 	  target_flags &= ~(MASK_SSE2 | MASK_SSE3 | MASK_SSSE3
-			    | MASK_SSE4A);
+			    | MASK_SSE4_1 | MASK_SSE4A);
 	  target_flags_explicit |= (MASK_SSE2 | MASK_SSE3 | MASK_SSSE3
-				    | MASK_SSE4A);
+				    | MASK_SSE4_1 | MASK_SSE4A);
 	}
       return true;
 
     case OPT_msse2:
       if (!value)
 	{
-	  target_flags &= ~(MASK_SSE3 | MASK_SSSE3 | MASK_SSE4A);
-	  target_flags_explicit |= MASK_SSE3 | MASK_SSSE3 | MASK_SSE4A;
+	  target_flags &= ~(MASK_SSE3 | MASK_SSSE3 | MASK_SSE4_1
+			    | MASK_SSE4A);
+	  target_flags_explicit |= (MASK_SSE3 | MASK_SSSE3
+				    | MASK_SSE4_1 | MASK_SSE4A);
 	}
       return true;
 
     case OPT_msse3:
       if (!value)
 	{
-	  target_flags &= ~(MASK_SSSE3 | MASK_SSE4A);
-	  target_flags_explicit |= MASK_SSSE3 | MASK_SSE4A;
+	  target_flags &= ~(MASK_SSSE3 | MASK_SSE4_1 | MASK_SSE4A);
+	  target_flags_explicit |= (MASK_SSSE3 | MASK_SSE4_1
+				    | MASK_SSE4A);
 	}
       return true;