- Apr 13, 2021
-
-
Eugene Zhulenev authored
Depends On D95311 Previous automatic-ref-counting pass worked with high level async operations (e.g. async.execute), however async values reference counting is a runtime implementation detail. New pass mostly relies on the save liveness analysis to place drop_ref operations, and does better verification of CFG with different liveIn sets in block successors. This is almost NFC change. No new reference counting ideas, just a cleanup of the previous version. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D95390
-
Freddy Ye authored
Reviewed By: skan, craig.topper, MaskRay Differential Revision: https://reviews.llvm.org/D100085
-
Geoffrey Martin-Noble authored
This is similar to the definition of llvm.switch, providing unstructured branch-based control flow. It differs from the LLVM operation in that it accepts any signless integer (not only an i32), takes no branch weights (the same as the Branch and CondBranch ops), and has a slightly different syntax for the default case that includes it in the list of cases with an explicit `default` keyword. Also included are several canonicalizers. See https://llvm.discourse.group/t/rfc-add-std-switch-and-scf-switch/3090 Reviewed By: rriddle, bondhugula Differential Revision: https://reviews.llvm.org/D99925
-
LLVM GN Syncbot authored
-
Jonas Devlieghere authored
-
Gulfem Savrun Yeniceri authored
Lookup tables generate non PIC-friendly code, which requires dynamic relocation as described in: https://bugs.llvm.org/show_bug.cgi?id=45244 This patch adds a new pass that converts lookup tables to relative lookup tables to make them PIC-friendly. Differential Revision: https://reviews.llvm.org/D94355
-
Emilio Cota authored
Since c42c67ad ('Re-apply "[lli] Make -jit-kind=orc the default JIT engine"'), ORC is the default JIT. Unfortunately, ORC seems to ignore the --entry-function flag, which breaks all tests that use the flag, namely the AMX and X86Vector integration tests. This has been reported in PR#49906 (https://bugs.llvm.org/show_bug.cgi?id=49906). Work around this by explicitly selecting MCJIT. Reviewed By: aartbik Differential Revision: https://reviews.llvm.org/D100344
-
Ahmed Bougacha authored
This reverts commit 3842de49. It fails to build, with errors such as: GDBRemoteCommunicationClient.cpp:1005:20: error: no viable overloaded '=' avail_name = compression;
-
Nick Desaulniers authored
Jump threading can replace select then unconditional branch with conditional branch, but when doing so loses debug info. This destructive transform is eventually leading to a failed Verifier run during full LTO builds of the Linux kernel with CFI and KCOV enabled, as reported in PR39531. ModuleSanitizerCoveragePass will insert calls to __sanitizer_cov_trace_pc, and sometimes split critical edges, using whatever debug info may or may not exist for the branch for the added libcall. Since we can inline calls to __sanitizer_cov_trace_pc due to LTO, this can lead to the error observed in PR39531 when the debug info isn't propagated to the libcall, because of prior destructive transforms that failed to retain debug info. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D100137
-
Pirama Arumuga Nainar authored
D100143 added similar annotations but missed this file. Differential Revision: https://reviews.llvm.org/D100354
-
Arthur Eubanks authored
Turning on -fstrict-vtable-pointers in Chrome caused an extra global initializer. Turns out that a llvm.strip.invariant.group intrinsic was causing GlobalOpt to fail to step through some simple code. We can treat *.invariant.group uses as simply their operand. Value::stripPointerCastsForAliasAnalysis() does exactly this. This should be safe because the Evaluator does not skip memory accesses due to invariants or alias analysis. However, we don't want to leak that we've stripped arbitrary pointer casts to users of Evaluator, so we bail out if we evaluate a function to any constant, since we may have looked through *.invariant.group calls and aliasing pointers cannot be arbitrarily substituted. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D98843
-
Nick Desaulniers authored
Instruction::getDebugLoc can return an invalid DebugLoc. For such cases where metadata was accidentally removed from the libcall insertion point, simply insert a DILocation with line 0 scoped to the caller. When we can inline the libcall, such as during LTO, then we won't fail a Verifier check that all calls to functions with debug metadata themselves must have debug metadata. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D100158
-
Nathan James authored
This is the only remaining check that creates `std::move` includes but doesn't add a `<utility>` include. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D97683
-
Michał Górny authored
Refactor the qSupported handler to split the reply into an array, and identify features within the array rather than searching the string for partial matches. While at it, use StringRef.split() to process the compression list instead of reinventing the wheel. Switch the arguments to MaybeEnableCompression() to use an ArrayRef of StringRefs to simplify parameter passing from GetRemoteQSupported(). Differential Revision: https://reviews.llvm.org/D100146
-
Yuanfang Chen authored
Reland "Revert "[InstCombine] when calling conventions are compatible, don't convert the call to undef idiom"" This reverts commit a3fabc79 (relands f4d682d6 with fix for the compile-time regression issue).
-
Sterling Augustine authored
This reverts commit 63bc9e44. This breaks llvm-project/clang-tools-extra/clangd/tool/ClangdMain.cpp:570:11: with error: enumeration value 'None' not handled in switch [-Werror,-Wswitch]
-
Florian Hahn authored
-
Florian Hahn authored
-
Fangrui Song authored
-
Lei Zhang authored
The stride should be calculated with the converted array element type, not the original input type. Reviewed By: mravishankar Differential Revision: https://reviews.llvm.org/D100337
-
Jian Cai authored
Build log: https://lab.llvm.org/buildbot/#/builders/37/builds/3538 Differential Revision: https://reviews.llvm.org/D98916
-
Lei Zhang authored
Runtime arrays are converted from memrefs with unknown dimensions. Reviewed By: mravishankar Differential Revision: https://reviews.llvm.org/D100335
-
Nikita Popov authored
Revert "[InstCombine] when calling conventions are compatible, don't convert the call to undef idiom" This reverts commit f4d682d6. This caused a significant compile-time regression: https://llvm-compile-time-tracker.com/compare.php?from=4b7bad9eaea2233521a94f6b096aaa88dc584e23&to=f4d682d6ce6c5b3a41a0acf297507c82f5c21eef&stat=instructions Possibly this is due to overeager parsing of target triples.
-
Lei Zhang authored
These patterns have been used as a prerequisite step for lowering to SPIR-V. But they don't involve SPIR-V dialect ops; they are pure memref/vector op transformations. Given now we have a dedicated MemRef dialect, moving them to Memref/Transforms/, which is a more suitable place to host them, to allow used by others. This commit just moves code around and renames patterns/passes accordingly. CMakeLists.txt for existing MemRef libraries are also improved along the way. Reviewed By: mravishankar Differential Revision: https://reviews.llvm.org/D100326
-
Julian Lettner authored
Allow test contents to be copied before execution by using `%ld_flags_rpath_so`, `%ld_flags_rpath_exe`, and `%dynamiclib` substitutions. rdar://76302416 Differential Revision: https://reviews.llvm.org/D100240
-
Sanjay Patel authored
https://alive2.llvm.org/ce/z/6vQvrP This solves: https://llvm.org/PR49866
-
Sanjay Patel authored
-
Daniele Castagna authored
clang Tooling, and more specifically Refactoring/Rename, have support code to extract source locations given a Unified Symbol Resolution set. This support code is used by clang-rename and other tools that might not be in the tree. Currently field designated initializer are not supported. So, renaming S::a to S::b in this code: S s = { .a = 10 }; will not extract the field designated initializer for a (the 'a' after the dot). This patch adds support for field designated initialized to RecursiveSymbolVisitor and RenameLocFinder that is used in createRenameAtomicChanges. Differential Revision: https://reviews.llvm.org/D100310 -
Jonas Devlieghere authored
-
peter klausler authored
F18 is using the type codes for C's "least" int types to encode the various kinds of Fortran's LOGICAL intrinsic type; update the IsLogical() predicate accordingly. (This member function isn't yet used anywhere, so this patch is nearly an NFC.) Differential Revision: https://reviews.llvm.org/D100323
-
jasonliu authored
Summary: When building with gcc on AIX, it seems that gcc does not like the `always_inline` without the `inline` keyword. So adding the inline keywords in for __open in ifstream and ofstream. That will also make it consistent with __open in basic_filebuf (it seems we added `inline` there before for gcc build as well). Differential Revision: https://reviews.llvm.org/D99422
-
Lei Zhang authored
This avoids paying the cost when building in release. Reviewed By: hanchung Differential Revision: https://reviews.llvm.org/D100325
-
Jian Cai authored
Currently the ARM backend only accpets constant expressions as the immediate operand in load and store instructions. This allows the result of symbolic expressions to be used in memory instructions. For example, 0: .space 2048 strb r2, [r0, #(.-0b)] would be assembled into the following instructions. strb r2, [r0, #2048] This only adds support to ldr, ldrb, str, and strb in arm mode to address the build failure of Linux kernel for now, but should facilitate adding support to similar instructions in the future if the need arises. Link: https://github.com/ClangBuiltLinux/linux/issues/1329 Reviewed By: peter.smith, nickdesaulniers Differential Revision: https://reviews.llvm.org/D98916
-
Sanjay Patel authored
Retry of 330619a3 that includes a clang test update. Original commit message: If we run passes before lowering llvm.expect intrinsics to metadata, then those passes have no way to act on the hints provided by llvm.expect. SimplifyCFG is the known offender, and we made it smarter about profile metadata in D98898 <https://reviews.llvm.org/D98898>. In the motivating example from https://llvm.org/PR49336 , this means we were ignoring the recommended method for a programmer to tell the compiler that a compare+branch is expensive. This change appears to solve that case - the metadata survives to the backend, the compare order is as expected in IR, and the backend does not do anything to reverse it. We make the same change to the old pass manager to keep things synchronized. Differential Revision: https://reviews.llvm.org/D100213
-
Sean Perry authored
Most text processing commands (eg. grep, awk) have a maximum line length limit on z/OS. The current method of using cc -E & grep fails on z/OS because of this limit. I'm changing the command to create the long line in the response file to use python. This avoids the possibility of any tools blocking the generation of the large response file. This also eliminates the need for the extra file. Reviewed By: abhina.sreeskantharajan Differential Revision: https://reviews.llvm.org/D100197
-
Arthur Eubanks authored
-filter-print-funcs -print-changed was crashing after the filter func was removed by a pass with Assertion failed: After.find("*** IR Dump") == 0 && "Unexpected banner format." We weren't printing the banner because when we have -filter-print-funcs, we print each function separately, letting the print function filter out unwanted functions. Reviewed By: jamieschmeiser Differential Revision: https://reviews.llvm.org/D100237 -
David Tenty authored
the test fails on AIX host, not necessarily just the target.
-
Emily Shi authored
This will allow us to make osx specific changes easier. Because apple silicon macs also run on aarch64, it was easy to confuse it with iOS. rdar://75302812 Reviewed By: yln Differential Revision: https://reviews.llvm.org/D100157
-
eopXD authored
Loop bounds of affine.for didn't perform foldings like affine.load, affine.store. Bound maps shall be more composed, leaving most affine.apply become dead. This resolves the bug listed on https://bugs.llvm.org/show_bug.cgi?id=45203 Differential Revision: https://reviews.llvm.org/D99323
-
Richard Smith authored
-