- Nov 29, 2023
-
-
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.
-
Jay Foad authored
Clarify how the addend is used in _HI relocation types like R_AMDGPU_ABS32_HI based on the current behaviour of the Mesa and AMDPAL ELF loaders. This affects Mesa and AMDPAL because they use REL relocation records, so the addend for these types is the 32-bit literal value from the instruction being relocated. AMDHSA is not affected because it uses RELA relocation records which have a 64-bit addend.
-
Amir Ayupov authored
-
Valentin Clement (バレンタイン クレメン) authored
`A program may not branch into or out of a compute construct.` This restriction is also true for combined constructs. This patch enforce this rule.
-
Philip Reames authored
-
Lucas Duarte Prates authored
This implements assembly support for the Debug/PMU extensions introduced as part of the Armv9.5-A architecture version. The changes include: * New ID_AA64DFR2_EL1 ID system register * New MDSTEPOP_EL1 and SPMZR_EL0 system registers Mode details about these extensions can be found at: * https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/arm-a-profile-architecture-developments-2023 * https://developer.arm.com/documentation/ddi0602/2023-09/ Co-authored-by:
Oliver Stannard <oliver.stannard@arm.com>
-
Stefan Gränitz authored
Also rename the fixture class since these tests are not ELF-specific.
-
- Nov 28, 2023
-
-
Michael Buch authored
In https://github.com/llvm/llvm-project/pull/71780 we started emitting definitions for all static data-members with constant initialisers, even if they were constants (i.e., didn't have a location). We also dropped the DW_AT_const_value from the declaration to [help resolve inconsistencies during type merging in the DWARFParallelLinker](https://github.com/llvm/llvm-project/pull/68721). However, for static data members that do have locations, we wouldn't emit a DW_AT_const_value on it, assuming that the consumer knows how to read the value using the location. This broke some consumers that really wanted to find a DW_AT_const_value. Ultimately we want to attach a DW_AT_const_value to definitions that have a location too. But to fix consumers broken by said change, this patch adds the constant back onto the declaration. This is what we used to do prior to https://github.com/llvm/llvm-project/pull/71780
-
Philip Reames authored
If we have a high LMUL build_vector and a known exact VLEN, we can decompose the build_vector into one build_vector per register in the register group. Doing so requires exact knowledge of which elements correspond to each register in the register group, and thus an exact VLEN must be known. Since we no longer have operations which are linear (or worse) in LMUL, this also allows us to lower all build_vectors without resorting to going through the stack.
-
Alexey Bataev authored
-