- Feb 19, 2020
-
-
Krzysztof Parzyszek authored
-
Florian Hahn authored
-
Florian Hahn authored
Instcombine folds (a + b <u a) to (a ^ -1 <u b) and that does not match the expected pattern in CodeGenPerpare via UAddWithOverflow. This causes a regression over Clang 7 on both X86 and AArch64: https://gcc.godbolt.org/z/juhXYV This patch extends UAddWithOverflow to also catch the XOR case, if the XOR is only used in the ICMP. This covers just a single case, but I'd like to make sure I am not missing anything before tackling the other cases. Reviewers: nikic, RKSimon, lebedev.ri, spatel Reviewed By: nikic, lebedev.ri Differential Revision: https://reviews.llvm.org/D74228
-
Matt Arsenault authored
I'm not sure why this isn't a pattern, but the DAG manually selects this.
-
Pierre-vh authored
Differential Revision: https://reviews.llvm.org/D74822
-
Raphael Isemann authored
All these tests can just call lldbutil.run_to_source_breakpoint instead of reimplementing it.
-
Raphael Isemann authored
TestCPPAuto was only failing on windows due to the std::string copying (which was not related at all to 'auto' functionality). TestStepTarget is now also passing but that seems more that we now have by accident the right behavior in Windows. I'll remove the x-fail just to make the bot green again.
-
Jay Foad authored
Summary: Previously TableGen would crash trying to print the undefined value as an integer. Change-Id: I3900071ceaa07c26acafb33bc49966d7d7a02828 Reviewers: nhaehnle Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D74210
-
Sven van Haastregt authored
The `-fdeclare-opencl-builtins` option was accepting saturated conversions for non-integer types, which contradicts both the OpenCL specification (v2.0 s6.2.3) and Clang's opencl-c.h file.
-
Alexander Belyaev authored
-
Raphael Isemann authored
[lldb][NFC] Pointer to reference conversion for CompilerDeclContext params in ClangExpressionDeclMap. Follow up for f9568a95.
-
Miloš Stojanović authored
Summary: Commit 63bb9fee was reverted in 7603bfb4 because it broke builds that treat warnings as errors. This commit updates the calls to `assembleToStream()` in tests to check that the return value is valid. Original commit message: Followup to D74084. Replace the use of `report_fatal_error()` with returning the error to `llvm-exegesis.cpp` and handling it there. Differential Revision: https://reviews.llvm.org/D74325
-
Pavel Labath authored
The only thing needed was to account for the offset from the debug_cu_index section when searching for the location list. This patch also fixes a bug in the Module::ParseAllDebugSymbols function, which meant that we would only parse the variables of the first compile unit in the module. This function is only used from lldb-test, so this does not fix any real issue, besides preventing me from writing a test for this patch.
-
Pavel Labath authored
This test was getting a bit long. Before adding more checks, group the existing checks according to the matcher used, and break it up into smaller tests.
-
Raphael Isemann authored
-
Sam Parker authored
Check that no Q-regs are live out of the loop, unless the instruction within the loop is predicated on the vctp. Differential Revision: https://reviews.llvm.org/D72713
-
Tamas Berghammer authored
Differential revision: https://reviews.llvm.org/D74768
-
David Green authored
Similar to VADDV and VADDLV that have been added recently, this adds lowering and patterns for VMLAV, VMLAVA, VMLALV and VMLALVA. They perform the same roles as the add's, just folding a mul into the same instruction (and so taking two inputs). As such, they need to be lowered in the same way as the types are often not legal. Differential Revision: https://reviews.llvm.org/D74390
-
Raphael Isemann authored
-
Raphael Isemann authored
Comparing those two `const char *` values relies on the assumption that both strings were created by a ConstString. Let's check that assumption with an assert as otherwise this code silently does nothing and that's not great.
-
Sander de Smalen authored
Summary: This patch adds codegen support for the ACLE builtin types added in: https://reviews.llvm.org/D62960 so that the ACLE builtin types are emitted as corresponding scalable vector types in LLVM. Reviewers: rsandifo-arm, rovka, rjmccall, efriedma Reviewed By: efriedma Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, llvm-commits, cfe-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D74724
-
Georgii Rymar authored
.dynsym and .dynstr are allocatable and therefore normally are placed before non-allocatable .strtab, .shstrtab, .symtab sections. But we are placing them after currently what creates a mix of alloc/non-alloc sections and does not look normal. Differential revision: https://reviews.llvm.org/D74756
-
Oliver Stannard authored
Reverting because this patch is causing ~20 llvm-test-suite failures on a number of different bots: * http://lab.llvm.org:8011/builders/clang-cmake-armv8-lld/builds/3366 * http://lab.llvm.org:8011/builders/clang-cmake-aarch64-lld/builds/8222 * http://lab.llvm.org:8011/builders/clang-cmake-x86_64-avx2-linux/builds/13275 * http://lab.llvm.org:8011/builders/clang-s390x-linux-lnt/builds/17213 This reverts commit cd2c5af6.
-
Simon Pilgrim authored
This is part of the work to remove SelectionDAG::GetDemandedBits and just use SimplifyMultipleUseDemandedBits. Recent experiments raised some v_cvt_f32_ubyte*_e32 regressions, so I've added some additional abilities to performCvtF32UByteNCombine to help unpack byte data more aggressively. We still don't remove all OR(SHL,SRL) patterns as some of the regenerated nodes don't get combined again, but we are getting closer. Differential Revision: https://reviews.llvm.org/D74786
-
David Green authored
Following on from the extra VADDV lowering, this extends things to handle VADDLV which allows summing values into a pair of i32 registers, together treated as a i64. This needs to be done in DAGCombine too as the types are otherwise illegal, which is a fairly simple addition on top of the existing code. There is also a VADDLVA instruction handled here, that adds the incoming values from the two general purpose registers. As opposed to the non-long version where we could just add patterns for add(x, VADDV), the long version needs to handle this early before the i64 has being split into too many pieces. Differential Revision: https://reviews.llvm.org/D74224
-
Petar Avramovic authored
Custom legalize non-power-of-2 and unaligned load and store for MIPS32r5 and older, custom legalize non-power-of-2 load and store for MIPS32r6. Don't attempt to combine non power of 2 loads or unaligned loads when subtarget doesn't support them (MIPS32r5 and older). Differential Revision: https://reviews.llvm.org/D74625
-
Petar Avramovic authored
Improve legality checks for load and store, 4 byte scalar load and store are now legal for all subtargets. During regbank selection 4 byte unaligned loads and stores for MIPS32r5 and older get mapped to gprb. Select 4 byte unaligned loads and stores for MIPS32r5. Fix tests that unintentionally had unaligned load or store. Differential Revision: https://reviews.llvm.org/D74624
-
Florian Hahn authored
On some targets, like SPARC, forming overflow ops is only profitable if the math result is used: https://godbolt.org/z/DxSmdB This patch adds a new MathUsed parameter to allow the targets to make the decision and defaults to only allowing it if the math result is used. That is the conservative choice. This patch also updates AArch64ISelLowering, X86ISelLowering, ARMISelLowering.h, SystemZISelLowering.h to allow forming overflow ops if the math result is not used. On those targets using the overflow intrinsic for the overflow check only generates better code. Reviewers: nikic, RKSimon, lebedev.ri, spatel Reviewed By: lebedev.ri Differential Revision: https://reviews.llvm.org/D74722
-
Kerry McLaughlin authored
Summary: Implements the following intrinsics: - @llvm.aarch64.sve.eorbt - @llvm.aarch64.sve.eortb - @llvm.aarch64.sve.pmullb.pair - @llvm.aarch64.sve.pmullt.pair Reviewers: sdesmalen, c-rhodes, dancgr, cameron.mcinally, efriedma, rengolin Reviewed By: efriedma Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, cfe-commits, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D74769
-
Djordje Todorovic authored
Differential Revision: https://reviews.llvm.org/D73534
-
Tamas Petz authored
With this patch lld recognizes ARM SBREL relocations. R_ARM*_MOVW_BREL relocations are not tested because they are not used. Patch by Tamas Petz Differential Revision: https://reviews.llvm.org/D74604
-
Raphael Isemann authored
This should use -> instead of '.', but the fix-it functionality of the expression evaluator saved us here. Let's use the proper syntax in the first place as we don't want to test fix-its here.
-
Raphael Isemann authored
This directory escaped the modularization effort it seems. Just adding this to the Host module along with the other common headers, which should make this code less likely to break under modules and speed up compilation.
-
David Green authored
We already make use of the VADDV vector reduction instruction for cases where the input and the output start out at the same type. The MVE instruction however will sum into an i32, so if we are summing a v16i8 into an i32, we can still use the same instructions. In terms of IR, this looks like a sext of a legal type (v16i8) into a very illegal type (v16i32) and a vecreduce.add of that into the result. This means we have to catch the pattern early in a DAG combine, producing a target VADDVs/u node, where the signedness is now important. This is the first part, handling VADDV and VADDVA. There are also VADDVL/VADDVLA instructions, which are interesting because they sum into a 64bit value. And VMLAV and VMLALV, which are interesting because they also do a multiply of two values. It may look a little odd in places as a result. On it's own this will probably not do very much, as the vectorizer will not produce this IR yet. Differential Revision: https://reviews.llvm.org/D74218
-
Florian Hahn authored
The tests added in D74425/commit a71feda2 fail with an assertion on macOS, as they seem to require ELF support. Passing a linux triple ensures the object files are using ELF. This fixes some GreenDragon failures.
-
Raphael Isemann authored
Summary: Currently when printing data types we include implicit scopes such as inline namespaces or anonymous namespaces. This leads to command output like this (for `std::set<X>` with X being in an anonymous namespace): ``` (lldb) print my_set (std::__1::set<(anonymous namespace)::X, std::__1::less<(anonymous namespace)::X>, std::__1::allocator<(anonymous namespace)::X> >) $0 = size=0 {} ``` This patch removes all the implicit scopes when printing type names in TypeSystemClang::GetDisplayTypeName so that our output now looks like this: ``` (lldb) print my_set (std::set<X, std::less<X>, std::allocator<X> >) $0 = size=0 {} ``` As previously GetDisplayTypeName and GetTypeName had the same output we actually often used the two as if they are the same method (they were in fact using the same implementation), so this patch also fixes the places where we actually want the display type name and not the actual type name. N... -
Raphael Isemann authored
-
Raphael Isemann authored
All calls to operator new in this test fail for me with: ``` expression --show-types -- *(new foo(47))` Error output: error: Execution was interrupted, reason: internal c++ exception breakpoint(-6).. The process has been returned to the state before expression evaluation. ``` As calling operator new isn't the idea of this test, this patch moves that logic to the binary with some new_* utility functions and explicitly tests this logic in the constructor test (where we can isolate the failures and skip them on Linux).
-
Alexander Belyaev authored
Differential Revision: https://reviews.llvm.org/D74708
-
Petar Avramovic authored
Consider large operands in G_MERGE_VALUES and G_UNMERGE_VALUES as Ambiguous during regbank selection. Introducing new InstType AmbiguousWithMergeOrUnmerge which will allow us to recognize whether to narrow scalar or use s64:fprb. This change exposed a bug when reusing data from TypeInfoForMF. Thus when Instr is about to get destroyed (using narrow scalar) clear its data in TypeInfoForMF. Internal data is saved based on Instr's address, and it will no longer be valid. Add detailed asserts for InstType and operand size. Generate generic instructions instead of MIPS target instructions during argument lowering and custom legalizer. Select G_UNMERGE_VALUES and G_MERGE_VALUES when proper banks are selected: {s32:gprb, s32:gprb, s64:fprb} for G_UNMERGE_VALUES and {s64:fprb, s32:gprb, s32:gprb} for G_MERGE_VALUES. Update tests. One improvement is when floating point argument in gpr(or two gprs) gets passed to another function through gpr unnecessary fpr-to-gpr moves are no longer generated. Differential Revision: https://reviews.llvm.org/D74623
-