- Oct 24, 2020
-
-
Simon Pilgrim authored
-
Simon Pilgrim authored
[InstCombine] narrowFunnelShift - fold trunc/zext or(shl(a,x),lshr(b,sub(bw,x))) -> fshl(a,b,x) (PR35155) As discussed on PR35155, this extends narrowFunnelShift (recently renamed from narrowRotate) to support basic funnel shift patterns. Unlike matchFunnelShift we don't include the computeKnownBits limitation as extracting the pattern from the zext/trunc layers should be a indicator of reasonable funnel shift codegen, in D89139 we demonstrated how to efficiently promote funnel shifts to wider types. Differential Revision: https://reviews.llvm.org/D89542
-
Simon Pilgrim authored
Replace the X86 specific isSplatZeroExtended helper with a generic BuildVectorSDNode method. I've just used this to simplify the X86ISD::BROADCASTM lowering so far (and remove isSplatZeroExtended), but we should be able to use this in more places to lower to complex broadcast patterns. Differential Revision: https://reviews.llvm.org/D87930
-
Simon Pilgrim authored
Lower vector rotate operations as long as the legalization occurs outside of LegalizeVectorOps. This fixes https://bugs.llvm.org/show_bug.cgi?id=47320 Patch By: @rsanthir.quic (Ryan Santhirarajan) Differential Revision: https://reviews.llvm.org/D89497
-
Nikita Popov authored
Rather than performing the cache lookup with both possible orders for the locations, use the same canonicalization as the other AliasCache lookups in BasicAA.
-
Nikita Popov authored
Any time we insert a block into VisitedPhiBBs, previously cached values may no longer be valid for the recursive alias queries. As such, perform them using an empty AAQueryInfo. Note that if we recurse to the same phi, the block will already be inserted, so we reuse the old AAQueryInfo, and thus still protect against infinite recursion. This problem can appear with with an without BatchAA, but is more likely to occur with BatchAA, as more values are cached. Differential Revision: https://reviews.llvm.org/D90066
-
Jonas Paulsson authored
This value had the default value of 4 which caused branch relaxation to fail. Review: Ulrich Weigand Differential Revision: https://reviews.llvm.org/D90065
-
Michał Górny authored
Unify the x86 regset API to use XStateRegSet for all FPU registers, therefore eliminating the legacy API based on FPRegSet. This makes the code a little bit simpler but most notably, it provides future compatibility for register caching. Since the NetBSD kernel takes care of providing compatibility with pre-XSAVE processors, PT_{G,S}ETXSTATE can be used on systems supporting only FXSAVE or even plain FSAVE (and unlike PT_{G,S}ETXMMREGS, it clearly indicates that XMM registers are not supported). Differential Revision: https://reviews.llvm.org/D90034 -
Martin Storsjö authored
-
Tony authored
- Layout and typo improvements. - Add memory spaces section. - reStructure syntax fixes. Differential Revision: https://reviews.llvm.org/D90002
-
Michael Kruse authored
The class IntrinsicProcTable uses the pimpl idiom and manages its own pointer-to-implementation. However, it violates the rule-of-five and does not implement a move-constructor or assignment-operator. Due to differences between compilers in implementation copy elision, these may or may not be used. Due to the missing user implementation for resource handling, using the results in runtime errors. Fix my using `std::unique_ptr` instead of custom resource management. Reviewed By: klausler Differential Revision: https://reviews.llvm.org/D88794
-
Med Ismail Bennani authored
This patch enables emitting DWARF `DW_OP_implicit_value` opcode when tuning debug information for LLDB (`-debugger-tune=lldb`). This will also propagate to Darwin platforms, since they use LLDB tuning as a default. rdar://67406059 Differential Revision: https://reviews.llvm.org/D90001 Signed-off-by:
Med Ismail Bennani <medismail.bennani@gmail.com>
-
Vitaly Buka authored
As-is it was failed by unrelated linker warning with filename in the output.
-
Peter Collingbourne authored
Differential Revision: https://reviews.llvm.org/D89827
-
Michael Kruse authored
Patch D88695 introduces a new local variable inside a lambda with the same name as a variable outside of it. In some of the if constexpr regions, msvc prioritizes the outer declaration and emits the error. ``` C:\Users\meinersbur\src\llvm-project\flang\lib\Evaluate\fold-implementation.h(1200): error C3493: 'context' cannot be implicitly captured because no default capture mode has been specified ``` This is fixed by giving the inner variable a different name. Reviewed By: klausler Differential Revision: https://reviews.llvm.org/D89367
-
Michael Kruse authored
Remove the assumption that the path separator is `/`. Use functions from `llvm::sys::path` instead. Reviewed By: isuruf, klausler Differential Revision: https://reviews.llvm.org/D89369
-
Zequan Wu authored
When all provided source files are filtered out either due to `--ignore-filename-regex` or not part of binary, don't generate coverage reults for all source files. Because if users want to generate coverage results for all source files, they don't even need to provid selected source files or `--ignore-filename-regex`. Differential Revision: https://reviews.llvm.org/D89359
-
David Blaikie authored
-
Vitaly Buka authored
It's not clear if "not FileCheck" succeeded because input is empty or because input does not match "CHECK:" pattern.
-
Duncan P. N. Exon Smith authored
Simplify `HeaderSearch::LookupFile`. Instead of deconstructing a `FileEntryRef` into a name and `FileEntry` and then rebuilding it later, use it as is. This helps to unblock making the constructor of `FileEntryRef` private to `FileManager`. Differential Revision:
-
David Blaikie authored
llvm-dwarfdump: Support verbose printing DW_OP_convert to print the CU local offset before the resolved absolute offset
-
Duncan P. N. Exon Smith authored
In `ReplayPreamble::replay`, use `getFileRef` instead of `getFile`, and then use that `FileEntryRef` later to avoid needing `FileEntryRef::FileEntryRef`. The latter is going to become private to `FileManager` in a later commit.
-
Mehdi Amini authored
This dependency was already existing indirectly, but is now more direct since the registration relies on a inline function. This fixes the link of the tools with BFD.
-
Duncan P. N. Exon Smith authored
This reduces noise in a future patch, but shouldn't change anything otherwise. Differential Revision: https://reviews.llvm.org/D89521
-
Hongtao Yu authored
Duplicated callsites share the same callee profile if the original callsite was inlined. The sharing also causes the profile of callee's callee to be shared. This breaks the assert introduced ealier by D84997 in a tricky way. To illustrate, I'm using an abstract example. Say we have three functions `A`, `B` and `C`. A calls B twice and B calls C once. Some optimize performed prior to the sample profile loader duplicates first callsite to `B` and the program may look like ``` A() { B(); // with nested profile B1 and C1 B(); // duplicated, with nested profile B1 and C1 B(); // with nested profile B2 and C2 } ``` For some reason, the sample profile loader inliner then decides to only inline the first callsite in `A` and transforms `A` into ``` A() { C(); // with nested profile C1 B(); // duplicated, with nested profile B1 and C1 B(); // with nested profile B2 and C2. } ``` Here is what happens next: 1. Failing to inline the callsite `C()` results in `C1`'s samples returned to `C`'s base (outlined) profile. In the meantime, `C1`'s head samples are updated to `C1`'s entry sample. This also affects the profile of the middle callsite which shares `C1` with the first callsite. 2. Failing to inline the middle callsite results in `B1` returned to `B`'s base profile, which in turn will cause `C1` merged into `B`'s base profile. Note that the nest `C` profile in `B`'s base has a non-zero head sample count now. The value actually equals to `C1`'s entry count. 3. Failing to inline last callsite results in `B2` returned to `B`'s base profile. Note that the nested `C` profile in `B`'s base now has an entry count equal to the sum of that of `C1` and `C2`, with the head count equal to that of `C1`. This will trigger the assert later on. 4. Compiling `B` using `B`'s base profile. Failing to inline `C` there triggers the returning of the nested `C` profile. Since the nested `C` profile has a non-zero head count, the returning doesn't go through. Instead, the assert goes off. It's good that `C1` is only returned once, based on using a non-zero head count to ensure an inline profile is only returned once. However C2 is never returned. While it seems hard to solve this perfectly within the current framework, I'm just removing the broken assert. This should be reasonably fixed by the upcoming CSSPGO work where counts returning is based on context-sensitivity and a distribution factor for callsite probes. The simple example is extracted from one of our internal services. In reality, why the original callsite `B()` and duplicate one having different inline behavior is a magic. It has to do with imperfect counts in profile and extra complicated inlining that makes the hotness for them different. Reviewed By: wenlei Differential Revision: https://reviews.llvm.org/D90056 -
Mehdi Amini authored
This fixes compiler warning when building with assertions.
-
Mehdi Amini authored
This has been deprecated for >1month now and removal was announced in: https://llvm.discourse.group/t/rfc-revamp-dialect-registration/1559/11 Differential Revision: https://reviews.llvm.org/D86356
-
Mehdi Amini authored
Topologically sort the library to link to mlir-cpu-runner which is required with some linkers like BFD (NFC)
-
Mehdi Amini authored
-
Walter Erquinigo authored
As mentioned in the comment inside the code, the Intel documentation states that the internal CPU buffer is flushed out to RAM only when tracing is disabled. Otherwise, the buffer on RAM might be stale. This diff disables tracing when the trace buffer is going to be read. This is a quite safe operation, as the reading is done when the inferior is paused at a breakpoint, so we are not losing any packets because there's no code being executed. After the reading is finished, tracing is enabled back. It's a bit hard to write a test for this now, but Greg Clayton and I will refactor the PT support and writing tests for it will be easier. However I tested it manually by doing a script that automates the following flow ``` (lldb) b main Breakpoint 1: where = a.out`main + 15 at main.cpp:4:7, address = 0x000000000040050f (lldb) r Process 3078226 stopped * thread #1, name = 'a.out', stop reason = breakpoint 1.1 frame #0: 0x000000000040050f a.out`main at main.cpp:4:7 (lldb) processor-trace start (lldb) b 5 Breakpoint 2: where = a.out`main + 22 at main.cpp:5:12, address = 0x0000000000400516 (lldb) c Process 3078226 resuming Process 3078226 stopped * thread #1, name = 'a.out', stop reason = breakpoint 2.1 frame #0: 0x0000000000400516 a.out`main at main.cpp:5:12 (lldb) processor-trace show-instr-log thread #1: tid=3078226 0x40050f <+15>: movl $0x0, -0x8(%rbp) >>> Before, some runs of the script up to this point lead to empty traces (lldb) b 6 Breakpoint 3: where = a.out`main + 42 at main.cpp:6:14, address = 0x000000000040052a (lldb) c Process 3092991 resuming Process 3092991 stopped * thread #1, name = 'a.out', stop reason = breakpoint 3.1 frame #0: 0x000000000040052a a.out`main at main.cpp:6:14 (lldb) processor-trace show-instr-log thread #1: tid=3092991 0x40050f <+15>: movl $0x0, -0x8(%rbp) 0x400516 <+22>: movl $0x0, -0xc(%rbp) 0x40051d <+29>: cmpl $0x2710, -0xc(%rbp) ; imm = 0x2710 0x400524 <+36>: jge 0x400546 ; <+70> at main.cpp 0x400524 <+36>: jge 0x400546 ; <+70> at main.cpp >>> The trace was re-enabled correctly and includes the instruction of the first reading. ``` Those instructions correspond to these lines ``` 3 int main() { 4 int z = 0; 5 for (int i = 0; i < 10000; i++) { 6 z += fun(z) ... ``` Differential Revision: https://reviews.llvm.org/D85241 -
Richard Smith authored
lambda-expression's captures. The built-in structured binding rules for classes require that all fields can be accessed by name, and the fields introduced for lambda captures are unnamed, so decomposing a capturing lambda is ill-formed.
-
Krzysztof Parzyszek authored
Make sure that (select i1 q0 q1) is handled properly.
-
Max Moroz authored
-print_full_coverage=1 produces a detailed branch coverage dump when run on a single file. Uses same infrastructure as -print_coverage flag, but prints all branches (regardless of coverage status) in an easy-to-parse format. Usage: For internal use with machine learning fuzzing models which require detailed coverage information on seed files to generate mutations. Differential Revision: https://reviews.llvm.org/D85928
-
Teresa Johnson authored
Reverts the XFAIL added in b67a2aef, which had no effect. Adjust the test to make sure all output is dumped to stderr, so that hopefully I can get a better idea of where/why this is failing. Remove some redundant checking while here.
-
Arthur Eubanks authored
This doesn't support -structurizecfg-skip-uniform-regions since that would require porting LegacyDivergenceAnalysis. The NPM doesn't support adding a non-analysis pass as a dependency of another, so I had to add -lowerswitch to some tests or pin them to the legacy PM. This is the only RegionPass in tree, so I simply copied the logic for finding all Regions from the legacy PM's RGManager into StructurizeCFG::run(). Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D89026
-
Arthur Eubanks authored
Fixes noalias-calls.ll under NPM. Differential Revision: https://reviews.llvm.org/D89592
-
Arthur Eubanks authored
This makes it pass under the NPM. The legacy PM pass ran passes on SCCs in a different order, causing argpromotion to not trigger on @bar(). Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D89889
-
Keith Smiley authored
This diff adds the option -prepend_rpath which inserts an rpath as the first rpath in the binary. Test plan: make check-all Differential revision: https://reviews.llvm.org/D89605
-
Akira Hatanaka authored
temporaries created by conditional and assignment operators rdar://problem/64989559 Differential Revision: https://reviews.llvm.org/D83448
-
Evandro Menezes authored
Use the commercial name for the scheduling model for the SiFive 7 Series.
-