- Jun 09, 2021
-
-
Paul C. Anagnostopoulos authored
See https://bugs.llvm.org/show_bug.cgi?id=50595 Differential Revision: https://reviews.llvm.org/D103823
-
Sanjay Patel authored
-
Sven van Haastregt authored
Add a new clang-tblgen flag `-gen-clang-opencl-builtin-tests` that generates a .cl file containing calls to every builtin function defined in the .td input. This patch does not add any use of the new flag yet, so the only way to obtain a generated test file is through a manual invocation of clang-tblgen. A test making use of this emitter will be added in a followup commit. Differential Revision: https://reviews.llvm.org/D97869
-
Simon Pilgrim authored
Match what's reported in the costs table, Agner's tables and the Intel AOM
-
Simon Pilgrim authored
-
Nathan Sidwell authored
This completes the series implementing p1099, by adding the feature macro and updating the web page. Differential Revision: https://reviews.llvm.org/D102242
-
Hans Wennborg authored
-
Alexey Bataev authored
1. Better sorting of scalars to be gathered. Trying to insert constants/arguments/instructions-out-of-loop at first and only then the instructions which are inside the loop. It improves hoisting of invariant insertelements instructions. 2. Better detection of shuffle candidates in gathering function. 3. The cost of insertelement for constants is 0. Part of D57059. Differential Revision: https://reviews.llvm.org/D103458
-
Max Kazantsev authored
-
Benjamin Kramer authored
This makes it easier to use it from other bufferization passes. Differential Revision: https://reviews.llvm.org/D103838
-
Joachim Protze authored
The current handling of dependencies in Archer has two flaws: - annotation of dependency synchronization is not limited to sibling tasks - annotation of in/out dependencies is based on the assumption, that dependency variables will rarely be byte-sized variables. This patch introduces a map in the generating task to manage the dependency variables for the child tasks. The map is only accesses from the generating task, so no locking is necessary. This also limits the dependency-based synchronization to sibling tasks. This patch also introduces proper handling for new dependency types such as mutexinoutset and inoutset. Differential Revision: https://reviews.llvm.org/D103608
-
Joachim Protze authored
The main motivation for reusing objects is that it helps to avoid creating and leaking synchronization clocks in TSan. The reused object will reuse the synchronization clock in TSan. Before, new and delete operators were overloaded to get and return memory for the object from/to the object pool. This patch replaces the operator overloading with explicit static New/Delete functions. Objects for parallel regions and implicit tasks will always be recruited and returned to the thread-local object pool. Only for explicit task, there is a chance that an other thread completes the task and will free the object. This patch optimizes the thread-local New/Delete calls by avoiding locks and only lock if the pool is empty. Remote threads return the object into a separate queue. The chunk size for allocations is now decided based on page size. The objects will also be aligned to cache lines avoiding false sharing. This is the first patch in a series to provide better tasking support. Differential Revision: https://reviews.llvm.org/D103606
-
Joachim Protze authored
Archer uses weak symbol overloads of TSan functions to enable loading the tool even if the application is not built with TSan. For MACOS the tool collects the function pointer at runtime. When adding the function entry/exit markers, we missed to add the functions in the MACOS codepath. This patch also replaces the repeated function lookup by a single initial function lookup and fixes the disabling logic in RunningOnValgrind. Differential Revision: https://reviews.llvm.org/D103607
-
Meera Nakrani authored
Our initial motivating case was memcpy's with alignments > 16. The loads/stores, to which small memcpy's expand, are kept together in several places so that we get a sequence like this for a 64 bit copy: LD w0 LD w1 ST w0 ST w1 The load/store optimiser can generate a LDP/STP w0, w1 from this because the registers read/written are consecutive. In our case however, the sequence is optimised during ISel, resulting in: LD w0 ST w0 LD w0 ST w0 This instruction reordering allows reuse of registers. Since the registers are no longer consecutive (i.e. they are the same), it inhibits LDP/STP creation. The approach here is to perform renaming: LD w0 ST w0 LD w1 ST w1 to enable the folding of the stores into a STP. We do not yet generate the LDP due to a limitation in the renaming implementation, but plan to look at that in a follow-up so that we fully support this case. While this was initially motivated by certain memcpy's, this is a general approach and thus is beneficial for other cases too, as can be seen in some test changes. Differential Revision: https://reviews.llvm.org/D103597
-
Fraser Cormack authored
This patch changes RVV's policy for its supported list of fixed-length vector types by capping by vector size rather than element count. Now all 1024-byte vectors (of supported element types) are supported, rather than all 256-element vectors. This is a more natural fit for the architecture, and allows us to, for example, improve the support for vector bitcasts. This change necessitated the adding of some new simple types to avoid "regressing" on the number of currently-supported vectors. We round out the 1024-byte types by adding `v512i8`, `v1024i8`, `v512i16` and `v512f16`. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D103884
-
Aaron Ballman authored
Clang checks whether the type given to va_arg will automatically cause undefined behavior, but this check was issuing false positives for enumerations in C++. The issue turned out to be because typesAreCompatible() in C++ checks whether the types are *the same*, so this uses custom logic if the type compatibility check fails. This issue was found by a user on code like: typedef enum { CURLINFO_NONE, CURLINFO_EFFECTIVE_URL, CURLINFO_LASTONE = 60 } CURLINFO; ... __builtin_va_arg(list, CURLINFO); // false positive warning Given that C++ defers to C for the rules around va_arg, the behavior should be the same in both C and C++ and not diagnose because int and CURLINFO are "compatible enough" types for va_arg. -
Matheus Izvekov authored
This is a follow up to the "rvalue-to-prvalue" rename at D103720. Signed-off-by:
Matheus Izvekov <mizvekov@gmail.com> Depends on D103720 Reviewed By: rsmith Differential Revision: https://reviews.llvm.org/D103933
-
Nico Weber authored
This reverts commit 905f4eb5. Breaks check-llvm on most (all?) bots, see https://reviews.llvm.org/D99435
-
Matheus Izvekov authored
This renames the expression value categories from rvalue to prvalue, keeping nomenclature consistent with C++11 onwards. C++ has the most complicated taxonomy here, and every other language only uses a subset of it, so it's less confusing to use the C++ names consistently, and mentally remap to the C names when working on that context (prvalue -> rvalue, no xvalues, etc). Renames: * VK_RValue -> VK_PRValue * Expr::isRValue -> Expr::isPRValue * SK_QualificationConversionRValue -> SK_QualificationConversionPRValue * JSON AST Dumper Expression nodes value category: "rvalue" -> "prvalue" Signed-off-by:
Matheus Izvekov <mizvekov@gmail.com> Reviewed By: rsmith Differential Revision: https://reviews.llvm.org/D103720
-
Simon Pilgrim authored
Pulled out of D103888 - use the underlying SmallString version directly
-
Simon Pilgrim authored
Pulled out of D103888 - use the underlying SmallString version directly
-
LemonBoy authored
Upon encountering loads/stores on types whose size is not a multiple of 8 bits the SROA pass would either trip an assertion or use logic that was not meant to work with such irregularly-sized types. Reviewed By: aeubanks Differential Revision: https://reviews.llvm.org/D99435
-
Jim Lin authored
Loads in the first half of the chapter are missing the type argument. Patched By: klao (Mihaly Barasz) Reviewed By: Jim Differential Revision: https://reviews.llvm.org/D90326
-
Lang Hames authored
The C-string section splitting support added in f9649d12 triggered an assert ("Duplicate canonical symbol at address") when multiple symbols were defined at the the same offset within a C-string block (this triggered on arm64, where we always add a block start symbol). The bug was caused by a failure to update the record of the last canonical symbol address. The fix was to maintain this record correctly, and move the auto-generation of the block-start symbol above the handling for symbols defined in the object itself so that all symbols (auto-generated and defined) are processed in address order.
-
Florian Hahn authored
This patch adds initial support for using the new pass manager when doing ThinLTO via libLTO. Reviewed By: steven_wu Differential Revision: https://reviews.llvm.org/D102627
-
Javier Setoain authored
These `arm_sve.cmp` functions are needed to generate scalable vector masks as long as scalable vectors are not part of the standard types. Once in standard, these can be removed and `std.cmp` can be used instead. Differential Revision: https://reviews.llvm.org/D103473
-
Fraser Cormack authored
I believe these failures were introduced by D103790's changes to the VType formatting found in vsetvli/vsetivli instructions.
-
David Spickett authored
The new test `symbolize_stack_fp.cpp` added in https://reviews.llvm.org/D102046 assumes that we can fall back to the fast unwinder. This is not the case for Thumb and the test is currently failing on our v7 thumb bot: https://lab.llvm.org/buildbot/#/builders/26/builds/2096 Skip the test if we're building for a Thumb target. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D103512
-
Fraser Cormack authored
These types are (presumably) never used in the generated TableGen files. The `default` switch case silences any compiler warnings for these missing types so it's easy to miss. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D103883
-
Jingu Kang authored
There was a bug in LoopBoundSplit. The pass should ignore phi node which is not scevable. Differential Revision: https://reviews.llvm.org/D103913
-
David Spickett authored
This reverts commit e05b03cf. While I investigate a register test failure: http://green.lab.llvm.org/green/blue/organizations/jenkins/lldb-cmake/detail/lldb-cmake/32693/pipeline/
-
Jan Kratochvil authored
This reverts commit 093750dd. It broke buildbots, goint to investigate it more.
-
Diana Picus authored
CPU_TIME takes a single real scalar INTENT(OUT) argument. We can therefore return a double and let lowering handle casting that to the precision used for the default real kind. Differential Revision: https://reviews.llvm.org/D103805
-
Florian Hahn authored
-
Fraser Cormack authored
This patch is a simple fix which registers CONCAT_VECTORS as custom-lowered for scalable mask vectors. This follows the pattern of all other scalable-vector types, as the default expansion of CONCAT_VECTORS cannot handle scalable types, and even if it did it'd go through the stack and generate worse code. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D103896
-
Jan Kratochvil authored
Command to see the differences: diff -u <(sed -n 's#^HANDLE_DI_FLAG *([^,]*, *\([^()]*\)) *\(//.*\)\?$#\1#p' <llvm/include/llvm/IR/DebugInfoFlags.def | grep -vw Largest) <(sed -n 's#^ *LLVMDIFlag\([^ ]*\) *= (\?[0-9].*$#\1#p' <llvm/include/llvm-c/DebugInfo.h) OCaml binding is more seriously out of sync but I have not tried to sync it. Reviewed By: aprantl Differential Revision: https://reviews.llvm.org/D103910
-
Fabian Schuiki authored
As a follow-up to the discussion in https://reviews.llvm.org/D103822, make the templated `DictionaryAttr::getAs` take the name by `&&` reference and properly forward the argument to the underlying `get`.
-
serge-sans-paille authored
This fixes an issue introduced by https://reviews.llvm.org/D70662 Function-scope static initialization are guarded in C++, so we should probably not use it because it introduces a dependency on __cxa_guard* symbols. In the context of clang, libasan is linked statically, and it currently needs to the odd situation where compiling C code with clang and asan requires -lstdc++ Differential Revision: https://reviews.llvm.org/D102475
-
Esme-Yi authored
Failure in llvm/test/tools/llvm-objdump/XCOFF/section-headers.test: SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 24-25: truncated \xXX escape -
Guillaume Chatelet authored
This is a follow up patch based on https://reviews.llvm.org/D103251#2804016. Differential Revision: https://reviews.llvm.org/D103893
-