- Jan 09, 2023
-
-
Aliia Khasanova authored
Differential Revision: https://reviews.llvm.org/D141259
-
Max Kazantsev authored
Irrelevant constant check makes things even more difficult, surprisingly.
-
Johannes Reifferscheid authored
Reviewed By: pifon2a Differential Revision: https://reviews.llvm.org/D141270
-
Nikita Popov authored
removeAttribute() already performs a hasAttribute() check, so no need to also do it in the caller. Instead check whether the attribute set was changed. This makes the implementations in line with removeAttributesAtIndex().
-
David Green authored
If we have `and x, (csel 0, 1, cc)` and we know that x is 0/1, then we can emit a `csel ZR, x, cc`. Similarly for `or x, (csel 0, 1, cc)` we can emit `csinc x, ZR, cc`. This can help where we can not otherwise general ccmp instructions. Differential Revision: https://reviews.llvm.org/D141119
-
Noah Goldstein authored
1. A & B_Pow2 != B_Pow2 -> A & B_Pow2 == 0 https://alive2.llvm.org/ce/z/KVUej4 2. A & B_Pow2 == B_Pow2 -> A & B_Pow2 != 0 https://alive2.llvm.org/ce/z/PVv9FR This allows the patterns to more easily be analyzed elsewhere. Differential Revision: https://reviews.llvm.org/D141090
-
Ties Stuij authored
In ThumbThunk::isCompatibleWith, we check if we can use short thunks if we are within branch range. However these short thumb thunks will generate b.w instructions, and these are not available on pre branch range extension architectures. On these architectures (v4, v5, and most of v6), we could replace the b.w with a Thumb b (2) instruction, but that would in an ideal situation only give us an extra range of 2048 bytes on top of the 4MB range of a BL, if a thunk section happens to be placed on the outer range of a BL and the stars are aligned. It doesn't seem worth it. What would be worth it is a state change to Arm and a subsequent branch to either Arm or Thumb code. But that's the subject of another patch. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D140633
-
Ben Mudd authored
This is a patch to fix duplicated dbg.values in the JumpThreading pass not pointing towards their local value, and instead towards the variable in the original block. JumpThreadingPass::cloneInstructions is the changed function to target metadata as well as normal cloned values. Reviewed By: jmorse, StephenTozer Differential Revision: https://reviews.llvm.org/D140006
-
Nikolas Klauser authored
-
serge-sans-paille authored
This is a follow-up to https://reviews.llvm.org/D140896, split into several parts as it touches a lot of files. Differential Revision: https://reviews.llvm.org/D141139
-
Tim Northover authored
Unlike an anonymous block, it will not be removed even though we've resolved all valid paths to get here. So removing a PHI can leave vregs with no definition, violating SSA. Instead, this converts it to an IMPLICIT_DEF.
-
Joe Loser authored
`endian.pass.cpp` uses `std::is_enum` and friends but doesn't include `<type_traits>`. Add the missing include. Reviewed By: philnik, #libc Spies: libcxx-commits Differential Revision: https://reviews.llvm.org/D141239
-
Nikita Popov authored
Perform the hasAttribute() check on the AttributeSet we need to fetch anyway, rather than going through hasAttributeAtIndex().
-
Noah Goldstein authored
While demanded bits constant shrinking appears to prevent this in practice right now, it is principally possible for C2 to have set bits that are known not-needed (zeroable). See: D140858 `+` will overflow here, `|` will get the right logic. Differential Revision: https://reviews.llvm.org/D141089
-
Dmitri Gribenko authored
-
Markus Böck authored
It now tried to open the IncludedFile instead of the Filename, which was not intended.
-
Sander de Smalen authored
This patch is NFC and just moves things around so their implementation is very similar.
-
Dmitri Gribenko authored
[bazel] Updates for https://github.com/llvm/llvm-project/commit/496f9a7d8d4b61b6f5dfa21e2614043a2b27cf67
-
Dmitri Gribenko authored
mpfr has released a new version, and now the old tar.gz URL does not work anymore. Update the URL to a stable one.
-
Johannes de Fine Licht authored
Conservatively only allow inlining for loads and stores that don't carry any attributes that require handling while inlining. This can later be relaxed when proper handling is introduced. Reviewed By: Dinistro, gysit Differential Revision: https://reviews.llvm.org/D141115
-
Christian Ulmann authored
This commit introduces branch weight attributes to the LLVM::CallOp and LLVM::InvokeOp and adds both import and export of them. Reviewed By: gysit Differential Revision: https://reviews.llvm.org/D141122
-
Thomas Symalla authored
Adds a whitespace in a debug message before printing out a value in the SSAUpdaterBulk. Without this, debugging can end up a bit cumbersome. Differential Revision: https://reviews.llvm.org/D141262
-
Max Kazantsev authored
Jump threading can replace select and unconditional branch with conditional branch, but when doing so loses profile information. This destructive transform can eventually lead to a performance degradation due to folding of branches in shouldFoldCondBranchesToCommonDestination as branch probabilities are no longer known. Patch by Roman Paukner! Differential Revision: https://reviews.llvm.org/D138132 Reviewed By: mkazantsev
-
LLVM GN Syncbot authored
-
Stephen Tozer authored
This patch modifies SelectionDAG and FastISel to produce DBG_INSTR_REFs with variadic expressions, and produce DBG_INSTR_REFs for debug values with variadic location expressions. The former essentially means just prepending DW_OP_LLVM_arg, 0 to the existing expression. The latter is achieved in MachineFunction::finalizeDebugInstrRefs and InstrEmitter::EmitDbgInstrRef. Reviewed By: jmorse, Orlando Differential Revision: https://reviews.llvm.org/D133929
-
Balázs Kéri authored
The case of NULL stream passed to stream functions was reported by StreamChecker. The same condition is checked already by StdLibraryFunctionsChecker and it is enough to check at one place. The StreamChecker stops now analysis if a passed NULL stream is encountered but generates no report. This change removes a dependency between StdCLibraryFunctionArgs checker and StreamChecker. There is now no more specific message reported by StreamChecker, the previous weak-dependency is not needed. And StreamChecker can be used without StdCLibraryFunctions checker or its ModelPOSIX option. Reviewed By: Szelethus Differential Revision: https://reviews.llvm.org/D137790
-
Guillaume Chatelet authored
Simplifies the implementation of `TypeSize` while retaining its interface. There is no need for abstract concepts like `LinearPolyBase`, `UnivariateLinearPolyBase` or `LinearPolySize`. Differential Revision: https://reviews.llvm.org/D140263
-
zhongyunde authored
Fix https://github.com/llvm/llvm-project/issues/59597. mov w8, w0 + fmov d0, x8 ==> fmov s0, w0 Reviewed By: dmgreen, efriedma Differential Revision: https://reviews.llvm.org/D140649
-
Markus Böck authored
The current implementation unconditionally appends the system path separator with the filename to the include directory. This is not correct in edge cases however, such as when specifying `/` as include directory (on Unix systems) or just `\` on Windows. This patch fixes that by using `sys::path::append`, which already has the required logic to correctly implement this. While this is technically only a change in the `SourceMgr` class, I think the main user of that class, and the include mechanism, is TableGen. No test attached because no behavioral difference is observable without trying to access the root directory of the users filesystem. The motivation for this change is a rather funny story, as this actually fixes a performance problem when running `check-mlir` on Windows. Some tests for `mlir-pdll-lsp-server` lead to adding `\` as include directory in TableGen (which is a valid absolute path on Windows!). Due to the unconditional append, the created filepath would then be of the form `\\<dir>\...` which is also a valid path on Windows, but is a network path. On my machine it'd then attempt to access the network and find a machine with the name `<dir>` and the file there. This call would take several seconds, leading to some tests in `mlir-pdll-lsp-server` taking 2 minutes on my machine. Running `check-mlir` after this patch reduces the runtime on my machine from 161 seconds to 6 seconds. Differential Revision: https://reviews.llvm.org/D141220
-
Max Kazantsev authored
-
Serguei Katkov authored
Snippet is a tiny live interval which has copy or fill like def and copy or spill like use at the end (any of them might abcent). Snippet has only one use/def inside interval and interval is located in one basic block. When inline spiller spills some reg around uses it also forces the spilling of connected snippets those which got by splitting the same original reg and its def is a full copy of our reg or its last use is a full copy to our reg. The definition of snippet is extended to allow not only one use/def but more. However all other uses are statepoint instructions which will fold fill into its operand. That way we do not introduce new fills/spills. Reviewed By: qcolombet, dantrushin Differential Revision: https://reviews.llvm.org/D138093
-
Uday Bondhugula authored
Fix DEBUG_TYPE for AffineOps.cpp. NFC. Differential Revision: https://reviews.llvm.org/D141252
-
liqinweng authored
1. Refactor for costs of sqrt/fabs 2. Add half type support for the cost model of sqrt/fabs Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D132908
-
NAKAMURA Takumi authored
-
Chuanqi Xu authored
The test in 08f95780 may fail in armv8 since the signature of the constructor may be different. This patch tries to fix it.
-
liqinweng authored
Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D132999
-
Chuanqi Xu authored
Closes https://github.com/llvm/llvm-project/issues/59765. Currently we will generate the global ctor/dtor for variables in importing modules. It will cause multiple initialization/destructions. It makes no sense. This patch tries to not generate global ctor/dtor for variables which are available externally. Note that the variables in header units and clang modules won't be available externally by default. Reviewed By: iains Differential Revision: https://reviews.llvm.org/D140867
-
Chuanqi Xu authored
Close https://github.com/llvm/llvm-project/issues/59601. This is actually a workaround for the issue. See the comments and the test for example. The proper fix should make the placement allocation functions acceptable based on the context. But it is harder and more complex on the one side. On the other side, such workaround won't be too bad in practice since users rarely call the placement allocation functions directly. So personally I prefer to address such problems in the simpler way. Reviewed By: royjacobson Differential Revision: https://reviews.llvm.org/D141023
-
chenglin.bi authored
Follow up https://reviews.llvm.org/D139408, support `and/or+select` patterns X && Z || Y && Z --> (X || Y) && Z https://alive2.llvm.org/ce/z/EMCkBG https://alive2.llvm.org/ce/z/Q-YRvr https://alive2.llvm.org/ce/z/SFkVQc https://alive2.llvm.org/ce/z/S9MCuJ https://alive2.llvm.org/ce/z/KZ7zzz (X || Z) && (Y || Z) --> (X && Y) || Z https://alive2.llvm.org/ce/z/Ggpa8- https://alive2.llvm.org/ce/z/nhQRLY https://alive2.llvm.org/ce/z/zpmEnq https://alive2.llvm.org/ce/z/7omsrf https://alive2.llvm.org/ce/z/CWBzBp Reviewed By: spatel Differential Revision: https://reviews.llvm.org/D139630
-
Kazu Hirata authored
This patch fixes: llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp:1220:13: error: unused function 'locStr' [-Werror,-Wunused-function]
-