- Mar 15, 2024
-
-
Stephen Tozer authored
Dexter currently supports Visual Studio 2015/2017/2019, but not 2022; this patch adds support for 2022.
-
Maksim Panchenko authored
Reset operand list whenever we create a new instruction via a parameter passed by reference. Most functions were already doing this, but there are several places missing the reset. Potentially, if we don not clear the list it could lead to invalid instruction operands. But the existing code is unaffected.
-
Lang Hames authored
This member switched from an optional to a vector in 0f252e7b.
-
Ulrich Weigand authored
This reverts commit 611c62b3.
-
Jay Foad authored
Removing the extension to FullWidth should make them much more efficient in the 64-bit case, because 65-bit APInts use a separate allocation for their bits.
-
Valentin Clement (バレンタイン クレメン) authored
Comparing c_ptr type for equality or inequality is raising an error. ``` not yet implemented: intrinsic module procedure: c_ptr_eq ``` or this one for inequality ``` not yet implemented: intrinsic module procedure: c_ptr_ne ``` This patch adds a lowering for them and fix the `__fortran_builtins.f90` module for inequality.
-
Stanislav Mekhanoshin authored
-
Krzysztof Parzyszek authored
…ctive The function `ActOnOpenMPTargetParallelForSimdDirective` gets the number of capture levels for OMPD_target_parallel_for, whereas the intended directive is OMPD_target_parallel_for_simd.
-
Paschalis Mpeis authored
getArithmeticInstrCost is used by both LoopVectorizer and SLPVectorizer to compute the cost of frem, which becomes a call cost on AArch64 when TLI has a vector library function. Add tests that do SLP vectorization for code that contains 2x double and 4x float frem instructions.
-
Ulrich Weigand authored
Code in plugins-nextgen reading ELF files is currently hard-coded to assume a 64-bit little-endian ELF format. Unfortunately, this assumption is even embedded in the interface between GlobalHandler and Utils/ELF routines, which use ELF64LE types. To fix this, I've refactored the interface to use generic types, in particular by using (a unique_ptr to) ObjectFile instead of ELF64LEObjectFile, and ELFSymbolRef instead of ELF64LE::Sym. This allows properly templating over multiple ELF format variants inside Utils/ELF; specifically, this patch adds support for 64-bit big-endian ELF files in addition to 64-bit little-endian files.
-
Heejin Ahn authored
These are Wasm only functions so they are better be within `WebAssembly` namespace rather than the `llvm` namespace which includes the whole LLVM. Also this removes `extern` keywords which are not strictly necessary.
-
Hans Wennborg authored
The calls are already musttail.
-
Mark de Wever authored
When calling setbuf(nullptr, 0) before performing file operations it should set the file to unbuffered mode. Currently the code avoids buffering internally, but the underlying stream still can buffer. This is addressed by disabling the buffering of the underlying stream. Fixes: https://github.com/llvm/llvm-project/issues/60509
-
Fangrui Song authored
This reverts commit bbc0f99f (https://reviews.llvm.org/D157663). With this change, `-g` for the next major release 19.1 will generate R_RISCV_SET_ULEB128/R_RISCV_SUB_ULEB128 relocations, which require lld>=18 or binutils>=2.41. binutils 2.41 is relatively new, but GCC has been producing R_RISCV_SET_ULEB128/R_RISCV_SUB_ULEB128 for some time now.
-
Fangrui Song authored
#69295 demoted Defined symbols relative to discarded sections. If such a symbol is unreferenced, the desired behavior is to eliminate it from .symtab just like --gc-sections discarded definitions. Linux kernel's CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y configuration expects that the unreferenced `unused` is not emitted to .symtab (https://github.com/ClangBuiltLinux/linux/issues/2006). For relocations referencing demoted symbols, the symbol index restores to 0 like older lld (`R_X86_64_64 0` in `discard-section.s`). Fix #85048
-
Krzysztof Parzyszek authored
-
Mark de Wever authored
-
Lang Hames authored
No testcase: I'm still thinking about the best way to test this.
-
Felipe de Azevedo Piovezan authored
Some languages may create artificial functions that have no real user code, even though there is line table information for them. One such case is with coroutine code that receives the CoroSplitter transformation in LLVM IR. That code transformation creates many different Functions, cloning one Instruction into many Instructions in many different Functions and copying the associated debug locations. It would be difficult to make that pass delete debug locations of cloned instructions in a language agnostic way (is it even possible?), but LLDB can ignore certain locations by querying its Language APIs and having it decide based on, for example, mangling information.
-
Valentin Clement (バレンタイン クレメン) authored
Expose patterns so they can be reused in other passes.
-
Ingo Müller authored
There were two problems: * The `%s` argument to `FileCheck` was repeated. * A single dash for `-check-prefix` was used but we need two dashes.
-
Florian Mayer authored
-
Krzysztof Parzyszek authored
In file included from ../llvm-project/flang/lib/Lower/OpenMP/Clauses.cpp:9: ../llvm-project/flang/lib/Lower/OpenMP/Clauses.h:195:17: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces] 195 | return Clause{id, specific, source}; | ^~~~~~~~~~~~ | { }
-
- Mar 14, 2024
-
-
Jason Molenda authored
Darwin AArch64 application processors are run with Top Byte Ignore mode enabled so metadata may be stored in the top byte, it needs to be ignored when reading/writing memory. David Spickett handled this already in the base class Process::ReadMemory but ProcessMachCore overrides that method (to avoid the memory cache) and did not pick up the same change. I add a test case that creates a pointer with metadata in the top byte and dereferences it with a live process and with a corefile. rdar://123784501
-
Timm Bäder authored
... when doing binary operations on them.
-
Timm Bäder authored
-
Jonas Paulsson authored
The depths of the Root and the NewRoot are to be compared in MachineCombiner::improvesCriticalPathLen(), and while the call to BlockTrace.getInstrCycles(*Root) includes the Depth of a PHI, for some reason PHI nodes have been ignored in getOperandDef(). This patch removes the special handling of PHIs in getOperandDef() so that Root and NewRoot get a fair comparison. This does not affect loop headers as MachineTraceMetrics handles that case by ignoring incoming PHI edges.
-
Sam McCall authored
This enables clang and external nullability checkers to make use of these annotations on nullable C++ class types like unique_ptr. These types are recognized by the presence of the _Nullable attribute. Nullable standard library types implicitly receive this attribute. Existing static warnings for raw pointers are extended to smart pointers: - nullptr used as return value or argument for non-null functions (`-Wnonnull`) - assigning or initializing nonnull variables with nullable values (`-Wnullable-to-nonnull-conversion`) It doesn't implicitly add these attributes based on the assume_nonnull pragma, nor warn on missing attributes where the pragma would apply them. I'm not confident that the pragma's current behavior will work well for C++ (where type-based metaprogramming is much more common than C/ObjC). We'd like to revisit this once we have more implementation experience. Support can be detected as `__has_feature(nullability_on_classes)`. This is needed for back-compatibility, as previously clang would issue a hard error when _Nullable appears on a smart pointer. UBSan's `-fsanitize=nullability` will not check smart-pointer types. It can be made to do so by synthesizing calls to `operator bool`, but that's left for future work. Discussion: https://discourse.llvm.org/t/rfc-allowing-nonnull-etc-on-smart-pointers/77201/26
-
Zahi Moudallal authored
This modifies the return type of the intrinsic call to handle 32 and 64 bits properly and document the MLIR operation.
-
Craig Topper authored
[TargetLowering][RISCV] Propagate fastmath flags for the vector operations emitted in expandVecReduce. (#85164) We used the fastmath flags for any scalar ops created, but not vector.
-
Timm Bäder authored
We were assuming (and asserting) that both arguments have the same type, but at least for the ms versions, that's not always the case.
-
Krzysztof Parzyszek authored
The new set of classes representing OpenMP classes mimics the contents of parser::OmpClause, but differs in a few aspects: - it can be easily created, copied, etc. - is based on semantics::SomeExpr instead of parser objects. This set of classes is geared towards a language-agnostic representation of OpenMP clauses. While the class members are still based on flang's `parser::OmpClause`, the classes themselves are actually C++ templates parameterized with types essential to represent necessary information. The two parameters are - `IdType`: the type that can represent object's identity (for flang it will be `semantics::Symbol *`), - `ExprType`: the type that can represent expressions, arithmetic and object references (`semantics::MaybeExpr` in flang). The templates are defined in a namespace `tomp` (to distinguish it from `omp`). This patch introduces file "Clauses.cpp", which contains instantiations of all of the templates for flang. The instantiations are members of namespace `omp`, and include an all-encompassing variant class `omp::Clause`, which is the analog of `parser::OmpClause`. The class `OmpObject` is represented by `omp::Object`, which contains the symbol associated with the object, and `semantics::MaybeExpr` representing the designator for the symbol reference. For each specific clause in the variant `parser::OmpClause`, there exists a `make` function that will generate the corresponding `omp::Clause` from it. The intent was to use the make functions as variant visitors. The creation of a clause instance would then follow the pattern: ``` omp::Clause clause = std::visit([](auto &&s) { return make(s, semaCtx); }, parserClause.u); ``` If a new clause `foo` is added in the future, then: - a new template `tomp::FooT` representing the clause needs to be added to ClauseT.h, - a new instance needs to be created in flang, this can be as simple as `using Foo = tomp::FooT<...>`, - a new make function needs to be implemented to create object of class Foo from `parser::OmpClause::Foo`. This patch only introduces the new classes, they are not yet used anywhere. [Clause representation 1/6] -
Timm Bäder authored
The result in that case can still be computed, and it's inf.
-
Andrew Brown authored
When OpenMP is compiled for WebAssembly (see #71297), it invokes a microtask via a `switch` statement that dispatches to the `void *` microtask pointer with spelled-out arguments (not varargs). As #83329 points out, however, this can result in a type mismatch when the indirect call is executed by WebAssembly; WebAssembly expects the called pointer to have the precise type of the call site. This change fixes the issue by bringing back the approach in [D142593] of type-casting all the `switch` arms to the precise type. This fixes #83329. [D142593]: https://reviews.llvm.org/D142593
-
Alastair Houghton authored
-
Antonio Frighetto authored
Leverage more refined ranges results when handling overflowing binary operators.
-
Kirill Stoimenov authored
Broke sanitizer bots: https://lab.llvm.org/buildbot/#/builders/74/builds/26697 This reverts commit 95fef1df.
-
Timm Bäder authored
If the variable is additionally const(expr), visit them like normal but omit the initializer.
-
LLVM GN Syncbot authored
-
Janek van Oirschot authored
Adds AMDGPU specific variadic MCExpr operations 'max' and 'or'. Relands #82022 with fixes
-