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 .
- Oct 01, 2021
-
-
Christopher Tetreault authored
While these functions are only used in one location in upstream, it has been reused in multiple downstreams. Restore this file to a globally visibile location (outside of APInt.h) to eliminate donwstream breakage and enable potential future reuse. Additionally, this patch renames types and cleans up clang-tidy issues.
-
ZijunZhao authored
-
Vitaly Buka authored
-
Yonghong Song authored
Latest upstream llvm caused the kernel bpf selftest emitting the following warnings: In file included from progs/profiler3.c:6: progs/profiler.inc.h:489:2: warning: loop not unrolled: the optimizer was unable to perform the requested transformation; the transformation might be disabled or specified as part of an unsupported transformation ordering [-Wpass-failed=transform-warning] for (int i = 0; i < MAX_PATH_DEPTH; i++) { ^ Further bisecting shows this SimplifyCFG patch ([1]) changed the condition on how to fold branch to common dest. This caused some unroll pragma is not honored in selftests/bpf. The patch [1] test getUserCost() as the condition to perform the certain basic block folding transformation. For the above example, before the loop unroll pass, the control flow looks like: cond_block: branch target: body_block, cleanup_block body_block: branch target: cleanup_block, end_block end_block: branch target: cleanup_block, end10_block end10_block: %add.ptr = getelementptr i8, i8* %payload.addr.0, i64 %call2 %inc = add nuw nsw i32 %i.0, 1 branch target: cond_block In the above, %call2 is an unknown scalar. Before patch [1], end10_block will be folded into end_block, forming the code like cond_block: branch target: body_block, cleanup_block body_block: branch target: cleanup_block, end_block end_block: branch target: cleanup_block, cond_block and the compiler is happy to perform unrolling. With patch [1], getUserCost(), which calls getGEPCost(), which calls isLegalAddressingMode() in TargetLoweringBase.cpp, considers IR %add.ptr = getelementptr i8, i8* %payload.addr.0, i64 %call2 is free, so the above basic block folding transformation is not performed and unrolling does not happen. For BPF target, the IR %add.ptr = getelementptr i8, i8* %payload.addr.0, i64 %call2 is not free and we don't have ld/st instruction address with 'r+r' mode. This patch implemented a BPF hook for isLegalAddressingMode(), which is identical to Mips isLegalAddressingMode() implementation where the address pattern like 'r+r', 'r+r+i' or '2*r' are not allowed. With testing kernel bpf selftests, all loop not unrolled warnings are gone and all selftests run successfully. [1] https://reviews.llvm.org/D108837 Differential Revision: https://reviews.llvm.org/D110789
-
Philip Reames authored
-
Leonard Chan authored
As of e9564c36, libcxx/gdb/gdb_pretty_printer_test.sh.cpp fails locally for me because the REQUIRES check for host-has-gdb-with-python uses python, which for me expands to python 2.7.18. This failure does not seem to be caught on any upstream builders, potentially because they don't have gdb, python, or a version of python that makes the test UNSUPPORTED (like python3). This updates the check to use the python specified by the build (which should be the python that runs this code), rather than just python. Differential Revision: https://reviews.llvm.org/D110887
-
Philip Reames authored
Use for-range and all_of to make code easier to read in advance of other changes.
-
Teresa Johnson authored
Previously for mem* intrinsics we only incremented the access count for the first word in the range. However, after thinking it through I think it makes more sense to record an access for every word in the range. This better matches the behavior of inlined memory intrinsics, and also allows better analysis of utilization at a future date. Differential Revision: https://reviews.llvm.org/D110799
-
Rafael Auler authored
In D109412 I forgot to add a dependency on libObject. Fix that. Reviewed By: maksfb Differential Revision: https://reviews.llvm.org/D110886
-
Amara Emerson authored
This allows the "x op 0 -> x" fold to optimize vector constant RHSs. Differential Revision: https://reviews.llvm.org/D110802
-
Jean Perier authored
Helps debugging when working with symbol/expression issue. The dump method is easy to call in the debugger. Co-authored-by:
Eric Schweitz <eschweitz@nvidia.com> Differential Revision: https://reviews.llvm.org/D110856
-
Craig Topper authored
This consists of 3 compressed instructions, c.not, c.neg, and c.zext.w. I believe these have been picked up by the Zce effort using different encodings. I don't think it makes sense to keep them in bitmanip. It will eventually cause a conflict if/when Zce is implemented in llvm. Differential Revision: https://reviews.llvm.org/D110871
-
Jean Perier authored
When the ProcRef is Symbol is a SubprogramDetails, the interface is the SubprogramDetails. Do not return nullptr. Differential Revision: https://reviews.llvm.org/D110853
-
Jon Chesterfield authored
Add a FAQ entry about the names of openmp offloading components and how they are searched for. Reviewed By: jhuber6 Differential Revision: https://reviews.llvm.org/D109619
-
Jean Perier authored
Differential Revision: https://reviews.llvm.org/D110850
-
Petr Hosek authored
LLD now supports LTO on Darwin. Differential Revision: https://reviews.llvm.org/D110881
-
Gwen Mittertreiner authored
rG210d72e9d6b4a8e7633921d0bd7186fd3c7a2c8c moved the check from builtin-config-ix to config-ix so that the check would be made even when the builtins are not built. However, now the check is no longer made when the builtins are built standalone which causes the builtins to fail to build. Add the check back to builtins-config-ix so that the check gets performed both when the builtins are not built, and when they are built standalone. Reviewed By: smeenai Differential Revision: https://reviews.llvm.org/D110879
-
Jon Chesterfield authored
Fixes 51982. Adds a missing CreatePointerCast and allocates a global in the correct address space. Test case derived from https://github.com/ROCm-Developer-Tools/aomp/\ blob/aomp-dev/test/smoke/nest_call_par2/nest_call_par2.c by deleting parts while checking the assertion failure still occurred. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D110556
-
Jon Chesterfield authored
Use enum for execution mode. This is partly a port from ROCm and partly a port from D110029. Attempted to make the same choices as ROCm as far as comments etc go to reduce the merge conflicts. There is some cleanup warranted here - in particular I like the cuda patch factoring out the comparisons into named variables - but I'd like to leave that for a follow up patch, keeping this one minimal. Reviewed By: carlo.bertolli Differential Revision: https://reviews.llvm.org/D110845
-
Arnold Schwaighofer authored
In situations where the coroutine function is not split we can just replace the async.resume by null. rdar://82591919 Differential Revision: https://reviews.llvm.org/D110191
-
Nicolas Vasilache authored
This revision exposes some minimal funcitonality to allow comprehensive bufferization to interop with external projects. Differential Revision: https://reviews.llvm.org/D110875
-
Jinsong Ji authored
Update the binder option.
-
Florian Hahn authored
This reverts commit 764d9aa9. This patch exposed a few additional cases where SCEV expressions are not properly invalidated. See PR52024, PR52023.
-
Andrew Browne authored
Writing zeros to shadow (including checking for existing zero) is now ~2x faster on one example. Reviewed By: morehouse Differential Revision: https://reviews.llvm.org/D110733
-
LLVM GN Syncbot authored
-
Maksim Panchenko authored
Add MCDwarfLineStr class to the public API. Note that MCDwarfLineTableHeader::Emit(), takes MCDwarfLineStr as an Optional<> parameter making it impossible to use the API if the class is not publicly defined. Reviewed By: alexander-shaposhnikov Differential Revision: https://reviews.llvm.org/D109412
-
Albion Fung authored
This patch removes the uneccessary mf/mtvsr generated in conjunction with xscvdpsxws/xscvdpuxws. Differential revision: https://reviews.llvm.org/D109902
-
Amara Emerson authored
Adds a new utility function: isConstantOrConstantSplatVector(). Differential Revision: https://reviews.llvm.org/D110786
-
Peter Klausler authored
Fold the transformational intrinsic function FINDLOC() for all combinations of optional arguments and data types. Differential Revision: https://reviews.llvm.org/D110757
-
Sanjay Patel authored
This is NFCI because the pattern with 2 left-shifts should get folded independently by smaller folds. The motivation is to refine this block to avoid infinite loops seen with D110170.
-
Sanjay Patel authored
-
Nico Weber authored
This reverts commit 0cd9d8a4 and adds the changes described in https://reviews.llvm.org/D110668#3034461.
-
Nikita Popov authored
Add methods to appropriately extend KnownBits/ConstantRange there, same as with APInt. Also clean up the known bits handling by actually doing that extension rather than checking ZExtBits. This doesn't matter now, but becomes relevant once truncation is involved.
-
wren romano authored
Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D110773
-
Arthur Eubanks authored
A followup to D110201. For example, we'd set OptimizationRemarkMissed's Regex to '.*' when encountering -Rpass. Normally this doesn't actually affect remarks we emit because in clang::ProcessWarningOptions() we'll separately look at all -R arguments and turn on/off corresponding diagnostic groups. However, this is reproducible with -round-trip-args. Reviewed By: JamesNagurne Differential Revision: https://reviews.llvm.org/D110673
-
peter klausler authored
The algorithm used to fold SQRT has some holes that led to test failures; debug and add more tests. Differential Revision: https://reviews.llvm.org/D110744
-
Nico Weber authored
When clang crashes, it writes a standalone source file and shell script to reproduce the crash. The Driver used to set `Mode = CPPMode` in generateCompilationDiagnostics() to force preprocessing mode. This has the side effect of making IsCLMode() return false, which in turn meant Clang::AddClangCLArgs() didn't get called when creating the standalone source file, which meant the stand-alone file was preprocessed with the gcc driver's defaults In particular, exceptions default to on with the gcc driver, but to off with the cl driver. The .sh script did use the original command line, so in the reproducer for a clang-cl crash, the standalone source file could contain exception-using code after preprocessing that the compiler invocation in the shell script would then complain about. This patch removes the `Mode = CPPMode;` line and instead additionally checks for `CCGenDiagnostics` in most places that check `CCCIsCPP(). This also matches the strategy Clang::ConstructJob() uses to add -frewrite-includes for creating the standalone source file for a crash report. Fixes PR52007. Differential Revision: https://reviews.llvm.org/D110783
-
Zequan Wu authored
[clang] do not emit note for bad conversion when destination type qualifiers are not compatibly include source type qualifiers llvm.org/PR52014 Differential Revision: https://reviews.llvm.org/D110780
-
Nico Weber authored
Call Driver::getFinalPhase() instead of duplicating it. https://reviews.llvm.org/D65993 added the duplication, then 02e35832 maded it more obviously a copy of getFinalPhase(). The only difference is that getCompilationPhases() used to use LastPhase / IfsMerge where getFinalPhase() used Link. Adapt getFinalPhase() to return IfsMerge when needed. No intentional behavior change. Differential Revision: https://reviews.llvm.org/D110770
-
Louis Dionne authored
Previously, the definitions of __cxa_terminate_handler and __cxa_unexpected_handler (and their set_xxx_handler functions) were grouped together, but the definition of __cxa_new_handler wasn't. This commit simply moves those to the same file to treat all handlers consistently.
-