- Oct 01, 2020
-
-
zoecarver authored
Summary: Adds support for "following" memory through MSSA PHI arguments. This will help catch more noop stores that exist between blocks. Originally part of D79391. Reviewers: fhahn, jfb, asbirlea Differential Revision: https://reviews.llvm.org/D82588
-
Louis Dionne authored
-
Jamie Schmeiser authored
A new hidden option -print-changed is added along with code to support printing the IR as it passes through the opt pipeline in the new pass manager. Only those passes that change the IR are reported, with others only having the banner reported, indicating that they did not change the IR, were filtered out or ignored. Filtering of output via the -filter-print-funcs is supported and a new supporting hidden option -filter-passes is added. The latter takes a comma separated list of pass names and filters the output to only show those passes in the list that change the IR. The output can also be modified via the -print-module-scope function. The code introduces an abstract template base class that generalizes the comparison of IRs that takes an IR representation as template parameter. Derived classes provide overrides that provide an event based API for generalized reporting of IRs as they are changed in the opt pipeline through the new pass manager. The first of several instantiations is provided that prints the IR in a form similar to that produced by -print-after-all with the above mentioned filtering capabilities. This version, and the others to follow will be introduced at the upcoming developer's conference. Reviewed By: aeubanks (Arthur Eubanks), yrouban (Yevgeny Rouban), ychen (Yuanfang Chen), MaskRay (Fangrui Song) Differential Revision: https://reviews.llvm.org/D86360
-
peter klausler authored
A WRITE to an unformatted sequential variable-length unit after a BACKSPACE needs to forget its previous knowledge of the length of the record that's about to be overwritten, and a BACKSPACE after an ENDFILE or at the start of the file needs to be a no-op. Differential revision: https://reviews.llvm.org/D88675
-
Louis Dionne authored
This is a temporary workaround until the new/delete situation is made better (i.e. we don't include new/delete in both libc++ and libc++abi by default).
-
peter klausler authored
Don't give false positives from INQUIRE about possible access mode changes on connected units. DIRECT and SEQUENTIAL cannot be intermixed, apart from allowing DIRECT on a SEQUENTIAL file with fixed-size records and positioning. Nor can FORMATTED and UNFORMATTED be interchanged. On unconnected files, the best that we can do is "UNKNOWN". Differential revision: https://reviews.llvm.org/D88673
-
Florian Mayer authored
Some projects do not use the TEMP_FAILURE_RETRY macro but define their own one, as not to depend on glibc / Bionic details. By allowing the user to override the list of macros, these projects can also benefit from this check. Differential Revision: https://reviews.llvm.org/D83144
-
peter klausler authored
Add checking to I/O statement APIs to catch cases where the formatted I/O data item transfer routines like OutputInteger64 are being incorrectly used for unformatted I/O, which should use the unformatted block or descriptor-based data item interfaces. Differential revision: https://reviews.llvm.org/D88672
-
Mircea Trofin authored
The user is expected to make the isStackSlot check before calling isPhysicalRegister or isVirtualRegister. The APIs assert otherwise. We can improve the usability of these APIs by carrying out the check in the 2 APIs: they become a complete "source of truth" and remove an extra responsibility from the user. Differential Revision: https://reviews.llvm.org/D88598
-
Shoaib Meenai authored
https://reviews.llvm.org/D88310 fixed the AIX issue in LLVMExternalProjectUtils, so we shouldn't need the workaround in the runtimes build anymore. I'm reverting it because it prevents the target-specific tool selection in LLVMExternalProjectUtils from taking effect, which we rely on for our runtimes builds. Reviewed By: daltenty Differential Revision: https://reviews.llvm.org/D88627
-
MaheshRavishankar authored
Differential Revision: https://reviews.llvm.org/D88633
-
Vy Nguyen authored
Reland rG4fcd1a8e6528:[llvm-exegesis] Add option to check the hardware support for a given feature before benchmarking. This is mostly for the benefit of the LBR latency mode. Right now, it performs no checking. If this is run on non-supported hardware, it will produce all zeroes for latency. Differential Revision: https://reviews.llvm.org/D85254 New change: Updated lit.local.cfg to use pass the right argument to llvm-exegesis to actually request the LBR mode. Differential Revision: https://reviews.llvm.org/D88670
-
Utkarsh Saxena authored
This allows us MSAN to instrument this function. Previous version is not instrumentable due to it shear volume. Differential Revision: https://reviews.llvm.org/D88536
-
Martin Storsjö authored
This matches the corresponding existing case in AArch64LoadStoreOpt::findMatchingUpdateInsnForward. Both cases could also be modified to check MBBI->getFlag(FrameSetup/FrameDestroy) instead of forbidding any optimization involving SP, but the effect is probably pretty much the same. Differential Revision: https://reviews.llvm.org/D88541
-
Martin Storsjö authored
The function already has a cleanup scope that calls the same whenever the function is exited. When reading the code, seeing that this return codepath has an explicit call while other return paths lack it is confusing. In the hypothetical case of a function having a prologue that set the HasWinCFI flag in the MF, but the epilogue containing no WinCFI instructions, the HasWinCFI flag in the MF would end up reset back to false. Differential Revision: https://reviews.llvm.org/D88636
-
Simon Pilgrim authored
Make sure we're using getScalarSizeInBits instead of cast<IntegerType> to get Type bit widths. This is preliminary cleanup before we can start adding vector support to the bswap/bitreverse (element level) matching.
-
Michael Liao authored
- `-cl-fp32-correctly-rounded-divide-sqrt` is already handled in a per-instruction manner by annotating the accuracy required. There's no need to add that fn-attr. So far, there's no in-tree backend handling that attr and that OpenCL specific option. - In case that out-of-tree backends are broken, this change could be reverted if those backends could not be fixed. Differential Revision: https://reviews.llvm.org/D88424
-
Meera Nakrani authored
Removed hasSideEffects from SSAT and USAT so that they are no longer marked as unpredictable. Differential Revision: https://reviews.llvm.org/D88545
-
Louis Dionne authored
Differential Revision: https://reviews.llvm.org/D88650
-
Valentin Clement authored
This patch fixes the bug report in https://bugs.llvm.org/show_bug.cgi?id=47659 Reviewed By: sameeranjoshi Differential Revision: https://reviews.llvm.org/D88597
-
Jay Foad authored
Remove some checks that have already been done in the only caller.
-
LLVM GN Syncbot authored
-
Sam McCall authored
This reverts commit 30d07b14. Test failures have (hopefully) been fixed.
-
Sam McCall authored
This reverts commit 79fbcbff. The fallback command fails to parse for the test files if there's no compile_commands.json in the tree.
-
Eduardo Caldas authored
After this change all nodes that have a delimited-list are using the `List` API. Implementation details: Let's look at a declaration with multiple declarators: `int a, b;` To generate a declarator list node we need to have the range of declarators: `a, b`: However, the `ClangAST` actually stores them as separate declarations: `int a ;` `int b;` We solve that by appropriately marking the declarators on each separate declaration in the `ClangAST` and then for the final declarator `int b`, shrinking its range to fit to the already marked declarators. Differential Revision: https://reviews.llvm.org/D88403
-
Sam McCall authored
This is a tool to simply parse a file as clangd would, and run some common features (code actions, go-to-definition, hover) in an attempt to trigger or reproduce crashes, error diagnostics, etc. This is easier and more predictable than loading the file in clangd, because: - there's no editor/plugin variation to worry about - there's no accidental variation of user behavior or other extraneous requests - we trigger features at every token, rather than guessing - everything is synchronoous, logs are easier to reason about - it's easier to (get users to) capture logs when running on the command-line This is a fairly lightweight variant of this idea. We could do a lot more with it, and maybe we should. But I can't in the near future, and experience will tell us if we made the right tradeoffs and if it's worth investing further. Differential Revision: https://reviews.llvm.org/D88338
-
David Tenty authored
It's actually not safe to call TEST_BIG_ENDIAN here, since we may be running from the builtins build (i.e builtins-config-ix) context where TEST_COMPILE_ONLY is set since without builtins already built we may fail to link, and TEST_BIG_ENDIAN internally performs tests which may fail to link without builtins. Fortunately powerpc is the only target that uses this information here and we actually already know the whether we are targeting the LE variant due to earlier macro checks, so we can simply this to remove our reliance on TEST_BIG_ENDIAN. Reviewed By: hubert.reinterpretcast, Whitney Differential Revision: https://reviews.llvm.org/D88608
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Jay Foad authored
-
David Sherwood authored
We don't support global variables with scalable vector types so I've changed the code to compare the fixed sizes instead. Differential Revision: https://reviews.llvm.org/D88564
-
James Henderson authored
When adding an archive member with a problem, e.g. a new bitcode with an old archiver, containing an unsupported attribute, or an ELF file with a malformed symbol table, the archiver would throw away the error and simply add the member to the archive without any symbol entries. This meant that the resultant archive could be silently unusable when not using --whole-archive, and result in unexpected undefined symbols. This change fixes this issue by addressing two FIXMEs and only throwing away not-an-object errors. However, this meant that some LLD tests which didn't need symbol tables and were using invalid members deliberately to test the linker's malformed input handling no longer worked, so this patch also stops the archiver from looking for symbols in an object if it doesn't require a symbol table, and updates the tests accordingly. Differential Revision: https://reviews.llvm.org/D88288 Reviewed by: grimar, rupprecht, MaskRay
-
LLVM GN Syncbot authored
-
Sjoerd Meijer authored
This is a simple pass that flattens nested loops. The intention is to optimise loop nests like this, which together access an array linearly: for (int i = 0; i < N; ++i) for (int j = 0; j < M; ++j) f(A[i*M+j]); into one loop: for (int i = 0; i < (N*M); ++i) f(A[i]); It can also flatten loops where the induction variables are not used in the loop. This can help with codesize and runtime, especially on simple cpus without advanced branch prediction. This is only worth flattening if the induction variables are only used in an expression like i*M+j. If they had any other uses, we would have to insert a div/mod to reconstruct the original values, so this wouldn't be profitable. This partially fixes PR40581 as this pass triggers on one of the two cases. I will follow up on this to learn LoopFlatten a few more (small) tricks. Please note that LoopFlatten is not yet enabled by default. Patch by Oliver Stannard, with minor tweaks from Dave Green and myself. Differential Revision: https://reviews.llvm.org/D42365
-
Sam Parker authored
-
Raphael Isemann authored
This test wasn't using decorators before and was missing the import, so my previous commit broke the test.
-
Louis Dionne authored
Instead of managing two copies of the symbol lists, reuse the same list in libc++abi and libc++. Differential Revision: https://reviews.llvm.org/D88623
-
Raphael Isemann authored
This test seems to randomly fail on Linux machines. It's only one part of the test failing randomly, so let's just skip it instead of reverting the whole patch (again).
-
Simon Pilgrim authored
-
Andrew Paverd authored
This patch adds support for creating Guard Address-Taken IAT Entry Tables (.giats$y sections) in object files, matching the behavior of MSVC. These contain lists of address-taken imported functions, which are used by the linker to create the final GIATS table. Additionally, if any DLLs are delay-loaded, the linker must look through the .giats tables and add the respective load thunks of address-taken imports to the GFIDS table, as these are also valid call targets. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D87544
-