aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2021-12-22[DFSan] Add functions to print origin trace from origin id instead of address.origin/mainAndrew Browne4-14/+156
dfsan_print_origin_id_trace dfsan_sprint_origin_id_trace Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D116184
2021-12-22[libc] add modified Eisel-Lemire for long doublesMichael Jones2-5/+197
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
2021-12-22[LLDB][DWARF] Fix duplicate TypeSP in type listZequan Wu1-5/+0
Differential Revision: https://reviews.llvm.org/D115308
2021-12-22Revert "[DwarfDebug] Support emitting function-local declaration for a ↵David Blaikie14-1043/+107
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 75b622a7959479ccdb758ebe0973061b7b4fcacd. This reverts commit b6ccca217c35a95b8c2a337a7801b37cb23dbae2. This reverts commit 514d37441918dd04a2cd4f35c08959d7c3ff096d.
2021-12-23[AMDGPU] Select build_vector DAG nodes according to the divergencealex-t4-159/+423
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
2021-12-22[libc++] Remove "clang-format off/on" comments. NFC.Arthur O'Dwyer4-13/+0
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.
2021-12-22[NFC][sanitizer] Reformat scriptVitaly Buka1-1/+4
2021-12-22[NFC][sanitizer] Reformat a part of the fileVitaly Buka1-18/+16
2021-12-22[libc][Obvious] Add target OSUtil tests only if the target OS/arch match.Siva Chandra Reddy2-2/+6
2021-12-22[ELF] Change some global pointers to unique_ptrFangrui Song7-12/+13
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
2021-12-22[libc] Move the x86_64 syscall functions to OSUtil.Siva Chandra Reddy38-88/+106
Reviewed By: michaelrj, lntue Differential Revision: https://reviews.llvm.org/D116177
2021-12-22[NFC][mlgo]Make the test model generator inlining-specificMircea Trofin7-84/+68
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.
2021-12-23Resolve -Wdocumentation warning in ClangTidyDiagnosticConsumer (NFC)Salman Javed1-4/+2
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_
2021-12-22[DSE] Fix invalid removal of store instructionMarianne Mailhot-Sarrasin2-11/+5
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
2021-12-22[mlir] Add unit test for disabling canonicalizer patterns (NFC)Mogball3-0/+89
2021-12-22[NFC][mlgo]Rename a variable in TensorFlowCompile.cmakeMircea Trofin1-2/+2
Remaining var that had 'inlining' in name, despite being general-purpose
2021-12-22Fix more clang-tidy cleanups in mlir/ (NFC)Mehdi Amini61-122/+122
2021-12-22[Hexagon] Make conversions to vector predicate types explicit for builtinsKrzysztof Parzyszek8-1083/+849
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.
2021-12-23Resolve lint warning about converting unsigned to signed (NFC)Salman Javed1-1/+2
FileOffset is unsigned while getLocWithOffset() requires a signed value.
2021-12-22[mlir] Add missing unit tests to BUILD.bazelMogball2-1/+44
Several unit test folders were missing from the bazel build, including: Transforms, Conversion, Rewrite
2021-12-22[DSE] Add test case showing bug PR52774.Marianne Mailhot-Sarrasin1-0/+60
Pre-commiting the test case before the bug fix. Reviewed by: Florian Hahn Differential revision: https://reviews.llvm.org/D115965
2021-12-22[mlir] Update BUILD.bazel to include `scf_tests`Mogball1-0/+15
2021-12-22[libc][obvious] fix formatting mistakeMichael Jones2-4/+4
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
2021-12-22[NFC][AMDGPU][CostModel] Add tests for AMDGPU cost model, part 2.Daniil Fukalov11-0/+4333
2021-12-22[NFC][AMDGPU][CostModel] Add tests for AMDGPU cost model.Daniil Fukalov4-0/+1097
2021-12-22[mlir] Fix missing namespace (NFC)Mogball1-3/+3
2021-12-22[MLIR][PDL] Clear up the terminology in the root ordering graph.Stanislav Funiak3-39/+42
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
2021-12-22[mlir] Canonicalizer constructor should accept disabled/enabled patternsMogball3-7/+29
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
2021-12-22[libc] apply formatting to testsMichael Jones75-872/+900
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
2021-12-22Remove superfluous semicolon.Simon Pilgrim1-1/+1
Missed by MSVC
2021-12-22[gn build] Port cb8a0b07974eLLVM GN Syncbot1-1/+1
2021-12-22[libc++] [ranges] Introduce _LIBCPP_AUTO_CAST(x) for auto(x).Arthur O'Dwyer15-99/+80
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
2021-12-22[mlir][arith] Fix CmpIOP folding for vector types.Adrian Kuegel2-1/+35
Previously, the folding assumed that it always operates on scalar types. Differential Revision: https://reviews.llvm.org/D116151
2021-12-22[DAG][X86] Add TargetLowering::isSplatValueForTargetNode overrideSimon Pilgrim7-46/+78
Add callback to enable us to test target nodes if they are splat vectors Added some basic X86ISD::VBROADCAST + X86ISD::VBROADCAST_LOAD handling
2021-12-22Revert "[AMDGPU] Move call clobbered return address registers s[30:31] to ↵Ron Lieberman97-5826/+6960
callee saved range" This reverts commit 9075009d1fd5f2bf9aa6c2f362d2993691a316b3. Failed amdgpu runtime buildbot # 3514
2021-12-22[Clang][DebugInfo] Cease turning instruction-referencing off by defaultJeremy Morse2-5/+0
Over in D114631 I turned this debug-info feature on by default, for x86_64 only. I'd previously stripped out the clang cc1 option that controlled it in 651122fc4ac, unfortunately that turned out to not be completely effective, and the two things deleted in this patch continued to keep it off-by-default. Oooff. As a follow-up, this patch removes the last few things to do with ValueTrackingVariableLocations from clang, which was the original purpose of D114631. In an ideal world, if this patch causes you trouble you'd revert 3c045070882f instead, which was where this behaviour was supposed to start being the default, although that might not be practical any more.
2021-12-22[NFC][Clang] Move function implementation of `OpenMPAtomicUpdateChecker` ↵Shilei Tian1-1/+1
into anonymous namespace Just to keep code consistent as `OpenMPAtomicUpdateChecker` is defined in anonymous namespace. Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D116068
2021-12-22[OpenMP] Regenerate test checks (NFC)Nikita Popov39-8961/+8940
Regenerate test checks to reduce diff for an upcoming patch.
2021-12-22[JSONNodeDumper] Regenerate test checks (NFC)Nikita Popov11-2/+141
gen_ast_dump_json_test.py adds these lines of whitespace. Precommit it to avoid spurious diffs in future changes.
2021-12-22[clang-tidy] abseil-string-find-startswith: detect `s.rfind(z, 0) == 0`Ivan Gerasimov3-8/+75
Suggest converting `std::string::rfind()` calls to `absl::StartsWith()` where possible.
2021-12-22[libc++] [ranges] Remove the static_assert from ranges::begin and ranges::end.Arthur O'Dwyer13-279/+162
As discussed with ldionne. The problem with this static_assert is that it makes ranges::begin a pitfall for anyone ever to use inside a constraint or decltype. Many Ranges things, such as ranges::size, are specified as "Does X if X is well-formed, or else Y if Y is well-formed, or else `ranges::end(t) - ranges::begin(t)` if that is well-formed, or else..." And if there's a static_assert hidden inside `ranges::begin(t)`, then you get a hard error as soon as you ask the question -- even if the answer would have been "no, that's not well-formed"! Constraining on `requires { t + 0; }` or `requires { t + N; }` is verboten because of https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103700 . For ranges::begin, we can just decay to a pointer even in the incomplete-type case. For ranges::end, we can safely constrain on `sizeof(*t)`. Yes, this means that an array of incomplete type has a `ranges::begin` but no `ranges::end`... just like an unbounded array of complete type. This is a valid manifestation of IFNDR. All of the new libcxx/test/std/ cases are mandatory behavior, as far as I'm aware. Tests for the IFNDR cases in ranges::begin and ranges::end remain in `libcxx/test/libcxx/`. The similar tests for ranges::empty and ranges::data were simply wrong, AFAIK. Differential Revision: https://reviews.llvm.org/D115838
2021-12-22[AMDGPU] Move call clobbered return address registers s[30:31] to callee ↵RamNalamothu97-6960/+5826
saved range Currently the return address ABI registers s[30:31], which fall in the call clobbered register range, are added as a live-in on the function entry to preserve its value when we have calls so that it gets saved and restored around the calls. But the DWARF unwind information (CFI) needs to track where the return address resides in a frame and the above approach makes it difficult to track the return address when the CFI information is emitted during the frame lowering, due to the involvment of understanding the control flow. This patch moves the return address ABI registers s[30:31] into callee saved registers range and stops adding live-in for return address registers, so that the CFI machinery will know where the return address resides when CSR save/restore happen during the frame lowering. And doing the above poses an issue that now the return instruction uses undefined register `sgpr30_sgpr31`. This is resolved by hiding the return address register use by the return instruction through the `SI_RETURN` pseudo instruction, which doesn't take any input operands, until the `SI_RETURN` pseudo gets lowered to the `S_SETPC_B64_return` during the `expandPostRAPseudo()`. As an added benefit, this patch simplifies overall return instruction handling. Note: The AMDGPU CFI changes are there only in the downstream code and another version of this patch will be posted for review for the downstream code. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D114652
2021-12-22[lldb] [Process/FreeBSDKernel] Introduce libkvm supportMichał Górny4-38/+173
Introduce initial support for using libkvm on FreeBSD. The library can be used as an alternate implementation for processing kernel coredumps but it can also be used to access live kernel memory through specifying "/dev/mem" as the core file, i.e.: lldb --core /dev/mem /boot/kernel/kernel Differential Revision: https://reviews.llvm.org/D116005
2021-12-22[clang][OpenMP][DebugInfo] Debug support for variables in shared clause of ↵Alok Kumar Sharma3-0/+110
OpenMP task construct Currently variables appearing inside shared clause of OpenMP task construct are not visible inside lldb debugger. After the current patch, lldb is able to show the variable ``` * thread #1, name = 'a.out', stop reason = breakpoint 1.1 frame #0: 0x0000000000400934 a.out`.omp_task_entry. [inlined] .omp_outlined.(.global_tid.=0, .part_id.=0x000000000071f0d0, .privates.=0x000000000071f0e8, .copy_fn.=(a.out`.omp_task_privates_map. at testshared.cxx:8), .task_t.=0x000000000071f0c0, __context=0x000000000071f0f0) at testshared.cxx:10:34 7 else { 8 #pragma omp task shared(svar) firstprivate(n) 9 { -> 10 printf("Task svar = %d\n", svar); 11 printf("Task n = %d\n", n); 12 svar = fib(n - 1); 13 } (lldb) p svar (int) $0 = 9 ``` Reviewed By: djtodoro Differential Revision: https://reviews.llvm.org/D115510
2021-12-22[msan] Break optimization in memccpy testsNikita Popov1-0/+2
After D116148 the memccpy gets optimized away and the expected uninitialized memory access does not occur. Make sure the call does not get optimized away.
2021-12-22[libc++] Add from-scratch testing configs for WindowsMartin Storsjö5-3/+105
The paths to the compiler and to the python executable may need to be quoted (if they're installed into e.g. C:\Program Files). All testing commands that are executed expect a gcc compatible command line interface, while clang-cl uses different command line options. In the original testing config, if the chosen compiler was clang-cl, it was replaced with clang++ by looking for such an executable in the path. For the new from-scratch test configs, I instead chose to add "--driver-mode=g++" to flags - invoking "clang-cl --driver-mode=g++" has the same effect as invoking "clang++", without needing to run any heuristics for picking a different compiler executable. Differential Revision: https://reviews.llvm.org/D111202
2021-12-22[libcxx] [test] Remove a leftover unused function in config.py. NFC.Martin Storsjö1-8/+0
While there's little value in polishing the old config system, I ran into this function and was confused for a while, while grepping around and trying to wrap my head around things. Differential Revision: https://reviews.llvm.org/D116131
2021-12-22[libcxx] [test] Prepare the ctime.timespec test for mingw CI env upgradesMartin Storsjö1-2/+5
The test is currently marked XFAIL for mingw environments, but latest mingw-w64 got support for timespec_get: https://github.com/mingw-w64/mingw-w64/commit/e62a0a987c80f6a6fdac3e350943ae8085de0bd5 The CI environment will probably be upgraded to a state where this test is passing only after 14.x is branched in the llvm-project monorepo. If we'd just go from having an XFAIL to no marking at all (when CI is passing), we'd have to update both main and 14.x branches in sync exactly when the CI runners are updated to a newer version. Instead, mark the test as temporarily unsupported (so it doesn't cause failed builds when the CI environment is updated); after the CI environments are upgraded to such a state, we can remove the UNSUPPORTED marking to start requiring it to pass on the main branch, without needing to synchronize that change to anything else. Differential Revision: https://reviews.llvm.org/D116132
2021-12-22[lldb] Use GetSupportedArchitectures on darwin platformsPavel Labath19-398/+96
This finishes the GetSupportedArchitectureAtIndex migration. There are opportunities to simplify this even further, but I am going to leave that to the platform owners. Differential Revision: https://reviews.llvm.org/D116028
2021-12-22[lldb/python] Avoid more dangling pointers in python glue codePavel Labath8-103/+64