[libcxx] Call __count_bool_true for bitset count
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 11 Jan 2019 17:31:17 +0000 (17:31 +0000)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 11 Jan 2019 17:31:17 +0000 (17:31 +0000)
commit63ea9585210fb7aa24a78576297e84c620cc3c74
tree86c3c19cc2463643e05da1cfcf80ffd040d45dff
parent1d36253fd8f11cb64532ac9f525d017a35e67989
[libcxx] Call __count_bool_true for bitset count

This patch aims to help clang with better information so it can inline
__bit_reference count function usage for both std::biset. Current clang
inliner can not infer that the passed typed will be used only to select
the optimized variant, it evaluates the type argument and type check as
a load plus compare (although later optimization phases correctly
optimized this out).

It is mainly to help llvm inliner to generate better code for std::bitset
count for aarch64. It helps on both runtime and code size, since if inline
decides that _VSTD::count should not be inlined the vectorization will
create both aligned and unaligned variants (which add both code size and
runtime costs)

llvm-svn: 350936
libcxx/include/bitset