llvm-project/llvm
Jann Horn cfe36e4c6a [AddressSanitizer] Refactor: Permit >1 interesting operands per instruction
Summary:
Refactor getInterestingMemoryOperands() so that information about the
pointer operand is returned through an array of structures instead of
passing each piece of information separately by-value.

This is in preparation for returning information about multiple pointer
operands from a single instruction.

A side effect is that, instead of repeatedly generating the same
information through isInterestingMemoryAccess(), it is now simply collected
once and then passed around; that's probably more efficient.

HWAddressSanitizer has a bunch of copypasted code from AddressSanitizer,
so these changes have to be duplicated.

This is patch 3/4 of a patch series:
https://reviews.llvm.org/D77616 [PATCH 1/4] [AddressSanitizer] Refactor ClDebug{Min,Max} handling
https://reviews.llvm.org/D77617 [PATCH 2/4] [AddressSanitizer] Split out memory intrinsic handling
https://reviews.llvm.org/D77618 [PATCH 3/4] [AddressSanitizer] Refactor: Permit >1 interesting operands per instruction
https://reviews.llvm.org/D77619 [PATCH 4/4] [AddressSanitizer] Instrument byval call arguments

[glider: renamed llvm::InterestingMemoryOperand::Type to OpType to fix
GCC compilation]

Reviewers: kcc, glider

Reviewed By: glider

Subscribers: hiraditya, jfb, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D77618
2020-04-30 17:09:13 +02:00
..
benchmarks
bindings Update go bindings for 2dea3f1298 2020-04-22 19:02:59 +02:00
cmake [CMake] Fix cross-compiling with LLVM as CMake subproject 2020-04-30 16:54:20 +02:00
docs [docs][llvm-cxxfilt] Fix indentation in rst file 2020-04-30 10:41:45 +01:00
examples [ORC] Add example showing how to initialize/deinitialize a JITDylib with LLJIT. 2020-04-18 14:16:54 -07:00
include [AddressSanitizer] Refactor: Permit >1 interesting operands per instruction 2020-04-30 17:09:13 +02:00
lib [AddressSanitizer] Refactor: Permit >1 interesting operands per instruction 2020-04-30 17:09:13 +02:00
projects
resources
runtimes
test Revert an accidental commit of four AddressSanitizer refactor CLs 2020-04-30 16:15:43 +02:00
tools [llvm-objcopy] [COFF] Fix a misconception about debug directory payloads 2020-04-29 20:35:36 +03:00
unittests [SVE][NFC] Remove unused variable 2020-04-29 14:30:32 -07:00
utils [lit] Provide extension API for custom result categories 2020-04-29 19:45:55 -07:00
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt Revert "Temporarily revert "build: use `find_package(Python3)` if available"" 2020-04-29 01:38:08 +00:00
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt
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.