- May 13, 2020
-
-
Raphael Isemann authored
Also removed the unnecessary element-by-element copy of the std::vector hand_imported_modules to modules_for_macros.
-
Manuel Klimek authored
This enables us to intercept changes to the token type via setType(), which is a precondition for being able to use multi-pass formatting for macro arguments. Differential Revision: https://reviews.llvm.org/D67405
-
Ronald Wampler authored
Summary: This allows for suppressing warnings about the conversion function never being called if it overrides a virtual function in a base class. Differential Revision: https://reviews.llvm.org/D78444
-
Russell Gallop authored
Was failing here: http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/32320
-
David Green authored
Under MVE a vdup will always take a gpr register, not a floating point value. During DAG combine we convert the types to a bitcast to an integer in an attempt to fold the bitcast into other instructions. This is OK, but only works inside the same basic block. To do the same trick across a basic block boundary we need to convert the type in codegenprepare, before the splat is sunk into the loop. This adds a convertSplatType function to codegenprepare to do that, putting bitcasts around the splat to force the type to an integer. There is then some adjustment to the code in shouldSinkOperands to handle the extra bitcasts. Differential Revision: https://reviews.llvm.org/D78728
-
Pierre Oechsel authored
Differential Revision: https://reviews.llvm.org/D79858
-
Nicolas Vasilache authored
The existing implementation of SubViewOp::getRanges relies on all offsets/sizes/strides to be dynamic values and does not work in combination with canonicalization. This revision adds a SubViewOp::getOrCreateRanges to create the missing constants in the canonicalized case. This allows reactivating the fused pass with staged pattern applications. However another issue surfaces that the SubViewOp verifier is now too strict to allow folding. The existing folding pattern is turned into a canonicalization pattern which rewrites memref_cast + subview into subview + memref_cast. The transform-patterns-matmul-to-vector can then be reactivated. Differential Revision: https://reviews.llvm.org/D79759
-
Carl Ritson authored
Summary: When removing barrier edges on exports then dependencies need to be propagated. Reviewers: foad Reviewed By: foad Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, kerbowa, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D79855
-
David Green authored
Similar to fmul/fadd, we can sink a splat into a loop containing a fma in order to use more register instruction variants. For that there are also adjustments to the sinking code to handle more than 2 arguments. Differential Revision: https://reviews.llvm.org/D78386
-
Raphael Isemann authored
-
Michael Schellenberger Costa authored
This resolves the NB comment about the construction of a fixed-size span from a dynamic range. Differential Revision: https://reviews.llvm.org/D74577
-
Pierre-vh authored
This patch adds a new TTI hook to allow targets to tell LSR that a chain including some instruction is already profitable and should not be optimized. This patch also adds an implementation of this TTI hook for ARM so LSR doesn't optimize chains that include the VCTP intrinsic. Differential Revision: https://reviews.llvm.org/D79418
-
Ehsan Toosi authored
Due to the extension of Liveness, Buffer Assignment can now work on nested regions. This PR provides a test case to show that existing functionally of BA works properly. Differential Revision: https://reviews.llvm.org/D79332
-
Simon Wallis authored
Summary: In the assembler or inline assembler, attempting to use an invalid fixup type gives a crash with a segmentation fault. __attribute__((naked)) void foo(void) { __asm__("mov r9, :lower16:bar(prel31)"); } This should give a proper error message when building for ARM or Thumb. This brings it in line with AARCH64. This fixes all 8 instances of llvm_unreachable("Unsupported Modifier"); in ARM/MCTargetDesc/ARMELFObjectWriter.cpp. A test is provided for each instance. Reviewers: llvm-commits, MarkMurrayARM Reviewed By: MarkMurrayARM Subscribers: kristof.beyls, hiraditya, danielkiss Tags: #llvm Differential Revision: https://reviews.llvm.org/D79782 Change-Id: I6971ba37f129cc453568fe71514ccb2ac9d16831
-
Sjoerd Meijer authored
This was reverted because of a miscompilation. At closer inspection, the problem was actually visible in a changed llvm regression test too. This one-line follow up fix/recommit will splat the IV, which is what we are trying to avoid if unnecessary in general, if tail-folding is requested even if all users are scalar instructions after vectorisation. Because with tail-folding, the splat IV will be used by the predicate of the masked loads/stores instructions. The previous version omitted this, which caused the miscompilation. The original commit message was: If tail-folding of the scalar remainder loop is applied, the primary induction variable is splat to a vector and used by the masked load/store vector instructions, thus the IV does not remain scalar. Because we now mark that the IV does not remain scalar for these cases, we don't emit the vector IV if it is not used. Thus, the vectoriser produces less dead code. Thanks to Ayal Zaks for the direction how to fix this.
-
Ehud Katz authored
This is a reimplementation of the `orderNodes` function, as the old implementation didn't take into account all cases. Fix PR41509 Differential Revision: https://reviews.llvm.org/D79037
-
Kamil Rytarowski authored
Summary: Synchronize the function definition with the LLVM documentation. https://llvm.org/docs/Atomics.html#libcalls-atomic GCC also returns bool for the same atomic builtin. Reviewers: theraven Reviewed By: theraven Subscribers: theraven, dberris, jfb, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D79845
-
Marcel Koester authored
The current standard Alloca node is not annotated with the MemEffect<Alloc> trait. This CL updates the Alloc and Alloca memory-effect annotations using the latest Resource objects. Alloca nodes will use a newly defined AutomaticAllocationScopeResource to distinguish between Alloc and Alloca memory effects. Differential Revision: https://reviews.llvm.org/D79620
-
Pavel Labath authored
The near-identical implementations of this function for posix-y platforms were merged in r293910. PlatformWindows was left out of this merge because at the time we did not have a suitable base class to sink the code into. That is no longer true, so this commit finishes the job by moving the code into RemoteAwarePlatform::ResolveExecutable.
-
Dmitry Preobrazhensky authored
See bug 45830: https://bugs.llvm.org/show_bug.cgi?id=45830 Reviewers: arsenm, rampitec Differential Revision: https://reviews.llvm.org/D79585
-
Marek Kurdej authored
Revert "[libc++] [LWG3321] Mark "year_month_day_last::day() specification does not cover !ok() values" issue as "Nothing to do", but add assertion." This reverts commit e25a2601. It was failing due to _LIBCPP_ASSERT throwing in a method marked noexcept.
-
Artem Dergachev authored
-
Mathias LANG authored
Summary: The D programming language has 'char', 'wchar', and 'dchar' as base types, which are defined as UTF-8, UTF-16, and UTF-32, respectively. It also has type constructors (e.g. 'const' and 'immutable'), that leads to D compilers emitting DW_TAG_base_type with DW_ATE_UTF and name 'char', 'immutable(wchar)', 'const(char)', etc... Before this patch, DW_ATE_UTF would only recognize types that followed the C/C++ naming, and emit an error message for the rest, e.g.: ``` error: need to add support for DW_TAG_base_type 'immutable(char)' encoded with DW_ATE = 0x10, bit_size = 8 ``` The code was changed to check the byte size first, then fall back to the old name-based check. Reviewers: clayborg, labath Reviewed By: labath Subscribers: labath, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D79559
-
David Zarzycki authored
This test tried to verify that "wait()" returned quickly but "quick" is impossible to define given a busy and/or slow system. Instead, I've refactored the test to verify that `wait()` actually waits which the old test did not verify.
-
Martin Storsjö authored
Windows doesn't properly support pass plugins (as a shared library can't have undefined references, which pass plugins assume, being loaded into a host process that contains provides them), thus disable building it and the corresponding test. This matches what was done for the passes unit test in bc8e4421. Differential Revision: https://reviews.llvm.org/D79771
-
Valeriy Savchenko authored
Summary: Nonnull attribute can be applied to non-pointers. This caused assertion failures in NonNullParamChecker when we tried to *assume* such parameters to be non-zero. rdar://problem/63150074 Differential Revision: https://reviews.llvm.org/D79843
-
Marek Kurdej authored
[libc++] [LWG3321] Mark "year_month_day_last::day() specification does not cover !ok() values" issue as "Nothing to do", but add assertion. Summary: This LWG issue states that the result of `year_month_day_last::day()` is implementation defined if `ok()` is `false`. However, from user perspective, calling `day()` in this situation will lead to a (possibly difficult to find) crash. Hence, I have added an assertion to warn user at least when assertions are enabled. I am however not aware of the libc++ stand on the desired behaviour. Reviewers: ldionne, mclow.lists, EricWF, #libc Reviewed By: ldionne, #libc Subscribers: christof, dexonsmith, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D70346
-
Qiu Chaofan authored
A lot of tests under PowerPC are using fast flag, while fast is just alias of 7 fast-math flags. This change makes test points clearer. mc-instrlat.ll and sms-iterator.ll keeps unchanged since they are not testing fast-math behavior. (one for machine combiner crash, one for machine pipeliner bug) Reviewed By: steven.zhang, spatel Differential Revision: https://reviews.llvm.org/D78989
-
Victor Campos authored
Summary: In TableGen's instruction selection table generator, references to register classes were handled by generating a matcher table entry in the form of "EmitStringInteger, MVT::i32, 'RegisterClassID'". This ID is in fact the enum integer value corresponding to the register class. However, both the table generator and the table consumer (SelectionDAGISel) assume that this ID is less than or equal to 127, i.e. at most 7 bits. Values greater than this threshold cause completely wrong behaviours in the instruction selection process. This patch adds a check to determine if the enum integer value is greater than the limit of 127. In finding so, the generator emits an "EmitInteger" instead, which properly supports values with arbitrary sizes. Commit f8d044bb fixed the very same bug for register subindices. The present patch now extends this cover to register classes. Reviewers: rampitec Reviewed By: rampitec Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D79705
-
Simon Atanasyan authored
The problem is found by the D79276 on the following builder: http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win/builds/23489
-
Sourabh Singh Tomar authored
This fixes failures on windows bot specifically: http://lab.llvm.org:8011/builders/lld-x86_64-win/builds/445 and http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/ builds/32314 * TEST 'LLVM :: DebugInfo/X86/Fortran-DIModule.ll' FAILED * Script: -- : 'RUN: at line 2'; c:\ps4-buildslave2\lld-x86_64-win\build\bin\llc.exe -mtriple=x86_64-pc-windows-gnu c:\ps4-buildslave2\lld-x86_64-win\llvm-project\llvm\test\DebugInfo\X86\Fortran-DIModule.ll -filetype=obj -o - | c:\ps4-buildslave2\lld-x86_64-win\build\bin\llvm-dwarfdump.exe - | c:\ps4-buildslave2\lld-x86_64-win\build\bin\filecheck.exe c:\ps4-buildslave2\lld-x86_64-win\llvm-project\llvm\test\DebugInfo\X86\Fortran-DIModule.ll -- Exit Code: 1 error: command failed with exit status: 1
-
Sourabh Singh Tomar authored
This patch extends DIModule Debug metadata in LLVM to support Fortran modules. DIModule is extended to contain File and Line fields, these fields will be used by Flang FE to create debug information necessary for representing Fortran modules at IR level. Furthermore DW_TAG_module is also extended to contain these fields. If these fields are missing, debuggers like GDB won't be able to show Fortran modules information correctly. Reviewed By: aprantl Differential Revision: https://reviews.llvm.org/D79484
-
Yevgeny Rouban authored
Hide the method that allows setting probability for particular edge and introduce a public method that sets probabilities for all outgoing edges at once. Setting individual edge probability is error prone. More over it is difficult to check that the total probability is 1.0 because there is no easy way to know when the user finished setting all the probabilities. Reviewers: yamauchi, ebrevnov Tags: #llvm Differential Revision: https://reviews.llvm.org/D79396
-
Shengchen Kan authored
Fix the signed/unsigned mismatch issue
-
Qiu Chaofan authored
xsnegdp, xsabsdp and xsnabsdp can be used to operate on f32 operand. This patch adds the missing patterns since we prefer VSX instructions when available. Reviewed By: steven.zhang Differential Revision: https://reviews.llvm.org/D75344
-
Sam Parker authored
Fix the assumption that all bitcasts of the same type sizes are free. We now only assume that bitcasts between ints and ptrs of the same size are free. This allows TTImpl to just call the concrete implementation of getCastInstrCost. Differential Revision: https://reviews.llvm.org/D78918
-
MaheshRavishankar authored
Differential Revision: https://reviews.llvm.org/D79505
-
Qiu Chaofan authored
Legalizer should respect both command-line options or SDNode-level fast-math flags. Also, this patch propagates other flags during custom simplifying. Reviewed By: steven.zhang Differential Revision: https://reviews.llvm.org/D79074
-
MaheshRavishankar authored
linalg.reshape/linalg.tensor_reshape operations. Differential Revision: https://reviews.llvm.org/D79765
-
MaheshRavishankar authored
This is only valid if the source tensors (result tensor) is static shaped with all unit-extents when the reshape is collapsing (expanding) dimensions. Differential Revision: https://reviews.llvm.org/D79764
-