Index: tools/clang/test/Driver/arm-as.c
===================================================================
--- tools/clang/test/Driver/arm-as.c	(revision 0)
+++ tools/clang/test/Driver/arm-as.c	(revision 0)
@@ -0,0 +1,31 @@
+// Check passing options to the assembler for ARM targets.
+//
+// RUN: %clang -target arm-linux -### \
+// RUN:   -no-integrated-as -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=ARM %s
+// CHECK-ARM: as"
+//
+// RUN: %clang -target arm-linux -mcpu=cortex-a8 -### \
+// RUN:   -no-integrated-as -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=ARM-MCPU %s
+// CHECK-ARM-MCPU: as" "-mcpu=cortex-a8"
+//
+// RUN: %clang -target arm-linux -mfpu=neon -### \
+// RUN:   -no-integrated-as -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=ARM-MFPU %s
+// CHECK-ARM-MFPU: as" "-mfpu=neon"
+//
+// RUN: %clang -target arm-linux -march=armv7-a -### \
+// RUN:   -no-integrated-as -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=ARM-MARCH %s
+// CHECK-ARM-MARCH: as" "-march=armv7-a"
+//
+// RUN: %clang -target arm-linux -mcpu=cortex-a8 -mfpu=neon -march=armv7-a -### \
+// RUN:   -no-integrated-as -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=ARM-ALL %s
+// CHECK-ARM-ALL: as" "-mcpu=cortex-a8" "-mfpu=neon" "-march=armv7-a"
+//
+// RUN: %clang -target armv7-linux "-mcpu=cortex-a8" -### \
+// RUN:   -no-integrated-as -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=ARM-TARGET %s
+// CHECK-ARM-TARGET: as" "-mfpu=neon" "-mcpu=cortex-a8"
Index: tools/clang/lib/Driver/Tools.cpp
===================================================================
--- tools/clang/lib/Driver/Tools.cpp	(revision 154313)
+++ tools/clang/lib/Driver/Tools.cpp	(working copy)
@@ -5082,6 +5082,9 @@
       CmdArgs.push_back("-EL");
   }
 
+  Args.AddAllArgs(CmdArgs, options::OPT_march_EQ, options::OPT_mcpu_EQ,
+                  options::OPT_mfpu_EQ);
+
   Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
                        options::OPT_Xassembler);
 
