diff options
author | Vitaly Buka <vitalybuka@google.com> | 2024-03-31 21:23:55 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-31 21:23:55 -0700 |
commit | 90c738ef15fc6f10255dced0b1557f2cd2c4f43b (patch) | |
tree | 6fe772148d774ac5ba6ce09ffddaaa7537a7ff35 /llvm/lib/CodeGen/CodeGenPrepare.cpp | |
parent | 70deb7bfe90af91c68454b70683fbe98feaea87d (diff) | |
download | llvm-90c738ef15fc6f10255dced0b1557f2cd2c4f43b.zip llvm-90c738ef15fc6f10255dced0b1557f2cd2c4f43b.tar.gz llvm-90c738ef15fc6f10255dced0b1557f2cd2c4f43b.tar.bz2 |
[IR] Introduce `llvm.allow.{runtime,ubsan}.check()` (#84850)
The goal is to have ability to change logic compile time based on PGO
data.
Our primary application is removing UBSAN checks from hot code.
Then we'd like to use this for libc++ hardening and regular debug
asserts.
Previous attempt is #84214.
Benefits from special intrinsic vs #84214:
1. Resulting binary is 3% faster than removing traps (on
"test-suite/MultiSource/Benchmarks" with PGO+ThinLTO)
2. Intrinsic can be used from source code to change behavior from C/C++
program. E.g. enabling asserts in cold code.
3. Easier to match basic blocks.
RFC:
https://discourse.llvm.org/t/rfc-add-llvm-experimental-hot-intrinsic-or-llvm-hot/77641
---------
Co-authored-by: Nikita Popov <npopov@redhat.com>
Diffstat (limited to 'llvm/lib/CodeGen/CodeGenPrepare.cpp')
0 files changed, 0 insertions, 0 deletions