- Jul 24, 2020
-
-
MaheshRavishankar authored
The `makeTiledViews` did not use the sizes of the tiled views based on the result of the loop bound inference computation. This manifested as an error in computing tile sizes with convolution where not all the result expression of concatenated affine maps are simple AffineDimExpr. Differential Revision: https://reviews.llvm.org/D84366
-
Louis Dionne authored
This avoids issues when building the dylib for deployment targets that don't support aligned allocation, where Clang normally triggers an error to warn users their code would break at runtime when back-deployed. Since we're building the dylib itself, which contains the aligned allocation functions, we don't want to trigger that error. Differential Revision: https://reviews.llvm.org/D84418
-
Matt Morehouse authored
This reverts commit 19d9c039 due to buildbot failure.
-
Nikita Popov authored
As long as RenamedOp is not guaranteed to be accurate, we cannot assert here and should just return false. This was already done for the other conditions in this function. Fixes https://bugs.llvm.org/show_bug.cgi?id=46814.
-
Simon Pilgrim authored
-
Dokyung Song authored
Summary: libFuzzer's interceptor support added in 831ae45e currently only works on Linux. This patch disables the test cases added as part of that commit on non-Linux platforms. Reviewers: morehouse, hctim Subscribers: #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D84434
-
Gui Andrade authored
Differential Revision: https://reviews.llvm.org/D82680
-
Simon Pilgrim authored
Also remove some unnecessary forward declarations in RegionInfo.h.
-
Gui Andrade authored
These functions expect the caller to always pass shadows over TLS. Differential Revision: https://reviews.llvm.org/D84351
-
Louis Dionne authored
The dylib and the static archive should really be built using the same Standard, it was just an oversight.
-
Raphael Isemann authored
Summary: The `string_escape` encoding used here was removed in Python 3 which makes the test crash during tearDown: ``` File "lldb/third_party/Python/module/unittest2/unittest2/case.py", line 386, in run self.tearDown() File "lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py", line 124, in tearDown self._pump_queues.verify_queues_empty() File "lldb/packages/Python/lldbsuite/test/tools/lldb-server/socket_packet_pump.py", line 55, in verify_queues_empty _dump_queue(self.packet_queue()) File "lldb/packages/Python/lldbsuite/test/tools/lldb-server/socket_packet_pump.py", line 28, in _dump_queue print(codecs.encode(the_queue.get(True), "string_escape")) LookupError: unknown encoding: string_escape ``` Just replace it with `repr` which should work in both Python versions. Reviewers: labath, JDevlieghere Reviewed By: labath, JDevlieghere Subscribers: JDevlieghere Differential Revision: https://reviews.llvm.org/D84017 -
Raphael Isemann authored
Summary: FormattersContainer.h has two containers: FormatMap and FormattersContainer itself. FormatMap is essentially just a SetVector with a listener interface that is aspiring to be thread-safe as most of its functions lock its member mutex. FormattersContainer is for the most part just calling the matching functions of internal FormatMap instance and essentially acts as a wrapper class with some minor formatter search functionality on top. The only difference is that the FormattersContainer's public `Get` function is actually searching formatters in the list of formatters (and for example doing regex-matching) while FormatMap's `Get` function is just looking up a a format by the type matcher string. This patch deletes `FormatMap` by just renaming it to `FormattersContainer` and pulling in the two `Get` functions from the original `FormattersContainer` class. The only other user of `FormatMap` was the `NamedSummariesMap` in the `FormatManager` which I migrated by just making it also a `FormattersContainer` and replaced the only call to the `Get` function (which now has new semantics) with `GetExact` (which is FormattersContainer's function that has the semantics of FormatMap's `Get`). As `NamedSummariesMap` only stores non-regex-based formatters, both `Get` and `GetExact` would have worked, so this was mostly to clarify that this is supposed to be NFC. I also added the missing mutex lock in the `GetCount` function which was previously missing in the `FormatMap` implementation. Technically not "NFC" but I anyway had to change the function... Reviewers: labath, mib Reviewed By: labath Subscribers: abidh, JDevlieghere Differential Revision: https://reviews.llvm.org/D84296
-
Gui Andrade authored
-
Florian Hahn authored
-
Raphael Isemann authored
This was originally reverted because the m_valid member in TypeMatcher was unused in builds with disabled asserts. Now the member is gone and the default constructor is deleted (thanks Eric for the idea!). 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
-
Simon Pilgrim authored
-
Craig Topper authored
[X86] Add Feature64Bit to the 'generic' CPU and remove feature string hacking in X86Subtarget constructor Feature64Bit is only used by a check in the X86Subtarget constructor to ensure that the CPU selected supports 64-bit mode when the triple is for 64-bit mode. 'generic' is the default CPU in llc and so needs to be able to pass this check. Previously we did this by detecting the name and adding the feature to the feature string. But there doesn't seem to be any reason we can't just add the feature to the CPU directly.
-
Pete Steinfeld authored
Summary: Expressions like `iVar==z'fe'` were causing an assertion error because the `Relate()` function in `Evaluate/tools.cpp` that processes relational operators didn't deal with BOZ literals, which are typeless. I fixed this by checking to see if the operands are BOZ literals. If so, if the other operand is REAL, I convert them to REAL. Otherwise, I convert them to integers with default kind. I also added a test to resolve63.f90 that triggers the problem. Reviewers: tskeith, DavidTruby Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D83917
-
Jonas Devlieghere authored
This reverts "Eliminate unneeded value parameters in Utility" for ConstString. As Pavel pointed out on the mailing list, the class *is* trivially copyable.
-
Steven Wu authored
Summary: If bitcode reader gets an invalid branch weight, drop that from the inputs. This allows us to read the broken modules we generated before the verifier was able to catch this. rdar://64870641 Reviewers: yrouban, t.p.northover, dexonsmith, arphaman, aprantl Reviewed By: aprantl Subscribers: aprantl, hiraditya, jkorous, ributzka, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D83699
-
- Jul 23, 2020
-
-
Dokyung Song authored
Recommit "[libFuzzer] Link libFuzzer's own interceptors when other compiler runtimes are not linked." Summary: libFuzzer intercepts certain library functions such as memcmp/strcmp by defining weak hooks. Weak hooks, however, are called only when other runtimes such as ASan is linked. This patch defines libFuzzer's own interceptors, which is linked into the libFuzzer executable when other runtimes are not linked, i.e., when -fsanitize=fuzzer is given, but not others. The patch once landed but was reverted in 8ef9e2bf due to an assertion failure caused by calling an intercepted function, strncmp, while initializing the interceptors in fuzzerInit(). This issue is now fixed by calling libFuzzer's own implementation of library functions (i.e., internal_*) when the fuzzer has not been initialized yet, instead of recursively calling fuzzerInit() again. Reviewers: kcc, morehouse, hctim Subscribers: #sanitizers, krytarowski, mgorny, cfe-commits Tags: #clang, #sanitizers Differential Revision: https://reviews.llvm.org/D83494
-
Matt Morehouse authored
-
Raphael Isemann authored
Summary: Frame recognizers are stored alongside a flag that indicates whether they were deleted by the user. If the flag is set, they are supposed to be ignored by the rest of the frame recognizer code. 'frame recognizer delete' is supposed to set that flag. 'frame recognizer clear' however actually deletes all frame recognizers (so, it doesn't set the flag but directly deletes them from the list). The current implementation of this concept is pretty broken. `frame recognizer delete` sets the flag, but it somehow thinks that the recognizer id is an index in the recognizer list. That's not true as it's actually just a member of each recognizer entry. So it actually just sets the `deleted` flag for a random other recognizer. The tests for the recognizer still pass as `frame recognizer list` is also broken and just completely ignored the `deleted` flag and lists all recognizers. Also `frame recognizer delete` just ignores if it can't actually delete a recognizer if the id is invalid. I think we can simplify this whole thing by just actually deleting recognizers instead of making sure all code is actually respecting the `deleted` flag. I assume the intention of this was to make sure that all recognizers are getting unique ids over the course of an LLDB session, but as `clear` is actually deleting them and we keep recycling ids, that didn't really work to begin with. This patch deletes the `deleted` flag and just actually deletes the stored recognizer. Also adds the missing error message in case it find a recognizer with a given id. Reviewers: mib Reviewed By: mib Subscribers: abidh, JDevlieghere Differential Revision: https://reviews.llvm.org/D84404
-
Mircea Trofin authored
Clarify the relation between a block's BlockFrequency and the getEntryFreq() API, and added an API for the relatively common case of finding a block's frequency relative to the entrypoint. Added / moved some comments to header. Differential Revision: https://reviews.llvm.org/D84357
-
Louis Dionne authored
-
Craig Topper authored
I removed the feature from X86.td in ebe5f17f
-
Sanjay Patel authored
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Remove duplicate includes from PassTimingInfo.cpp that already exist in PassTimingInfo.h
-
Fangrui Song authored
-r --gc-sections is usually not useful because it just makes intermediate output smaller. https://bugs.llvm.org/show_bug.cgi?id=46700#c7 mentions a use case: validating the absence of undefined symbols ealier than in the final link. After D84129 (SHT_GROUP support in -r links), we can support -r --gc-sections without extra code. So let's allow it. Reviewed By: grimar, jhenderson Differential Revision: https://reviews.llvm.org/D84131
-
LLVM GN Syncbot authored
-
Evgeny Leviant authored
Differential revision: https://reviews.llvm.org/D84228
-
Braedy Kuzma authored
This patch clarifies the failing point of having input or output vectors of differing types. Before, lowering would fail elsewhere (e.g. in `fmul` creation) which may have been not immediately clear. As a side effect, the `getElementType` and `getVectoryTy` functions required the `const` qualifier to be added. Reviewers: fhahn Reviewed By: fhahn Differential Revision: https://reviews.llvm.org/D84374
-
Sebastian Neubauer authored
-
Xing GUO authored
This patch refactors `emitDebugInfo()` to make the length field be inferred from its content. Besides, the `Visitor` class is removed in this patch. The original `Visitor` class helps us determine an appropriate length and emit the .debug_info section. These two processes can be merged into one process. Besides, the length field should be inferred when it's missing rather than when it's zero. Reviewed By: jhenderson, labath Differential Revision: https://reviews.llvm.org/D84008
-
Xing GUO authored
This patch helps pull out some common helper functions for range list and location list tables. NFC. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D84383
-
Kazuaki Ishizaki authored
Differential Revision: https://reviews.llvm.org/D84400
-
Simon Pilgrim authored
Add SimplifyMultipleUseDemandedVectorElts peek through for imm/var SSE shifts
-
Ulrich Weigand authored
When passing the -vector feature to LLVM (or equivalently the -mno-vx command line argument to clang), the intent is that generated code must not use any vector features (in particular, no vector registers must be used). However, there are some cases where we still could generate such uses; these are all related to some of the additional vector features (like +vector-enhancements-1). Since none of those features are actually usable with -vector, just make sure we disable them all if -vector is given.
-