This project is mirrored from https://github.com/llvm/llvm-project.git.
Pull mirroring failed .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer or owner.
Last successful update .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer or owner.
Last successful update .
- May 20, 2021
-
-
Ahmed Bougacha authored
To track security issues, we're starting with the chromium bug tracker (using the llvm project there). We considered using Github Security Advisories. However, they are currently intended as a way for project owners to publicize their security advisories, and aren't well-suited to reporting issues. This also moves the issue-reporting paragraph to the beginning of the document, in part to make it more discoverable, in part to allow the anchor-linking to actually display the paragraph at the top of the page. Note that this doesn't update the concrete list of security-sensitive areas, which is still an open item. When we do, we may want to move the list of security-sensitive areas next to the issue-reporting paragraph as well, as it seems like relevant information needed in the reporting process. Finally, when describing the discission medium, this splits the topics discussed into two: the concrete security issues, discussed in the issue tracker, and the logistics of the group, in our mailing list, as patches on public lists, and in the monthly sync-up call. While there, add a SECURITY.md page linking to the relevant paragraph. Differential Revision: https://reviews.llvm.org/D100873
-
Jon Roelofs authored
Differential revision: https://reviews.llvm.org/D102452
-
Ryan Prichard authored
The ROR instruction can only handle immediates between 1 and 31. The would-be encoding for ROR #0 is actually the RRX instruction. Reviewed By: nickdesaulniers Differential Revision: https://reviews.llvm.org/D102455
-
Petr Hosek authored
When using distributions, targets that aren't included in any distribution don't need to be as optimized as targets that are included since those targets are typically only used for tests. We might consider avoiding LTO for these targets altogether, see https://lists.llvm.org/pipermail/llvm-dev/2021-April/149843.html Differential Revision: https://reviews.llvm.org/D102732
-
hasheddan authored
Updates a minor typo in vector dialect documentation. Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D101203
-
Martin Storsjö authored
This reverts commit 2919222d. That commit broke backwards compatibility. Additionally, the replacement, -Wa,-mimplicit-it, isn't yet supported by any stable release of Clang. See D102812 for a fix for the error cases when callers specify both -mimplicit-it and -Wa,-mimplicit-it.
-
Vitaly Buka authored
-
Aart Bik authored
Skip the sparsification pass for Linalg ops without annotated tensors (or cases that are not properly handled yet). Reviewed By: bixia Differential Revision: https://reviews.llvm.org/D102787
-
River Riddle authored
We allow stealing up to 3 bits of pointers to BaseStorage, so we need to make sure that we align by at least 8.
-
Marius Brehler authored
Reviewed By: sjarus Differential Revision: https://reviews.llvm.org/D102802
-
Sean Silva authored
Also, fix a small typo where the "unsigned" splat variants were not being created with an unsigned type. Differential Revision: https://reviews.llvm.org/D102797
-
wlei authored
This change tries to fix a place missing `moveAndDanglePseudoProbes `. In FoldValueComparisonIntoPredecessors, it folds the BB into predecessors and then marked the BB unreachable. However, the original logic from the BB is still alive, deleting the probe will mislead the SampleLoader mark it as zero count sample. Reviewed By: hoy, wenlei Differential Revision: https://reviews.llvm.org/D102721
-
Richard Smith authored
corresponding constructor for access checking purposes.
-
Lang Hames authored
These will be used for error propagation and handling in the ORC runtime. The implementations of these types are cut-down versions of the error support in llvm/Support/Error.h. Most advice on llvm::Error and llvm::Expected (e.g. from the LLVM Programmer's manual) applies equally to __orc_rt::Error and __orc_rt::Expected. The primary difference is the mechanism for testing and handling error types: The ORC runtime uses a new 'error_cast' operation to replace the handleErrors family of functions. See error_cast comments in error.h.
-
Lang Hames authored
-
Raphael Isemann authored
This reverts commit 4b074b49. Some of the new tests are failing on Debian.
-
Marius Brehler authored
Reviewed By: sjarus, stellaraccident Differential Revision: https://reviews.llvm.org/D102800
-
River Riddle authored
Reland Note: This was accidentally reverted in 80d981ed, but is an important improvement even outside of the driving motivator in D102567. We currently use SourceMgr::getLineAndColumn to get the line and column for an SMLoc, but this includes a call to StringRef::find_last_of that ends up dominating compile time. In D102567, we start creating locations from the input file for block arguments which resulted in an extreme performance regression for modules with very large amounts of block arguments. This revision switches to just using a pointer offset from the beginning of the line to calculate the column(all MLIR files are simple ascii), resulting in a compile time reduction from 4700 seconds (1 hour and 18 minutes) to 8 seconds.
-
Arthur Eubanks authored
FullTy is only necessary when we need to figure out what type an instruction works with given a pointer's pointee type. However, we just end up using the value operand's type, so FullTy isn't necessary. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D102788
-
Arthur Eubanks authored
Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D102745
-
Reid Kleckner authored
These symbols are long, and they tend to cause the PDB file size to overflow. They are generally not necessary when debugging problems in user code. This change reduces the size of chrome.dll.pdb with coverage from 6,937,108,480 bytes to 4,690,210,816 bytes. Differential Revision: https://reviews.llvm.org/D102719
-
Arthur Eubanks authored
No verifier changes needed, the verifier currently doesn't check that the pointer operand's pointee type matches the GEP type. There is a similar check in GetElementPtrInst::Create() though. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D102744
-
Raphael Isemann authored
The added DumpDataExtractorTest uncovered that this is lshifting a negative integer which upsets ubsan and breaks the sanitizer bot. This patch just changes the variable we shift to be unsigned and adds a bunch of tests to make sure this function does what it promises.
-
Alex Lorenz authored
when implementing an optional protocol requirement When an Objective-C method implements an optional protocol requirement, allow the method to use a newer introduced or older obsoleted availability version than what's specified on the method in the protocol itself. This allows SDK adopters to adopt an optional method from a protocol later than when the method is introduced in the protocol. The users that call an optional method on an object that conforms to this protocol are supposed to check whether the object implements the method or not, so a lack of appropriate `if (@available)` check for a new OS version is not a cause of concern as there's already another runtime check that's required. Differential Revision: https://reviews.llvm.org/D102459
-
Joseph Huber authored
Summary: Currently, only `OptimizationRemarks` can be emitted using a Function. Add constructors to allow this for `OptimizationRemarksAnalysis` and `OptimizationRemarkMissed` as well. Reviewed By: jdoerfert thegameg Differential Revision: https://reviews.llvm.org/D102784
-
Sanjay Patel authored
Part of prep work for D90901
-
Sanjay Patel authored
This is another FMF gap exposed by D90901, but I don't see a way to show the difference in a regression test as with: f66ba4cf 60256635 We will see an asm difference if we add a test as part of D90901.
-
Nico Weber authored
-
Christopher Di Bella authored
* adds `sized_range` and conformance tests * moves `disable_sized_range` into namespace `std::ranges` * removes explicit type parameter Implements part of P0896 'The One Ranges Proposal'. Differential Revision: https://reviews.llvm.org/D102434
-
Andrea Di Biagio authored
[MCA] Unbreak the buildbots by passing flag -mcpu=generic to the new test added by commit e5d59db4. This should unbreak buildbot clang-ppc64le-linux-lnt.
-
Christopher Di Bella authored
Differential Revision: https://reviews.llvm.org/D101845
-
Sanjay Patel authored
Similar to 8854b27b - All of the CHECK lines should be identical to before, but without any of the x86-specific calls that were replaced with generic FMA long ago. The file still has value because it shows a miscompile as demonstrated in D90901, but we probably need to add tests with FMF to make that explicit without losing coverage.
-
Stephen Neuendorffer authored
vector.transfer_read and vector.transfer_write operations are converted to llvm intrinsics with specific alignment information, however there doesn't seem to be a way in llvm to take information from llvm.assume intrinsics and change this alignment information. In any event, due the to the structure of the llvm.assume instrinsic, applying this information at the llvm level is more cumbersome. Instead, let's generate the masked vector load and store instrinsic with the right alignment information from MLIR in the first place. Since we're bothering to do this, lets just emit the proper alignment for loads, stores, scatter, and gather ops too. Differential Revision: https://reviews.llvm.org/D100444
-
Pirama Arumuga Nainar authored
For source-based coverage, the frontend sets the counter IDs and the constraints of counter IDs is not defined. For e.g., the Rust frontend until recently had a reserved counter #0 (https://github.com/rust-lang/rust/pull/83774). Rust coverage instrumentation also creates counters on edges in addition to basic blocks. Some functions may have more counters than regions. This breaks an assumption in CoverageMapping.cpp where the number of counters in a function is assumed to be bounded by the number of regions: Counts.assign(Record.MappingRegions.size(), 0); This assumption causes CounterMappingContext::evaluate() to fail since there are not enough counter values created in the above call to `Counts.assign`. Consequently, some uncovered functions are not reported in coverage reports. This change walks a Function's CoverageMappingRecord to find the maximum counter ID, and uses it to initialize the counter array when instrprof records are missing for a function in sparse profiles. Differential Revision: https://reviews.llvm.org/D101780
-
Roman Lebedev authored
-
Roman Lebedev authored
-
Roman Lebedev authored
-
Patrick Holland authored
In order to create the code regions for llvm-mca to analyze, llvm-mca creates an AsmCodeRegionGenerator and calls AsmCodeRegionGenerator::parseCodeRegions(). Within this function, both an MCAsmParser and MCTargetAsmParser are created so that MCAsmParser::Run() can be used to create the code regions for us. These parser classes were created for llvm-mc so they are designed to emit code with an MCStreamer and MCTargetStreamer that are expected to be setup and passed into the MCAsmParser constructor. Because llvm-mca doesn’t want to emit any code, an MCStreamerWrapper class gets created instead and passed into the MCAsmParser constructor. This wrapper inherits from MCStreamer and overrides many of the emit methods to just do nothing. The exception is the emitInstruction() method which calls Regions.addInstruction(Inst). This works well and allows llvm-mca to utilize llvm-mc’s MCAsmParser to build our code regions, however there are a few directives which rely on the MCTargetStreamer. llvm-mc assumes that the MCStreamer that gets passed into the MCAsmParser’s constructor has a valid pointer to an MCTargetStreamer. Because llvm-mca doesn’t setup an MCTargetStreamer, when the parser encounters one of those directives, a segfault will occur. In x86, each one of these 7 directives will cause this segfault if they exist in the input assembly to llvm-mca: .cv_fpo_proc .cv_fpo_setframe .cv_fpo_pushreg .cv_fpo_stackalloc .cv_fpo_stackalign .cv_fpo_endprologue .cv_fpo_endproc I haven’t looked at other targets, but I wouldn’t be surprised if some of the other ones also have certain directives which could result in this same segfault. My proposed solution is to simply initialize an MCTargetStreamer after we initialize the MCStreamerWrapper. The MCTargetStreamer requires an ostream object, but we don’t actually want any of these directives to be emitted anywhere, so I use an ostream created with the nulls() function. Since this needs to happen after the MCStreamerWrapper has been initialized, it needs to happen within the AsmCodeRegionGenerator::parseCodeRegions() function. The MCTargetStreamer also needs an MCInstPrinter which is easiest to initialize within the main() function of llvm-mca. So this MCInstPrinter gets constructed within main() then passed into the parseCodeRegions() function as a parameter. (If you feel like it would be appropriate and possible to create the MCInstPrinter within the parseCodeRegions() function, then feel free to modify my solution. That would stop us from having to pass it into the function and would limit its scope / lifetime.) My solution stops the segfault from happening and still passes all of the current (expected) llvm-mca tests. I also added a new test for x86 that checks for this segfault on an input that includes one of the .cv_fpo directives (this test fails without my solution, but passes with it). As far as I can tell, all of the functions that I modified are only called from within llvm-mca so there shouldn’t be any worries about breaking other tools. Differential Revision: https://reviews.llvm.org/D102709
-
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.
-