- Nov 29, 2023
-
-
Shilei Tian authored
This reverts commit eaab947a.
-
Johannes Doerfert authored
Not everything in libomptarget (include) is "OpenMP", but some things most certainly are. This commit moves some code around to start making this distinction without the intention to change functionality.
-
Shilei Tian authored
This reverts commit eaab947a because it causes link error.
-
Petr Hosek authored
This allows the parent build to depend on this target unconditionally even when the tests are disabled.
-
Shilei Tian authored
Use of VLA can cause compile warning that was introduced in D156565. This patch implements a simple stack/heap-based VLA that can miminc the behavior of an actual VLA and prevent the warning. By default the stack accomodates the elements. If the number of emelements is greater than N, which by default is 8, a heap buffer will be allocated and used to acccomodate the elements.
-
Stephan T. Lavavej authored
Found while running libc++'s test suite with MSVC's STL. [mdspan.extents.overview]/1.1 mandates that IndexType is a signed or unsigned integer type, which excludes char. MSVC's STL enforces the Mandates here, so this PR changes the relevant occurrences of `char to `signed char`. To make this work, we also need to add an `operator signed char()` to the test helper type `IntType` so it remains unambiguously convertible, and then we can remove `operator char()`. libc++ should also enforce the Mandates, but this PR doesn't attempt to make such a change.
-
michaelrj-google authored
Previously the nextafter and nexttoward implementations were almost identical, with the exception of whether or not the second argument was a template or just long double. This patch unifies them by making the two argument templates independent.
-
Johannes Doerfert authored
-
PiJoules authored
…ing size About 90% of the time when running scudo tests on fuchsia+riscv with asan instrumentation, we will be unable to map the arena for scudo's primary allocator. We have enough space, but much of the existing allocations are fragmented enough such that we can't allocate that large enough contiguous space. This reduces fragmentation more by increase min allocation rounding for user-map and freearray in the primary allocator. Note that changing these values doesn't have a functional effect on the actual size of the user-map or freearray portions of a region. Those are toggled by different constants. This will reduce the number of times mmap is called and reduce the number of fragments. Locally, I've been able to run the scudo tests under asan-instrumentation on riscv 39-bit vma and haven't run into the `SCUDO ERROR: zx_vmar_map` error.
-
Arthur Eubanks authored
This reverts commit 38e43589. May be culprit for https://lab.llvm.org/buildbot/#/builders/37/builds/28079/steps/9/logs/stdio.
-
Greg Clayton authored
This is a follow up patch after .debug_names can now emit local type unit entries when we compile with type units + DWARF5 + .debug_names. The pull request that added this functionality was: https://github.com/llvm/llvm-project/pull/70515 This patch makes sure that the DebugNamesDWARFIndex in LLDB will not manually need to parse type units if they have a valid index. It also fixes the index to be able to correctly extract name entries that reference type unit DIEs. Added a test to verify things work as expected.
-
Johannes Doerfert authored
Headers used throughout the different runtimes are different from the internal headers. This is a first step to bring structure in into the include folder.
-
Chris Bieneman authored
This fixes the clang attributes documentation build.
-
Michael Buch authored
The mangling for an explicitly named object was introduced in https://reviews.llvm.org/D140828 See following discussion for why a new mangling had to be introduced: https://github.com/itanium-cxx-abi/cxx-abi/issues/148 Since clang started emitting names with the new mangling, this patch implements support for demangling such names. The approach this patch takes is to add a new `ExplicitObjectParameter` node that will print the first parameter of a function declaration with a `this ` prefix, to reflect what was spelled out in source. Example: ``` void MyClass::func(this MyClass const& self); // _ZNH7MyClass4funcERKS_ ``` With this patch, the above demangles to: ``` _ZNH7MyClass4funcERKS_ -> MyClass::func(this MyClass const&) ``` Note that `func` is not marked as `const &`, since the function-qualifiers are now encoded as part of the explicit `this`. C++ doesn't allow specifying the function-qualifiers in the presence of an explicit object parameter, so this demangling is consistent with the source spelling.
-
LLVM GN Syncbot authored
-
Chris B authored
This change implements parsing for HLSL's parameter modifier keywords `in`, `out` and `inout`. Because HLSL doesn't support references or pointers, these keywords are used to allow parameters to be passed in and out of functions. This change only implements the parsing and AST support. In the HLSL ASTs we represent `out` and `inout` parameters as references, and we implement the semantics of by-value passing during IR generation. In HLSL parameters marked `out` and `inout` are ambiguous in function declarations, and `in`, `out` and `inout` may be ambiguous at call sites. This means a function may be defined as `fn(in T)` and `fn(inout T)` or `fn(out T)`, but not `fn(inout T)` and `fn(out T)`. If a funciton `fn` is declared with `in` and `inout` or `out` arguments, the call will be ambiguous the same as a C++ call would be ambiguous given declarations `fn(T)` and `fn(T&)`. Fixes #59849
-
Nikolas Klauser authored
Differential Revision: https://reviews.llvm.org/D157131 Co-authored-by:
Louis Dionne <ldionne.2@gmail.com>
-
James Y Knight authored
The intent of these particular functions, since their introduction, was to NOT be inlinable. However, the mechanism by which this was accomplished was non-obvious, and stopped working when string is compiled for C++20. A longstanding behavior specified by the C++ standard is that instantiation of the body of a template function is suppressed by an extern template declaration -- unless the function is explicitly marked either constexpr or inline. Of course, if the body is not instantiated, then it cannot possibly be inlined, and thus all the functions listed in libcxx/include/__string/extern_template_lists.h were uninlineable. But, in C++20 mode, string functions were annotated constexpr, which means they _are_ instantiated, and do become inlineable. And, in fact, they do get inlined, which has caused noticeable binary-size growth for users. For example, in C++17, `std::string f(std::string *in) { return *in; }` does not inline the copy-constructor call, and instead generates a call to the exported function defined in the libc++ shared library. I think we probably don't want to mark all functions that are currently in the extern template list as noinline, as many of them really are reasonable inlining candidates. Thus, I've restricted this change to only the few functions that were clearly intended to be outlined. See commits like b019c5c0 (and some others like it) for background, in which functions were removed from the extern template list in the unstable ABI in order to allow the short-string case to be inlined, while moving the long-string case to a separate function, added to the extern template list. -
Arthur Eubanks authored
So that when mixing small and large text, large text stays out of the way of the rest of the binary. This is useful for mixing precompiled small code model object files and built-from-source large code model binaries so that the the text sections don't get merged.
-
Youngsuk Kim authored
If `Type::getPointerTo` is called solely to support an unnecessary pointer-cast, remove the call entirely. Otherwise, replace with IRB.getPtrTy(). Clean-up work towards removing method `Type::getPointerTo`.
-
Michael Klemm authored
The flang driver was silently ignoring the `main()` function in `Fortran_main.a` for entry into the Fortran program unit if an external `main()` as supplied (e.g., via cross-language linkage with Fortran and C/C++). This PR fixes this by making sure that the linker always pulls in the `main()` definition from `Fortran_main.a` and consequently fails due to multiple definitions of the same symbol if another object file also has a definition of `main()`.
-
Max191 authored
This adds a conversion for narrow type emulation of memref.store ops. The conversion replaces the memref.store with two memref.atomic_rmw ops. Atomics are used to prevent race conditions on same-byte accesses, in the event that two threads are storing into the same byte. Fixes https://github.com/openxla/iree/issues/15370
-
Usama Hameed authored
[ASan] Allow for passing AddressSanitizer command line options through the AddressSanitizerOptions struct. (#72439) This patch adds the ability to pass values for the command line options of -max-inline-poisoning-size, -instrumentation-with-calls-threshold and -asan-guard-against-version-mismatch through the AddressSanitizerOptions struct. The motivation is to use these new options when using the pass in Swift. rdar://118470958
-
Alexey Bataev authored
For CSEBlocks we can safely use DenseSet, the order should not be preserved for this container.
-
Dominik Adamski authored
This commit causes test errors on buildbots. This reverts commit a8ac930b.
-
Michael Halkenhaeuser authored
Add documentation w.r.t. changes by #72606, which allows to set the dynamic callstack size.
-
Dominik Adamski authored
Information about code object version can be configured by the user for AMD GPU target and it needs to be placed in LLVM IR generated by Flang. Information about code object version in MLIR generated by the parser can be reused by other tools. There is no need to specify extra flags if we want to invoke MLIR tools (like fir-opt) separately.
-
Philip Reames authored
If we have a constant index and a known vlen, then we can identify which registers out of a register group is being accessed. Given this, we can reuse the (slightly generalized) existing handling for working on sub-register groups. This results in all constant index extracts with known vlen becoming m1 operations. One bit of weirdness to highlight and explain: the existing code uses the VL from the original vector type, not the inner vector type. This is correct because the inner register group must be smaller than the original (possibly fixed length) vector type. Overall, this seems to a reasonable codegen tradeoff as it biases us towards immediate AVLs, which avoids needing the vsetvli form which clobbers a GPR for no real purpose. The downside is that for large fixed length vectors, we end up materializing an immediate in register for little value. We should probably generalize this idea and try to optimize the large fixed length vector case, but that can be done in separate work.
-
Chelsea Cassanova authored
This commit allows a final progress report upon the destruction of the `Progress` object to happen at all times as opposed to when the progress was not completed.
-
Amirreza Ashouri authored
Both active C++ proposals (P1144 and P2786) agree that `is_trivially_relocatable_v<int&>` and `is_trivially_relocatable_v<int()>` should be false, not true. Only complete object types can be trivially relocatable. Fixes #67498
-
Alexey Bataev authored
-
Mark de Wever authored
These tests use an old way to test code in constexpr context. This changes the code to the idomatic libc++ method. This is a preparation for #73162. Side changes - Updated formatting - Made some helper functions constexpr - Some naming improvements
-
Johannes Doerfert authored
Similar to #73677, there is no benefit from keeping MemoryManager seperate; it's tied into the current design. Except the move I also replaced the getenv call with our Env handling.
-
michaelrj-google authored
Some of the files in the docs/ directory are from 2019 and haven't been updated since. This patch updates implementation_standard.rst, source_tree_layout.rst, and has some minor fixes for strings.rst. It also marks the most severely out of date files with a warning. These files will be updated in a later patch.
-
Emma Pilkington authored
This was causing an assert on invalid in the modified test case.
-
Farzon Lotfi authored
This change makes x64 enablement case explicit and adds an else case for 32bit which fixes a regression on Windows i386 asan builds introduced by https://github.com/llvm/llvm-project/pull/66973.
-
Johannes Doerfert authored
The overhead of a library and 4 files seems high without benefit. This simply tries to consolidate our structure.
-
Juergen Ributzka authored
-
Alexey Bataev authored
-
Stanislav Mekhanoshin authored
We can use inline constants with packed 16-bit operands, but these should use op_sel. Currently splat of inlinable constants is considered legal, which is not really true if we fail to fold it with op_sel and drop the high half. It may be legal as a literal but not as inline constant, but then usual literal checks must be performed. This patch makes these splat literals illegal but adds additional logic to the operand folding to keep current folds. This logic is somewhat heavy though. This has fixed constant bus violation in the fdot2 test.
-