diff --git a/compiler-rt/cmake/Modules/BuiltinTests.cmake b/compiler-rt/cmake/Modules/BuiltinTests.cmake
index 63c5f47cb5010..093a1c758e278 100644
--- a/compiler-rt/cmake/Modules/BuiltinTests.cmake
+++ b/compiler-rt/cmake/Modules/BuiltinTests.cmake
@@ -134,3 +134,16 @@ function(builtin_check_c_compiler_source output source)
     endif()
   endif()
 endfunction()
+
+function(builtin_check_c_compiler_source_with_flags output source flags)
+  if(NOT DEFINED ${output})
+    message(STATUS "Performing Test ${output}")
+    try_compile_only(result SOURCE ${source} FLAGS ${flags})
+    set(${output} ${result} CACHE INTERNAL "Compiler supports ${output} with ${flags}")
+    if(${result})
+      message(STATUS "Performing Test ${output} - Success")
+    else()
+      message(STATUS "Performing Test ${output} - Failed")
+    endif()
+  endif()
+endfunction()
diff --git a/compiler-rt/cmake/builtin-config-ix.cmake b/compiler-rt/cmake/builtin-config-ix.cmake
index d3cf621c144b6..eeeb8d1c793b0 100644
--- a/compiler-rt/cmake/builtin-config-ix.cmake
+++ b/compiler-rt/cmake/builtin-config-ix.cmake
@@ -41,14 +41,14 @@ asm(\".arch armv8-a+lse\");
 asm(\"cas w0, w1, [x2]\");
 ")
 
-builtin_check_c_compiler_source(COMPILER_RT_HAS_AARCH64_SME
+builtin_check_c_compiler_source_with_flags(COMPILER_RT_HAS_AARCH64_SME
 "
 void foo(void)  __arm_streaming_compatible {
   asm(\".arch armv9-a+sme2\\n\"
       \"smstart\\n\"
       \"ldr zt0, [sp]\");
 }
-")
+" "-target ${LLVM_TARGET_TRIPLE} -arch arm64")
 
 check_include_files("sys/auxv.h"    COMPILER_RT_HAS_AUXV)