- Oct 15, 2020
-
-
Adrian Kuegel authored
Differential Revision: https://reviews.llvm.org/D89454
-
Jeremy Morse authored
Add a table recording "substitutions" between pairs of <instruction, operand> numbers, from old pairs to new pairs. Post-isel optimizations are able to record the outcome of an optimization in this way. For example, if there were a divide instruction that generated the quotient and remainder, and it were replaced by one that only generated the quotient: $rax, $rcx = DIV-AND-REMAINDER $rdx, $rsi, debug-instr-num 1 DBG_INSTR_REF 1, 0 DBG_INSTR_REF 1, 1 Became: $rax = DIV $rdx, $rsi, debug-instr-num 2 DBG_INSTR_REF 1, 0 DBG_INSTR_REF 1, 1 We could enter a substitution from <1, 0> to <2, 0>, and no substitution for <1, 1> as it's no longer generated. This approach means that if an instruction or value is deleted once we've left SSA form, all variables that used the value implicitly become "optimized out", something that isn't true of the current DBG_VALUE approach. Differential Revision: https://reviews.llvm.org/D85749
-
Simon Pilgrim authored
Replace m_ConstantInt with m_APInt to support uniform vectors (with no undef elements) Adding non-undef support would involve some refactoring of the MaskOps struct but this might still be worth it.
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Now that funnel shift handling is pretty good, we can use the intrinsics directly and avoid a lot of zext/trunc issues. https://godbolt.org/z/YqhnnM Differential Revision: https://reviews.llvm.org/D89405
-
Raphael Isemann authored
-
Sebastian Neubauer authored
Checks that metadata and invalid message are printed. Differential Revision: https://reviews.llvm.org/D89375
-
Denis Antrushin authored
Current limit on amount of tied operands (15) sometimes is too low for statepoint. We may get couple dozens of gc pointer operands on statepoint. Review D87154 changed format of statepoint to list every gc pointer only once, which makes it trivial to find tiedness relation between statepoint operands: defs are mapped 1-1 to gc pointer operands passed on registers. Reviewed By: skatkov Differential Revision: https://reviews.llvm.org/D87915
-
Tyker authored
Capitalize the profile function of APValue such that it can be used by FoldingSetNodeID Reviewed By: rsmith Differential Revision: https://reviews.llvm.org/D88643
-
Georgii Rymar authored
Currently we have a few sections that does not support specifying no keys for them. E.g. it is required that one of "Content", "Size" or "Entries" key is present. There is no reason to have this restriction. We can allow this and emit an empty section instead. This opens road for a simplification and generalization of the code in `validate()` that is discussed in the D89039 thread. Depends on D89039. Differential revision: https://reviews.llvm.org/D89391
-
Guillaume Chatelet authored
This patch adds memory function size distributions sampled from different applications running in production. This will be used to benchmark and compare memory functions implementations. Differential Revision: https://reviews.llvm.org/D89401
-
Georgii Rymar authored
Many sections either do not have a support of `Size`/`Content` or support just a one of them, e.g only `Content`. `Section` is the base class for sections. This patch adds `Content` and `Size` members to it and removes similar members from derived classes. This allows to cleanup and generalize the code and adds a support of these keys for all sections (`SHT_MIPS_ABIFLAGS` is a only exception, it requires unrelated specific changes to be done). I had to update/add many tests to test the new functionality properly. Differential revision: https://reviews.llvm.org/D89039
-
Craig Topper authored
This combine can look through (trunc (ctpop X)). When doing this it tries to make sure the trunc doesn't lose any information from the ctpop. It does this by checking that the truncated type has more bits that Log2_32_Ceil of the ctpop type. The Ceil is unnecessary and pessimizes non-power of 2 types. For example, ctpop of i256 requires 9 bits to represent the max value of 256. But ctpop of i255 only requires 8 bits to represent the max result of 255. Log2_32_Ceil of 256 and 255 both return 8 while Log2_32 returns 8 for 256 and 7 for 255 The code with popcnt enabled is a regression for this test case, but it does match what already happens with i256 truncated to i9. Since power of 2 is more likely, I don't think it should block this change. Differential Revision: https://reviews.llvm.org/D89412
-
David Sherwood authored
In most of lib/Target we know that we are not dealing with scalable types so it's perfectly fine to replace TypeSize comparison operators with their fixed width equivalents, making use of getFixedSize() and so on. Differential Revision: https://reviews.llvm.org/D89101
-
Jason Molenda authored
With a large dSYM over a slow home connection, the two minute timeout would sometimes be exceeded, and we haven't seen instances of a long timeout causing people any problems, so we're bumping it up. 640 seconds ought to be enough for anyone. <rdar://problem/67759526>
-
Luqman Aden authored
Fixes https://bugs.llvm.org/show_bug.cgi?id=46473 LLD wasn't previously specifying any specific alignment in the TLS table's Characteristics field so the loader would just assume the default value (16 bytes). This works most of the time except if you have thread locals that want specific higher alignments (e.g. 32 as in the bug) *even* if they specify an alignment on the thread local. This change updates LLD to take the max alignment from tls section. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D88637
-
Luqman Aden authored
Revert individual wip commits and will instead follow up with a single commit with all the changes. Makes cherry-picking easier and will contain all the right tags. This reverts commit 32a4ad3b. This reverts commit 7fe13af6. This reverts commit 51fbc1be. This reverts commit f80950a8. This reverts commit 0778cad9. This reverts commit 8b70d527.
-
David Blaikie authored
-
David Blaikie authored
-
Jason Molenda authored
<rdar://problem/70296751>
-
Carl Ritson authored
-
David Blaikie authored
(this doesn't cover all cases - libDebugInfoDWARF has a default error handler that prints errors without any exit code handling - I'll be following up with a patch for that after this)
-
MaheshRavishankar authored
Each hardware that supports SPV_C_CooperativeMatrixNV has a list of configurations that are supported natively. Add an attribute to specify the configurations supported to the `spv.target_env`. Reviewed By: antiagainst, ThomasRaoux Differential Revision: https://reviews.llvm.org/D89364
-
David Blaikie authored
-
Richard Smith authored
Previously we failed to convert 'p' from array/function to pointer type, and to represent the load of 'p' in the AST. The latter causes problems for constant evaluation.
-
Duncan P. N. Exon Smith authored
Update clang-tools-extra, clang/tools, clang/unittests to migrate from `SourceManager::getBuffer`, which returns an always dereferenceable `MemoryBuffer*`, to `getBufferOrNone` or `getBufferOrFake`, both of which return a `MemoryBufferRef`, depending on whether the call site was checking for validity of the buffer. No functionality change intended. Differential Revision: https://reviews.llvm.org/D89416
-
Duncan P. N. Exon Smith authored
Update clang/lib/StaticAnalyzer to stop relying on a `MemoryBuffer*`, using the `MemoryBufferRef` from `getBufferOrNone` or the `Optional<MemoryBufferRef>` from `getBufferOrFake`, depending on whether there's logic for checking validity of the buffer. The change to clang/lib/StaticAnalyzer/Core/IssueHash.cpp is potentially a functionality change, since the logic was wrong (it checked for `nullptr`, which was never returned by the old API), but if that was reachable the new behaviour should be better. Differential Revision: https://reviews.llvm.org/D89414
-
Vinay Madhusudan authored
ADD(UADDV a, UADDV b) --> UADDV(ADD a, b) This partially solves the bug: https://bugs.llvm.org/show_bug.cgi?id=46888 Meta ticket: https://bugs.llvm.org/show_bug.cgi?id=46929 Differential Revision: https://reviews.llvm.org/D88731
-
Duncan P. N. Exon Smith authored
Update `clang/lib/CodeGen` to use a `MemoryBufferRef` from `getBufferOrNone` instead of `MemoryBuffer*` from `getBuffer`. No functionality change here. Differential Revision: https://reviews.llvm.org/D89411
-
Duncan P. N. Exon Smith authored
Update clang/lib/Frontend to use a `MemoryBufferRef` from `getBufferOrFake` instead of `MemoryBuffer*` from `getBuffer`, with the exception of `FrontendInputFile`, which I'm leaving for later. Differential Revision: https://reviews.llvm.org/D89409
-
Jonas Devlieghere authored
dsymutil was incorrectly ignoring aliases to private extern symbols in the MachODebugMapParser. This resulted in spurious warnings about not being able to find symbols. rdar://49652389 Differential revision: https://reviews.llvm.org/D89444
-
Duncan P. N. Exon Smith authored
Update clang/lib/Basic to stop relying on a `MemoryBuffer*`, using the `MemoryBufferRef` from `getBufferOrNone` or `getBufferOrFake` instead of `getBuffer`. Differential Revision: https://reviews.llvm.org/D89394
-
Luqman Aden authored
Fixes https://bugs.llvm.org/show_bug.cgi?id=46473 LLD wasn't previously specifying any specific alignment in the TLS table's Characteristics field so the loader would just assume the default value (16 bytes). This works most of the time except if you have thread locals that want specific higher alignments (e.g. 32 as in the bug) *even* if they specify an alignment on the thread local. This change updates LLD to take the max alignment from tls section. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D88637
-
Luqman Aden authored
-
Luqman Aden authored
-
Luqman Aden authored
-
Luqman Aden authored
-
Luqman Aden authored
Differential Revision: https://reviews.llvm.org/D88637
-
Tony authored
-
Petr Hosek authored
This reverts commit 287c3186 which broke sanitizer tests that use C++ standard library.
-