llvm-project/llvm
Clement Courbet 8e16d73346 [SelectionDAG] Allow the user to specify a memeq function.
Summary:
Right now, when we encounter a string equality check,
e.g. `if (memcmp(a, b, s) == 0)`, we try to expand to a comparison if `s` is a
small compile-time constant, and fall back on calling `memcmp()` else.

This is sub-optimal because memcmp has to compute much more than
equality.

This patch replaces `memcmp(a, b, s) == 0` by `bcmp(a, b, s) == 0` on platforms
that support `bcmp`.

`bcmp` can be made much more efficient than `memcmp` because equality
compare is trivially parallel while lexicographic ordering has a chain
dependency.

Subscribers: fedor.sergeev, jyknight, ckennelly, gchatelet, llvm-commits

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

llvm-svn: 355672
2019-03-08 09:07:45 +00:00
..
benchmarks
bindings [bindings/go] Fix building on 32-bit systems (ARM etc.) 2019-02-16 22:33:10 +00:00
cmake Add secondary libstdc++ 4.8 and 5.1 detection mechanisms 2019-03-07 21:28:33 +00:00
docs [SelectionDAG] Allow the user to specify a memeq function. 2019-03-08 09:07:45 +00:00
examples [Kaleidoscope] Fix symbol resolver to search in reverse order. 2019-02-21 16:53:04 +00:00
include [SelectionDAG] Allow the user to specify a memeq function. 2019-03-08 09:07:45 +00:00
lib [SelectionDAG] Allow the user to specify a memeq function. 2019-03-08 09:07:45 +00:00
projects
resources
runtimes [runtimes] Move libunwind, libc++abi and libc++ to lib/ and include/ 2019-03-08 05:35:22 +00:00
test [SelectionDAG] Allow the user to specify a memeq function. 2019-03-08 09:07:45 +00:00
tools [llvm-mca] Emit a message when no bottlenecks are identified. 2019-03-07 19:34:44 +00:00
unittests Rollback of rL355585. 2019-03-07 18:13:39 +00:00
utils [GN] Locate prebuilt binaries correctly. 2019-03-07 22:20:36 +00:00
.arcconfig
.clang-format
.clang-tidy Disable tidy checks with too many hits 2019-02-01 11:20:13 +00:00
.gitattributes
.gitignore [clangd] Store index in '.clangd/index' instead of '.clangd-index' 2019-02-20 19:08:06 +00:00
CMakeLists.txt [PGO] Context sensitive PGO (part 4) 2019-03-06 19:31:37 +00:00
CODE_OWNERS.TXT
CREDITS.TXT [NFC] Add to contributor list. 2019-02-26 05:46:45 +00:00
LICENSE.TXT
LLVMBuild.txt
README.txt Testing commit access 2019-02-19 20:38:51 +00:00
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

The LLVM Compiler Infrastructure
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.