[llvm-branch-commits] [llvm] a485a59 - [benchmark] Fixed a build error when using CMake 3.15.1 + NDK-R20

Roman Lebedev via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Mon Dec 28 00:31:03 PST 2020


Author: AnZhong Huang
Date: 2020-12-28T11:24:56+03:00
New Revision: a485a59d2172daaee1d5e734da54fbb243f7d54c

URL: https://github.com/llvm/llvm-project/commit/a485a59d2172daaee1d5e734da54fbb243f7d54c
DIFF: https://github.com/llvm/llvm-project/commit/a485a59d2172daaee1d5e734da54fbb243f7d54c.diff

LOG: [benchmark] Fixed a build error when using CMake 3.15.1 + NDK-R20

std::decay_t used by llvm/utils/benchmark/include/benchmark/benchmark.h
is a c++14 feature, but the CMakelist uses c++11,
it's the root-cause of build error.

There are two options to fix the error.
1) change the CMakelist to support c++14.
2) change std::decay_t to std::decay, it's what the patch done.

This bug can only be reproduced by CMake 3.15, we didn't observer the bug
with CMake 3.16. But based on the code's logic, it's an obvious bug of LLVM.

The upstream code is fine, the problem was introduced by
rG1bd6123b781120c9190b9ba58b900cdcb718cdd1.

Reviewed By: lebedev.ri

Differential Revision: https://reviews.llvm.org/D93794

Added: 
    

Modified: 
    llvm/utils/benchmark/include/benchmark/benchmark.h

Removed: 
    


################################################################################
diff  --git a/llvm/utils/benchmark/include/benchmark/benchmark.h b/llvm/utils/benchmark/include/benchmark/benchmark.h
index ab61c46e9386..0b4baec41755 100644
--- a/llvm/utils/benchmark/include/benchmark/benchmark.h
+++ b/llvm/utils/benchmark/include/benchmark/benchmark.h
@@ -990,7 +990,7 @@ inline internal::Benchmark* RegisterBenchmark(const char* name,
 #ifdef BENCHMARK_HAS_CXX11
 template <class Lambda>
 internal::Benchmark* RegisterBenchmark(const char* name, Lambda&& fn) {
-  using BenchType = internal::LambdaBenchmark<std::decay_t<Lambda>>;
+  using BenchType = internal::LambdaBenchmark<std::decay<Lambda>>;
   return internal::RegisterBenchmarkInternal(
       ::new BenchType(name, std::forward<Lambda>(fn)));
 }


        


More information about the llvm-branch-commits mailing list