- Mar 13, 2020
-
-
Richard Sandiford authored
This patch adds C and C++ tests for various uses of SVE types. The tests cover valid uses that are already (correctly) accepted and invalid uses that are already (correctly) rejected. Later patches will expand the tests as they fix other cases.[*] Some of the tests for invalid uses aren't obviously related to scalable vectors. Part of the reason for having them is to make sure that the quality of the error message doesn't regress once/if the types are treated as incomplete types. [*] These later patches all fix invalid uses that are being incorrectly accepted. I don't know of any cases in which valid uses are being incorrectly rejected. In other words, this series is all about diagnosing invalid code rather than enabling something new. Differential Revision: https://reviews.llvm.org/D75571 -
Simon Pilgrim authored
Both these casts are immediately deferenced and the cast will assert for us that they are of the correct type.
-
LLVM GN Syncbot authored
-
Richard Sandiford authored
One of the defining features of the SVE ACLE types is that they are "sizeless"; see the SVE ACLE spec: https://developer.arm.com/docs/100987/0000/arm-c-language-extensions-for-sve or the email message: http://lists.llvm.org/pipermail/cfe-dev/2019-June/062523.html for a fuller definition of what that means. This patch adds two associated type queries: - isSizelessBuiltinType asks specifically about types that are built into clang. It is effectively an enum range check. - isSizelessType instead tests for any type that has the "sizeless" type property. At the moment it only returns true for the built-in types, but it seems better not to hard-code that assumption throughout the codebase. (E.g. we could in principle support some form of user-defined sizeless types in future. Even if that seems unlikely and never actually happens, the possibility at least exists.) Differential Revision: https://reviews.llvm.org/D75570 -
Reid Kleckner authored
After this change, clang spends ~200ms parsing Attrs.inc instead of ~560ms. A large part of the cost was from the StringSwitch instantiations, but this is a good way to avoid similar problems in the future. Reviewed By: aaron.ballman, rjmccall Differential Revision: https://reviews.llvm.org/D76040
-
LLVM GN Syncbot authored
-
- Mar 12, 2020
-
-
Jonathan Roelofs authored
Detects and fixes suspicious code like: `#include "foo.cpp"`. Inspired by: https://twitter.com/lefticus/status/1228458240364687360?s=20 https://reviews.llvm.org/D74669
-
Zarko Todorovski authored
This patch is the callee side counterpart for https://reviews.llvm.org/D73209. It removes the fatal error when we pass more formal arguments than available registers. Differential Revision: https://reviews.llvm.org/D74225
-
Simon Pilgrim authored
All paths dereference the ClassDecl pointer, so use a cast<> instead of dyn_cast<>, assert that its not null and remove the remaining null tests.
-
Hideto Ueno authored
-
Marcello Maggioni authored
-
Raphael Isemann authored
Since D75537 the test suite clears all settings before a test. This caused two tests to fail: lldb-api :: functionalities/inline-stepping/TestInlineStepping.py lldb-api :: lang/cpp/std-function-step-into-callable/TestStdFunctionStepIntoCallable.py The reason for that is that OptionValueRegex::Clear was setting the regex to empty instead of the default value that was passed initially. This caused that the target.process.thread.step-avoid-regexp setting which is used in the tests was set to "" instead of "^std::". This patch is just a quick fix that sets the regex back to the original value to make the tests pass. In total these 3 setting values have changed with D75537 and also need to be fixed (even though they don't seem to break any tests). target.process.thread.step-avoid-regexp (regex) -> from '^std::' to empty string platform.module-cache-directory (file) -> from "~/.lldb/module_cache" to empty string ... -
Fangrui Song authored
-M output can be useful when diagnosing an "error: output file too large" problem (emitted in openFile()). I just ran into such a situation where I had to debug an erronerous Linux kernel linker script. It tried to create a file larger than INT64_MAX bytes. This patch could have helped https://bugs.llvm.org/show_bug.cgi?id=44715 as well. Reviewed By: grimar Differential Revision: https://reviews.llvm.org/D75966
-
Simon Pilgrim authored
Use castAs as we know the cast should succeed (and castAs will assert if it doesn't) and we're dereferencing it directly in the getThisType/getThisObjectType calls.
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Use castAs as we know the cast should succeed (and castAs will assert if it doesn't) and we're dereferencing it directly in the canAssignObjCInterfaces call.
-
Xiangling Liao authored
Summary: On 32-bit PPC target[AIX and BE], when we convert an `i64` to `f32`, a `setcc` operand expansion is needed. The expansion will set the result type of expanded `setcc` operation based on if the subtarget use CRBits or not. If the subtarget does use the CRBits, like AIX and BE, then it will set the result type to `i1`, leading to an inconsistency with original `setcc` result type[i32]. And the reason why it crashed underneath is because we don't set result type of setcc consistent in those two places. This patch fixes this problem by setting original setcc opnode result type also with `getSetCCResultType` interface. Reviewers: sfertile, cebowleratibm, hubert.reinterpretcast, Xiangling_L Reviewed By: sfertile Subscribers: wuzish, nemanjai, hiraditya, kbarton, jsji, shchenz, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D75702
-
Simon Moll authored
Summary: De-duplicate isel instruction classes by using RRIm for RRINDm. The latter becomes obsolete. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D76063
-
Sean Fertile authored
Program counter on AIX is the dollar-sign. Differential Revision:https://reviews.llvm.org/D75627
-
Raphael Isemann authored
offset_t is unsigned, so if the RHS is signed we get a warning from clang: warning: comparison of integers of different signs: 'const unsigned long long' and 'const int' -
Nicolas Vasilache authored
Summary: The C runner utils API was still not vanilla enough for certain use cases on embedded ARM SDKs, this enables such cases. Adding people more widely for historical Windows related build issues. Differential Revision: https://reviews.llvm.org/D76031
-
Andrzej Warzynski authored
Summary: This patch adds the following intrinsics for non-temporal gather loads and scatter stores: * aarch64_sve_ldnt1_gather_index * aarch64_sve_stnt1_scatter_index These intrinsics implement the "scalar + vector of indices" addressing mode. As opposed to regular and first-faulting gathers/scatters, there's no instruction that would take indices and then scale them. Instead, the indices for non-temporal gathers/scatters are scaled before the intrinsics are lowered to `ldnt1` instructions. The new ISD nodes, GLDNT1_INDEX and SSTNT1_INDEX, are only used as placeholders so that we can easily identify the cases implemented in this patch in performGatherLoadCombine and performScatterStoreCombined. Once encountered, they are replaced with: * GLDNT1_INDEX -> SPLAT_VECTOR + SHL + GLDNT1 * SSTNT1_INDEX -> SPLAT_VECTOR + SHL + SSTNT1 The patterns for lowering ISD::SHL for scalable vectors (required by this patch) were missing, so these are added too. Reviewed By: sdesmalen Differential Revision: https://reviews.llvm.org/D75601
-
Sanjay Patel authored
This is part of the IR sibling for: D75576 Related transform committed with: rG8ec71585
-
Sergej Jaskiewicz authored
[libcxxabi] Set LIBCXXABI_LINK_TESTS_WITH_SHARED_LIBCXX to ON if LIBCXX_ENABLE_SHARED is not defined Differential Revision: https://reviews.llvm.org/D71894
-
Sven van Haastregt authored
-
Tatyana Krasnukha authored
Global properties are shared between debugger instances and if a test doesn't clear changes in settings it made, this leads to side effects in other tests. Differential Revision: https://reviews.llvm.org/D75537
-
Sanjay Patel authored
This is part of the IR sibling for: D75576 (I'm splitting part of the transform as a separate commit to reduce risk. I don't know of any bugs that might be exposed by this improved folding, but it's hard to see those in advance...)
-
Simon Pilgrim authored
Lets us remove another SLM proc family flag usage. This is NFC, but we should probably check whether atom/glm/knl? should be using this flag as well...
-
Sam McCall authored
-
Simon Pilgrim authored
-
Sanjay Patel authored
-
Nico Weber authored
(In addition to the deprecation bit, this is useful on Windows where people might have grep but not fgrep.)
-
Sanjay Patel authored
Adapted from codegen tests seen in D75576.
-
Luke Drummond authored
If a producer emits a nonzero segment size, `lldb` will silently read incorrect values and crash, or do something worse later as the tuple size is expected to be 2, rather than 3. Neither LLVM, nor GCC produce segmented aranges, but this dangerous case should still be checked and handled. Reviewed by: clayborg, labath Differential Revision: https://reviews.llvm.org/D75925 Subscribers: lldb-commits Tags: #lldb
-
Florian Hahn authored
This patch switches SCCP to use ValueLatticeElement for lattice values, instead of the local LatticeVal, as first step to enable integer range support. This patch does not make use of constant ranges for additional operations and the only difference for now is that integer constants are represented by single element ranges. To preserve the existing behavior, the following helpers are used * isConstant(LV): returns true when LV is either a constant or a constant range with a single element. This should return true in the same cases where LV.isConstant() returned true previously. * getConstant(LV): returns a constant if LV is either a constant or a constant range with a single element. This should return a constant in the same cases as LV.getConstant() previously. * getConstantInt(LV): same as getConstant, but additionally casted to ConstantInt. Reviewers: davide, efriedma, mssimpso Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D60582
-
LLVM GN Syncbot authored
-
Dylan McKay authored
The initialization order was not correct. These bugs were discovered by valgrind. They appear to work fine in practice but this patch should unblock switching the AVR backend on by default as now a standard AVR llc invocation runs without memory errors. The AVRISelLowering constructor would run before the subtarget boolean fields were initialized to false. Now, the initialization order is correct.
-
Roman Lebedev authored
As discussed in https://reviews.llvm.org/D59214#1916596 and in some other reviews dealing with FPenv, bits in Stmt are scarce, and i got so burnout with D59214 and https://bugs.llvm.org/show_bug.cgi?id=40563 specifically that i never actually followed up with the usages for this bit. So let's unhoard it, at least for now?
-
Simon Pilgrim authored
Now that D75114 has landed, DAGCombiner handles this case so the code is redundant.
-
Simon Tatham authored
Summary: This adds the ACLE intrinsic family for the VFMA and VFMS instructions, which perform fused multiply-add on vectors of floats. I've represented the unpredicated versions in IR using the cross- platform `@llvm.fma` IR intrinsic. We already had isel rules to convert one of those into a vector VFMA in the simplest possible way; but we didn't have rules to detect a negated argument and turn it into VFMS, or rules to detect a splat argument and turn it into one of the two vector/scalar forms of the instruction. Now we have all of those. The predicated form uses a target-specific intrinsic as usual, but I've stuck to just one, for a predicated FMA. The subtraction and splat versions are code-generated by passing an fneg or a splat as one of its operands, the same way as the unpredicated version. In arm_mve_defs.h, I've had to introduce a tiny extra piece of infrastructure: a record `id` for use in codegen dags which implements the identity function. (Just because you can't declare a Tablegen value of type dag which is //only// a `$varname`: you have to wrap it in something. Now I can write `(id $varname)` to get the same effect.) Reviewers: dmgreen, MarkMurrayARM, miyuki, ostannard Reviewed By: dmgreen Subscribers: kristof.beyls, hiraditya, danielkiss, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D75998
-