- May 20, 2021
-
-
Philip Reames authored
Turns out simplifyLoopIVs sometimes returns a non-dead instruction in it's DeadInsts out param. I had done a bit of NFC cleanup which was only NFC if simplifyLoopIVs obeyed it's documentation. I'm simplfy dropping that part of the change. Commit message from try 3: Recommitting after fixing a bug found post commit. Amusingly, try 1 had been correct, and by reverting to incorporate last minute review feedback, I introduce the bug. Oops. :) Original commit message: The problem was that recursively deleting an instruction can delete instructions beyond the current iterator (via a dead phi), thus invalidating iteration. Test case added in LoopUnroll/dce.ll to cover this case. LoopUnroll does a limited DCE pass after unrolling, but if you have a chain of dead instructions, it only deletes the last one. Improve the code to recursively delete all trivially dead instructions. Differential Revision: https://reviews.llvm.org/D102511
-
Frederik Gossen authored
This reverts commit c98833cd. The test `ClangScanDeps/modules-inferred-explicit-build.m` creates files in the current directory.
-
Sanjay Patel authored
This is another fast-math-flags failure exposed by D90901.
-
Sanjay Patel authored
-
Nikita Popov authored
We only use BackedgeTakenInfo::hasOperand().
-
Vedant Kumar authored
If there are no counters, an mmap() of the counters section would fail due to the size argument being too small (EINVAL). rdar://78175925 Differential Revision: https://reviews.llvm.org/D102735
-
Jessica Paquette authored
Add missing REQUIRES line to prelegalizer-combiner-icmp-to-true-false-known-bits.
-
Hongtao Yu authored
Sample profile loader can be run in both LTO prelink and postlink. Currently the counts annoation in postilnk doesn't fully overwrite what's done in prelink. I'm adding a switch (`-overwrite-existing-weights=1`) to enable a full overwrite, which includes: 1. Clear old metadata for calls when their parent block has a zero count. This could be caused by prelink code duplication. 2. Clear indirect call metadata if somehow all the rest targets have a sum of zero count. 3. Overwrite branch weight for basic blocks. With a CS profile, I was seeing #1 and #2 help reduce code size by preventing post-sample ICP and CGSCC inliner working on obsolete metadata, which come from a partial global inlining in prelink. It's not expected to work well for non-CS case with a less-accurate post-inline count quality. It's worth calling out that some prelink optimizations can damage counts quality in an irreversible way. One example is the loop rotate optimization. Due to lack of exact loop entry count (profiling can only give loop iteration count and loop exit count), moving one iteration out of the loop body leaves the rest iteration count unknown. We had to turn off prelink loop rotate to achieve a better postlink counts quality. A even better postlink counts quality can be archived by turning off prelink CGSCC inlining which is not context-sensitive. Reviewed By: wenlei, wmi Differential Revision: https://reviews.llvm.org/D102537
-
- May 19, 2021
-
-
Amy Huang authored
This reverts commit b6320eeb as it causes clang to assert; see https://reviews.llvm.org/rGb6320eeb8622f05e4a5d4c7f5420523357490fca.
-
Nicolas Vasilache authored
Drop the SCF dialect EDSC subdirectory and update all uses. Differential Revision: https://reviews.llvm.org/D102780
-
Mariusz Ceier authored
Fix lld macho standalone build by including llvm/Config/llvm-config.h instead of llvm/Config/config.h lld/MachO/Driver.cpp and lld/MachO/SyntheticSections.cpp include llvm/Config/config.h which doesn't exist when building standalone lld. This patch replaces llvm/Config/config.h include with llvm/Config/llvm-config.h just like it is in lld/ELF/Driver.cpp and HAVE_LIBXAR with LLVM_HAVE_LIXAR and moves LLVM_HAVE_LIBXAR from config.h to llvm-config.h Also it adds LLVM_HAVE_LIBXAR to LLVMConfig.cmake and links liblldMachO2.so with XAR_LIB if LLVM_HAVE_LIBXAR is set. Differential Revision: https://reviews.llvm.org/D102084
-
Simon Moll authored
The operation of some VP intrinsics do/will not map to regular instruction opcodes. Returning 'None' seems more intuitive here than 'Instruction::Call'. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D102778
-
Anirudh Prasad authored
- This patch (is one in a series of patches) which introduces HLASM Parser support (for the first parameter of inline asm statements) to LLVM ([[ https://lists.llvm.org/pipermail/llvm-dev/2021-January/147686.html | main RFC here ]]) - This patch in particular introduces HLASM Parser support for Z machine instructions. - The approach taken here was to subclass `AsmParser`, and make various functions and variables as "protected" wherever appropriate. - The `HLASMAsmParser` class overrides the `parseStatement` function. Two new private functions `parseAsHLASMLabel` and `parseAsMachineInstruction` are introduced as well. The general syntax is laid out as follows (more information available in [[ https://www.ibm.com/support/knowledgecenter/SSENW6_1.6.0/com.ibm.hlasm.v1r6.asm/asmr1023.pdf | HLASM V1R6 Language Reference Manual ]] - Chapter 2 - Instruction Statement Format): ``` <TokA><spaces.*><TokB><spaces.*><TokC><spaces.*><TokD> ``` 1. TokA is referred to as the Name Entry. This token is optional 2. TokB is referred to as the Operation Entry. This token is mandatory. 3. TokC is referred to as the Operand Entry. This token is mandatory 4. TokD is referred to as the Remarks Entry. This token is optional - If TokA is provided, then we either parse TokA as a possible comment or as a label (Name Entry), Tok B as the Operation Entry and so on. - If TokA is not provided (i.e. we have one or more spaces and then the first token), then we will parse the first token (i.e TokB) as a possible Z machine instruction, TokC as the operands to the Z machine instruction and TokD as a possible Remark field - TokC (Operand Entry), no spaces are allowed between OperandEntries. If a space occurs it is classified as an error. - TokD if provided is taken as is, and emitted as a comment. The following additional approach was examined, but not taken: - Adding custom private only functions to base AsmParser class, and only invoking them for z/OS. While this would eliminate the need for another child class, these private functions would be of non-use to every other target. Similarly, adding any pure virtual functions to the base MCAsmParser class and overriding them in AsmParser would also have the same disadvantage. Testing: - This patch doesn't have tests added with it, for the sole reason that MCStreamer Support and Object File support hasn't been added for the z/OS target (yet). Hence, it's not possible generate code outright for the z/OS target. They are in the process of being committed / process of being worked on. - Any comments / feedback on how to combat this "lack of testing" due to other missing required features is appreciated. Reviewed By: Kai, uweigand Differential Revision: https://reviews.llvm.org/D98276
-
Andy Yankovsky authored
The test works correctly on Windows, the linked bug has been resolved. Reviewed By: teemperor Differential Revision: https://reviews.llvm.org/D102769
-
Melanie Blower authored
[clang][patch] Add support for option -fextend-arguments={32,64}: widen integer arguments to int64 in unprototyped function calls Reviewed By: Aaron Ballman Differential Revision: https://reviews.llvm.org/D101640 -
Wang, Pengfei authored
The current implementation assumes the destination type of shuffle is the same as the decomposed ones. Add the check to avoid crush when the condition is not satisfied. This fixes PR37616. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D102751
-
Simon Pilgrim authored
Revert rG528bc10e : "[X86FixupLEAs] Transform the sequence LEA/SUB to SUB/SUB" Reports on D101970 indicate this is causing failures on multi-stage compiles.
-
Jan Kratochvil authored
DW_AT_ranges can use DW_FORM_sec_offset (instead of DW_FORM_rnglistx). In such case DW_AT_rnglists_base does not need to be present. DWARF-5 spec: "If the offset_entry_count is zero, then DW_FORM_rnglistx cannot be used to access a range list; DW_FORM_sec_offset must be used instead. If the offset_entry_count is non-zero, then DW_FORM_rnglistx may be used to access a range list;" This fix is for TestTypeCompletion.py category `dwarf` using GCC with DWARF-5. The fix just provides GetRnglist() lazy getter for `m_rnglist_table`. The testcase is easier to review by: diff -u lldb/test/Shell/SymbolFile/DWARF/DW_AT_low_pc-addrx.s \ lldb/test/Shell/SymbolFile/DWARF/DW_AT_range-DW_FORM_sec_offset.s Differential Revision: https://reviews.llvm.org/D98289 -
Jan Kratochvil authored
Refactor code only for D98289. Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D99653
-
Simon Pilgrim authored
Generalize the fix from rGd0902a86 by ensuring we widen/narrow the indices subvector first and then perform the ZERO_EXTEND_VECTOR_INREG (if necessary), which should allow us to perform the variable permutes with source/destination/indices vectors of any widths.
-
Simon Pilgrim authored
Match whats documented in the Intel AOM (and Agner/instlatx64 agree) - these are all Port0 only. Now that we can use in-order models in llvm-mca, the atom model is a good "worst case scenario" analysis for x86.
-
Tobias Gysi authored
The patch extends the yaml code generation to support the following new OpDSL constructs: - captures - constants - iteration index accesses - predefined types These changes have been introduced by revision https://reviews.llvm.org/D101364. Differential Revision: https://reviews.llvm.org/D102075
-
Andy Yankovsky authored
`bool` is considered to be unsigned according to `std::is_unsigned<bool>::value` (and `Type::GetTypeInfo`). Encoding it as signed int works fine for normal variables and fields, but breaks when reading the values of boolean bitfields. If the field is declared as `bool b : 1` and has a value of `0b1`, the call to `SBValue::GetValueAsSigned()` will return `-1`. Reviewed By: teemperor Differential Revision: https://reviews.llvm.org/D102685
-
Raphael Isemann authored
-
Nico Weber authored
This reverts commit 892497c8. Breaks tests, see comments on https://reviews.llvm.org/D102542
-
Peter Waller authored
Intriniscs reading or writing the FFR register need to model the fact there is additional state being read/wrtten. Model this state as inaccessible memory. * setffr => write inaccessiblememonly * rdffr => read inaccessiblememonly * ldff* => read arg memory, write inaccessiblemem * ldnf => read arg memory, write inaccessiblemem
-
Nicolas Vasilache authored
Drop the vector dialect EDSC subdirectory and update all uses.
-
Wang, Pengfei authored
This reverts commit ca23a38e. Revert due to EXPENSIVE_CHECKS fail.
-
David Sherwood authored
In InnerLoopVectorizer::setDebugLocFromInst we were previously asserting that the VF is not scalable. This is because we want to use the number of elements to create a duplication factor for the debug profiling data. However, for scalable vectors we only know the minimum number of elements. I've simply removed the assert for now and added a FIXME saying that we assume vscale is always 1. When vscale is not 1 it just means that the profiling data isn't as accurate, but shouldn't cause any functional problems.
-
Kristina Bessonova authored
Differential Revision: https://reviews.llvm.org/D102256
-
Sanjay Patel authored
This is a step towards relying more on node-level FMF rather than function-wide or target settings. I think it was just an oversight that we didn't get this path in D87361 or follow-on patches. The lack of FMF propagation is blocking D90901 from converting tests to IR-level FMF. We can't do much more than this currently because we also fail to propagate flags from x86-specific node to generic FMA node. That would be another patch, so the test just verifies that we can transfer from IR to initial SDAG node. Differential Revision: https://reviews.llvm.org/D102725
-
Michael Spencer authored
This reapplies commit 95033eb3 that reverted commit 1d9e8e13. The tests were failing on Windows due to spaces and backslashes in paths not being handled carefully.
-
Haojian Wu authored
We might encounter an undeduced type before calling getTypeAlignInChars. NOTE: this retrieves the fix from 8f80c66b, which was removed in Adam's followup fix fbfcfdbf. We originally thought the crash was caused by recovery-ast, but it turns out it can occur for other cases, e.g. typo-correction. Differential Revision: https://reviews.llvm.org/D102750
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Remnants from when the Atom model was copied from the Btver2 model.....
-
Bjorn Pettersson authored
The checks (both positive and negative checks) in the test case hip-include-path.hip could mistakenly end up matching the string "clang" from the InstalledDir in case the build dir for example was named "/home/username/build-clang/". Intention with this patch is to tighten up the checks a bit to filter our the part of the paths that match with InstalledDir when doing the checks, as well as matching "/lib/clang/" rather than just "clang/". Problem was found when building with -DCLANG_DEFAULT_RTLIB=compiler-rt -DCLANG_DEFAULT_CXX_STDLIB=libc++ and having "clang/" in the path to the build dir. Reviewed By: yaxunl Differential Revision: https://reviews.llvm.org/D102723
-
Roman Lebedev authored
This required some changes to, instead of eagerly making PHI's in the UnwindDest valid as-if the BB is already not a predecessor, to be valid while BB is still a predecessor.
-
Roman Lebedev authored
-
Roman Lebedev authored
-
Dmitry Vyukov authored
Add a test case reported in: https://github.com/google/sanitizers/issues/1401 and fix it. The code assumes sigwait will process other signals. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D102057
-