- Sep 14, 2021
-
-
Uday Bondhugula authored
Improve parse error message for "at least N operands" op trait. Differential Revision: https://reviews.llvm.org/D109747
-
Cheng Wang authored
-
Matheus Izvekov authored
See PR51842. This fixes an assert firing in the static analyzer, triggered by implicit moves in blocks in C mode: This also simplifies the AST a little bit when compiling non C++ code, as the xvalue implicit casts are not inserted. We keep and test that the nrvo flag is still being set on the VarDecls, as that is still a bit beneficial while not really making anything more complicated. Signed-off-by:
Matheus Izvekov <mizvekov@gmail.com> Reviewed By: NoQ Differential Revision: https://reviews.llvm.org/D109654
-
Tim Northover authored
-
Justas Janickas authored
Version macro definitions are tested for C++ for OpenCL when explicit version is provided on command line via `-cl-std` flag. Differential Revision: https://reviews.llvm.org/D109366
-
Cullen Rhodes authored
Identified in D109359. Reviewed By: aheejin Differential Revision: https://reviews.llvm.org/D109689
-
Cullen Rhodes authored
Fixes a warning identified in D109359. The mnemonic is also mov, not cpy. Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D109573
-
Martin Storsjö authored
Previously the relocations pointed at the public user facing, possibly external symbol. When the function itself is weak, that symbol may be overridden at link time, pointing at another strong implementation of the same function instead. In that case, there's two conflicting pdata entries pointing at the same address, and the wrong unwind info might end up used. Both GCC/binutils and MSVC produce pdata pointing at internal static symbols. (GCC/binutils point at the .text section just as LLVM does after this change, MSVC points at special label type symbols with the type IMAGE_SYM_CLASS_LABEL and names like '$LN4'.) This fixes unwinding through an overridden "operator new" with a statically linked C++ library in MinGW mode. (Building libc++ with -ffunction-sections and linking with --gc-sections might avoid the issue too.) This makes the produced object files a little less user friendly to debug, but with other recent improvements for llvm-readobj, the unwind info debugging experience should be pretty much the same. Differential Revision: https://reviews.llvm.org/D109651
-
Martin Storsjö authored
This syncs parts from the x86 implementation to the ARMWinEH implementation. Currently, neither of the compilers targeting COFF/arm64 (MSVC, LLVM) produce such relocations, but LLVM might after a later patch. Differential Revision: https://reviews.llvm.org/D109650
-
Martin Storsjö authored
This is the same as we do on arm64 already for the MSVC style label symbols, but also handle the way GCC produces it - with all relocations pointing at the .text section symbol, with various offsets. Differential Revision: https://reviews.llvm.org/D109649
-
Martin Storsjö authored
If building by pointing cmake directly at the llvm-project/runtimes directory, the llvm cmake package files (that provide e.g. LLVM_BUILD_MAIN_SRC_DIR) aren't necessarily available. Instead just use a path relative to the current source dir. Differential Revision: https://reviews.llvm.org/D109717
-
Martin Storsjö authored
Differential Revision: https://reviews.llvm.org/D109716
-
serge-sans-paille authored
It doesn't make sense to include those headers on the wrong architecture, provide an explicit error message in that case. Fix https://bugs.llvm.org/show_bug.cgi?id=48915 Differential Revision: https://reviews.llvm.org/D109686
-
Heejin Ahn authored
-
David Blaikie authored
-
David Blaikie authored
Followon from the previous commit supporting cvr qualifiers.
-
David Blaikie authored
eg: t1<void () const> - DWARF doesn't have a particularly nice way to encode this, for real member function types (like `void (t1::*)() const`) the const-ness is encoded in the type of the artificial first parameter. But `void () const` has no parameters, so encode it like a normal const-qualified type, using DW_TAG_const_type. (similarly for restrict and volatile) Reference qualifiers (& and &&) coming in a separate commit shortly.
-
Esme-Yi authored
Summary: Add the SectionIndex field for symbol. 1: a symbol can reference a section by SectionName or SectionIndex. 2: a symbol can reference a section by both SectionName and SectionIndex. 3: if both Section and SectionIndex are specified, but the two values refer to different sections, an error will be reported. 4: an invalid SectionIndex is allowed. 5: if a symbol references a non-existent section by SectionName, an error will be reported. Reviewed By: jhenderson, Higuoxing Differential Revision: https://reviews.llvm.org/D109566
-
Chris Lattner authored
Three unrelated changes: 1) Add a concat method as a convenience to help write bitvector use cases in a nicer way. 2) Use LLVM_UNLIKELY as suggested by @xbolva00 in a previous patch. 3) Fix casing of some "slow" methods to follow naming standards. Differential Revision: https://reviews.llvm.org/D109620
-
Chen Zheng authored
PPCLoopInstrFormPrep pass now can prepare for load store instructions in a loop whose increment is not a constant integer. Reviewed By: jsji Differential Revision: https://reviews.llvm.org/D105872
-
Matt Arsenault authored
The attributor can determine that some indirect calls do not require special inputs. The special inputs will still be present in the ABI, so we need to allocate the registers and pass undefs.
-
David Blaikie authored
Since these map to the same effective type - render them the same/in the more legible way (const x[n]).
-
Matthias Springer authored
This improves codegen (more static type information) with `scalarize-dynamic-dims`. Differential Revision: https://reviews.llvm.org/D109415
-
Matthias Springer authored
This tiling option scalarizes all dynamic dimensions, i.e., it tiles all dynamic dimensions by 1. This option is useful for linalg ops with partly dynamic tensor dimensions. E.g., such ops can appear in the partial iteration after loop peeling. After scalarizing dynamic dims, those ops can be vectorized. Differential Revision: https://reviews.llvm.org/D109268
-
Matthias Springer authored
Only scf.for loops are supported at the moment. linalg.tiled_loop support will be added in a subsequent commit. Only static tensor sizes are supported. Loops for dynamic tensor sizes can be peeled, but the generated code is not optimal due to a missing canonicalization pattern. Differential Revision: https://reviews.llvm.org/D109043
-
Geoffrey Martin-Noble authored
Updates the Bazel config for OrcTargetProcess after https://github.com/llvm/llvm-project/commit/2c8e784915 Differential Revision: https://reviews.llvm.org/D109731
-
Matthias Springer authored
Extend the unit test with an option for skipping partial iterations during loop peeling. Differential Revision: https://reviews.llvm.org/D109640
-
Shao-Ce Sun authored
Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D109681
-
LLVM GN Syncbot authored
-
Lang Hames authored
We want to read the page size from EPI->PageSize. Thanks to Simon Pilgrim for spotting this.
-
Lang Hames authored
This is a small first step towards reorganization of the ORC libraries: Declarations for types and function names (as strings) to be found in the "ORC runtime bootstrap" set are moved into OrcRTBridge.h / OrcRTBridge.cpp. The current implementation of the "ORC runtime bootstrap" functions is moved into OrcRTBootstrap.h and OrcRTBootstrap.cpp. It is likely that this code will eventually be moved into ORT-RT proper (in compiler RT). The immediate goal of this change is to make these bootstrap functions usable for clients other than SimpleRemoteEPC/SimpleRemoteEPCServer. The first planned client is a new RuntimeDyld::MemoryManager that will run over EPC, which will allow us to remove the old OrcRemoteTarget code.
-
Brendon Cahoon authored
The code was using getTypeStoreSize to calculate the difference between consecutive objects. The calculation was incorrect due to padding that is added between consecutive objects. The getTypeAllocSize includes the padding amount. For example, if the type is [19 x i8], the difference between consecutive objects is 32 bytes, not 19 bytes. A second case for getTypeAllocSize is needed when computing the pointer values for the vector accesses. The calculation needs to account for the padding as well. Differential Revision: https://reviews.llvm.org/D109403
-
Ankit Aggarwal authored
-
Nico Weber authored
See discussion on https://reviews.llvm.org/D109624
-
Arthur Eubanks authored
Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D109664
-
Kuba Mracek authored
This is for Swift VFE support. In some vtable forms that Swift emits, the "base" of a relative pointer is not the global symbol itself directly, but a GEP into it -- so the pointer is relative to a particular field in the global. So getPointerAtOffset() needs to be able to see through the GEP and allow it in a SUB expression, to correctly recognize the offset as a vtable slot. Differential Revision: https://reviews.llvm.org/D109169
-
Thomas Lively authored
For multithreaded modules (i.e. modules with a shared memory), lld injects a synthetic Wasm start function that is automatically called during instantiation to initialize memory from passive data segments. Even though the module will be instantiated separately on each thread, memory initialization should happen only once. Furthermore, memory initialization should be finished by the time each thread finishes instantiation. Since multiple threads may be instantiating their modules at the same time, the synthetic function must synchronize them. The current synchronization tries to atomically increment a flag from 0 to 1 in memory then enters one of two cases. First, if the increment was successful, the current thread is responsible for initializing memory. It does so, increments the flag to 2 to signify that memory has been initialized, then notifies all threads waiting on the flag. Otherwise, the thread atomically waits on the flag with an expected value of 1 until memory has been initialized. Either the initializer thread finishes initializing memory (i.e. sets the flag to 2) first and the waiter threads do not end up blocking, or the waiter threads succesfully start waiting before memory is initialized so they will be woken by the initializer thread once it has finished. One complication with this scheme is that there are various contexts on the Web, most notably on the main browser thread, that cannot successfully execute a wait. Executing a wait in these contexts causes a trap, and in this case would cause instantiation to fail. The embedder must therefore ensure that these contexts win the race and become responsible for initializing memory, since that is the only code path that does not execute a wait. Unfortunately, since only one thread can win the race and initialize memory, this scheme makes it impossible to have multiple threads in contexts that cannot wait. For example, it is not currently possible to instantiate the module on both the main browser thread as well as in an AudioWorklet. To loosen this restriction, this commit inserts an extra check so that the wait will not be executed at all when memory has already been initialized, i.e. when the flag value is 2. After this change, the module can be instantiated on threads in non-waiting contexts as long as the embedder can guarantee either that the thread will win the race and initialize memory (as before) or that memory has already been initialized when instantiation begins. Threads in contexts that can wait can continue racing to initialize memory. Fixes (or at least improves) PR51702. Reviewed By: dschuff Differential Revision: https://reviews.llvm.org/D109722
-
Jian Cai authored
Also wrap some function/class names in backticks. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D109723
-
Heejin Ahn authored
In some platforms `_setjmp` and `_longjmp` are used instead of `setjmp` and `longjmp`. This CL adds support for them. Fixes https://github.com/emscripten-core/emscripten/issues/14999. Reviewed By: dschuff Differential Revision: https://reviews.llvm.org/D109669
-
Heejin Ahn authored
This is a fix on top of D106525's Case 2. In D106525, in `runEHOnFunction` which handles Emscripten EH, We rethrow `longjmp` only when the module has any usage of `setjmp` or `longjmp`. But now Wasm object files are linked using wasm-ld, the module this pass sees is not the whole program, and even if this module does not contain any `longjmp`, another file can contain it and can be linked with the current module. This enables the rethrowing of longjmp whenever Emscripten SjLj is enabled, regardless of whether it is used in this module or not. Reviewed By: dschuff Differential Revision: https://reviews.llvm.org/D109670
-