- Oct 21, 2020
-
-
David Zarzycki authored
-
Florian Hahn authored
This fixes a test failure because a LLVM pipeline test file in clang/ did not get updated in 88241ffb.
-
Simon Pilgrim authored
-
Simon Pilgrim authored
[DAG] getNode(ISD::EXTRACT_SUBVECTOR) Drop unnecessary N2C null check - we assert that this isn't null and have already used the pointer. NFCI. Fixes cppcheck + null dereference warning.
-
Nicholas Guy authored
Some instructions may be removable through processes such as IfConversion, however DefinesPredicate can not be made aware of when this should be considered. This parameter allows DefinesPredicate to distinguish these removable instructions on a per-call basis, allowing for more fine-grained control from processes like ifConversion. Renames DefinesPredicate to ClobbersPredicate, to better reflect it's purpose Differential Revision: https://reviews.llvm.org/D88494
-
Sven van Haastregt authored
Updates an optimization that relies on boolean contents being either 0 or 1 to properly check for this before triggering. The following: (X & 8) != 0 --> (X & 8) >> 3 Produces unexpected results when a boolean 'true' value is represented by negative one. Patch by Erik Hogeman. Differential Revision: https://reviews.llvm.org/D89390
-
Sven van Haastregt authored
This adds a test covering an issue in bit comparison folding. The issue will be addressed in the subsequent commit. Patch by Erik Hogeman. Differential Revision: https://reviews.llvm.org/D89390
-
Sebastian Neubauer authored
D89217 did not subtract one when accessing SubRegFromChannelTable in one place. Differential Revision: https://reviews.llvm.org/D89804
-
John Brawn authored
LLVM assumes that when it creates a call to a C library function it can use the C calling convention. On ARM the effective calling convention is determined from the target triple, however using -mfloat-abi=hard on ARM means that calls to (and definitions of) C library functions use the arm_aapcs_vfpcc calling convention which can result in a mismatch. Fix this by incorporating -mfloat-abi into the target triple, similar to how -mbig-endian and -march/-mcpu are. This only works for EABI targets and not Android or iOS, but there the float abi is fixed so instead give an error. Fixes PR45524 Differential Revision: https://reviews.llvm.org/D89573
-
Adam Balogh authored
The `Root` member of `ImmutableMapRef` was changed recently from a plain pointer to `IntrusiveRefCntPtr`. However, the `Profile` member function was not adjusted. This results in comilation error whenever the `Profile` method is used on an `ImmutableMapRef`. This patch fixes this issue and also adds unit tests for `ImmutableMapRef`. Differential Revision: https://reviews.llvm.org/D89486
-
Sjoerd Meijer authored
-
Alex Zinenko authored
Historically, custom builder specification in OpBuilder has been accepting the formal parameter list for the builder method as a raw string containing C++. While this worked well to connect the signature and the body, this became problematic when ODS needs to manipulate the parameter list, e.g. to inject OpBuilder or to trim default values when generating the definition. This has also become inconsistent with other method declarations, in particular in interface definitions. Introduce the possibility to define OpBuilder formal parameters using a TableGen dag similarly to other methods. Additionally, introduce a mechanism to declare parameters with default values using an additional class. This mechanism can be reused in other methods. The string-based builder signature declaration is deprecated and will be removed after a transition period. Reviewed By: jpienaar Differential Revision: https://reviews.llvm.org/D89470
-
Florian Hahn authored
The adjustment seems to have very little impact on optimizations. The only binary change with -O3 MultiSource/SPEC2000/SPEC2006 on X86 is in consumer-typeset and the size there actually decreases by -0.1%, with not significant changes in the stats. On its own, it is mildly positive in terms of compile-time, most likely due to LICM & DSE having to process slightly less instructions. It should also be unlikely that DSE/LICM make much new code dead. http://llvm-compile-time-tracker.com/compare.php?from=df63eedef64d715ce1f31843f7de9c11fe1e597f&to=e3bdfcf94a9eeae6e006d010464f0c1b3550577d&stat=instructions With DSE & MemorySSA, it gives some nice compile-time improvements, due to the fact that DSE can re-use the PDT from ADCE, if it does not make any changes: http://llvm-compile-time-tracker.com/compare.php?from=15fdd6cd7c24c745df1bb419e72ff66fd138aa7e&to=481f494515fc89cb7caea8d862e40f2c910dc994&stat=instructions Reviewed By: xbolva00 Differential Revision: https://reviews.llvm.org/D87322
-
Sjoerd Meijer authored
-
Jay Foad authored
-
Jonas Paulsson authored
assembly operands." Earlyclobbers are now excepted from this change (original commit: c78da037). Review: Ulrich Weigand, Nick Desaulniers Differential Revision: https://reviews.llvm.org/D87279
-
Luís Marques authored
The RISC-V implementations of the `__mulsi3`, `__muldi3` builtins were conditionally compiling the actual function definitions depending on whether the M extension was present or not. This caused Compiler-RT testing failures for RISC-V targets with the M extension, as when these sources were included the `librt_has_mul*i3` features were still being defined. These `librt_has_*` definitions are used to conditionally run the respective tests. Since the actual functions were not being compiled-in, the generic test for `__muldi3` would fail. This patch makes these implementations follow the normal Compiler-RT convention of always including the definition, and conditionally running the respective tests by using the lit conditional `REQUIRES: librt_has_*`. Since the `mulsi3_test.c` wasn't actually RISC-V-specific, this patch also moves it out of the `riscv` directory. It now only depends on `librt_has_mulsi3` to run. Differential Revision: https://reviews.llvm.org/D86457
-
Vitaly Buka authored
-
Wang, Pengfei authored
-
Alex Zinenko authored
Docstrings for `__str__` method in many classes was recycling the constant string defined for `Type`, without being types themselves. Use proper docstrings instead. Since they are succint, use string literals instead of top-level constants to avoid further mistakes. Differential Revision: https://reviews.llvm.org/D89780
-
Alex Zinenko authored
The pybind class typedef for concrete attribute classes was erroneously deriving all of them from PyAttribute instead of the provided base class. This has not been triggering any error because only one level of the hierarchy is currently exposed. Differential Revision: https://reviews.llvm.org/D89779
-
Alex Zinenko authored
Values are ubiquitous in the IR, in particular block argument and operation results are Values. Define Python classes for BlockArgument, OpResult and their common ancestor Value. Define pseudo-container classes for lists of block arguments and operation results, and use these containers to access the corresponding values in blocks and operations. Differential Revision: https://reviews.llvm.org/D89778
-
Craig Topper authored
Addresses post-commit feedback from D89837.
-
David Sherwood authored
We were previously relying upon the TypeSize comparison operators to obtain the maximum size of two types, however use of such operators is being deprecated in favour of making the caller aware that it could be dealing with scalable vector types. I have changed the code to assert that the two types have the same scalable property and thus we can simply take the maximum of the known minimum sizes instead. Differential Revision: https://reviews.llvm.org/D88563
-
David Sherwood authored
The EXPECT_XY comparison functions all rely upon using the existing TypeSize comparison operators, which we are deprecating in favour of isKnownXY. I've changed all such cases to compare either the known minimum size or the fixed size. Differential Revision: https://reviews.llvm.org/D89531
-
Martin Storsjö authored
Split the resolution check to a separate test, which is marked as unsupported on windows. On windows (both with MS STL and libstdc++), the file time has 100 ns resolution; the standard doesn't mandate a specific resolution. Differential Revision: https://reviews.llvm.org/D89535
-
Martin Storsjö authored
Revert "[InstCombine] Add or((icmp ult/ule (A + C1), C3), (icmp ult/ule (A + C2), C3)) uniform vector support" Also revert "[InstCombine] foldOrOfICmps - use m_Specific instead of explicit comparisons. NFCI." to make the primarily intended revert work. This reverts commits ce135497 and e372a5f8. This commit caused failed asserts e.g. like this: $ cat repro.cpp bool a(char b) { return b >= '0' && b <= '9' || (b | 32) >= 'a' && (b | 32) <= 'z'; $ clang++ -target x86_64-linux-gnu -c -O2 repro.cpp clang++: ../include/llvm/ADT/APInt.h:1151: bool llvm::APInt::operator==(const llvm::APInt&) const: Assertion `BitWidth == RHS.BitWidth && "Comparison requires equal bit widths"' failed.
-
Esme-Yi authored
-
Max Kazantsev authored
This reverts commit 80852a4f. Test is now broken because underlying required patch was also reverted SUDDENLY.
-
Max Kazantsev authored
When we need to prove implication of expressions of different type width, the default strategy is to widen everything to wider type and prove in this type. This does not interact well with AddRecs with negative steps and unsigned predicates: such AddRec will likely not have a `nuw` flag, and its `zext` to wider type will not be an AddRec. In contraty, `trunc` of an AddRec in some cases can easily be proved to be an `AddRec` too. This patch introduces an alternative way to handling implications of different type widths. If we can prove that wider type values actually fit in the narrow type, we truncate them and prove the implication in narrow type. Differential Revision: https://reviews.llvm.org/D89548 Reviewed By: fhahn
-
Craig Topper authored
[X86] Error on using h-registers with REX prefix in the assembler instead of leaving it to a fatal error in the encoder. Using a fatal error is bad for user experience. Reviewed By: pengfei Differential Revision: https://reviews.llvm.org/D89837
-
Fangrui Song authored
Revert D89381 "[SCEV] Recommit "Use nw flag and symbolic iteration count to sharpen ranges of AddRecs", attempt 2" This reverts commit a10a64e7. It broke polly/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_3.ll The difference suggests that this may be a serious issue.
-
Mircea Trofin authored
Differential Revision: https://reviews.llvm.org/D89815
-
Geoffrey Martin-Noble authored
This was introduced in https://reviews.llvm.org/D89774, but I don't think it should be necessary. Reviewed By: TaWeiTu, aeubanks Differential Revision: https://reviews.llvm.org/D89843
-
Carl Ritson authored
-
Fangrui Song authored
-
TaWeiTu authored
-
Fangrui Song authored
-
Cyndy Ishida authored
It appears for Swift there was confusing errors when trying to parse APINotes, when libAPINotes and libInterfaceStub are linked, they both export symbol `__ZN4llvm4yaml7yamlizeINS_12VersionTupleEEENSt3__19enable_ifIXsr16has_ScalarTraitsIT_EE5valueEvE4typeERNS0_2IOERS5_bRNS0_12EmptyContextE`, and discovered same symbol defined within llvm-ifs. This consolidates the boilerplate into YAMLTraits and defers the specific validation in reading the whole input. fixes: rdar://problem/70450563 Reviewed By: phosek, dblaikie Differential Revision: https://reviews.llvm.org/D89764
-