diff --git a/benchmarks/LibcDefaultImplementations.cpp b/benchmarks/LibcDefaultImplementations.cpp
index bf362f2..75ee6cf 100644
--- a/benchmarks/LibcDefaultImplementations.cpp
+++ b/benchmarks/LibcDefaultImplementations.cpp
@@ -15,7 +15,7 @@
 // List of implementations to test.
 
 using llvm::libc_benchmarks::BzeroConfiguration;
-using llvm::libc_benchmarks::MemcmpConfiguration;
+using llvm::libc_benchmarks::MemcmpOrBcmpConfiguration;
 using llvm::libc_benchmarks::MemcpyConfiguration;
 using llvm::libc_benchmarks::MemsetConfiguration;
 
@@ -24,13 +24,13 @@
       {__llvm_libc::memcpy, "__llvm_libc::memcpy"}};
   return llvm::makeArrayRef(kMemcpyConfigurations);
 }
-llvm::ArrayRef<MemcmpConfiguration> getMemcmpConfigurations() {
-  static constexpr MemcmpConfiguration kMemcmpConfigurations[] = {
+llvm::ArrayRef<MemcmpOrBcmpConfiguration> getMemcmpConfigurations() {
+  static constexpr MemcmpOrBcmpConfiguration kMemcmpConfiguration[] = {
       {__llvm_libc::memcmp, "__llvm_libc::memcmp"}};
-  return llvm::makeArrayRef(kMemcmpConfigurations);
+  return llvm::makeArrayRef(kMemcmpConfiguration);
 }
-llvm::ArrayRef<MemcmpConfiguration> getBcmpConfigurations() {
-  static constexpr MemcmpConfiguration kBcmpConfigurations[] = {
+llvm::ArrayRef<MemcmpOrBcmpConfiguration> getBcmpConfigurations() {
+  static constexpr MemcmpOrBcmpConfiguration kBcmpConfigurations[] = {
       {__llvm_libc::bcmp, "__llvm_libc::bcmp"}};
   return llvm::makeArrayRef(kBcmpConfigurations);
 }
@@ -43,4 +43,4 @@
   static constexpr BzeroConfiguration kBzeroConfigurations[] = {
       {__llvm_libc::bzero, "__llvm_libc::bzero"}};
   return llvm::makeArrayRef(kBzeroConfigurations);
-}
\ No newline at end of file
+}
diff --git a/benchmarks/LibcFunctionPrototypes.h b/benchmarks/LibcFunctionPrototypes.h
index e856c91..561795a 100644
--- a/benchmarks/LibcFunctionPrototypes.h
+++ b/benchmarks/LibcFunctionPrototypes.h
@@ -26,9 +26,9 @@
   llvm::StringRef Name;
 };
 
-using MemcmpFunction = int (*)(const void *, const void *, size_t);
-struct MemcmpConfiguration {
-  MemcmpFunction Function;
+using MemcmpOrBcmpFunction = int (*)(const void *, const void *, size_t);
+struct MemcmpOrBcmpConfiguration {
+  MemcmpOrBcmpFunction Function;
   llvm::StringRef Name;
 };
 
diff --git a/benchmarks/LibcMemoryBenchmark.h b/benchmarks/LibcMemoryBenchmark.h
index eaba899..0c4b49f 100644
--- a/benchmarks/LibcMemoryBenchmark.h
+++ b/benchmarks/LibcMemoryBenchmark.h
@@ -238,9 +238,9 @@
     return getMemcmpSizeDistributions();
   }
 
-  inline int Call(ParameterType Parameter, MemcmpFunction Memcmp) {
-    return Memcmp(LhsBuffer + Parameter.OffsetBytes,
-                  RhsBuffer + Parameter.OffsetBytes, Parameter.SizeBytes);
+  inline int Call(ParameterType Parameter, MemcmpOrBcmpFunction MemcmpOrBcmp) {
+    return MemcmpOrBcmp(LhsBuffer + Parameter.OffsetBytes,
+                        RhsBuffer + Parameter.OffsetBytes, Parameter.SizeBytes);
   }
 
 private:
diff --git a/benchmarks/LibcMemoryGoogleBenchmarkMain.cpp b/benchmarks/LibcMemoryGoogleBenchmarkMain.cpp
index 0941c73..1d7ab32 100644
--- a/benchmarks/LibcMemoryGoogleBenchmarkMain.cpp
+++ b/benchmarks/LibcMemoryGoogleBenchmarkMain.cpp
@@ -15,7 +15,7 @@
 using llvm::libc_benchmarks::BzeroConfiguration;
 using llvm::libc_benchmarks::ComparisonSetup;
 using llvm::libc_benchmarks::CopySetup;
-using llvm::libc_benchmarks::MemcmpConfiguration;
+using llvm::libc_benchmarks::MemcmpOrBcmpConfiguration;
 using llvm::libc_benchmarks::MemcpyConfiguration;
 using llvm::libc_benchmarks::MemorySizeDistribution;
 using llvm::libc_benchmarks::MemsetConfiguration;
@@ -94,12 +94,12 @@
 BENCHMARK_MEMORY_FUNCTION(BM_Memcpy, CopySetup, MemcpyConfiguration,
                           getMemcpyConfigurations());
 
-extern llvm::ArrayRef<MemcmpConfiguration> getMemcmpConfigurations();
-BENCHMARK_MEMORY_FUNCTION(BM_Memcmp, ComparisonSetup, MemcmpConfiguration,
+extern llvm::ArrayRef<MemcmpOrBcmpConfiguration> getMemcmpConfigurations();
+BENCHMARK_MEMORY_FUNCTION(BM_Memcmp, ComparisonSetup, MemcmpOrBcmpConfiguration,
                           getMemcmpConfigurations());
 
-extern llvm::ArrayRef<MemcmpConfiguration> getBcmpConfigurations();
-BENCHMARK_MEMORY_FUNCTION(BM_Bcmp, ComparisonSetup, MemcmpConfiguration,
+extern llvm::ArrayRef<MemcmpOrBcmpConfiguration> getBcmpConfigurations();
+BENCHMARK_MEMORY_FUNCTION(BM_Bcmp, ComparisonSetup, MemcmpOrBcmpConfiguration,
                           getBcmpConfigurations());
 
 extern llvm::ArrayRef<MemsetConfiguration> getMemsetConfigurations();
