cc: Filter out unknown clang cflags from InstructionSetFlags

-funswitch-loops is in the arm instruction set flags, but unsupported by
clang. Make removes clang unknown cflags from the instruction set flags.
This was producing a warning, causing -Werror to fail on libm.

Change-Id: Ibc69c9af04a738aa8adeb5549900e2b53ab754f0
diff --git a/cc/arm_device.go b/cc/arm_device.go
index ce8a1cb..8f3485e 100644
--- a/cc/arm_device.go
+++ b/cc/arm_device.go
@@ -172,6 +172,10 @@
 	pctx.StaticVariable("armClangLdflags", strings.Join(clangFilterUnknownCflags(armLdflags), " "))
 	pctx.StaticVariable("armClangCppflags", strings.Join(clangFilterUnknownCflags(armCppflags), " "))
 
+	// Clang ARM vs. Thumb instruction set cflags
+	pctx.StaticVariable("armClangArmCflags", strings.Join(clangFilterUnknownCflags(armArmCflags), " "))
+	pctx.StaticVariable("armClangThumbCflags", strings.Join(clangFilterUnknownCflags(armThumbCflags), " "))
+
 	// Clang cpu variant cflags
 	pctx.StaticVariable("armClangArmv5TECflags",
 		strings.Join(armClangArchVariantCflags["armv5te"], " "))
@@ -291,6 +295,17 @@
 	return t.ldflags
 }
 
+func (t *toolchainArm) ClangInstructionSetFlags(isa string) (string, error) {
+	switch isa {
+	case "arm":
+		return "${armClangArmCflags}", nil
+	case "thumb", "":
+		return "${armClangThumbCflags}", nil
+	default:
+		return t.toolchainBase.ClangInstructionSetFlags(isa)
+	}
+}
+
 func armToolchainFactory(archVariant string, cpuVariant string) Toolchain {
 	var fixCortexA8 string
 	switch cpuVariant {