- Oct 21, 2021
-
-
Stanislav Mekhanoshin authored
-
Florian Hahn authored
At the moment, rewriteLoopExitValue forgets the current phi node in the loop that collects phis to rewrite. A few lines after the value is forgotten, SCEV is used again to analyze incoming values and potentially expand SCEV expression. This means that another SCEV is created for PN, before the IR is actually updated in the next loop. This leads to accessing invalid cached expression in combination with D71539. PN should only be changed once the actual incoming exit value is set in the next loop. Moving invalidation there should ensure that PN is invalidated in all relevant cases. Reviewed By: mkazantsev Differential Revision: https://reviews.llvm.org/D111495
-
Aart Bik authored
The current implementation used explicit index->int64_t casts for some, but not all instances of passing values of type "index" in and from the sparse support library. This revision makes the situation more consistent by using new "index_t" type at all such places (which allows for less trivial casting in the generated MLIR code). Note that the current revision still assumes that "index" is 64-bit wide. If we want to support targets with alternative "index" bit widths, we need to build the support library different. But the current revision is a step forward by making this requirement explicit and more visible. Reviewed By: wrengr Differential Revision: https://reviews.llvm.org/D112122
-
Erich Keane authored
My downstream noticed that the test failed on windows-32 bit machines since the types have __attribute__((thiscall)) on them in a few places. This patch just adds a wildcard to handle that, since it isn't particularly important to the test.
-
Valentin Clement authored
This patch is extracted from D111337. It introduce the CharacterExprHelper that helps dealing with character in FIR. Reviewed By: schweitz, awarzynski Differential Revision: https://reviews.llvm.org/D112140 Co-authored-by:
Jean Perier <jperier@nvidia.com> Co-authored-by:
Eric Schweitz <eschweitz@nvidia.com> Co-authored-by:
V Donaldson <vdonaldson@nvidia.com>
-
Erich Keane authored
Writing a quick test to make sure we are aware of the change to the _ExtInt/_BitInt ABI on x86 (32bit) OSes.
-
Ahmed S. Taei authored
Add a pattern to take a rank-reducing subview and drop inner most contiguous unit dim. This is useful when lowering vector to backends with 1d vector types. Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D111561
-
Jon Roelofs authored
https://godbolt.org/z/h8ejrG4hb rdar://83597585 Differential Revision: https://reviews.llvm.org/D111856
-
Jonas Devlieghere authored
-
Stanislav Mekhanoshin authored
MachineLoop::isLoopInvariant() returns false for all VALU because of the exec use. Check TII::isIgnorableUse() to allow hoisting. That unfortunately results in higher register consumption since MachineLICM does not adequately estimate pressure. Therefor I think it shall only be enabled after D107677 even though it does not depend on it. Differential Revision: https://reviews.llvm.org/D107859
-
Stanislav Mekhanoshin authored
D106408 was doing this for all targets although it was reverted due to couple performance regressions on some targets. The difference for AMDGPU is the ability to rematerialize SOP instructions with virtual register uses like we already do for VOP. Differential Revision: https://reviews.llvm.org/D110743
-
Leonard Grey authored
This is speculative since I'm not sure if there's some implicit contract that a variable symbol must not have another variable symbol in its evaluation tree. Downstream bug: https://bugs.chromium.org/p/chromium/issues/detail?id=471146#c23. Test is based on alias.s (removed checks since we just need to know it didn't crash). Differential Revision: https://reviews.llvm.org/D109109
-
Nico Weber authored
No behavior change.
-
Sanjay Patel authored
bitcast (inselt (bitcast X), Y, 0) --> or (and X, MaskC), (zext Y) https://alive2.llvm.org/ce/z/Ux-662 Similar to D111082 / db231ebd : We want to avoid relatively opaque vector ops on types that are likely supported by the backend as scalar integers. The bitwise logic ops are more likely to allow further combining. We probably want to generalize this to allow a shift too, but that would oppose instcombine's general rule of not creating extra instructions, so that's left as a potential follow-up. Alternatively, we could do that transform in VectorCombine with the help of the TTI cost model. This is part of solving: https://llvm.org/PR52057
-
Ben Langmuir authored
Enable building the ORC runtime for 64-bit and 32-bit ARM architectures, and for all Darwin embedded platforms (iOS, tvOS, and watchOS). This covers building the cross-platform code, but does not add TLV runtime support for the new architectures, which can be added independently. Incidentally, stop building the Mach-O TLS support file unnecessarily on other platforms. Differential Revision: https://reviews.llvm.org/D112111
-
Nico Weber authored
We already disallow mixing SEH and C++ exceptions, and mixing SEH and Objective-C exceptions seems to not work (see PR52233). Emitting an error is friendlier than crashing. Differential Revision: https://reviews.llvm.org/D112157
-
Stanislav Mekhanoshin authored
-
Muiez Ahmed authored
The path functions in this patch are unimplemented (as per the TODO comment from upstream). To avoid running into a linker error (missing symbol), this patch raises a compile error by commenting out the functions, which is more user friendly. Differential Revision: https://reviews.llvm.org/D111892
-
Arthur Eubanks authored
This makes changing it and recompiling it much faster.
-
Alfonso Gregory authored
isSpecifierType There is no reason to have this here, (since all tests pass) and it isn't even a specifier anyway. We can just treat it as a pointer instead. Differential Revision: https://reviews.llvm.org/D110068
-
Itay Bookstein authored
As discussed in: * https://reviews.llvm.org/D94166 * https://lists.llvm.org/pipermail/llvm-dev/2020-September/145031.html The GlobalIndirectSymbol class lost most of its meaning in https://reviews.llvm.org/D109792, which disambiguated getBaseObject (now getAliaseeObject) between GlobalIFunc and everything else. In addition, as long as GlobalIFunc is not a GlobalObject and getAliaseeObject returns GlobalObjects, a GlobalAlias whose aliasee is a GlobalIFunc cannot currently be modeled properly. Creating aliases for GlobalIFuncs does happen in the wild (e.g. glibc). In addition, calling getAliaseeObject on a GlobalIFunc will currently return nullptr, which is undesirable because it should return the object itself for non-aliases. This patch refactors the GlobalIFunc class to inherit directly from GlobalObject, and removes GlobalIndirectSymbol (while inlining the relevant parts into GlobalAlias and GlobalIFunc). This allows for calling getAliaseeObject() on a GlobalIFunc to return the GlobalIFunc itself, making getAliaseeObject() more consistent and enabling alias-to-ifunc to be properly modeled in the IR. I exercised some judgement in the API clients of GlobalIndirectSymbol: some were 'monomorphized' for GlobalAlias and GlobalIFunc, and some remained shared (with the type adapted to become GlobalValue). Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D108872
-
Simon Pilgrim authored
Avoid dereferencing a nullptr returned by dyn_cast<>, by using cast<> instead which asserts that the cast is valid.
-
Alex Zinenko authored
-
Sterling Augustine authored
-
Zhi An Ng authored
Add relaxed. f32x4.min, f32x4.max, f64x2.min, f64x2.max. These are only exposed as builtins, and require user opt-in. Differential Revision: https://reviews.llvm.org/D112146
-
Nawrin Sultana authored
This patch adds GOMP_alloc and GOMP_free functions of LIBGOMP. Differential revision: https://reviews.llvm.org/D111673
-
Sanjay Patel authored
-
Shraiysh Vaishay authored
According to the OpenMP 5.0 standard, names and hints of critical operation are closely related. The following are the restrictions on them: - Unless the effect is as if `hint(omp_sync_hint_none)` was specified, the critical construct must specify a name. - If the hint clause is specified, each of the critical constructs with the same name must have a hint clause for which the hint-expression evaluates to the same value. These restrictions will be enforced by design if the hint expression is a part of the `omp.critical.declare` operation. - Any operation with no "name" will be considered to have `hint(omp_sync_hint_none)`. - All the operations with the same "name" will have the same hint value. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D112134
-
- Oct 20, 2021
-
-
Arthur Eubanks authored
Currently we have a way to run a plugin if specified on the command line after the main action, and ways to unconditionally run the plugin before or after the main action, but no way to run a plugin if specified on the command line before the main action. This introduces the missing option. This is helpful because -clear-ast-before-backend clears the AST before codegen, while some plugins may want access to the AST. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D112096
-
Fraser Cormack authored
This patch fixes a crash when despeculating ctlz/cttz intrinsics with scalable-vector types. It is not safe to speculatively get the size of the vector type in bits in case the vector type is not a fixed-length type. As it happens this isn't required as vector types are skipped anyway. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D112141
-
Craig Topper authored
Previously we used builtin_alias for overloaded intrinsics, but macros for the non-overloaded version. This patch changes the non-overloaded versions to also use builtin_alias, but without the overloadable attribute. Reviewed By: khchen, HsiangKai Differential Revision: https://reviews.llvm.org/D112020
-
Balazs Benics authored
It turns out llvm::isa<> is variadic, and we could have used this at a lot of places. The following patterns: x && isa<T1>(x) || isa<T2>(x) ... Will be replaced by: isa_and_non_null<T1, T2, ...>(x) Sometimes it caused further simplifications, when it would cause even more code smell. Aside from this, keep in mind that within `assert()` or any macro functions, we need to wrap the isa<> expression within a parenthesis, due to the parsing of the comma. Reviewed By: martong Differential Revision: https://reviews.llvm.org/D111982
-
Kaining Zhong authored
In Driver.cpp, addFramework used std::string instance to represent the path of a framework, which will be freed after the function returns. However, this string is stored in loadedArchive, which will be used later to compare with path of newly added frameworks. This caused https://bugs.llvm.org/show_bug.cgi?id=52133. A test is included in this commit to reproduce this bug. Now resolveDylibPath returns a StringRef instance, and it uses StringSaver to save its data, then returns it to functions on the top. This ensures the resolved framework path is still valid after LC_LINKER_OPTION is parsed. Reviewed By: int3, #lld-macho, oontvoo Differential Revision: https://reviews.llvm.org/D111706
-
Bjorn Pettersson authored
Removed/replaced RUN lines using legacy PM syntax in favor of using -passes in lit tests for Float2Int, MetaRenamer, StripDeadPrototypes and StripSymbols.
-
Bjorn Pettersson authored
The legacy PM is deprecated, so use the new PM syntax in lit tests verifying the mem2reg pass.
-
Kazu Hirata authored
-
Craig Topper authored
[RISCV][WebAssembly][TargetLowering] Allow expandCTLZ/expandCTTZ to rely on CTPOP expansion for vectors. Our fallback expansion for CTLZ/CTTZ relies on CTPOP. If CTPOP isn't legal or custom for a vector type we would scalarize the CTLZ/CTTZ. This is different than CTPOP itself which would use a vector expansion. This patch teaches expandCTLZ/CTTZ to rely on the vector CTPOP expansion instead of scalarizing. To do this I had to add additional checks to make sure the operations used by CTPOP expansions are all supported. Some of the operations were already needed for the CTLZ/CTTZ expansion. This is a huge improvement to the RISCV which doesn't have a scalar ctlz or cttz in the base ISA. For WebAssembly, I've added Custom lowering to keep the scalarizing behavior. I've also extended the scalarizing to CTPOP. Differential Revision: https://reviews.llvm.org/D111919
-
Kadir Cetinkaya authored
Includer cache could get into a bad state when a main file went bad and added back afterwards. This patch adds a check to invalidate to prevent that. Differential Revision: https://reviews.llvm.org/D112130
-
Kadir Cetinkaya authored
Don't invoke parsing callback for preamble if clangd is using a previously built one. Differential Revision: https://reviews.llvm.org/D112137
-
Sanjay Patel authored
See D112085 for another use case.
-