- Feb 12, 2021
-
-
Nick Desaulniers authored
Similiar to D95872, this flag can be set for the assembler directly. Move validation code into a reusable helper function. Link: https://bugs.llvm.org/show_bug.cgi?id=49023 Link: https://github.com/ClangBuiltLinux/linux/issues/1270 Reported-by:
Arnd Bergmann <arnd@kernel.org> Signed-off-by:
Nick Desaulniers <ndesaulniers@google.com> Reviewed By: DavidSpickett Differential Revision: https://reviews.llvm.org/D96285
-
Philip Reames authored
-
Sanjay Patel authored
-
Yonghong Song authored
buildbot reported a build error like below: BPFTargetMachine.cpp:(.text._ZN4llvm19TargetTransformInfo5ModelINS_10BPFTTIImplEED2Ev [_ZN4llvm19TargetTransformInfo5ModelINS_10BPFTTIImplEED2Ev]+0x14): undefined reference to `llvm::TargetTransformInfo::Concept::~Concept()' lib/Target/BPF/CMakeFiles/LLVMBPFCodeGen.dir/BPFTargetMachine.cpp.o: In function `llvm::TargetTransformInfo::Model<llvm::BPFTTIImpl>::~Model()': Commit a260ae71 ("BPF: Implement TTI.IntImmCost() properly") added TargetTransformInfo to BPF, which requires LLVMAnalysis dependence. In certain cmake configurations, lacking explicit LLVMAnalysis dependency may cause compilation error. Similar to other targets, this patch added LLVMAnalysis in CMakefile LINK_COMPONENTS explicitly. -
Michael Kruse authored
This reverts commit b7d870ea and the subsequent fix "[Polly] Fix build after AssumptionCache change (D96168)" (commit e6810cab). It caused indeterminism in the output, such that e.g. the polly-x86_64-linux buildbot failed accasionally.
-
Mark de Wever authored
It seems like modifying the header doesn't cause libc++ to be rebuild. So the breakage of the previous commit didn't happen on my system. This should fix the build of https://buildkite.com/mlir/mlir-core
-
Leandro Vaz authored
`find_package(Flang)` does not work as there is a missing `@` in the FlangConfig.cmake.in file. This patch fixes the issue. Reviewed By: thopre Differential Revision: https://reviews.llvm.org/D96484
-
Mark de Wever authored
Add an additional guard to prevent building on older clang versions. This should fix the build of https://buildkite.com/mlir/mlir-core
-
Fangrui Song authored
-
David Green authored
-
Jay Foad authored
When merging a pair of DS reads or writes needs to materialize the base offset in a vgpr, choose a value that is aligned to as high a power of two as possible. This maximises the chance that different pairs can use the same base offset, in which case the base offset registers can be commoned up by MachineCSE. Differential Revision: https://reviews.llvm.org/D96421
-
Craig Topper authored
[TargetLowering][RISCV][AArch64][PowerPC] Enable BuildUDIV/BuildSDIV on illegal types before type legalization if we can find a larger legal type that supports MUL. If we wait until the type is legalized, we'll lose information about the orginal type and need to use larger magic constants. This gets especially bad on RISCV64 where i64 is the only legal type. I've limited this to simple scalar types so it only works for i8/i16/i32 which are most likely to occur. For more odd types we might want to do a small promotion to a type where MULH is legal instead. Unfortunately, this does prevent some urem/srem+seteq matching since that still require legal types. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D96210
-
Fangrui Song authored
When parsing an object file, LLD interleaves undefined symbol resolution (which may recursively fetch other lazy objects) with defined symbol resolution. This may lead to surprising results, e.g. if an object file defines currently undefined symbols and references another lazy symbol, we may interleave defined symbols with the lazy fetch, potentially leading to the defined symbols resolving to different files. As an example, if both `a.a(a.o)` and `a.a(b.o)` define `foo` (not in COMDAT group, or in different COMDAT groups) and `__profd_foo` (in COMDAT group `__profd_foo`). LLD may resolve `foo` to `a.a(a.o)` and `__profd_foo` to `b.a(b.o)`, i.e. different files. ``` parse ArchiveFile a.a entry fetches a.a(a.o) parse ObjectFile a.o define entry define foo reference b b fetches a.a(b.o) parse ObjectFile b.o define prevailing __profd_foo define (ignored) non-prevailing __profd_foo ``` Assuming a set of interconnected symbols are defined all or none in several lazy objects. Arguably making them resolve to the same file is preferable than making them resolve to different files (some are lazy objects). The main argument favoring the new behavior is the stability. The relative order between a defined symbol and an undefined symbol does not change the symbol resolution behavior. Only the relative order between two undefined symbols can affect fetching behaviors. --- The real world case is reduced from a Fuchsia PGO usage: `a.a(a.o)` has a constructor within COMDAT group C5 while `a.a(b.o)` has a constructor within COMDAT group C2. Because they use different group signatures, they are not de-duplicated. It is not entirely whether Clang behavior is entirely conforming. LLD selects the PGO counter section (`__profd_*`) from `a.a(b.o)` and the constructor section from `a.a(a.o)`. The `__profd_*` is a SHF_LINK_ORDER section linking to its own non-prevailing constructor section, so LLD errors `sh_link points to discarded section`. This patch fixes the error. Differential Revision: https://reviews.llvm.org/D95985 -
Nico Weber authored
-
Stella Stamenova authored
Multi-configuration generators (such as Visual Studio and Xcode) allow the specification of a build flavor at build time instead of config time, so the lit configuration files need to support that - and they do for the most part. There are several places that had one of two issues (or both!): 1) Paths had %(build_mode)s set up, but then not configured, resulting in values that would not work correctly e.g. D:/llvm-build/%(build_mode)s/bin/dsymutil.exe 2) Paths did not have %(build_mode)s set up, but instead contained $(Configuration) (which is the value for Visual Studio at configuration time, for Xcode they would have had the equivalent) e.g. "D:/llvm-build/$(Configuration)/lib". This seems to indicate that we still have a lot of fragility in the configurations, but also that a number of these paths are never used (at least on Windows) since the errors appear to have been there a while. This patch fixes the configurations and it has been tested with Ninja and Visual Studio to generate the correct paths. We should consider removing some of these settings altogether. Reviewed By: JDevlieghere, mehdi_amini Differential Revision: https://reviews.llvm.org/D96427
-
Adhemerval Zanella authored
The recent suffix-log-path_test.c checks for a full stacktrace and since on some arm-linux-gnu configuration the slow unwinder is used on default (when the compiler emits thumb code as default), it requires -funwind-tables on tests. It also seems to fix the issues disable by d025df3c. Reviewed By: ostannard Differential Revision: https://reviews.llvm.org/D96337
-
Florian Hahn authored
This patch adds additional test cases showing missing/sub-optimal vectorization for loops which contain small and wider memory ops on AArch64.
-
Sourabh Singh Tomar authored
Most components required for this are already there. Build and Testing clean. ninja check-flang Reviewed By: clementval, tskeith Differential Revision: https://reviews.llvm.org/D96411
-
Craig Topper authored
This refines how we determine which masks types are legal and adds support for loads, stores, and all ones/zeros splats. I left a fixme in store handling where I think we need to zero extra bits if the type isn't a multiple of a byte. If I remember right from X86 there was some case we could have a store of a 1, 2, or 4 bit mask and have a scalar zextload that then expected the bits to be 0. Its tricky to zero the bits with RVV. We need to do something like round VL up, zero a register, lower the VL back down, then do a tail undisturbed move into the zero register. Another option might be to generate a mask of 1/2/4 bits set with a VL of 8 and use that to mask off the bits. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D96468
-
Simon Pilgrim authored
Prep work to add support for non-uniform vectors - replace APInt values with using the SDValue ops directly.
-
Mark de Wever authored
Implements parts of: - P0645 Text Formatting Depends on D92214 Reland with changes: The format header will only be compiled if the compiler used has support for concepts. This should fix the issues with the initial version. Differential Revision: https://reviews.llvm.org/D93166
-
Nico Weber authored
-
clementval authored
This reverts commit d96bb48f.
-
Yonghong Song authored
This patch implemented TTI.IntImmCost() properly. Each BPF insn has 32bit immediate space, so for any immediate which can be represented as 32bit signed int, the cost is technically free. If an int cannot be presented as a 32bit signed int, a ld_imm64 instruction is needed and a TCC_Basic is returned. This change is motivated when we observed that several bpf selftests failed with latest llvm trunk, e.g., #10/16 strobemeta.o:FAIL #10/17 strobemeta_nounroll1.o:FAIL #10/18 strobemeta_nounroll2.o:FAIL #10/19 strobemeta_subprogs.o:FAIL #96 snprintf_btf:FAIL The reason of the failure is due to that SpeculateAroundPHIsPass did aggressive transformation which alters control flow for which currently verifer cannot handle well. In llvm12, SpeculateAroundPHIsPass is not called. SpeculateAroundPHIsPass relied on TTI.getIntImmCost() and TTI.getIntImmCostInst() for profitability analysis. This patch implemented TTI.getIntImmCost() properly for BPF backend which also prevented transformation which caused the above test failures. Differential Revision: https://reviews.llvm.org/D96448
-
Alex Hoppen authored
In addition to wall time etc. this should allow us to get less noisy values for time measurements. Reviewed By: JDevlieghere Differential Revision: https://reviews.llvm.org/D96049
-
Valentin Clement authored
This patch is a follow up of D96422 and move BoxType to TableGen. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D96476
-
Raphael Isemann authored
Right now when running `expr --top-level -- void foo() {}`, LLDB just prints a cryptic `error: Couldn't find $__lldb_expr() in the module` error. The reason for that is that if we don't have a running process, we try to set our execution policy to always use the IR interpreter (ExecutionPolicyNever) which works even without a process. However that code didn't consider the special ExecutionPolicyTopLevel which we use for top-level expressions. By changing the execution policy to ExecutionPolicyNever, LLDB thinks we're actually trying to interpret a normal expression inside our `$__lldb_expr` function and then fails when looking for it. This just adds an exception for top-level expressions to that code and a bunch of tests. Reviewed By: shafik Differential Revision: https://reviews.llvm.org/D91723
-
- Feb 11, 2021
-
-
Nicolas Vasilache authored
Differential revision: https://reviews.llvm.org/D96488
-
Raphael Isemann authored
Clang emits a warning when accessing an Objective-C getter but not using the result. This gets triggered when just trying to print a getter value in the expression parser (where Clang just sees a normal expression like `obj.getter` while parsing). This patch just disables the warning in the expression parser (similar to what we do with the C++ equivalent of just accessing a member variable but not doing anything with it). Reviewed By: kastiglione Differential Revision: https://reviews.llvm.org/D94307
-
David Green authored
This adds the CostKind to getMVEVectorCostFactor, so that it can automatically account for CodeSize costs, where it returns a cost of 1 not the MVEFactor used for Throughput/Latency. This helps simplify the caller code and allows us to get the codesize cost more correct in more cases.
-
Aaron Ballman authored
With https://reviews.llvm.org/D63376, we began storing the APValue directly into the ConstantExpr object so that we could reuse the calculated value later. However, it missed a case when not in C++11 mode but the expression is known to be constant.
-
Raphael Isemann authored
This used to be a LLDB_LOGF call that used the printf %s syntax. 0ab109d4 changed it to LLDB_LOG but didn't update this format string to use formatv's syntax so this just printed '%s'.
-
Thomas Preud'homme authored
As for SETCC, use a less expensive condition code when generating STRICT_FSETCC if the node is known not to have Nan. Reviewed By: SjoerdMeijer Differential Revision: https://reviews.llvm.org/D91972
-
Andy Wingo authored
This commit regroups commonalities among InputGlobal, InputEvent, and InputTable into the new InputElement. The subclasses are defined inline in the new InputElement.h. NFC. Reviewed By: sbc100 Differential Revision: https://reviews.llvm.org/D94677
-
Joe Ellis authored
This commit moves a line in SelectionDAGBuilder::handleDebugValue to avoid implicitly casting a TypeSize object to an unsigned earlier than necessary. It was possible that we bail out of the loop before the value is ever used, which means we could create a superfluous TypeSize warning. Reviewed By: DavidTruby Differential Revision: https://reviews.llvm.org/D96423
-
Alex Zinenko authored
ModuleTranslation contains multiple fields that keep track of the mappings between various MLIR and LLVM IR components. The original ModuleTranslation extension model was based on inheritance, with these fields being protected and thus accessible in the ModuleTranslation and derived classes. The inheritance-based model doesn't scale to translation of more than one derived dialect and will be progressively replaced with a more flexible one based on dialect interfaces and a translation state that is separate from ModuleTranslation. This change prepares the replacement by making the mappings private and providing public methods to access them. Depends On D96436 Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D96437
-
Alex Zinenko authored
Historically, JitRunner has been registering all available dialects with the context and depending on them without the real need. Make it take a registry that contains only the dialects that are expected in the input and stop linking in all dialects. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D96436
-
Valeriy Savchenko authored
Before this commit, expression statements could not be annotated with statement attributes. Whenever parser found attribute, it unconditionally assumed that it was followed by a declaration. This not only doesn't allow expression attributes to have attributes, but also produces spurious error diagnostics. In order to maintain all previously compiled code, we still assume that GNU attributes are followed by declarations unless ALL of those are statement attributes. And even in this case we are not forcing the parser to think that it should parse a statement, but rather let it proceed as if no attributes were found. Differential Revision: https://reviews.llvm.org/D93630
-
Pavel Labath authored
Our test configuration logic assumes that the tests can be run either with debugserver or with lldb-server. This is not entirely correct, since lldb server has two "personalities" (platform server and debug server) and debugserver is only a replacement for the latter. A consequence of this is that it's not possible to test the platform behavior of lldb-server on macos, as it is not possible to get a hold of the lldb-server binary. One solution to that would be to duplicate the server configuration logic to be able to specify both executables. However, that seems excessively redundant. A well-behaved lldb should be able to find the debug server on its own, and testing lldb with a different (lldb-|debug)server does not seem very useful (even in the out-of-tree debugserver setup, we copy the server into the build tree to make it appear "real"). Therefore, this patch deletes the configuration altogether and changes the low-level server retrieval functions to be able to both lldb-server and debugserver paths. They do this by consulting the "support executable" directory of the lldb under test. Differential Revision: https://reviews.llvm.org/D96202
-
Simon Tatham authored
In the tablegen architecture definition, the Name field for the ARMv87a record read "ARMv86a". All the other records contain their own names. Corrected it to "ARMv87a", and added the necessary value in ARMArchEnum for that to refer to. Reviewed By: pratlucas Differential Revision: https://reviews.llvm.org/D96493
-