- Jul 22, 2020
-
-
Hiroshi Yamauchi authored
-
Marco Vanotti authored
This CL allows asan allocator in fuchsia to decommit shadow memory for memory allocated using mmap. Big allocations in asan end up being allocated via `mmap` and freed with `munmap`. However, when that memory is freed, asan returns the corresponding shadow memory back to the OS via a call to `ReleaseMemoryPagesToOs`. In fuchsia, `ReleaseMemoryPagesToOs` is a no-op: to be able to free memory back to the OS, you have to hold a handle to the vmo you want to modify, which is tricky at the ReleaseMemoryPagesToOs level as that function is not exclusively used for shadow memory. The function `__sanitizer_fill_shadow` fills a given shadow memory range with a specific value, and if that value is 0 (unpoison) and the memory range is bigger than a threshold parameter, it will decommit that memory if it is all zeroes. This CL modifies the `FlushUnneededASanShadowMemory` function in `asan_poisoning.cpp` to add a call to `__sanitizer_fill_shadow` with value and threshold = 0. This way, all the unneeded shadow memory gets returned back to the OS. A test for this behavior can be found in fxrev.dev/391974 Differential Revision: https://reviews.llvm.org/D80355 Change-Id: Id6dd85693e78a222f0329d5b2201e0da753e01c0
-
Andy Soffer authored
`Metadata` is being changed from an `llvm::Any` to a `MatchConsumer<llvm::Any>` so that it's evaluation can be be dependent on on `MatchResult`s passed in. Reviewed By: ymandel, gribozavr2 Differential Revision: https://reviews.llvm.org/D83820
-
Serge Pavlov authored
This reverts commit d4020ef7. It broke LLDB buildbot: http://lab.llvm.org:8011/builders/lldb-x64-windows-ninja/builds/17702.
-
Jon Roelofs authored
... on systems where wait() isn't one of the declarations transitively included via unistd.h (i.e. Darwin). Differential Revision: https://reviews.llvm.org/D84207
-
aartbik authored
Introduces the scatter/gather operations to the Vector dialect (important memory operations for sparse computations), together with a first reference implementation that lowers to the LLVM IR dialect to enable running on CPU (and other targets that support the corresponding LLVM IR intrinsics). The operations can be used directly where applicable, or can be used during progressively lowering to bring other memory operations closer to hardware ISA support for a gather/scatter. The semantics of the operation closely correspond to those of the corresponding llvm intrinsics. Note that the operation allows for a dynamic index vector (which is important for sparse computations). However, this first reference lowering implementation "serializes" the address computation when base + index_vector is converted to a vector of pointers. Exploring how to use SIMD properly during these step is TBD. More general memrefs and idiomatic versions of striding are also TBD. Reviewed By: arpith-jacob Differential Revision: https://reviews.llvm.org/D84039
-
Stefan Pintilie authored
Updated the tests to use -mcpu=pwr10 instead of -mcpu=future. Updated the tests to include Big Endian testing.
-
Fangrui Song authored
-
Jonas Devlieghere authored
My previous commit added the default arguments but didn't use them in the member initialization list...
-
Raphael Isemann authored
This reverts commit 5b0de575. Apparently that caused some test to get stuck on Linuxx. Reverting for now.
-
Nico Weber authored
Outside of compiler-rt (where it's arguably an anti-pattern too), LLVM tries to keep its build files as simple as possible. See e.g. llvm/docs/SupportLibrary.rst, "Code Organization". Differential Revision: https://reviews.llvm.org/D84243
-
Kevin P. Neal authored
-
Arthur Eubanks authored
OptNoneInstrumentation is part of StandardInstrumentations. It skips functions (or loops) that are marked optnone. The feature of skipping optional passes for optnone functions under NPM is gated on a -enable-npm-optnone flag. Currently it is by default false. That is because we still need to mark all required passes to be required. Otherwise optnone functions will start having incorrect semantics. After that is done in following changes, we can remove the flag and always enable this. Reviewed By: ychen Differential Revision: https://reviews.llvm.org/D83519
-
Jonas Devlieghere authored
By using default arguments the caller can specify a subset without the need for overloads. This is particularly useful in combination with emplace_back as these objects are generally stored in a vector.
-
Raphael Isemann authored
Summary: FormattersContainer stores LLDB's formatters. It's implemented as a templated map-like data structures that supports any kind of value type and only allows ConstString and RegularExpression as the key types. The keys are used for matching type names (e.g., the ConstString key `std::vector` matches the type with the same name while RegularExpression keys match any type where the RegularExpression instance matches). The fact that a single FormattersContainer can only match either by string comparison or regex matching (depending on the KeyType) causes us to always have two FormatterContainer instances in all the formatting code. This also leads to us having every type name matching logic in LLDB twice. For example, TypeCategory has to implement every method twice (one string matching one, one regex matching one). This patch changes FormattersContainer to instead have a single `TypeMatcher` key that wraps the logic for string-based and regex-based type matching and is now the only possible KeyType for the FormattersContainer. This means that a single FormattersContainer can now match types with both regex and string comparison. To summarize the changes in this patch: * Remove all the `*_Impl` methods from `FormattersContainer` * Instead call the FormatMap functions from `FormattersContainer` with a `TypeMatcher` type that does the respective matching. * Replace `ConstString` with `TypeMatcher` in the few places that directly interact with `FormattersContainer`. I'm working on some follow up patches that I split up because they deserve their own review: * Unify FormatMap and FormattersContainer (they are nearly identical now). * Delete the duplicated half of all the type matching code that can now use one interface. * Propagate TypeMatcher through all the formatter code interfaces instead of always offering two functions for everything. There is one ugly design part that I couldn't get rid of yet and that is that we have to support getting back the string used to construct a `TypeMatcher` later on. The reason for this is that LLDB only supports referencing existing type matchers by just typing their respective input string again (without even supplying if it's a regex or not). Reviewers: davide, mib Reviewed By: mib Subscribers: mgorny, JDevlieghere Differential Revision: https://reviews.llvm.org/D84151
-
Jordan Rupprecht authored
-
Jonas Devlieghere authored
-
Logan Smith authored
This avoids massive warning spam due to the unit tests' use of gtest and gmock, which do not use the 'override' keyword in their sources. Differential Revision: https://reviews.llvm.org/D84213
-
- Jul 21, 2020
-
-
Diego Caballero authored
Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D84216
-
- Jul 22, 2020
-
-
Jonas Devlieghere authored
RecordInterestingDirectory was added to collect dSYM bundles and their content. For the current working directory we only want the directory to be part of the VFS, not necessarily its contents. This patch renames the current method to RecordInterestingDirectoryRecursively and adds a new one that's not recursive.
-
- Jul 21, 2020
-
-
Sidharth Baveja authored
Summary: This patch adds the ability to peel off iterations of the first loop in loop fusion. This can allow for both loops to have the same trip count, making it legal for them to be fused together. Here is a simple scenario peeling can be used in loop fusion: for (i = 0; i < 10; ++i) a[i] = a[i] + 3; for (j = 1; j < 10; ++j) b[j] = b[j] + 5; Here is we can make use of peeling, and then fuse the two loops together. We can peel off the 0th iteration of the loop i, and then combine loop i and j for i = 1 to 10. a[0] = a[0] +3; for (i = 1; i < 10; ++i) { a[i] = a[i] + 3; b[i] = b[i] + 5; } Currently peeling with loop fusion is only supported for loops with constant trip counts and a single exit point. Both unguarded and guarded loops are supported. Author: sidbav (Sidharth Baveja) Reviewers: kbarton, Meinersbur, bkramer, Whitney, skatkov, ashlykov, fhahn, bmahjour Reviewed By: bmahjour Subscribers: bmahjour, mgorny, hiraditya, zzheng Tags: LLVM Differential Revision: https://reviews.llvm.org/D82927 -
Chris Gyurgyik authored
Fixes typo for strstr in entrypoints. str -> src.
-
Fangrui Song authored
* If two group members are combined, we should leave just one index in the SHT_GROUP content. * If a group member is discarded (/DISCARD/ or upcoming -r --gc-sections combination), we should drop its index in the SHT_GROUP content. LLD currently crashes (`getOutputSection()` is null). Reviewed By: psmith Differential Revision: https://reviews.llvm.org/D84129
-
cgyurgyik authored
Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D83956
-
Vince Bridgers authored
Summary: The purpose of this change is to do a small refactoring of code in ASTImporterTest.cpp by moving it to ASTImporterFixtures.h in order to support tests of downstream custom types and minimize the "living downstream burden" of frequent integrations from community to a downstream repo that implements custom AST import tests. Reviewers: martong, a.sidorin, shafik Reviewed By: martong Subscribers: balazske, dkrupp, bjope, rnkovacs, teemperor, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D83970
-
Fangrui Song authored
[llvm-readobj] Construct relocation-aware DWARFDataExtractor to decode .eh_frame addresses correctly In an object file, a "PC Begin" field in a FDE is usually relocated by a PC-relative relocation. Use a relocation-aware DWARFDataExtractor overload (with DWARFContext and a reference to its internal .eh_frame representation) to decode addresses correctly. In an object file, most sections have addresses of zero. So the displayed addresses are almost always offsets relative to the start of the associated text section. DWARFContext::create handles .eh_frame and .rela.eh_frame by itself, so if there are more than one .eh_frame (technically possible, but almost always erronerous in practice), this will only handle the first one. Supporting multiple .eh_frame is beyond the scope of this patch. Reviewed By: grimar, jhenderson Differential Revision: https://reviews.llvm.org/D84106
-
Saiyedul Islam authored
Following tests were disabled for clang-11 after upgrading to version 5.0 in D82963: 1. openmp/runtime/test/env/kmp_set_dispatch_buf.c 2. openmp/runtime/test/worksharing/for/kmp_set_dispatch_buf.c They are also failing for clang-12. Thus this temporary disabling until they are fixed. Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D84241
-
Jon Roelofs authored
This is a necessary cleanup after having expanded a SCEV. See: https://reviews.llvm.org/D84071#inline-774728 Differential Revision: https://reviews.llvm.org/D84174
-
Jon Roelofs authored
Being "precise" here is getting us into trouble with one of the EXPENSIVE_CHECKS buildbots, see [1]. Rather than reporting IR additions that later get rolled back as "no change", instead we now conservatively report that there was. 1: http://lists.llvm.org/pipermail/llvm-dev/2020-July/143509.html Differential Revision: https://reviews.llvm.org/D84071
-
Chris Morin authored
-
Mitch Phillips authored
Note: Resubmission with frame pointers force-enabled to fix builds with -DCOMPILER_RT_BUILD_BUILTINS=False Summary: Splits the unwinder into a non-segv (for allocation/deallocation traces) and a segv unwinder. This ensures that implementations can select an accurate, slower unwinder in the segv handler (if they choose to use the GWP-ASan provided one). This is important as fast frame-pointer unwinders (like the sanitizer unwinder) don't like unwinding through signal handlers. Reviewers: morehouse, cryptoad Reviewed By: morehouse, cryptoad Subscribers: cryptoad, mgorny, eugenis, pcc, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D83994
-
Sander de Smalen authored
The default calling convention needs to save/restore the SVE callee saves according to the SVE PCS when the function takes or returns scalable types, even when the `aarch64_sve_vector_pcs` CC is not specified for the function. Reviewers: efriedma, paulwalker-arm, david-arm, rengolin Reviewed By: paulwalker-arm Differential Revision: https://reviews.llvm.org/D84041
-
MaheshRavishankar authored
SPIR-V lowering does not use `MemrefDescriptor`s when lowering memref types. This adds rationale for the choice made. Differential Revision: https://reviews.llvm.org/D84184
-
George Mitenkov authored
This patch introduces conversion pattern for `spv.selection` op. The conversion can only be applied to selection with all blocks being reachable. Moreover, selection with control attributes "Flatten" and "DontFlatten" is not supported. Since the `PatternRewriter` hook for block merging has not been implemented for `ConversionPatternRewriter`, merge and continue blocks are kept separately. Reviewed By: antiagainst, ftynse Differential Revision: https://reviews.llvm.org/D83860
-
Bruno Ricci authored
The changes to "AlignTrailingComments" and "CommentPragmas" did not result in what I expected (just leave the special comments alone). Instead now the following: void test() { int i; // expected-error // expected-warning } is formatted into: void test() { int i; // expected-error // expected-warning } which is even worse. -
AndreyChurbanov authored
-
Louis Dionne authored
Most of the code in compiler_rt is C code. However, clang_rt.profile contains the InstrProfilingRuntime.cpp file, which builds as C++. This means that including e.g. <stdint.h> will actually include libc++'s <stdint.h> and then #include_next the system's <stdint.h>. However, if the target we're building compiler-rt for isn't supported by libc++, this will lead to a failure since libc++'s <stdint.h> includes <__config>, which performs various checks. Since the goal seems to *not* be including any header from the C++ Standard Library in clang_rt.profile, using -nostdinc++ to ensure that doesn't happen unknowingly seems to make sense. rdar://65852694 Differential Revision: https://reviews.llvm.org/D84205
-
AndreyChurbanov authored
-
Petre-Ionut Tudor authored
Summary: Teach LLVM to recognize the above pattern, where the operands are either signed or unsigned types. Subscribers: kristof.beyls, hiraditya, danielkiss, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D83777
-
Raphael Isemann authored
Summary: FormattersContainer currently has an unused `m_name` member. Usually LLDB allows giving objects names, but for the FormattersContainer it seems excessive. There are only 4 FormattersContainer variables in LLDB and they are not usually passed around, so one can always just go up a few frames when debugging to find out which FormattersContainer you're dealing with. Reviewers: mib, davide Reviewed By: mib Subscribers: JDevlieghere Differential Revision: https://reviews.llvm.org/D84154
-