- Dec 23, 2021
-
-
Philip Reames authored
-
jacquesguan authored
Enable transform (X & Y) == Y ---> (~X & Y) == 0 and (X & Y) != Y ---> (~X & Y) != 0 when have Zbb extension to use more andn instruction. Differential Revision: https://reviews.llvm.org/D115922
-
Philip Reames authored
Arguments to an indirect call is by definition outside the SCC, but there's no reason we can't use locally defined facts on the call site. This also has the nice effect of further simplifying the code. Differential Revision: https://reviews.llvm.org/D116118
-
Philip Reames authored
This adds a step in the instructions to switch to the production buildmaster at the very end (after explicit approval), and updates the early instruction to start with the builder pointed at the staging buildmaster. Differential Revision: https://reviews.llvm.org/D116129
-
Fangrui Song authored
The new `lazy` state is the inverse of the previous `LazyObjFile::extracted`. There are many advantages: * previously when a LazyObjFile was extracted, a new ObjFile/BitcodeFile was created; now the file is reused, just with `lazy` cleared * avoid the confusing transfer of `symbols` from LazyObjFile to the new file * the `incompatible file:` diagnostic is unified with `is incompatible with` * simpler code, smaller executable (6200+ bytes smaller on x86-64) * make eager parsing feasible (for parallel section/symbol table initialization)
-
Nikolas Klauser authored
Remove unused headers from `<filesystem>` Spies: libcxx-commits Differential Revision: https://reviews.llvm.org/D116146
-
Andrew Browne authored
dfsan_print_origin_id_trace dfsan_sprint_origin_id_trace Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D116184
-
Michael Jones authored
The Eisel-Lemire algorithm is an effecient way to handle converting to floating point numbers from strings, but in its base form it only supports up to 64 bit floating point numbers. This adds an implementation to handle long doubles. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D115280
-
Zequan Wu authored
Differential Revision: https://reviews.llvm.org/D115308
-
David Blaikie authored
Revert "[DwarfDebug] Support emitting function-local declaration for a lexical block" & dependent patches This patch causes invalid DWARF to be generated in some cases of LTO + Split DWARF - follow-up on the original review thread (D113741) contains further detail and test cases. This reverts commit 75b622a7. This reverts commit b6ccca21. This reverts commit 514d3744.
-
alex-t authored
This change enables divergence-driven instruction selection for the build_vector DAG nodes. It also enables packed i16 instructions for GFX9. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D116187
-
Arthur O'Dwyer authored
These headers have stabilized; we don't expect anyone to be blindly clang-formatting them anymore. Leave the comments in `__format/*.h` for Mark to remove at his leisure.
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Siva Chandra Reddy authored
-
Fangrui Song authored
Currently the singleton `config` is assigned by `config = make<Configuration>()` and (if `canExitEarly` is false) destroyed by `lld::freeArena`. `make<Configuration>` allocates a stab with `malloc(4096)`. This both wastes memory and bloats the executable (every type instantiates `BumpPtrAllocator` which costs more than 1KiB code on x86-64). (No need to worry about `clang::no_destroy`. Regular invocations (`canExitEarly` is true) call `_Exit` via llvm::sys::Process::ExitNoCleanup.) Reviewed By: lichray Differential Revision: https://reviews.llvm.org/D116143
-
Siva Chandra Reddy authored
Reviewed By: michaelrj, lntue Differential Revision: https://reviews.llvm.org/D116177
-
Mircea Trofin authored
When looking at building the generator for regalloc, we realized we'd need quite a bit of custom logic, and that perhaps it'd be easier to just have each usecase (each kind of mlgo policy) have it's own stand-alone test generator. This patch just consolidates the old `config.py` and `generate_mock_model.py` into one file, and does away with subdirectories under Analysis/models.
-
Salman Javed authored
Change to comments only; NFC. ``` ClangTidyDiagnosticConsumer.h:245:6: warning: '\param' command used in a comment that is not attached to a function declaration [-Wdocumentation] ``` See this build for an example: https://lab.llvm.org/buildbot/#/builders/109/builds/27293/steps/5/logs/warnings__702_
-
Marianne Mailhot-Sarrasin authored
Fix handling of alloc-like instructions in isGuaranteedLoopInvariant(). It was not valid when the 'KillingDef' was outside of the loop, while the 'CurrentDef' was inside the loop. In that case, the 'KillingDef' only overwrites the definition from the last iteration of the loop, and not the ones of all iterations. Therefor it does not make the 'CurrentDef' to be dead, and must not remove it. Fixing issue : https://github.com/llvm/llvm-project/issues/52774 Reviewed by: Florian Hahn Differential revision: https://reviews.llvm.org/D115965
-
Mogball authored
-
Mircea Trofin authored
Remaining var that had 'inlining' in name, despite being general-purpose
-
Mehdi Amini authored
-
Krzysztof Parzyszek authored
HVX does not have load/store instructions for vector predicates (i.e. bool vectors). Because of that, vector predicates need to be converted to another type before being stored, and the most convenient representation is an HVX vector. As a consequence, in C/C++, source-level builtins that either take or produce vector predicates take or return regular vectors instead. On the other hand, the corresponding LLVM intrinsics do have boolean types that, and so a conversion of the operand or the return value was necessary. This conversion would happen inside clang's codegen, but was somewhat fragile. This patch changes the strategy: a builtin that takes a vector predicate now really expects a vector predicate. Since such a predicate cannot be provided via a variable, this builtin must be composed with other builtins that either convert vector to a predicate (V6_vandvrt) or predicate to a vector (V6_vandqrt). For users using builtins defined in hvx_hexagon_protos.h there is no impact: the conversions were added to that file. Other users will need to insert - __builtin_HEXAGON_V6_vandvrt[_128B](V, -1) to convert vector V to a vector predicate, or - __builtin_HEXAGON_V6_vandqrt[_128B](Q, -1) to convert vector predicate Q to a vector. Builtins __builtin_HEXAGON_V6_vmaskedstore.* are a temporary exception to that, but they are deprecated and should not be used anyway. In the future they will either follow the same rule, or be removed.
-
Salman Javed authored
FileOffset is unsigned while getLocWithOffset() requires a signed value.
-
Mogball authored
Several unit test folders were missing from the bazel build, including: Transforms, Conversion, Rewrite
-
Marianne Mailhot-Sarrasin authored
Pre-commiting the test case before the bug fix. Reviewed by: Florian Hahn Differential revision: https://reviews.llvm.org/D115965
-
Mogball authored
-
Michael Jones authored
I missed two instances of "SetUp" being replaced by "set_up" and "TearDown" being replaced by "tear_down" when finalizing the formatting change. This fixes that. Differential Revision: https://reviews.llvm.org/D116178
-
Daniil Fukalov authored
-
Daniil Fukalov authored
-
Mogball authored
-
Stanislav Funiak authored
Previously, we defined a struct named `RootOrderingCost`, which stored the cost (a pair consisting of the depth of the connector and a tie breaking ID), as well as the connector itself. This created some confusion, because we would sometimes write, e.g., `cost.cost.first` (the first `cost` referring to the struct, the second one referring to the `cost` field, and `first` referring to the depth). In order to address this confusion, here we rename `RootOrderingCost` to `RootOrderingEntry` (keeping the fields and their names as-is). This clarification exposed non-determinism in the optimal branching algorithm. When choosing the best local parent, we were previuosly only considering its depth (`cost.first`) and not the tie-breaking ID (`cost.second`). This led to non-deterministic choice of the parent when multiple potential parents had the same depth. The solution is to compare both the depth and the tie-breaking ID. Testing: Rely on existing unit tests. Non-detgerminism is hard to unit-test. Reviewed By: rriddle, Mogball Differential Revision: https://reviews.llvm.org/D116079
-
Mogball authored
There is no way to programmatically configure the list of disabled and enabled patterns in the canonicalizer pass, other than the duplicate the whole pass. This patch exposes the `disabledPatterns` and `enabledPatterns` options. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D116055
-
Michael Jones authored
Apply the formatting rules that were applied to the libc/src directory to the libc/test directory, as well as the files in libc/utils that are included by the tests. This does not include automated enforcement. Reviewed By: sivachandra, lntue Differential Revision: https://reviews.llvm.org/D116127
-
Simon Pilgrim authored
Missed by MSVC
-
LLVM GN Syncbot authored
-
Arthur O'Dwyer authored
Clang is gaining `auto(x)` support in D113393; sadly there seems to be no feature-test macro for it. Zhihao is opening a core issue for that macro. Use `_LIBCPP_AUTO_CAST` where C++20 specifies we should use `auto(x)`; stop using `__decay_copy(x)` in those places. In fact, remove `__decay_copy` entirely. As of C++20, it's purely a paper specification tool signifying "Return just `x`, but it was perfect-forwarded, so we understand you're going to have to call its move-constructor sometimes." I believe there's no reason we'd ever need to do its operation explicitly in code. This heisenbugs away a test failure on MinGW; see D112214. Differential Revision: https://reviews.llvm.org/D115686
-
Adrian Kuegel authored
Previously, the folding assumed that it always operates on scalar types. Differential Revision: https://reviews.llvm.org/D116151
-
Simon Pilgrim authored
Add callback to enable us to test target nodes if they are splat vectors Added some basic X86ISD::VBROADCAST + X86ISD::VBROADCAST_LOAD handling
-