- Jul 29, 2023
-
-
Joseph Huber authored
The other architectures use a brief sleep to defer work during this spin loop that checks the RPC mailboxes. This patch adds one for x64 to improve usage when running the server. Reviewed By: tianshilei1992 Differential Revision: https://reviews.llvm.org/D156566
-
Mogball authored
The `allocsize` attribute is weird because it packs two 32-bit values into a 64-bit value. It also turns out that the passthrough attribute exporter was using `int`, which is incorrectly handling 64-bit integers. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D156574
-
Shafik Yaghmour authored
There are some cases during member lookup we are aggressively suppressing diagnostics when we should just be suppressing access control diagnostic. In this PR I add the ability to simply suppress access diagnostics while not suppressing ambiguous lookup diagnostics. Fixes: https://github.com/llvm/llvm-project/issues/22413 https://github.com/llvm/llvm-project/issues/29942 https://github.com/llvm/llvm-project/issues/35574 https://github.com/llvm/llvm-project/issues/27224 Differential Revision: https://reviews.llvm.org/D155387
-
Michael Jones authored
The number of trailing zeroes was being calculated incorrectly. It was assuming that it could add all of the implicit leading zeroes in the final block, not accounting for the number of digits actually reqested by the precision. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D156489
-
Guray Ozen authored
This work introduces sm90 integration testing and adds a single test. Depends on : D155825 D155680 D155563 D155453 Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D155838
-
Nicolas Vasilache authored
-
John Harrison authored
On Apple platforms when debugging with libBacktraceRecording.dylib backtraces are stored as part of the thread stack. This change includes support for displaying the back traces when they are present in the stack trace. To use this on macOS a binary needs to be run with the following environment variables configured: DYLD_LIBRARY_PATH=/usr/lib/system/introspection DYLD_INSERT_LIBRARIES=/Applications/Xcode.app/Contents/Developer/usr/lib/libBacktraceRecording.dylib {F28473587} Reviewed By: wallace Differential Revision: https://reviews.llvm.org/D156465 -
Martin Storsjö authored
This respects the CMAKE_MSVC_RUNTIME_LIBRARY option for selecting the right CRT to use. Add a CI configuration that tests building this way. Based on a patch by Andrew Ng. The test config files end up accumulating and duplicating a fair bit of cmake-specific logic here; if preferred, we could also add that in `libcxx/test/CMakeLists.txt` and export a few more variables to `cmake-bridge.cfg.in` instead. Differential Revision: https://reviews.llvm.org/D155560
-
Andrew Ng authored
This header is included when building with a debug CRT in MSVC/Clang-cl environments. By default, failed asserts with the debug CRT pops up a blocking dialog box alerting the user about the failed assert. When running more than one test in an automated fashion, this isn't ideal. This header tries to run initializers to set the behaviour of the failed asserts to print a message to the console, just like the default is in release mode. This is previously done by setting the reporting mode to _CRTDBG_MODE_DEBUG, which means outputting to the debugger's output window. In some setups, this is enough for making it work, but in others it instead can pop up a dialog asking for which debugger to use. Instead set the mode explicitly to _CRTDBG_MODE_FILE and set the destination to be explicitly to stderr. For setups where the previous code worked correctly, it doesn't make any difference other than that a failed assert prints an additional "abort() has been called" message that wasn't printed before. Differential Revision: https://reviews.llvm.org/D155823
-
Martin Storsjö authored
When building in debug mode, the debug version of the MSVC CRT gets linked in. (This is the default in CMake in general. In the case of libcxx, we manually link the CRT though - and in debug mode, we pick the debug version of the CRT.) When building the tests, we need to use the same version of the CRT as was used for building the library. Additionally; the debug CRT defaults to pop up a dialog box when asserts fail, which blocks running tests. By including the set_windows_crt_report_mode.h helper header, we change the assert behaviour back to that of release mode - printing a message and exiting immediately. This was supported by the old libcxx test system, where support for it was added in 7e3ee09a. When porting over to the newer test setup, this mechanism wasn't brought over (and the old test infrastructure was removed in a48f018b). Thus: In debug mode, link against the debug versions of msvcrt and msvcprt, define _DEBUG (enabling CRT debug mode code patterns), and include the set_windows_crt_report_mode.h header. Based on a patch by Andrew Ng. Linking of the debug version of the CRT can also be done by using the new -fms-runtime-lib= Clang option. However that option was added in Clang 16, and libcxx only requires Clang 15 for now; therefore doing the CRT linking entirely manually for now (just as before). Additionally, adjust set_windows_crt_report_mode.h to avoid including the body of the file when building in C mode or in C++03 mode. This fixes the following two tests: libcxx/include_as_c.sh.cpp libcxx/selftest/dsl/dsl.sh.py The former test is built in C mode. The latter tries compiling things as C++03. Some of the vcruntime headers that we include break in C++03 mode when MS CRT debug mode is enabled. Differential Revision: https://reviews.llvm.org/D155554
-
Valentin Clement authored
-
Martin Storsjö authored
An outer directory may have set config.unsupported to True for a different reason, separate from architecture concerns - we shouldn't force it back to False just because one criterion is fulfilled. Differential Revision: https://reviews.llvm.org/D149995
-
David Green authored
The cost of vector instructions has always been high under AArch64, in order to add a high cost for inserts/extracts, shuffles and scalarization. This is a conservative approach to limit the scope of unusual SLP vectorization where the codegen ends up being quite poor, but has always been higher than the correct costs would be for any specific core. This relaxes that, reducing the vector insert/extract cost from 3 to 2. It is a generalization of D142359 to all AArch64 cpus. The ScalarizationOverhead is also overridden for integer vector at the same time, to remove the effect of lane 0 being considered free for integer vectors (something that should only be true for float when scalarizing). The lower insert/extract cost will reduce the cost of insert, extracts, shuffling and scalarization. The adjustments of ScalaizationOverhead will increase the cost on integer, especially for small vectors. The end result will be lower cost for float and long-integer types, some higher cost for some smaller vectors. This, along with the raw insert/extract cost being lower, will generally mean more vectorization from the Loop and SLP vectorizer. We may end up regretting this, as that vectorization is not always profitable. In all the benchmarking I have done this is generally an improvement in the overall performance, and I've attempted to address the places where it wasn't with other costmodel adjustments. Differential Revision: https://reviews.llvm.org/D155459
-
Thomas Raoux authored
The verifier for some arith ops were not considering that ranked tensor types can have encodings. Differential Revision: https://reviews.llvm.org/D156557
-
David Goldblatt authored
Historically, AA implementations chained to a following implementation to answer recursive queries. This is no longer the case, but the legacy lives on in a confusing phrasing of the return-a-conservative-value paths. Let's just return "don't know" directly, where appropriate; the current two-step way is confusing. Differential Revision: https://reviews.llvm.org/D149100
-
Jan Svoboda authored
This information is already exposed via `TranslationUnitDeps::ClangModuleDeps` on the `DependencyScanningTool` level, and this patch also adds it on the `DependencyScanningWorker` level via `DependencyConsumer::handleDirectModuleDependency()`. Besides being redundant, this bit of information is misleading for clients that share single `ModuleDeps` instance between multiple TUs (by using the `AlreadySeen` set). The module can be imported directly in some TUs but transitively in others. Reviewed By: benlangmuir Differential Revision: https://reviews.llvm.org/D156563
-
Jan Svoboda authored
Scanner's C++ API accepts a set of modular dependencies the client has already seen and for which it doesn't need the full details. This is currently a set of strings, which somewhat implies that it should contain the set of module names. However, scanner internally expects the values to be in the format "{hash}{name}". Besides not being documented, this is very unintuitive. This patch makes this expectation explicit by changing the type to set of `ModuleID`. Reviewed By: benlangmuir Differential Revision: https://reviews.llvm.org/D156492 -
Timm Bäder authored
This reverts commit 8ad9dcb3. This breaks builders: https://lab.llvm.org/buildbot/#/builders/139/builds/46363/steps/6/logs/FAIL__Clang__constant-builtins-fmin_cpp Revert while I figure out what's going wrong.
-
Timm Bäder authored
Differential Revision: https://reviews.llvm.org/D155369
-
Cyndy Ishida authored
The minOS version is recorded in tbd-v5 so the linker can report diagnostics when a library and client are misconfigured. Dylibs should always have a minOS recorded, but in was not recorded in previous TBD versions. To accommodate the format transition, treat unrecorded minOS versions as 0. Reviewed By: zixuw Differential Revision: https://reviews.llvm.org/D156487
-
Timm Bäder authored
Differential Revision: https://reviews.llvm.org/D155546
-
Matt Arsenault authored
In SelectionDAG InstrEmitter automatically puts dead flags on unused physreg defs everywhere. The generated selectors should also set dead on physreg defs that were not used in the pattern.
-
Mehdi Amini authored
[mlir] Expose a mechanism to provide a callback for encoding types and attributes in MLIR bytecode. Two callbacks are exposed, respectively, to the BytecodeWriterConfig and to the ParserConfig. At bytecode parsing/printing, clients have the ability to specify a callback to be used to optionally read/write the encoding. On failure, fallback path will execute the default parsers and printers for the dialect. Testing shows how to leverage this functionality to support back-deployment and backward-compatibility usecases when roundtripping to bytecode a client dialect with type/attributes dependencies on upstream. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D153383
-
Nikolas Klauser authored
Reviewed By: #libc, Mordante Spies: arichardson, Mordante, libcxx-commits Differential Revision: https://reviews.llvm.org/D156038
-
Matt Arsenault authored
This is a workaround for a coalescer bug where coalescing SUBREG_TO_REG ends up losing the liveness of the high bits of the source register. The result is an incorrect undef subregister def instead of preserving the high values. Work around the observed failure after the resulting mov is eliminated during allocation until a proper fix is ready. I believe the proper fix is to make SUBREG_TO_REG use a tied operand. The test should catch a regression originally observed after b7836d85 and should not show a difference after a496c8be is reverted. https://reviews.llvm.org/D156164
-
Nikolas Klauser authored
-
Arthur Eubanks authored
A tail call may have $noreg operands. Fixes a crash. Reviewed By: xgupta Differential Revision: https://reviews.llvm.org/D156485
-
Valentin Clement authored
-
Jon Roelofs authored
-
Mogball authored
This is more user-friendly over an opaque crash. Reland after fixing bad rebase.
-
Joseph Huber authored
Currently, the precense of the OpenMP target declare metadata requires that we always codegen a global declaration. This is undesirable in the case that we could defer or omit this declaration as is common with unused extern variables. This is important as it allows us, in the runtime, to rely on static linking semantics to omit unused symbols so they are not included when the user links it in. This patch changes the check for always emitting these variables. Because of this we also need to extend this logic to the generation of the offloading entries. This has the result of derring the offload entry generation to the canonical definitoin. So we are effectively assuming whoever owns the storage for this variable will perform that operation. This makes an exception for `link` attributes as those require their own special handling. Let me know if this is sound in the implementation, I do not have the largest view of the standards here. Fixes: https://github.com/llvm/llvm-project/issues/64133 Reviewed By: tianshilei1992 Differential Revision: https://reviews.llvm.org/D156368
-
Jeffrey Byrnes authored
This is required for many trees produced in practice for i8 CodeGen. Differential Revision: https://reviews.llvm.org/D155864 Change-Id: Iac01d183d9998b15138bdc7a5051e3bed338e7d9
-
Valentin Clement authored
Fix the value of the structured attribute for entry operation in the global constructor noted in D156353. Reviewed By: razvanlupusoru Differential Revision: https://reviews.llvm.org/D156481
-
Ramkumar Ramachandra authored
The function StripPtrCastKeepAS() no longer makes any sense, as we've migrated to using opaque pointers throughout the codebase. Hence, remove it. No changes to tests are required. Differential Revision: https://reviews.llvm.org/D156555
-
Jonas Devlieghere authored
Separate parsing CTF and creating LLDB types. This is a prerequisite to parsing forward references and recursive types. Differential revision: https://reviews.llvm.org/D156447
-
Martin Erhart authored
[mlir][bufferization] Add DeallocOp canonicalizer to remove memrefs also present in the retained list Since memrefs in the retained list will never be deallocated, we can remove them from the list of memrefs to be deallocated. If the list of memrefs to deallocate becomes empty, we can just delete the dealloc operation. Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D156186
-
Jay Foad authored
This adds better support for call frame pseudos that adjust SP in PEI::replaceFrameIndicesBackward. Running frame index elimination backwards is preferred because it can do backwards register scavenging (on targets that require scavenging) which does not rely on accurate kill flags. Differential Revision: https://reviews.llvm.org/D156434
-
Martin Erhart authored
Duplicate values in the retained list can just be removed, however, for duplicates in the list of memrefs to deallocate, we also need to check the conditions and if thhey don't match, we need to compute the OR in order to not miss a case leading to a memory leak. Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D156157
-
Reid Kleckner authored
X86ISelLowering takes too long to compile. Split call lowering out into its own file so that developers working on call lowering can be more productive. Now one can test calling convention changes with <5s rebuilds. The rest of X86ISelLowering still takes a long time to compile. Previous investigations shows that lots of static functions are aggressively inlined into the two major large switch functions, LowerOperation and PerformDAGCombine. It may be possible to make further compile time improvements by blocking inlining into those large dispatch functions. clang-format complains, but I didn't want to reformat because it will make it harder for git rename detection and blame tools. Reviewed By: RKSimon, pengfei Differential Revision: https://reviews.llvm.org/D154168
-