- Jul 15, 2022
-
-
Vitaly Buka authored
-
David Tenty authored
D127650 removed support for non-clang-based XL compilers, but left some of the headers used only by this compiler and included under the __IBMCPP__ macro. This change cleans this up by deleting these headers. Reviewed By: hubert.reinterpretcast, fanbo-meng Differential Revision: https://reviews.llvm.org/D129491
-
Louis Dionne authored
-
Petr Hosek authored
We already link libunwind explicitly so avoid trying to link toolchain's default libunwind which may be missing. This matches what we already do for libcxx. Differential Revision: https://reviews.llvm.org/D129469
-
Ellis Hoag authored
Add two options, `-fprofile-function-groups=N` and `-fprofile-selected-function-group=i` used to partition functions into `N` groups and only instrument the functions in group `i`. Similar options were added to xray in https://reviews.llvm.org/D87953 and the goal is the same; to reduce instrumented size overhead by spreading the overhead across multiple builds. Raw profiles from different groups can be added like normal using the `llvm-profdata merge` command. Reviewed By: ianlevesque Differential Revision: https://reviews.llvm.org/D129594
-
Nick Desaulniers authored
Follow up fix to commit 2240d72f ("[X86] initial -mfunction-return=thunk-extern support") https://reviews.llvm.org/D129572 @nathanchance reported that -mfunction-return=thunk-extern was failing to annotate the asan and tsan contructors. https://lore.kernel.org/llvm/Ys7pLq+tQk5xEa%2FB@dev-arch.thelio-3990X/ I then noticed the same occurring for gcov synthetic functions. Similar to commit 2786e673 ("[IR][sanitizer] Add module flag "frame-pointer" and set it for cc1 -mframe-pointer={non-leaf,all}") define a new module level MetaData, "fn_ret_thunk_extern", then when set adds the fn_ret_thunk_extern IR Fn Attr to synthetically created Functions. Fixes https://github.com/llvm/llvm-project/issues/56514 Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D129709
-
Sanjay Patel authored
As discussed in D128123, this test is based on an example that ends up with codegen regressions if sub is converted to xor.
-
Sanjay Patel authored
-
Vitaly Buka authored
Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D129789
-
Amara Emerson authored
Widening a G_FCONSTANT by extending and then generating G_FPTRUNC doesn't produce the same result all the time. Instead, we can just transform it to a G_CONSTANT of the same bit pattern and truncate using a plain G_TRUNC instead. Fixes https://github.com/llvm/llvm-project/issues/56454 Differential Revision: https://reviews.llvm.org/D129743
-
Nikolas Klauser authored
Reviewed By: ldionne, #libc Spies: arichardson, sstefan1, libcxx-commits Differential Revision: https://reviews.llvm.org/D129039
-
Mitch Phillips authored
This reverts commit b7e77ff2. Reason: Broke sanitizer builds bots + libcxx. 'static assertion expression is not an integral constant expression'. More details available in the Phabricator review: https://reviews.llvm.org/D129048
-
Philip Reames authored
Follow up to 3bc09c7d - remove a fixme I forgot to remove, and add test cases showing remaining work. Note that scaled vscales show up in vectorized code from a couple of sources: * Element types smaller than vector block size (i.e. everything under i64) * Unrolling * LMUL > 1 The largest scaling we can currently have is 256 (e8 in every possible vector register). More practically useful scales are in the 2-16 range.
-
Stella Stamenova authored
Revert "[lldb] Add support for using integral const static data members in the expression evaluator" This reverts commit 48678721. This broke the windows lldb bot: https://lab.llvm.org/buildbot/#/builders/83/builds/21186
-
Nikolas Klauser authored
Nobody knows if there are users of libc++ with MSVC. Let's try to find that out and encourage them to upstream their changes to make that configuration work. Reviewed By: ldionne, #libc Spies: libcxx-commits Differential Revision: https://reviews.llvm.org/D129055
-
LLVM GN Syncbot authored
-
Vitaly Buka authored
-
Michał Górny authored
Remove m_inferior_prev_state that's not suitable for multiprocess debugging and that does not seem to be really used at all. The only use of the variable right now is to "prevent" sending the stop reason after attach/launch. However, this code is never actually run since none of the process plugins actually use eStateLaunching or eStateAttaching. Through adding an assert, I've confirmed that it's never hit in any of the LLDB tests or while attaching/launching debugged process via lldb-server and via lldb CLI. Differential Revision: https://reviews.llvm.org/D128878 Sponsored by: The FreeBSD Foundation
-
Hans Wennborg authored
As pointed out on https://reviews.llvm.org/D129571 this seems to be the preferred variable to set.
-
Craig Topper authored
Initial optimization is to convert (i64 (zext (i32 X))) to (i64 (sext (i32 X))) if the dominating condition for the basic block guaranteed the sign bit of X is zero. This frequently occurs in loop preheaders where a signed induction variable that can never be negative has been widened. There will be a dominating check that the 32-bit trip count isn't negative or zero. The check here is not restricted to that specific case though. A i32->i64 sext is cheaper than zext on RV64 without the Zba extension. Later optimizations can often remove the sext from the preheader basic block because the dominating block also needs a sext to evaluate the greater than 0 check. Reviewed By: asb Differential Revision: https://reviews.llvm.org/D129732
-
Tue Ly authored
Add round to nearest integer instructions to fputil. This will be used in sinf implementation https://reviews.llvm.org/D123154 Reviewed By: michaelrj Differential Revision: https://reviews.llvm.org/D129776
-
Fangrui Song authored
clang 14 removed -gz=zlib-gnu support and ld.lld/llvm-objcopy removed zlib-gnu support recently. Remove lldb support by migrating away from llvm::object::Decompressor::isCompressedELFSection. The API has another user llvm-dwp, so it is not removed in this patch. Reviewed By: labath Differential Revision: https://reviews.llvm.org/D129724
-
Guozhi Wei authored
If an MI will not generate a target instruction, we should not compute its latency. Then we can compute more precise instruction sequence cost, and get better result. Differential Revision: https://reviews.llvm.org/D129615
-
Thomas Raoux authored
This prevents blocking propagation when converting between scalar and vector<1> Differential Revision: https://reviews.llvm.org/D129782
-
Craig Topper authored
I happened to notice a two places where the enum was being pass directly to the bool IsSigned argument of createExtendInst. This was functionally ok since SignExtended in the enum has value of 1, but the code shouldn't rely on that. Using an enum class prevents the enum from being convertible to bool, but does make writing the enum values more verbose. Since we now have to write ExtendKind:: in front of them, I've shortened the names of ZeroExtended and SignExtended. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D129733
-
Nick Desaulniers authored
While testing backports of https://reviews.llvm.org/D129572#inline-1245936 commit 2240d72f ("[X86] initial -mfunction-return=thunk-extern support") I noticed that one of my unit tests mistyped a function attribute. The unit test was intended to test fn attr merging behavior, but with the typo it was not. Small fixup. Reviewed By: aaron.ballman, erichkeane Differential Revision: https://reviews.llvm.org/D129691
-
Erich Keane authored
So callers don't have to. Also, fix a clang-format/use of auto fix in CheckFloatComparisons.
-
Florian Hahn authored
After 675080a4, we always create SCEVs for all operands of a SelectInst. This can cause notable compile-time regressions compared to the recursive algorithm, which only evaluates the operands if the select is in a form we can create a usable expression. This approach adds additional logic to getOperandsToCreate to only queue operands for selects if we will later be able to construct a usable SCEV. Unfortunately this introduces a bit of coupling between actual SCEV construction for selects and getOperandsToCreate, but I am not sure if there are better alternatives to address the regression mentioned for 675080a4. This doesn't have any notable compile-time impact on CTMark. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D129731
-
Fraser Cormack authored
We previously enabled subregister liveness by default when compiling with RVV. This has been shown to cause miscompilations where RVV register operand constraints are not met. A test was added for this in D129639 which explains the issue in more detail. Until this issue is fixed in some way, we should not be enabling subregister liveness unless the user asks for it. Reviewed By: craig.topper, rogfer01, kito-cheng Differential Revision: https://reviews.llvm.org/D129646
-
Shilei Tian authored
The OMPD patches introduces GDB plugin. When it is built, it will create a coulple of temp files in `.eggs`. This patch add it into `.gitignore` in case it messed up the git tracking. Reviewed By: jhuber6 Differential Revision: https://reviews.llvm.org/D129711
-
- Jul 14, 2022
-
-
Philip Reames authored
Motivation here is to unblock LSRs ability to use ICmpZero uses - the major effect of which is to enable count down IVs. The test changes reflect this goal, but the potential impact is much broader since this isn't a change in LSR at all. SCEVExpander needs(*) to prove that expanding the expression is safe anywhere the SCEV expression is valid. In general, we can't expand any node which might fault (or exhibit UB) unless we can either a) prove it won't fault, or b) guard the faulting case. We'd been allowing non-zero constants here; this change extends it to non-zero values. vscale is never zero. This is already implemented in ValueTracking, and this change just adds the same logic in SCEV's range computation (which in turn drives isKnownNonZero). We should common up some logic here, but let's do that in separate changes. (*) As an aside, "needs" is such an interesting word here. First, we don't actually need to guard this at all; we could choose to emit a select for the RHS of ever udiv and remove this code entirely. Secondly, the property being checked here is way too strong. What the client actually needs is to expand the SCEV at some particular point in some particular loop. In the examples, the original urem dominates that loop and yet we completely ignore that information when analyzing legality. I don't plan to actively pursue either direction, just noting it for future reference. Differential Revision: https://reviews.llvm.org/D129710
-
Dmitry Vyukov authored
Callers of TraceSwitchPart expect that TraceAcquire will always succeed after the call. It's possible that TryTraceFunc/TraceMutexLock in TraceSwitchPart that restore the current stack/mutexset filled the trace part exactly up to the TracePart::kAlignment gap and the next TraceAcquire won't succeed. Skip the alignment gap after writing initial stack/mutexset to avoid that. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D129777
-
Brendon Cahoon authored
This reverts commit e13248ab. Need to revert because the transformation cannot occur for basic blocks that contain convergent instructions.
-
Dawid Jurczak authored
This patch is https://reviews.llvm.org/D129468 follow-up and address one of comment coming from that review: https://reviews.llvm.org/D129468#3643295 Differential Revision: https://reviews.llvm.org/D129565
-
Warren Ristow authored
In analyzing issue #56483, it was noticed that running `opt` with `-reassociate` was missing some minor optimizations. For example, there were cases where the running `opt` on IR with floating-point instructions that have the `fast` flags applied, sometimes resulted in less efficient code than the input IR (things like dead instructions left behind, and missed reassociations). These were sometimes noted in the test-files with TODOs, to investigate further. This commit fixes some of these problems, removing some TODOs in the process. FTR, I refer to these as "minor" missed optimizations, because when running a full clang/llvm compilation, these inefficiencies are not happening, as other passes clean that residue up. Regardless, having cleaner IR produced by `opt`, makes assessing the quality of fixes done in `opt` easier.
-
Andy Yankovsky authored
This adds support for using const static integral data members as described by C++11 [class.static.data]p3 to LLDB's expression evaluator. So far LLDB treated these data members are normal static variables. They already work as intended when they are declared in the class definition and then defined in a namespace scope. However, if they are declared and initialised in the class definition but never defined in a namespace scope, all LLDB expressions that use them will fail to link when LLDB can't find the respective symbol for the variable. The reason for this is that the data members which are only declared in the class are not emitted into any object file so LLDB can never resolve them. Expressions that use these variables are expected to directly use their constant value if possible. Clang can do this for us during codegen, but it requires that we add the constant value to the VarDecl we generate for these dat...
-
Nikolas Klauser authored
Reviewed By: ldionne, #libc Spies: hubert.reinterpretcast, arichardson, mstorsjo, libcxx-commits Differential Revision: https://reviews.llvm.org/D127672
-
Nikita Popov authored
-
Brendon Cahoon authored
This reverts commit f1b05a0a. Need to revert to due to issues identified with testing. The transformation is incorrect for blocks that contain convergent instructions.
-
Thomas Raoux authored
Right now the pattern was ignoring the optional accumulator. Differential Revision: https://reviews.llvm.org/D129719
-