- Jun 03, 2022
-
-
Alexander Batashev authored
Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D126594
-
bzcheeseman authored
This patch updates the document with some advanced use cases and examples on how to set up and use LLVM-style RTTI. It includes a few motivating examples to get readers comfortable with the concepts. Reviewed By: lattner Differential Revision: https://reviews.llvm.org/D126943
-
Max Kazantsev authored
This execution path leads to return 'false' where the Worklist will be deallocated anyways. No need to clear it separately.
-
Serguei Katkov authored
If all available vals to basic block are the same - do not build new phi node and just use this value. Reviewed By: sameerds Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D126525
-
Tue Ly authored
Detect if the architecture supports FMA instructions and if the targets depend on fma. Reviewed By: gchatelet Differential Revision: https://reviews.llvm.org/D123615
-
Douglas Chen authored
This patch is trying to fix issue 48588(https://github.com/llvm/llvm-project/issues/48588) I found the results of Instruction Selection between SelectionDAG and FastISEL for the `%mul = mul i32 %A, 4294967295`: (seldag-isel) mul --> sub --> SUB32dp (fast-isel) mul --> sub --> NEG32d My patch to fix this issue is by overriding a virtual function M68kDAGToDAGISel::IsProfitableToFold(). Return `false` when it was trying to match with SUB, then it will match with NEG. Reviewed By: myhsu Differential Revision: https://reviews.llvm.org/D116886
-
Thomas Raoux authored
ldmatrix transpose can only be used with types that are 16bits wide. Differential Revision: https://reviews.llvm.org/D126846
-
Serguei Katkov authored
-
Thomas Raoux authored
Add an option to predicate the epilogue within the kernel instead of peeling the epilogue. This is a useful option to prevent generating large amount of code for deep pipeline. This currently require a user lamdba to implement operation predication. Differential Revision: https://reviews.llvm.org/D126753
-
Craig Topper authored
The immediate range check for CSImm12MulBy8 included some values covered by CSImm12MulBy4. I assume CSImm12MulBy4 had priority due to pattern order in the td file, but this makes the priority explicit in the predicate.
-
Fangrui Song authored
-
Fangrui Song authored
echo.ll is unchanged to test typed pointers.
-
River Riddle authored
These effectively all share the same implementation, i.e. forward to the non-templated overload and then construct the container op.
-
Amir Ayupov authored
Follow LLVM style guide suggestion to avoid function definitions in anonymous namespaces: https://llvm.org/docs/CodingStandards.html#anonymous-namespaces Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D124896
-
Shilei Tian authored
-
Shilei Tian authored
This patch adds the codegen support for `atomic compare capture` in clang. Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D120290
-
Amir Ayupov authored
Clang's doxygen documentation specifies LLVM revision. Do the same for BOLT. Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D126912
-
Daniil Suchkov authored
Reverting the commit due to numerous buildbot failures. This reverts commit 00633447.
-
Mike Rice authored
-
Akira Hatanaka authored
brace-init-list containing a single element of a different scoped enumeration type It is rejected because it doesn't satisfy the condition that the element has to be implicitly convertible to the underlying type of the enumeration. http://eel.is/c++draft/dcl.init.list#3.8 Differential Revision: https://reviews.llvm.org/D126084
-
Aart Bik authored
Similar to complex128/complex64, float16 has no direct support in the ctypes implementation. This fixes the issue by using a custom F16 type to change the view in and out of MLIR code Reviewed By: wrengr Differential Revision: https://reviews.llvm.org/D126928
-
-
River Riddle authored
Since version 0.7 we've added: * Initial language support for TableGen * Tweaked syntax highlighting for PDLL * Added a new command to view intermediate PDLL output
-
River Riddle authored
This commit enables providing long-form documentation more seamlessly to the LSP by revamping decl documentation. For ODS imported constructs, we now also import descriptions and attach them to decls when possible. For PDLL constructs, the LSP will now try to provide documentation by parsing the comments directly above the decls location within the source file. This commit also adds a new parser flag `enableDocumentation` that gates the import and attachment of ODS documentation, which is unnecessary in the normal build process (i.e. it should only be used/consumed by tools). Differential Revision: https://reviews.llvm.org/D124881
-
Arjun P authored
Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D126790
-
Chia-hung Duan authored
The assertion should come after null check
-
Nicolas van Kempen authored
modernize-use-emplace only recommends going from a push_back to an emplace_back, but does not provide a recommendation when emplace_back is improperly used. This adds the functionality of warning the user when an unecessary temporary is created while calling emplace_back or other "emplacy" functions from the STL containers. Reviewed By: kuhar, ivanmurashko Differential Revision: https://reviews.llvm.org/D101471
-
Congzhe Cao authored
This patch proposed to use a new cost model for loop interchange, which is obtained from loop cache analysis. Given a loopnest, what loop cache analysis returns is a vector of loops [loop0, loop1, loop2, ...] where loop0 should be replaced as the outermost loop, loop1 should be placed one more level inside, and loop2 one more level inside, etc. What loop cache analysis does is not only more comprehensive than the current cost model, it is also a "one-shot" query which means that we only need to query it once during the entire loop interchange pass, which is better than the current cost model where we query it every time we check whether it is profitable to interchange two loops. Thus complexity is reduced, especially after D120386 where we do more interchanges to get the globally optimal loop access pattern. Updates made to test cases are mostly minor changes and some corrections. Test coverage for loop interchange is not reduced. Currently we did not completely remove the legacy cost model, but keep it as fall-back in case the new cost model did not run successfully. This is because currently we have some limitations in delinearization, which sometimes makes loop cache analysis bail out. The longer term goal is to enhance delinearization and eventually remove the legacy cost model compeletely. Reviewed By: bmahjour, #loopoptwg Differential Revision: https://reviews.llvm.org/D124926
-
Paul Pluzhnikov authored
This is alternative to https://reviews.llvm.org/D121733 and helps with Clang header modules in which FILE may expand to "./foo.h" or "foo.h" depending on whether the file was included directly or not. Only do this when UseTargetPathSeparator is true, as we are already changing the path in that case. Reviewed By: ayzhao Differential Revision: https://reviews.llvm.org/D126396
-
Shilei Tian authored
This patch removes all `IgnoreImpCasts` in Sema, and only uses it if necessary. If the expression is not of the same type as the pointer value, a cast is inserted. Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D126602
-
Paul Robinson authored
-
Mehdi Amini authored
This reverts commit 1350c988. Shared library build is broken with undefined references.
-
Matt Arsenault authored
This isn't the most natural place for it, but it avoids a circular include dependency in an out of tree patch.
-
Julien Pages authored
This patch improves the codegen of extractelement and insertelement for vector containing 8 elements. Before, a dag combine transformation was generating a sequence of 8 select/cmp. This patch changes the upper limit for this transformation and the movrel instruction will eventually be used instead. Extractlement/insertelement for vectors containing less than 8 elements are unchanged. Differential Revision: https://reviews.llvm.org/D126389
-
Alexander Smarus authored
This makes it possible to crosscompile runtimes with cl.exe on Windows. An external project is completely misconfigured otherwise because cmake_args is set only for native builds or builds crosscompiled with clang. Differential Revision: https://reviews.llvm.org/D122578 Reviewed By: beanz, compnerd
-
David Blaikie authored
While it's not as robust as using the attribute on enums/classes (the type information may be lost through a function pointer, a declaration or use of the underlying type without using the typedef, etc) but I think there's still value in being able to attribute a typedef and have all return types written with that typedef pick up the warn_unused_result behavior. Specifically I'd like to be able to annotate LLVMErrorRef (a wrapper for llvm::Error used in the C API - the underlying type is a raw pointer, so it can't be attributed itself) to reduce the chance of unhandled errors. Differential Revision: https://reviews.llvm.org/D102122
-
Craig Topper authored
If the imm is out of range for an ADDI, we will materialize it in a register using multiple instructions. If the ADD is used by a load/store, doPeepholeLoadStoreADDI can try to pull an ADDI from the constant materialization into the load/store offset. This only works if the ADD has a single use, otherwise the peephole would have to rebuild multiple nodes. This patch instead tries to solve the problem when the add is selected. We check that the add is only used by loads/stores and if it is we will select it to (ADDI (ADD X, Imm-Lo12), Lo12). This will enable the simple case in doPeepholeLoadStoreADDI that can bypass an ADDI used as a pointer. As a result we can remove the more complicated peephole from doPeepholeLoadStoreADDI. Reviewed By: reames Differential Revision: https://reviews.llvm.org/D126576
-
Florian Hahn authored
Currently the MaxUsesToExplore limit only applies to the number of users per value, not the total number of users to explore. The current limit of 20 pessimizes IR with opaque pointers in some cases. Without opaque pointers, we have deeper pointer def-use chains in general due to extra bitcasts and geps for structs with index 0. With opaque pointers the def-use chain is not as deep but wider, due to bitcasts & 0-geps missing. To improve the situation for opaque pointers, this patch does 2 things: 1. Apply the limit to the total number of uses visited. From the wording in the description of the option it seems like this may be the original intention. With the current implementation we could still end up walking a lot of uses. 2. Increase the limit to 100. This is quite arbitrary, but enables a good number of additional optimizations. Those adjustments have a noticeable compile-time impact though. In part that is likely due to additional transformations (and conversely the current baseline misses optimizations after switching to opaque pointers). This recovers some regressions that showed up after enabling opaque pointers. Limit=100: * NewPM-O3: +0.21% * NewPM-ReleaseThinLTO: +0.87% * NewPM-ReleaseLTO-g: +0.46% https://llvm-compile-time-tracker.com/compare.php?from=2e50ecb2ef4e1da1aeab05bcf66380068e680991&to=7e6fbe519d958d09f32f01d5d44a622f551e2031&stat=instructions Limit=60: * NewPM-O3: +0.14% * NewPM-ReleaseThinLTO: +0.41% * NewPM-ReleaseLTO-g: +0.21% https://llvm-compile-time-tracker.com/compare.php?from=aeb19817d66f1a15754163c7f48e01e9ebdd6d45&to=520563fdc146319aae90d06f88d87f2e9e1247b7&stat=instructions Limit=40: * NewPM-O3: +0.11% * NewPM-ReleaseThinLTO: +0.12% * NewPM-ReleaseLTO-g: +0.09% https://llvm-compile-time-tracker.com/compare.php?from=aeb19817d66f1a15754163c7f48e01e9ebdd6d45&to=c9182576e9fe3f1c84a71479665aef91a416318c&stat=instructions Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D126236 -
Fangrui Song authored
.zdebug is unlikely used any longer: gcc -gz switched from legacy .zdebug to SHF_COMPRESSED with binutils 2.26 (2016), which has been several years. clang 14 dropped -gz=zlib-gnu support. According to Debian Code Search (`gz=zlib-gnu`), no project uses -gz=zlib-gnu. Remove .zdebug support to (a) simplify code and (b) allow removal of llvm-mc's --compress-debug-sections=zlib-gnu. In case the old object file `a.o` uses .zdebug, run `objcopy --decompress-debug-sections a.o` Reviewed By: peter.smith Differential Revision: https://reviews.llvm.org/D126793
-
Fangrui Song authored
-