diff --git a/include/clang/Driver/CC1Options.td b/include/clang/Driver/CC1Options.td
index b50e64f..1ca00e4 100644
--- a/include/clang/Driver/CC1Options.td
+++ b/include/clang/Driver/CC1Options.td
@@ -201,6 +201,8 @@ def mconstructor_aliases : Flag<["-"], "mconstructor-aliases">,
   HelpText<"Emit complete constructors and destructors as aliases when possible">;
 def mlink_bitcode_file : Separate<["-"], "mlink-bitcode-file">,
   HelpText<"Link the given bitcode file before performing optimizations.">;
+def mrelax_all : Flag<["-"], "mrelax-all">,
+  HelpText<"(integrated-as) Relax all machine instructions">;
 def fsanitize_recover : Flag<["-"], "fsanitize-recover">,
   HelpText<"Attempt to recover from failed sanitizer checks when possible">;
 
diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td
index e511b28..6230f3a 100644
--- a/include/clang/Driver/Options.td
+++ b/include/clang/Driver/Options.td
@@ -812,7 +812,6 @@ def mno_global_merge : Flag<["-"], "mno-global-merge">, Group<m_Group>, Flags<[C
 def mno_mmx : Flag<["-"], "mno-mmx">, Group<m_x86_Features_Group>;
 def mno_pascal_strings : Flag<["-"], "mno-pascal-strings">, Group<m_Group>;
 def mno_red_zone : Flag<["-"], "mno-red-zone">, Group<m_Group>;
-def mno_relax_all : Flag<["-"], "mno-relax-all">, Group<m_Group>;
 def mno_rtd: Flag<["-"], "mno-rtd">, Group<m_Group>;
 def mno_soft_float : Flag<["-"], "mno-soft-float">, Group<m_Group>;
 def mno_stackrealign : Flag<["-"], "mno-stackrealign">, Group<m_Group>;
@@ -850,8 +849,6 @@ def moslib_EQ : Joined<["-"], "moslib=">, Group<m_Group>;
 def mpascal_strings : Flag<["-"], "mpascal-strings">, Group<m_Group>;
 def mred_zone : Flag<["-"], "mred-zone">, Group<m_Group>;
 def mregparm_EQ : Joined<["-"], "mregparm=">, Group<m_Group>;
-def mrelax_all : Flag<["-"], "mrelax-all">, Group<m_Group>, Flags<[CC1Option]>,
-  HelpText<"(integrated-as) Relax all machine instructions">;
 def mrtd : Flag<["-"], "mrtd">, Group<m_Group>, Flags<[CC1Option]>,
   HelpText<"Make StdCall calling convention the default">;
 def msmall_data_threshold_EQ : Joined <["-"], "msmall-data-threshold=">, Group<m_Group>;
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index 2872749..fcb9be5 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -1424,18 +1424,14 @@ static bool UseRelaxAll(Compilation &C, const ArgList &Args) {
     RelaxDefault = A->getOption().matches(options::OPT_O0);
 
   if (RelaxDefault) {
-    RelaxDefault = false;
     for (ActionList::const_iterator it = C.getActions().begin(),
            ie = C.getActions().end(); it != ie; ++it) {
-      if (ContainsCompileAction(*it)) {
-        RelaxDefault = true;
-        break;
-      }
+      if (ContainsCompileAction(*it))
+        return true;
     }
   }
 
-  return Args.hasFlag(options::OPT_mrelax_all, options::OPT_mno_relax_all,
-    RelaxDefault);
+  return false;
 }
 
 SanitizerArgs::SanitizerArgs(const Driver &D, const ArgList &Args) {
