-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release 1.6 #79
Merged
Release 1.6 #79
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* Restructure runtime lib, separate alloc map and type info check * Remove singletons, pass references to new classes if possible Co-authored-by: Alexander Hück <[email protected]>
- Extended testing using sanitizers and different TypeART configurations
Instead of collecting all bitcasts and filtering them, we observe that in case a GEP instruction is applied to an allocation it usually is used to calculate the pointer of the actual array. In case two GEP instructions are present, the first is used to add necessary padding to the array cookie and it's bitcast instructions can be safely ignored.
Introduces a new data structure for array cookie information that stores the store instruction that writes to the cookie and the value of the padding passed to the GEP instruction that computes the array pointer passed to the user. This commit also introduces several asserts to catch cases which are not expected and should be further investigated.
* Apply/run scripts are part of install target, closes #70 * Refactoring: extract plugin args to variables; double quote usage reduced
This makes these two command line arguments available in both the MemInstFinderPass and TypeARTPass. This allows the MemInstFinder to only collect the necessary instructions. As heap allocations are only collected on unoptimized code this in turn allows for a stricter analysis of the given code. To share the command line arguments, the cl::opt instances have been shared between the two passes. As the TypeARTPass depends on the MemInstFinderPass to already be loaded, the instances have been moved to the MemInstFinderPass and are now referenced with external linkage in the TypeARTPass.
If an array cookie is present, the value of the arrary cookie store instruction will be used as the element count of the array.
In case of array cookies, TypeART previously instrumented the address of the full memory block including the cookie. With this commit this is changed s.t. the memory address of the actual array is instrumented.
When ASAN is enabled, it will track array cookies using instrumentation by passing the array cookie-related bitcast. This triggered an assert of TypeART in "expectSingleUser", as we expected only a single user of the bitcast (the store of the array length) This patch explicitly handles the ASAN cookie instrumentation.
use llvm's Expected type to handle errors using some macros that simplify control flow
* Add cstddef header for RuntimeData to explicitly pull size_t * Handle potential noalias in Clang codegen w.r.t. *new* expression
* return_error_if merged to always use formatv version * typeart::error namespace lowercase * some minor code format
array cookie support for (de-)allocations with *new[]* and *delete[]*: * Detect cookies based on GEP use to set the cookie. * Note: MemInstFinderPass now defines the flags for heap/stack mode instead of TypeARTPass. This avoids running heap detection on optimized codes (unsupported), which may introduce severals GEPs that make cookie detection misbehave.
* Set CMake version to 1.6 * Fix initial demo related issues (Makefile, deprecated MPI symbols) * Rework README.md
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
OpenMP and array cookie support.
Passes
Runtime
Misc general
apply.sh
andrun.sh
, see Install scripts (run/apply) #70