summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGBuiltin.cpp
diff options
context:
space:
mode:
authorKostya Kortchinsky <kostyak@google.com>2017-01-10 16:39:36 +0000
committerKostya Kortchinsky <kostyak@google.com>2017-01-10 16:39:36 +0000
commitc4d6c938e3519c1ac348dfbea9cbf3deb3e8a4a1 (patch)
tree1a36442e79912fa919c4cdce268f1d4394fad07e /clang/lib/CodeGen/CGBuiltin.cpp
parente999ddb8de59e261ffd16ea27e65126feb26c6a0 (diff)
downloadbcm5719-llvm-c4d6c938e3519c1ac348dfbea9cbf3deb3e8a4a1.tar.gz
bcm5719-llvm-c4d6c938e3519c1ac348dfbea9cbf3deb3e8a4a1.zip
[scudo] Separate hardware CRC32 routines
Summary: As raised in D28304, enabling SSE 4.2 for the whole Scudo tree leads to the emission of SSE 4.2 instructions everywhere, while the runtime checks only applied to the CRC32 computing function. This patch separates the CRC32 function taking advantage of the hardware into its own file, and only enabled -msse4.2 for that file, if detected to be supported by the compiler. Another consequence of removing SSE4.2 globally is realizing that memcpy were not being optimized, which turned out to be due to the -fno-builtin in SANITIZER_COMMON_CFLAGS. So we now explicitely enable builtins for Scudo. The resulting assembly looks good, with some CALLs are introduced instead of the CRC32 code being inlined. Reviewers: kcc, mgorny, alekseyshl Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D28417 llvm-svn: 291570
Diffstat (limited to 'clang/lib/CodeGen/CGBuiltin.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud