Index: config/rs6000/rs6000.c
===================================================================
--- config/rs6000/rs6000.c	(revision 161490)
+++ config/rs6000/rs6000.c	(working copy)
@@ -2656,11 +2656,11 @@ rs6000_override_options (const char *def
   /* For the newer switches (vsx, dfp, etc.) set some of the older options,
      unless the user explicitly used the -mno-<option> to disable the code.  */
   if (TARGET_VSX)
-    target_flags |= (ISA_2_6_MASKS & (target_flags_explicit & ~ISA_2_6_MASKS));
+    target_flags |= (ISA_2_6_MASKS & ~target_flags_explicit);
   else if (TARGET_DFP)
-    target_flags |= (ISA_2_5_MASKS & (target_flags_explicit & ~ISA_2_5_MASKS));
+    target_flags |= (ISA_2_5_MASKS & ~target_flags_explicit);
   else if (TARGET_ALTIVEC)
-    target_flags |= (MASK_PPC_GFXOPT & (target_flags_explicit & ~MASK_PPC_GFXOPT));
+    target_flags |= (MASK_PPC_GFXOPT & ~target_flags_explicit);
 
   /* Set debug flags */
   if (rs6000_debug_name)
Index: config/rs6000/rs6000.h
===================================================================
--- config/rs6000/rs6000.h	(revision 161490)
+++ config/rs6000/rs6000.h	(working copy)
@@ -159,7 +159,8 @@
 %{mcpu=e300c3: -me300} \
 %{mcpu=e500mc: -me500mc} \
 %{mcpu=e500mc64: -me500mc64} \
-%{maltivec: -maltivec} \
+%{maltivec: -maltivec %{!mcpu*: %{!mvsx: -mpower4}}} \
+%{mvsx: -mvsx %{!maltivec: -maltivec} %{!mcpu*: %(asm_cpu_power7)}} \
 -many"
 
 #define CPP_DEFAULT_SPEC ""
