- Feb 01, 2022
-
-
Nico Weber authored
-
Martin Storsjö authored
The old `__regex_word` aliased the mask for `xdigit`, causing stray test failures. The diff may look surprising, as if the previous faulty value had been set specifically for Windows - but this is due to a restructuring in 411c630b. Prior to that, there were OS specific settings for some OSes, and one fallback used for the rest (which turns out to not work for Windows). Differential Revision: https://reviews.llvm.org/D118188
-
David Greene authored
Re-add filtering options with fixes for failed tests. We were not passing the is_filtered argument in all check generator calls in update_cc_test_checks.py Enhance the various update_*_test_checks.py tools to allow filtering the tool output with regular expressions. The --filter option will emit only tool output lines matching the given regular expression while the --filter-out option will emit only tools output lines not matching the given regular expression. Filters are applied in order of appearance on the command line (or in UTC_ARGS) and the first matching filter terminates the search. This allows test authors to create more focused tests by removing irrelevant tool output and checking only the pieces of output necessary to test the desired functionality. Differential Revision: https://reviews.llvm.org/D117694
-
tyb0807 authored
This removes `HasPAUTH` from `AArch64SubTarget`, as it seems to be a redundant, unused copy of `HasPAuth`. Differential Revision: https://reviews.llvm.org/D117782
-
tyb0807 authored
New target SDNodes are added: AArch64ISD::MOPS_MEMSET, etc. Each intrinsic is translated to one of these in SelectionDAGBuilder via EmitTargetCodeForMOPS. A custom lowering routine for INTRINSIC_W_CHAIN is added to handle llvm.aarch64.mops.memset.tag. This takes a separate path from the common intrinsics but ultimately ends up in the same EmitMOPS(). This is part 4/4 of a series of patches split from https://reviews.llvm.org/D117405 to facilitate reviewing. Patch by Tomas Matheson, Lucas Prates and Son Tuan Vu. Differential Revision: https://reviews.llvm.org/D117764
-
Joseph Huber authored
This patch introduces a linker wrapper tool that allows us to preprocess files before they are sent to the linker. This adds a dummy action and job to the driver stage that builds the linker command as usual and then replaces the command line with the wrapper tool. Depends on D116543 Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D116544
-
Joseph Huber authored
This patch adds support for embedding the device object files into the host IR to create a fat binary. Each offloading file will be inserted into a section with the following naming format `.llvm.offloading.<triple>.<arch>.<filename>`. Depends on D116542 Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D116543
-
Joseph Huber authored
This patch adds support for a flag `-fembed-offload-binary` to embed a file as an ELF section in the output by placing it in a global variable. This can be used to bundle offloading files with the host binary so it can be accessed by the linker. The section is named using the `-fembed-offload-section` option. Depends on D116541 Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D116542
-
Joseph Huber authored
This patch introduces the `-fopenmp-new-driver` option which instructs the compiler to use a new driver scheme for producing offloading code. In this scheme we create a complete offloading object file and then pass it as input to the host compilation phase. This will allow us to embed the object code in the backend phase. This is the start of a series of commits to rework the OpenMP offloading driver pipeline. The goal of this is to simplify the steps required for creating an offloading program. This patch changes the driver's configuration to simply pass the device file back to the host as an input so it can be embedded as an LLVM IR global during the backend, then simply passes that object file to the linker. This driver implementation will currently create the following phases, ``` $ clang input.c -fopenmp -fopenmp-targets=nvptx64 -fopenmp-new-driver -ccc-print-phases +- 0: input, "input.c", c, (host-openmp) +- 1: preprocessor, {0}, cpp-output, (host-openmp) +- 2: compiler, {1}, ir, (host-openmp) | | +- 3: input, "input.c", c, (device-openmp) | | +- 4: preprocessor, {3}, cpp-output, (device-openmp) | |- 5: compiler, {4}, ir, (device-openmp) | +- 6: offload, "host-openmp (x86_64-unknown-linux-gnu)" {2}, "device-openmp (nvptx64)" {5}, ir | +- 7: backend, {6}, assembler, (device-openmp) |- 8: assembler, {7}, object, (device-openmp) +- 9: offload, "host-openmp (x86_64-unknown-linux-gnu)" {2}, "device-openmp (nvptx64)" {8}, ir +- 10: backend, {9}, assembler, (host-openmp) +- 11: assembler, {10}, object, (host-openmp) 12: clang-linker-wrapper, {11}, image, (host-openmp) ``` Which will map to the following bindings ``` # "x86_64-unknown-linux-gnu" - "clang", inputs: ["input.c"], output: "/tmp/input-bae62e.bc" # "nvptx64" - "clang", inputs: ["input.c", "/tmp/input-bae62e.bc"], output: "/tmp/input-76784e.s" # "nvptx64" - "NVPTX::Assembler", inputs: ["/tmp/input-76784e.s"], output: "/tmp/input-8f29db.o" # "x86_64-unknown-linux-gnu" - "clang", inputs: ["/tmp/input-bae62e.bc", "/tmp/input-8f29db.o"], output: "/tmp/input-545450.o" # "x86_64-unknown-linux-gnu" - "Offload::Linker", inputs: ["/tmp/input-545450.o"], output: "a.out" ``` Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D116541 -
tyb0807 authored
This implements codegen for Armv8.8/9.3 Memory Operations extension (MOPS). Any memcpy/memset/memmov intrinsics will always be emitted as a series of three consecutive instructions P, M and E which perform the operation. The SelectionDAG implementation is split into a separate patch. AArch64LegalizerInfo will now consider the following generic opcodes if +mops is available, instead of legalising by expanding them to libcalls: G_BZERO, G_MEMCPY_INLINE, G_MEMCPY, G_MEMMOVE, G_MEMSET The s8 value of memset is legalised to s64 to match the pseudos. AArch64O0PreLegalizerCombinerInfo will still be able to combine G_MEMCPY_INLINE even if +mops is present, as it is unclear whether it is better to generate fixed length copies or MOPS instructions for the inline code of small or zero-sized memory operations, so we choose to be conservative for now. AArch64InstructionSelector will select the above as new pseudo instructions: AArch64::MOPSMemory{Copy/Move/Set/SetTagging} These are each expanded to a series of three instructions (e.g. SETP/SETM/SETE) which must be emitted together during code emission to avoid scheduler reordering. This is part 3/4 of a series of patches split from https://reviews.llvm.org/D117405 to facilitate reviewing. Patch by Tomas Matheson and Son Tuan Vu Differential Revision: https://reviews.llvm.org/D117763 -
River Riddle authored
These were dead after the arithmetic operations moved from Standard to the Arithmetic dialect.
-
tyb0807 authored
According to the specification, MOPS instructions define/use NZCV flags as part of their semantics (see discussion in https://reviews.llvm.org/D116157). More specifically, the specification of the MOPS extension states that each memcpy/memset/memmov operation will be performed by a series of three MOPS instructions P, M and E. The P instruction writes to the NZCV flags, while the others (M and E) reads from the NZCV flags. This is part 2/4 of a series of patches split from https://reviews.llvm.org/D117405 to facilitate reviewing. Differential Revision: https://reviews.llvm.org/D117757
-
tyb0807 authored
This introduces a new ACLE intrinsic for memset tagged (https://github.com/ARM-software/acle/blob/next-release/main/acle.md#memcpy-family-of-operations-intrinsics---mops). void *__builtin_arm_mops_memset_tag(void *, int, size_t) A corresponding LLVM intrinsic is introduced: i8* llvm.aarch64.mops.memset.tag(i8*, i8, i64) The types match llvm.memset but the return type is not void. This is part 1/4 of a series of patches split from https://reviews.llvm.org/D117405 to facilitate reviewing. Patch by Tomas Matheson Differential Revision: https://reviews.llvm.org/D117753
-
Peter Klausler authored
When RECL= is set on OPEN(), ensure that it: 1) enforces a max output record payload size (not including header+footer or newline), and 2) causes padding of short output records only for ACCESS='DIRECT' The previous code was causing some false overrun errors and applying padding to sequential/stream output files. Differential Revision: https://reviews.llvm.org/D118630 -
Mircea Trofin authored
-
Sanjoy Das authored
The `mutable` was added back when `scope` was a `DataLayoutOpInterface`. Differential Revision: https://reviews.llvm.org/D118643
-
Martin Storsjö authored
In ancient Microsoft C runtimes, there might only have been a nonstandard `_vsnprintf` instead of the standard `vsnprintf`, but in modern versions (the only ones relevant for libc++), both are available. In MinGW configurations built with `__USE_MINGW_ANSI_STDIO=1` (as it is built in CI), `vsnprintf` provides a more standards compliant behaviour than what Microsoft's CRT provides, while `_vsnprintf` retains the Microsoft C runtime specific quirks. Differential Revision: https://reviews.llvm.org/D118187
-
Daniel McIntosh authored
Compact Unwind is a subsection, but that was lost in rGff9feeb5 Reviewed By: void Differential Revision: https://reviews.llvm.org/D118499
-
Sam Clegg authored
This reverts commit 00bf4755. This change broke the emscripten builder (among other things): https://ci.chromium.org/ui/p/emscripten-releases/builders/try/linux/b8823500584349280721/overview Sample failure: ``` test_unistd_unlink (test_core.core0) ... wasm-ld: error: symbol type mismatch: __stdio_write >>> defined as WASM_SYMBOL_TYPE_FUNCTION in /usr/local/google/home/sbc/dev/wasm/emscripten/cache/sysroot/lib/wasm32-emscripten/libc-debug.a(__stdio_write.o) >>> defined as WASM_SYMBOL_TYPE_DATA in /usr/local/google/home/sbc/dev/wasm/emscripten/cache/sysroot/lib/wasm32-emscripten/libc-debug.a(stderr.o) ```
-
Joseph Huber authored
This patch changes the error message to instead mention the documentation page for the debugging options provided by libomptarget and the bitcode runtimes. Add some extra information to the documentation to help users more quickly identify debugging resources. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D118626
-
Joseph Huber authored
Reduces the shared memory size used for globalization to 512 bytes from 2048 to reduce the pressure on shared memory. This patch ado adds a debug mesage to indicate when the shared memory was insufficient. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D118625
-
Sanjay Patel authored
-
bakhtiyar authored
Reviewed By: ezhulenev Differential Revision: https://reviews.llvm.org/D117751
-
Adrian Prantl authored
See: https://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake/40636/consoleFull#-39956214149ba4694-19c4-4d7e-bec5-911270d8a58c ``` llvm/lib/Support/Valgrind.cpp:37:63: error: missing '#include <stddef.h>'; 'size_t' must be declared before it is used void llvm::sys::ValgrindDiscardTranslations(const void *Addr, size_t Len) { ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/13.0.0/include/stddef.h:46:23: note: declaration here is not visible typedef __SIZE_TYPE__ size_t; ^ 1 error generated. ``` rdar://88049280
-
Florian Hahn authored
Add a new test case with 2 first-order recurrences, which share a user.
-
Louis Dionne authored
Differential Revision: https://reviews.llvm.org/D118638
-
Eli Friedman authored
The RHS of an isImpliedCond call can be a pointer even if the LHS is not. This is similar to bfa2a81e. Not going to include a testcase; an IR testcase would be extremely complicated and fragile. Fixes https://github.com/llvm/llvm-project/issues/51936 . Differential Revision: https://reviews.llvm.org/D114555
-
Paul Walker authored
Differential Revision: https://reviews.llvm.org/D118463
-
Chris Bieneman authored
We do support building with a default target unspecified. This fixes two small build issues that prevented LLVM's unit tests from building and libSupport from building on Windows.
-
Ruslan Arutyunyan authored
std::result_of creates problems when building with C++20 because it's deprecated there. The solution is to remove it and get return value type for a function with decltype. Substitute std::invoke_result for std::result_of is unnecessary because we don't have std::invoke semantics within the function - we don't work with pointer-to-member's. Reviewed by: ldionne, MikeDvorskiy, #libc Differential Revision: https://reviews.llvm.org/D118457
-
Konstantin Varlamov authored
-
Arthur O'Dwyer authored
As discovered in D117817, `std::ranges::input_range<Holder<Incomplete>*[10]>` hard-errored before this patch. That's because `input_range` requires `iter_rvalue_reference_t`, which requires `iter_move`, which was not ADL-proofed. Add ADL-proofing tests to all the range refinements. `output_range` and `common_range` shouldn't be affected, and all the others subsume `input_range` anyway, but we might as well be thorough. Differential Revision: https://reviews.llvm.org/D118213
-
Alexey Bataev authored
Added support for alternate ops vectorization of the cmp instructions. It allows to vectorize either cmp instructions with same/swapped predicate but different (swapped) operands kinds or cmp instructions with different predicates and compatible operands kinds. Differential Revision: https://reviews.llvm.org/D115955
-
Alexander Yermolovich authored
We can have a scenario where multiple CUs share an abbrev table. We modify or don't modify one CU, which leads to other CUs having invalid abbrev section. Example that caused it. All of CUs shared the same abbrev table. First CU just had compile_unit and sub_program. It was not modified. Next CU had DW_TAG_lexical_block with DW_AT_low_pc/DW_AT_high_pc converted to DW_AT_low_pc/DW_AT_ranges. We used unmodified abbrev section for first and subsequent CUs. So when parsing subsequent CUs debug info was corrupted. In this patch we will now duplicate all sections that are modified and are different. This also means that if .debug_types is present and it shares Abbrev table, and they usually are, we now can have two Abbrev tables. One for CU that was modified, and unmodified one for TU. Reviewed By: maksfb Differential Revision: https://reviews.llvm.org/D118517
-
Paul Walker authored
Adds patterns for: add(x, cntp(p, p)) -> incp(x, p) sub(x, cntp(p, p)) -> decp(x, p) Differential Revision: https://reviews.llvm.org/D118567 -
Sanjoy Das authored
- Remove the `{Op,Attr,Type}Trait` TableGen classes and replace with `Trait` - Rename `OpTraitList` to `TraitList` and use it in a few places The bulk of this change is a mechanical s/OpTrait/Trait/ throughout the codebase. Reviewed By: rriddle, jpienaar, herhut Differential Revision: https://reviews.llvm.org/D118543 -
Ties Stuij authored
Differential Revision: https://reviews.llvm.org/D118380
-
Jonas Devlieghere authored
Rosetta crashlogs can have their own thread register state. Unlike the other registers which ware directly listed under "threadState", the Rosetta registers are nested under their own key in the JSON, as illustrated below: { "threadState": { "rosetta": { "tmp2": { "value": 4935057216 }, "tmp1": { "value": 4365863188 }, "tmp0": { "value": 18446744073709551615 } } } } -
Jon Chesterfield authored
-
Christian Sigg authored
Fold `arith.fadd %x, -0.0 -> %x` and similarly for `fsub`, `fmul`, `fdiv`. Fold `arith.fmin %x, %x -> %x`, `arith.fmin %x, +inf -> %x` and similarly for `fmax`. Reviewed By: pifon2a, mehdi_amini, bondhugula Differential Revision: https://reviews.llvm.org/D118244
-