- Aug 21, 2020
-
-
Raphael Isemann authored
This reverts commit a4c3ed42. The test is curiously failing with a plain exit code 1 on Fuchsia.
-
Florian Hahn authored
Recommit the patch after fixing an issue reported caused by the fact that re-used values are also added to InsertedValues. Additional tests have been added in 88818491 This reverts the revert commit 38884641.
-
Cameron McInally authored
Pretty much just a copy of the SDIV patches (D86114 and D85982) with string replacement. Differential Revision: https://reviews.llvm.org/D86316
-
Haojian Wu authored
Reviewed By: sammccall Differential Revision: https://reviews.llvm.org/D85716
-
Raphael Isemann authored
D81347 changes the ASTFileSignature to be an array of 20 uint8_t instead of 5 uint32_t. However, it didn't update the code in ObjectFilePCHContainerOperations that creates the dwoID in the module from the ASTFileSignature (`Buffer->Signature` being the array subclass that is now `std::array<uint8_t, 20>` instead of `std::array<uint32_t, 5>`). ``` uint64_t Signature = [..] (uint64_t)Buffer->Signature[1] << 32 | Buffer->Signature[0] ``` This code works with the old ASTFileSignature (where two uint32_t are enough to fill the uint64_t), but after the patch this only took two bytes from the ASTFileSignature and only partly filled the Signature uint64_t. This caused that the dwoID in the module ref and the dwoID in the actual module no longer match (which in turns causes that LLDB keeps warning about the dwoID's not matching when debugging -gmodules-compiled binaries). This patch just unifies the logic for turning the ASTFileSignature into an uint64_t which makes the dwoID match again (and should prevent issues like that in the future). Reviewed By: aprantl, dang Differential Revision: https://reviews.llvm.org/D84013
-
Florian Hahn authored
-
Sam Parker authored
-
Georgii Rymar authored
The testing in merged.test is not ideal. It uses the following set of flags: `-aeWhSrnudlVgIs` and the precompiled object `trivial.obj.elf-i386`. In fact, this object, for example, does not contain versioning stuff, so specifying `-V` does not make much sense for it, so it is not really tested. Also, we want to avoid using of precompiled objects, ideally we want to use a YAML that triggers an output for each of the short options in use: ``` -a: --all -e: --headers -W: --wide -h: --file-headers, --file-header -S: --section-headers, --sections -r: --relocations -n: --notes -u: --unwind -d: --dynamic-table -l: --program-headers -V: --version-info -g: --elf-section-groups -I: --elf-hash-histogram -s: --symbols ``` Note that, for example, we do not need to have groups to test `-g`, because for a object with no groups llvm-readelf still prints "There are no section groups in this file.", but that is not always the case. E.g. for `-d` we don't print anything when we have no dynamic table, so we have to describe it in a YAML to test `-d` properly. Also, we probably want to test cases with and without `-a`(-all) option separately to be sure that we handle all options and not only the first one in the sequence. Differential revision: https://reviews.llvm.org/D86283
-
Luís Marques authored
D80465 added an assembly implementation of muldi3 for RISC-V but it didn't add it to the cmake `*_SOURCES` list, so the C implementation was being used instead. This patch fixes that. Differential Revision: https://reviews.llvm.org/D86036
-
Georgii Rymar authored
The code that reports "PT_DYNAMIC segment offset + size exceeds the size of the file" has an issue: it is possible to bypass the validation by overflowing the size + offset result. Differential revision: https://reviews.llvm.org/D85519
-
Nemanja Ivanovic authored
Our handling of PC-Relative addressing is currently broken with Fast ISel in 3 ways: - FISel emits calls without handling all the PC-Rel intricacies - FISel materializes FP constants through the TOC - FISel materializes GV's through the TOC As it would be unnecessarily tedious to implement all the handling for PC-Rel in Fast ISel, we will turn off FISel for anything that generates references to the TOC.
-
Dmitry Preobrazhensky authored
Summary of changes: - added description of MTBUF instructions and format modifier; - described limitations of f16 inline constants when used with integer operands; - updated description of gfx9+ flat global addressing modes; - v_accvgpr_write_b32 src0 corrections (gfx908); - minor bugfixing and improvements.
-
Adam Czachorowski authored
This can happen when building implicit modules, as demonstrated in test. The CompilerInstance uses the same StoredDiags, but different SourceManager. This used to crash clangd when it tried to relocate the diagnostic to the main file, which, according to SourceManager from the diagnostic, is a fake <module-includes> file. Differential Revision: https://reviews.llvm.org/D85753
-
Xing GUO authored
The original commit (7ff0ace96db9164dcde232c36cab6519ea4fce8) was causing build failure and was reverted in 6d242a73 ==================== Original Commit Message ==================== This patch adds support for referencing different abbrev tables. We use 'ID' to distinguish abbrev tables and use 'AbbrevTableID' to explicitly assign an abbrev table to compilation units. The syntax is: ``` debug_abbrev: - ID: 0 Table: ... - ID: 1 Table: ... debug_info: - ... AbbrevTableID: 1 ## Reference the second abbrev table. - ... AbbrevTableID: 0 ## Reference the first abbrev table. ``` Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D83116
-
Sam Parker authored
Add some phi elimination threshold testing.
-
Simon Pilgrim authored
This enables constexpr BSF/BSR intrinsics defined in ia32intrin.h
-
lewis-revill authored
PseudoBRIND had seemingly inherited incorrect annotations denoting it as a call instruction and that it defines X1/ra. This caused excess save/restore code to be emitted for ra. Differential Revision: https://reviews.llvm.org/D86286
-
Mirko Brkusanin authored
Do not break down local loads and stores so ds_read/write_b96/b128 in ISelLowering can be selected on subtargets that support them and if align requirements allow them. Differential Revision: https://reviews.llvm.org/D84403
-
Mirko Brkusanin authored
Fix local ds_read/write_b96/b128 so they can be selected if the alignment allows. Otherwise, either pick appropriate ds_read2/write2 instructions or break them down. Differential Revision: https://reviews.llvm.org/D81638
-
Mirko Brkusanin authored
Features UnalignedBufferAccess and UnalignedDSAccess are now used to determine whether hardware supports such access. UnalignedAccessMode should be used to enable them. hasUnalignedBufferAccessEnabled() and hasUnalignedDSAccessEnabled() can be now used to quickly check both. Differential Revision: https://reviews.llvm.org/D84522
-
Mirko Brkusanin authored
Adjust alignment requirements for ds_read/write_b96/b128. GFX9 and onwards allow misaligned access for reads and writes but only if SH_MEM_CONFIG.alignment_mode allows it. UnalignedDSAccess is set on GCN subtargets from GFX9 onward to let us know if we can relax alignment requirements. UnalignedAccessMode acts similary to UnalignedBufferAccess for DS instructions but only from GFX9 onward and is supposed to match alignment_mode. By default alignment of 4 is required. Differential Revision: https://reviews.llvm.org/D82788
-
Georgii Rymar authored
Its a follow-up for D85830, it stops ignoring 'PT_OPENBSD_*' segment types. Now them are recognized properly. Note: GNU readelf does not recognize them, though perhaps it shouldn't. Anyways, it was reported to binutils: https://sourceware.org/bugzilla/show_bug.cgi?id=26405#c0 Differential revision: https://reviews.llvm.org/D86208
-
Simon Pilgrim authored
This enables constexpr BSWAP intrinsics defined in ia32intrin.h
-
Florian Hahn authored
This adds conservative handling of AtomicRMW/AtomicCmpXChg to isDSEBarrier, similar to atomic loads and stores.
-
Roman Lebedev authored
-
Jay Foad authored
In SelectionDAGBuilder always translate the fshl and fshr intrinsics to FSHL and FSHR (or ROTL and ROTR) instead of lowering them to shifts and ORs. Improve the legalization of FSHL and FSHR to avoid code quality regressions. Differential Revision: https://reviews.llvm.org/D77152
-
Simon Pilgrim authored
Followup to D86229, this enables constexpr on the alternative (which fallback to generic code) POPCNT intrinsics defined in ia32intrin.h
-
Florian Hahn authored
-
Jay Foad authored
-
sstefan1 authored
-
Yevgeny Rouban authored
Both AfterPass and AfterPassInvalidated pass instrumentation callbacks get additional parameter of type PreservedAnalyses. This patch was created by @fedor.sergeev. I have just slightly changed it. Reviewers: fedor.sergeev Differential Revision: https://reviews.llvm.org/D81555
-
Simon Pilgrim authored
Matches what we do in most other x86 headers
-
Sam Parker authored
Before we speculatively execute a basic block, query the cost of inserting the necessary select instructions against the phi folding threshold. For non-trivial insertions, a more accurate decision can probably be made during machine if-conversion. With minsize we query the CodeSize cost, otherwise we use SizeAndLatency. Differential Revision: https://reviews.llvm.org/D82438
-
Gongyu Deng authored
1. Complete `process load` with the common disk file completion, so there is not test provided for it; 2. Complete `process unload` with the tokens of valid loaded images. Thanks for Raphael's help on the test for `process unload`. Reviewed By: teemperor Differential Revision: https://reviews.llvm.org/D79887
-
Georgii Rymar authored
Currently we have `checkDRI` and two `createDRIFrom` methods which are used to create `DynRegionInfo` objects. And we have an issue: constructions like: `ObjF->getELFFile()->base() + P->p_offset` that are used in `createDRIFrom` functions might overflow. I had to revert `D85519` which triggered such UBSan failure. This NFC, simplifies and generalizes how we create `DynRegionInfo` objects. It will allow us to introduce more/better validation checks in a single place. It also will allow to change `createDRI` to return `Expected<>` so that we will be able to stop using the `reportError`, which is used inside currently, and have a warning instead. Differential revision: https://reviews.llvm.org/D86297
-
Florian Hahn authored
When traversing memory uses to look for aliasing reads/writes, we only care about complete overwrites. This patch splits off the partial overwrite tracking from isOverwrite This avoids some unnecessary work when checking for read/write clobbers with MemorySSA-DSE. isOverwrite, which skips the partial overwrite tracking. This gives a relatively small improvement http://llvm-compile-time-tracker.com/compare.php?from=ef2a2f77f87553a0a4a39f518eb9ac86b756bda6&to=658f3905dd96d3415f3782adc712c79fa59a4665&stat=instructions This is part of the patches to bring down compile-time to the level referenced in http://lists.llvm.org/pipermail/llvm-dev/2020-August/144417.html Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D86280
-
Eduardo Caldas authored
Differential Revision: https://reviews.llvm.org/D86298
-
Sam Parker authored
Modify the ARM getCmpSelInstrCost implementation for the code size costs of selects. Now consider the legalization cost and increase the cost of i1 because those values wouldn't live in a general purpose register. We also make selects +1 more expensive to account for the IT instruction. Differential Revision: https://reviews.llvm.org/D82091
-
David Green authored
As part of D84741, this adds a target hook for the preferPredicatedReductionSelect option and makes use of it under MVE, allowing us to tail predicate most reduction loops. Differential Revision: https://reviews.llvm.org/D85980
-
Qiu Chaofan authored
Commit dbcfbffc adds ppc.readflm and ppc.setflm intrinsics to read or write FPSCR register. This patch adds them to Clang. Reviewed By: steven.zhang Differential Revision: https://reviews.llvm.org/D85874
-