Evgeniy Brevnov [Mon, 20 Jan 2020 12:35:39 +0000 (19:35 +0700)]
[DependenceAnalysis] Memory dependence analysis internal caching mechanism is broken in presence of TBAA (PR42733).
Summary:
There is a flaw in memory dependence analysis caching mechanism when memory accesses with TBAA are involved. Assume we first analysed and cached results for access with TBAA. Later we request dependence for the same memory but without TBAA (or different TBAA). By design these two queries should share one entry in the internal cache which corresponds to a general access (without TBAA). Thus upon second request internal cached is cleared and we continue analysis for access as if there is no TBAA.
The problem is that even though internal cache is cleared the set of visited nodes is not. That means we won't traverse visited nodes again and populate internal cache with the corresponding dependence results. So we end up with internal cache in an incomplete state. Current implementation tries to signal that situation by resetting CacheInfo->Pair at line 1104. But that doesn't actually help since later code ignores this invalidation and relies on 'Cache->empty()' property to decide on cache completeness.
Reviewers: reames, hfinkel, chandlerc, fedor.sergeev, asbirlea, fhahn, john.brawn, Prazek, sunfish
Reviewed By: john.brawn
Subscribers: DaniilSuchkov, kosarev, jfb, dantrushin, hiraditya, bmahjour, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D73032
Sanjay Patel [Fri, 21 Feb 2020 12:58:36 +0000 (07:58 -0500)]
[ConstantFold] fold fsub -0.0, undef to undef rather than NaN
A question about this behavior came up on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2020-February/139003.html
...and as part of backend improvements in D73978, but this is an IR
change first because we already have fairly thorough tests in place
here.
We decided not to implement a more general change that would have
folded any FP binop with nearly arbitrary constant + undef operand
to undef because that is not theoretically correct (even if it is
practically correct).
Differential Revision: https://reviews.llvm.org/D74713
serge-sans-paille [Fri, 21 Feb 2020 08:48:27 +0000 (09:48 +0100)]
Detect and disable openmp tests that require multiple hardware processor to run
Team tests seem to require at least two physical cores, and using the same trick
as in https://reviews.llvm.org/D55598 doesn't work (why?) .
Using lit configuration instead.
Differential Revision: https://reviews.llvm.org/D74921
Swiftfuchs [Fri, 21 Feb 2020 12:55:43 +0000 (13:55 +0100)]
[NFC] Corrected a minor typo in a comment
Nicolai Hähnle [Fri, 21 Feb 2020 12:10:18 +0000 (13:10 +0100)]
test/CodeGen/AMDGPU: Add a test case that shows a miscompilation
Related to https://reviews.llvm.org/D74908
Change-Id: I6ebf3b5c7a32493016994f30d6796c41e95aecde
Kern Handa [Fri, 21 Feb 2020 12:25:24 +0000 (13:25 +0100)]
[NFC][mlir] Adding more operators to EDSC TemplatedIndexedValue
This change adds some missing arithmetic and logical operators to
`TemplatedIndexedValue` for EDSC usage.
Differential Revision: https://reviews.llvm.org/D74686
Sebastian Neubauer [Fri, 24 Jan 2020 11:17:08 +0000 (12:17 +0100)]
Make unittests include path relative
This change is relevant when embedding the llvm cmake project into
another project. It should not change the build behavior of a normal
llvm build.
In the case where llvm is embedded as a cmake subproject,
CMAKE_SOURCE_DIR does not point to the expected directory and building
the tests fails.
Using CMAKE_CURRENT_SOURCE_DIR fixes this problem, as it will always
point to the same directory.
Differential Revision: https://reviews.llvm.org/D73466
Haojian Wu [Fri, 21 Feb 2020 08:57:05 +0000 (09:57 +0100)]
[clangd] Allow renaming class templates in cross-file rename.
Summary:
It was disabled because we don't handle explicit template
specialization well (due to the index limitation).
renaming templates is normal in practic, rather than disabling it, this patch
allows to rename them though it is not perfect (just a known limitation).
Context: https://github.com/clangd/clangd/issues/280
Reviewers: kbobyrev
Reviewed By: kbobyrev
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D74709
Raphael Isemann [Thu, 20 Feb 2020 12:23:39 +0000 (13:23 +0100)]
[lldb][NFC] Split up ClangASTSource::FindExternalVisibleDecls
This function has two functions hidden inside it. Let's make
them proper functions.
Haojian Wu [Thu, 20 Feb 2020 14:22:07 +0000 (15:22 +0100)]
[clangd] Fix the incomplete template specialization in findTarget.
Summary:
FindTarget doesn't report the TemplatePattern for incomplete
specialization.
Reviewers: sammccall
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D74900
Craig Topper [Fri, 21 Feb 2020 08:29:18 +0000 (00:29 -0800)]
[X86] Don't bother avoiding illegal FCMOVs if we don't have the cmov subtarget feature.
We'll be forced to emit branches so we might as well use the most
direct condition.
Craig Topper [Fri, 21 Feb 2020 07:53:00 +0000 (23:53 -0800)]
[X86] Make combineCMov not create unsupported FCMOVs when f32/f64 are using X87.
This makes the behavior consistent with what's in LowerSELECT.
Craig Topper [Fri, 21 Feb 2020 07:49:44 +0000 (23:49 -0800)]
[X86] Autogenerate complete checks. NFC
Sam Clegg [Thu, 13 Feb 2020 16:38:18 +0000 (08:38 -0800)]
[WebAssembly] Remove unneeded getWasmKindForNamedSection function
I believe this was carried over from getELFKindForNamedSection since
the wasm backend originally used ELF object writing as a template.
Differential Revision: https://reviews.llvm.org/D74565
Craig Topper [Fri, 21 Feb 2020 05:38:49 +0000 (21:38 -0800)]
[X86] Remove unnecessary isNullConstant in LowerSelect. NFC
At this point in the code we know that Op1 or Op2 is
all ones. Y points to the other operand. In the case that
Op2 is zero, Op1 must be all ones and Y is Op2. The OR
ORs Y into Res. But if Y is 0 the OR will be folded away by
getNode so we don't need to check for it.
Jan Vesely [Tue, 4 Feb 2020 21:13:17 +0000 (16:13 -0500)]
libclc: Use acos implementation from amd_builtins
Fixes acos CTS (1 thread, scalar) on AMD Turks.
Reviewer: tstellar
Differential Revision: https://reviews.llvm.org/D74011
Craig Topper [Fri, 21 Feb 2020 03:56:44 +0000 (19:56 -0800)]
[X86] Add CMOV_VR64 pseudo instruction for MMX. Remove mmx handling from combineSelect.
The combineSelect code was casting to i64 without any check that
i64 was legal. This can break after type legalization.
It also required splitting the mmx register on 32-bit targets.
It's not clear that this makes sense. Instead switch to using
a cmov pseudo like we do for XMM/YMM/ZMM.
Martijn Vels [Wed, 19 Feb 2020 21:27:50 +0000 (16:27 -0500)]
Split _LIBCPP_STRING_EXTERN_TEMPLATE_LIST up into a V1 and UNSTABLE version.
This change splits the _LIBCPP_STRING_EXTERN_TEMPLATE_LIST up into a _LIBCPP_STRING_V1_EXTERN_TEMPLATE_LIST containing the stable ABI, and a _LIBCPP_STRING_UNSTABLE_EXTERN_TEMPLATE_LIST containing the unstable ABI.
The purpose is to explicitly define and maintain the two lists, where the unstable ABI allows for ABI breaking changes for purposes such as optimization while offering a strong guarantee that any change inside the unstable ABI does not affect the stable ABI.
As per the comment in the __string header, we do still allow etries to be added to the stable ABI list as the c++ versions and corresponding c++ std API changes.
River Riddle [Fri, 21 Feb 2020 04:08:33 +0000 (20:08 -0800)]
[mlir] Use getOperation()->setAttr when generating attribute set
methods.
This avoids the need to resolve overloads when the current operation
also defines a 'setAttr' method.
Johannes Doerfert [Thu, 20 Feb 2020 22:43:03 +0000 (16:43 -0600)]
[OpenMP][NFC] Remove leftover debug messages
Jim Lin [Fri, 21 Feb 2020 01:28:49 +0000 (09:28 +0800)]
[XCore] Add instruction pattern for bitrev
Summary:
Add support for lowering bitreverse to the bitrev instruction.
Fix https://bugs.llvm.org/show_bug.cgi?id=34628.
Reviewers: RKSimon, rtrieu, robertlytton
Reviewed By: RKSimon
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D74748
Vedant Kumar [Thu, 20 Feb 2020 22:16:25 +0000 (14:16 -0800)]
[Dominators] Use Instruction::comesBefore for block-local queries, NFC
Use the lazy instruction ordering facility for block-local dominance
queries.
Differential Revision: https://reviews.llvm.org/D74931
Bill Wendling [Fri, 21 Feb 2020 00:22:35 +0000 (16:22 -0800)]
Filter callbr insts from critical edge splitting
Similarly to how splitting predecessors with an indirectbr isn't handled
in the generic way, we also shouldn't split callbrs, for similar
reasons.
Michael Spencer [Thu, 20 Feb 2020 23:25:36 +0000 (15:25 -0800)]
[libunwind][CMake] Treat S files as C to work around CMake bug.
The OSX_ARCHITECTURES property is supposed to add the -arch flag when
targeting Apple platforms. However, due to a bug in CMake
(https://github.com/Kitware/CMake/blob/master/Source/cmLocalGenerator.cxx#L1780),
this does not apply to assembly files. This results in a linker error
when trying to build libunwind for i386 on MacOS.
rdar://
59642189
Mark de Wever [Thu, 20 Feb 2020 23:13:38 +0000 (18:13 -0500)]
[libc++][regex] Validate backreferences in the constructor.
This patch enables throwing exceptions for invalid backreferences
in the constructor when using the basic, extended, grep, or egrep grammar.
This fixes bug 34297.
Differential Revision: https://reviews.llvm.org/D62453
Craig Topper [Thu, 20 Feb 2020 22:00:17 +0000 (14:00 -0800)]
[X86] Add CMOV_VK1 pseudo so we don't crash on v1i1 ISD::SELECT
Craig Topper [Thu, 20 Feb 2020 21:46:56 +0000 (13:46 -0800)]
[X86] Expand vselect of v1i1 under avx512.
We already do this for v2i1, v4i1, etc.
Craig Topper [Thu, 20 Feb 2020 21:37:09 +0000 (13:37 -0800)]
[X86] Custom legalize v1i1 UADDSAT/USUBSAT/SADDSAT/UADDSAT to match v2i1/v4i1/v8i1 etc.
Craig Topper [Thu, 20 Feb 2020 21:28:12 +0000 (13:28 -0800)]
[X86] Fix a couple copy mistakes in v4i1 or/and/xor isel patterns.
VK1 was being used as the output of the copy to regclass, but it
should be VK2/VK4. Shouldn't matter in practice though since
VK1/VK2/VK4/VK8/VK16 are all identicaly and just have different VTs.
Craig Topper [Thu, 20 Feb 2020 21:22:38 +0000 (13:22 -0800)]
[X86] Custom legalize v1i1 add/sub/mul to xor/xor/and with avx512.
We already did this for v2i1, v4i1, v8i1, etc.
Louis Dionne [Thu, 20 Feb 2020 23:03:10 +0000 (18:03 -0500)]
[libc++] Explain XFAILs with std::uncaught_exceptions test
Jonas Devlieghere [Thu, 20 Feb 2020 22:51:57 +0000 (14:51 -0800)]
[lldb/Test] Remove stale README in test/API
Now that the test live in the same directory the README is no longer
relevant.
River Riddle [Thu, 20 Feb 2020 22:37:25 +0000 (14:37 -0800)]
[mlir][Parser] Update DenseElementsAttr to print in hex when the number of elements is over a certain threshold.
Summary: DenseElementsAttr is used to store tensor data, which in some cases can become extremely large(100s of mb). In these cases it is much more efficient to format the data as a string of hex values instead.
Differential Revision: https://reviews.llvm.org/D74922
Scott Linder [Thu, 20 Feb 2020 22:36:56 +0000 (17:36 -0500)]
Revert "[Driver] Escape the program path for -frecord-command-line"
This reverts commit
6123074d0c0de3614f1552f2f2d6b9db7b32cebe.
Quoting/escaping rules seem host specific, so the test is failing on
some bots.
Jonas Devlieghere [Thu, 20 Feb 2020 22:34:49 +0000 (14:34 -0800)]
[lldb/Plugin] Don't mark ProcessNetBSD as a plugin
ProcessNetBSD has no initializers so it's just a regular library and
shouldn't have the PLUGIN argument in add_lldb_library.
River Riddle [Thu, 20 Feb 2020 22:16:20 +0000 (14:16 -0800)]
[mlir] Use LLJIT::getMainJITDylib instead of hardcoding '<main>'
This fixes test failures caused by a change to the name of the main
dylib, now called 'main'. It also hardens the engine against potential
future changes to the name.
aartbik [Thu, 20 Feb 2020 21:57:54 +0000 (13:57 -0800)]
[mlir] [VectorOps] Multi-dim reductions for lowering vector.contract
Summary:
This implements the last step for lowering vector.contract progressively
to LLVM IR (except for masks). Multi-dimensional reductions that remain
after expanding all parallel dimensions are lowered into into simpler
vector.contract operations until a trivial 1-dim reduction remains.
Reviewers: nicolasvasilache, andydavis1
Reviewed By: andydavis1
Subscribers: mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, liufengdb, Joonsoo, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D74880
Florian Hahn [Thu, 20 Feb 2020 18:46:29 +0000 (19:46 +0100)]
[SCCP] Do not mark unknown loads as overdefined.
For tracked globals that are unknown after solving, we expect all
non-store uses to be replaced.
This is a follow-up to
f8045b250d80, which removed forcedconstant.
We should not mark unknown loads as overdefined, as they either load
from an unknown pointer or an undef global. Restore the original logic
for loads.
Eli Friedman [Wed, 29 Jan 2020 03:17:30 +0000 (19:17 -0800)]
[SVE] Add support for lowering GEPs involving scalable vectors.
This includes both GEPs where the indexed type is a scalable vector, and
GEPs where the result type is a scalable vector.
Differential Revision: https://reviews.llvm.org/D73602
Scott Linder [Thu, 20 Feb 2020 21:31:17 +0000 (16:31 -0500)]
[Driver] Escape the program path for -frecord-command-line
Similar to the rest of the command line that is recorded, the program
path must also have spaces and backslashes escaped. Without this
parsing the recorded command line becomes hard on platforms like
Windows where spaces and backslashes are common.
Patch By: Ravi Ramaseshan
Differential Revision: https://reviews.llvm.org/D74811
shafik [Thu, 20 Feb 2020 20:28:46 +0000 (12:28 -0800)]
[ASTImporter] Add linkage check to ASTNodeImporter::hasSameVisibilityContext and rename to hasSameVisibilityContextAndLinkage
This fixed is based on the assert in LinkageComputer::getLVForDecl(...) which assumes that all the decls in a redecl chain have the same linkage.
Differential Revision: https://reviews.llvm.org/D74639
David Tenty [Thu, 20 Feb 2020 20:39:16 +0000 (15:39 -0500)]
[AIX] Improve 32/64-bit build configuration
Summary:
AIX supports both 32-bit and 64-bit environments (with 32-bit being the default). This patch improves support for building LLVM on AIX in both 32-bit and 64-bit mode.
- Change host detection to return correct 32/64-bit triple as config_guess does not return the correct version on 64-bit. This can confuse JIT tests and other things that care about what the host triple is.
- Remove manual setting of 64-bit flags on AIX. AIX provides OBJECT_MODE environment variable to enable the user to obtain a 64-bit development environment. CMake will properly set these flags provided the user sets the correct OBJECT_MODE before configuring and setting them manually will interfere with 32-bit builds.
- Don't present the LLVM_BUILD_32_BITS option on AIX, users should use OBJECT_MODE when running CMake instead.
Reviewers: hubert.reinterpretcast, DiggerLin, stevewan
Reviewed By: DiggerLin, stevewan
Subscribers: mgorny, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D74256
Craig Topper [Thu, 20 Feb 2020 20:28:54 +0000 (12:28 -0800)]
Recommit "[X86] Replace a bad use of MVT::getVectorVT with EVT::getVectorVT""
With the correct author this time
Craig Topper [Thu, 20 Feb 2020 20:28:01 +0000 (12:28 -0800)]
Revert
714265dabb606bfef2f85694234f152edbfa91ac "[X86] Replace a bad use of MVT::getVectorVT with EVT::getVectorVT"
I accidentally messed up the author on the previous commit somehow.
Quentin Colombet [Thu, 20 Feb 2020 19:27:36 +0000 (11:27 -0800)]
[X86] Replace a bad use of MVT::getVectorVT with EVT::getVectorVT
The type here isn't guaranteed to be a simple type.
Fixes PR44976
Nico Weber [Thu, 20 Feb 2020 20:15:54 +0000 (15:15 -0500)]
Revert "libclang: Add static build support for Windows" and
follow-up "libclang: Make shared object symbol exporting by default"
This reverts commit
7a7c753b0cca6abb61f054842fb087dfc30dc563.
This reverts commit
7ff1f55a1219719f57a6f7905c26ce41d1767e4c.
They broke building libclang.dll on Windows, see
https://reviews.llvm.org/D74564
Nico Weber [Thu, 20 Feb 2020 20:11:13 +0000 (15:11 -0500)]
Revert "[AArch64][SVE] Add intrinsics for SVE2 bitwise ternary operations"
This reverts commit
ce70e2899879e092b153a4078b993833b6696713.
It broke MC/AArch64/SVE2/bsl-diagnostics.s everywhere.
Sanjay Patel [Thu, 20 Feb 2020 18:41:56 +0000 (13:41 -0500)]
[ConstantFold] add/move tests for FP with undef operand; NFC
Sourabh Singh Tomar [Thu, 20 Feb 2020 19:42:52 +0000 (01:12 +0530)]
Revert "[NFCI][DebugInfo]: Corrected a Typo."
This reverts commit
3e1090922a0b808f424ff424b744752b0d53a3ee
as per Paul Robinson's suggestion.
Francesco Petrogalli [Thu, 20 Feb 2020 19:37:02 +0000 (19:37 +0000)]
[llvm][build] Fix shared lib builds. [NFC]
The code at https://reviews.llvm.org/D74808 has broken builds that are
configured with -DBUILD_SHARED_LIBS=On.
This patch adds the correct library dependencies.
Richard Smith [Thu, 20 Feb 2020 19:40:09 +0000 (11:40 -0800)]
[cxx_status] Update -std= instructions for C++20.
We merged support for -std=c++20 to the Clang 10 branch, so -std=c++2a
is only needed in Clang 9 and earlier.
Quentin Colombet [Thu, 20 Feb 2020 19:27:36 +0000 (11:27 -0800)]
[GISel][KnownBits] Give up on PHI analysis as soon as we don't know anything
When analyzing PHIs, we gather the known bits for every operand and
merge them together to get the known bits of the result of the PHI.
It is not unusual that merging the information leads to know nothing
on the result (e.g., phi a: i8 3, b: i8 unknown, ..., after looking at the
second argument we know we will know nothing on the result), thus, as
soon as we reach that state, stop analyzing the following operand (i.e.,
on the previous example, we won't process anything after looking at `b`).
This improves compile time in particular with PHIs with a large number
of operands.
NFC.
Jan Korous [Mon, 17 Feb 2020 22:55:49 +0000 (14:55 -0800)]
[clang][doxygen] Fix false -Wdocumentation warning for tag typedefs
For tag typedefs like this one:
/*!
@class Foo
*/
typedef class { } Foo;
clang -Wdocumentation gives:
warning: '@class' command should not be used in a comment attached to a
non-struct declaration [-Wdocumentation]
... while doxygen seems fine with it.
Differential Revision: https://reviews.llvm.org/D74746
David Tenty [Thu, 20 Feb 2020 19:22:16 +0000 (14:22 -0500)]
[AIX] Pack BasicBlockBits
Summary:
D51664 introduces a new structure BasicBlockBits which it expects to be
packed a certain way. This change is very similar to D60164, and we apply the
same fix:
"On AIX, the canonical layout of bit-fields would cause
these ... to span four bytes. Applying the pack pragma for compilers that
employ the AIX canonical layout allows these ... to fit within the expected
two bytes. In the future, the pragma would also likely need to be applied when
building with Clang on AIX."
Reviewers: jasonliu, hubert.reinterpretcast, sfertile, xingxue
Reviewed By: sfertile
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D74911
Cristian Adam [Thu, 20 Feb 2020 19:24:52 +0000 (14:24 -0500)]
libclang: Make shared object symbol exporting by default
https://reviews.llvm.org/D74564 enabled static building for libclang,
and for non CMake consumers they had to set the `CMAKE_EXPORTS` define
when consuming libclang.
This commit makes the non CMake users of the static building have to define `CMAKE_NO_EXPORTS`.
Differential Revision: https://reviews.llvm.org/D74907
Jonathan Coe [Thu, 20 Feb 2020 19:23:38 +0000 (19:23 +0000)]
[clang-format] Merge name and colon into a single token for C# named arguments
Summary:
Merge 'argumentName' and ':' into a single token in foo(argumentName: bar).
Add C# named argument as a token type.
Reviewers: krasimir, MyDeveloperDay
Reviewed By: krasimir
Tags: #clang-format
Differential Revision: https://reviews.llvm.org/D74894
Simon Pilgrim [Thu, 20 Feb 2020 19:22:37 +0000 (19:22 +0000)]
[X86] Fix NSW/NUW typo in avg test (PR44973)
The not_avg_v16i8_wide_constants test shouldn't assume NSW/NUW for the addition of -1 - copy + paste typo from other avg tests
Lang Hames [Thu, 20 Feb 2020 19:04:35 +0000 (11:04 -0800)]
[ORC] Add a convenience method for setting the ExecutionSession to LLJITBuilder.
Can be used to set a custom pre-configured ExecutionSession for the LLJIT or
LLLazyJIT instance being constructed.
Lang Hames [Thu, 20 Feb 2020 18:41:07 +0000 (10:41 -0800)]
[ORC][examples] Fix ThinLtoJIT example after changes in
85fb997659b.
Matthias Kramm [Thu, 20 Feb 2020 19:08:59 +0000 (11:08 -0800)]
Fix some typos in the MLIR documentation.
Summary: Fix minor typos in the tutorial and the "writing a pass" page.
Differential Revision: https://reviews.llvm.org/D74905
Alex Brachet [Thu, 20 Feb 2020 19:05:34 +0000 (14:05 -0500)]
[libc] Add Initial Support for Signals
Summary:
This patch adds signal support on Linux. The current implementation gets the SIG* macros and types like `sigset_t` from <linux/signals.h>
This patch also adds raise(3), and internal routines `block_all_signals` and `restore_signals`
Reviewers: sivachandra, MaskRay, gchatelet
Reviewed By: sivachandra
Subscribers: libc-commits, mgorny, tschuett
Differential Revision: https://reviews.llvm.org/D74528
Sanjay Patel [Thu, 20 Feb 2020 18:41:56 +0000 (13:41 -0500)]
[x86] allow peeking through an extract_subvector to find a splatted operand
The motivating case is seen in "splat4_v8f32_load_store" and based on code in PR42024:
https://bugs.llvm.org/show_bug.cgi?id=42024
(I haven't stepped through the v8i32 sibling test yet to see why that diverged.)
There are other potential improvements visible like allowing scalarization or vector
narrowing.
Differential Revision: https://reviews.llvm.org/D74909
Sean Fertile [Thu, 20 Feb 2020 18:22:23 +0000 (13:22 -0500)]
[PowerPC][NFC] Cleanup some of the Darwin mentions in the README.txt.
Francis Visoiu Mistrih [Thu, 20 Feb 2020 18:51:25 +0000 (10:51 -0800)]
Revert "[macho][NFC] Extract all CPU_(SUB_)TYPE logic to libObject"
This reverts commit
726c342ce27ada28efe90cb04ffb69c75065710a.
This breaks the windows bots with linker errors.
River Riddle [Thu, 20 Feb 2020 18:31:44 +0000 (10:31 -0800)]
[mlir] Refactor the structure of the 'verifyConstructionInvariants' methods.
Summary:
The current structure suffers from several problems, but the main one is that a construction failure is impossible to debug when using the 'get' methods. This is because we only optionally emit errors, so there is no context given to the user about the problem. This revision restructures this so that errors are always emitted, and the 'get' methods simply pass in an UnknownLoc to emit to. This allows for removing usages of the more constrained "emitOptionalLoc", as well as removing the need for the context parameter.
Fixes [PR#44964](https://bugs.llvm.org/show_bug.cgi?id=44964)
Differential Revision: https://reviews.llvm.org/D74876
Francis Visoiu Mistrih [Wed, 19 Feb 2020 00:39:05 +0000 (16:39 -0800)]
[macho][NFC] Extract all CPU_(SUB_)TYPE logic to libObject
This moves all the logic of converting LLVM Triples to
MachO::CPU_(SUB_)TYPE from the specific target (Target)AsmBackend to
more convenient functions in libObject.
This also gets rid of the separate two X86AsmBackend classes.
Differential Revision: https://reviews.llvm.org/D74808
Simon Pilgrim [Thu, 20 Feb 2020 18:22:45 +0000 (18:22 +0000)]
[DAGCombiner] Use SDValue::getConstantOperandAPInt helper where possible. NFC.
Jordan Rupprecht [Wed, 19 Feb 2020 20:01:09 +0000 (12:01 -0800)]
[lldb] Fix version string when using LLDB_REVISION but not LLDB_REPOSITORY
Summary:
lldb's format string (line one) is:
`lldb version $clang_version ($lldb_repo revision $lldb_revision)`
When only using $lldb_revision and not $lldb_repo, this might look like:
`lldb version 11 ( revision 12345)`
which looks pretty ugly.
Aside: I'm not sure we really need all the different versions since we've moved to the monorepo layout -- I don't think anyone is using different llvm/clang/lldb revisions, are they? We could likely tidy this up further if we knew how people consumed the output of lldb --version.
Reviewers: labath, JDevlieghere, friss
Subscribers: lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D74859
Muhammad Omair Javaid [Thu, 20 Feb 2020 17:15:37 +0000 (22:15 +0500)]
Add target.xml support for qXfer request.
Summary:
Requesting registers one by one takes a while in our project.
We want to get rid of it by using target.xml.
Reviewers: jarin, labath, omjavaid
Reviewed By: labath, omjavaid
Subscribers: omjavaid, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D74217
Louis Dionne [Thu, 20 Feb 2020 17:33:17 +0000 (12:33 -0500)]
[clang] Fix search path logic for C_INCLUDE_DIRS
For each absolute path given to C_INCLUDE_DIRS, we want it to be added
as-is to the include search path. Relative paths should be prefixed
with the sysroot.
Thanks to Marco Hinz for the patch.
Differential Revision: https://reviews.llvm.org/D69221
Craig Topper [Thu, 20 Feb 2020 17:27:18 +0000 (09:27 -0800)]
[X86] Fix a -Wparentheses warning. NFC
Eugene Zelenko [Thu, 20 Feb 2020 17:30:11 +0000 (17:30 +0000)]
[clang-tidy] rename_check.py: maintain alphabetical order in Renamed checks section
Summary:
Also use //check// in add_new_check.py for terminology consistency.
PS
My GitHub ID is [[ https://github.com/EugeneZelenko | EugeneZelenko ]], if it's necessary for attribution.
Reviewers: alexfh, hokein, aaron.ballman, njames93, MyDeveloperDay
Reviewed By: njames93
Subscribers: Andi, xazax.hun, cfe-commits
Tags: #clang-tools-extra, #clang
Differential Revision: https://reviews.llvm.org/D73580
Logan Smith [Thu, 20 Feb 2020 17:23:36 +0000 (12:23 -0500)]
[libc++] Fix unqualified call to 'ref' inside shared_ptr(unique_ptr<U, D>)
This prevents unintended ADL: https://gcc.godbolt.org/z/EHw3Gy
This issue was mentioned as an addendum in PR44398.
Differential Revision: https://reviews.llvm.org/D74289
Logan Smith [Thu, 20 Feb 2020 17:20:21 +0000 (12:20 -0500)]
[libc++] Fix unintended ADL inside ref(reference_wrapper<T>) and cref(reference_wrapper<T>)
This patch qualifies calls to ref and cref inside ref(reference_wrapper<T>)
and cref(reference_wrapper<T>), respectively. These previously unqualified
calls could break in the presence of user functions called ref/cref inside
associated namespaces: https://gcc.godbolt.org/z/8VfprT
Fixes PR44398.
Differential Revision: https://reviews.llvm.org/D74287
Craig Topper [Thu, 20 Feb 2020 16:49:09 +0000 (08:49 -0800)]
[X86] Rewrite LowerBRCOND to remove dead code and handle ISD::SETCC and overflow ops directly.
There's a lot of old leftover code in LowerBRCOND. Especially
the detecting or AND or OR of X86ISD::SETCC nodes. Those were
needed before LegalizeDAG was changed to visit nodes before
their operands.
It also relied on reversing the output of LowerSETCC to find the
flags producing node to use for the X86ISD::BRCOND node.
Rather than using LowerSETCC this patch uses emitFlagsForSetcc to
handle the integer ISD::SETCC case. This gives the flag producer
and the comparison code to use directly. I've removed the addTest
flag and just produce a X86ISD::BRCOND and return immediately.
Floating point ISD::SETCC case is just an X86ISD::FCMP with special
care for OEQ and UNE derived from the previous code. I've left
f128 out so it will emit a test. And LowerSETCC will be called
later to produce a libcall and X86ISD::SETCC. We have combines
that can merge the test and X86ISD::SETCC.
We need to handle two cases for overflow ops. Either they are used
directly or they have a seteq 0 or setne 1 to invert the overflow.
The old code did not handle the setne 1 case, but I think some
other combines were making up for it.
If we fail to find a condition, we'll wrap an AND with 1 on the
original condition and tell emitFlagsForSetcc to emit a compare
with 0. This will pickup the LowerAndToBT and or the EmitTest case.
I kept the isTruncWithZeroHighBitsInput call, but we might be able
to fold that in to emitFlagsForSetcc.
Differential Revision: https://reviews.llvm.org/D74750
Craig Topper [Thu, 20 Feb 2020 16:30:22 +0000 (08:30 -0800)]
[AArch64] Move isOverflowIntrOpRes help function to the ISD namespace in SelectionDAG.h. NFC
Enables sharing with an upcoming X86 change.
Sanjay Patel [Thu, 20 Feb 2020 16:29:47 +0000 (11:29 -0500)]
[x86] add vector tests for splatted memory ops; NFC
These correspond to patterns seen in PR42024:
https://bugs.llvm.org/show_bug.cgi?id=42024
Danilo Carvalho Grael [Thu, 20 Feb 2020 16:24:50 +0000 (11:24 -0500)]
[AArch64][SVE] Add intrinsics for SVE2 bitwise ternary operations
Summary:
Add intrinsics for the following operations:
- eor3, bcax
- bsl, bsl1n, bsl2n, nbsl
Reviewers: kmclaughlin, c-rhodes, sdesmalen, efriedma, rengolin
Reviewed By: efriedma
Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D74785
Craig Topper [Thu, 20 Feb 2020 16:09:58 +0000 (08:09 -0800)]
[X86] Add DAG combines to form CVTPH2PS/CVTPS2PH from vXf16->vXf32/vXf64 fp_extends and vXf32->vXf16 fp_round.
Only handle power of 2 element count for simplicity. Not sure what to do with vXf64->vXf16 fp_round to avoid double rounding
Differential Revision: https://reviews.llvm.org/D74886
Utkarsh Saxena [Thu, 20 Feb 2020 16:09:58 +0000 (17:09 +0100)]
[clang][analyzer] Modify include AllocationState.h in PutenvWithAutoChecker.cpp
Summary:
PutenvWithAutoChecker.cpp used to include "AllocationState.h" that is present in project root.
This makes build systems like blaze unhappy. Made it include the header relative to source file.
Reviewers: kadircet
Subscribers: xazax.hun, baloghadamsoftware, szepet, a.sidorin, mikhail.ramalho, Szelethus, donat.nagy, dkrupp, Charusso, martong, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D74906
Simon Pilgrim [Thu, 20 Feb 2020 15:49:22 +0000 (15:49 +0000)]
[DAGCombine] visitEXTRACT_VECTOR_ELT - add SimplifyDemandedBits multi use support
Similar to what we already do with SimplifyDemandedVectorElts, call SimplifyDemandedBits across all the extracted elements of the source vector, treating it as single use.
There's a minor regression in store-weird-sizes.ll which will be addressed in an upcoming SimplifyDemandedBits patch.
Hans Wennborg [Thu, 20 Feb 2020 15:35:30 +0000 (16:35 +0100)]
Add #include <condition_variable> to fix build after
85fb997659b5
See https://reviews.llvm.org/D74300#1884614
Sanjay Patel [Thu, 20 Feb 2020 15:32:18 +0000 (10:32 -0500)]
[x86] regenerate test checks with less shuffle scrubbing; NFC
For shuffles with memory operands, we generally don't want to
hide the asm because we want to verify that the address offsets
are as expected.
Sean Fertile [Thu, 20 Feb 2020 14:52:11 +0000 (09:52 -0500)]
[PowerPC][NFC] We do not save/restore vrsave for any remaining subtargets.
Extend lit test to show that we don't save or restore vrsave register
when expanding @llvm.eh.unwind.init().
Sam Parker [Thu, 20 Feb 2020 14:58:08 +0000 (14:58 +0000)]
[NFC][RDA] Break-up initialization code
Separate out the initialization code from the loop traversal so
that the analysis can be reset and re-run by a user.
Matt Arsenault [Thu, 20 Feb 2020 14:42:32 +0000 (09:42 -0500)]
AMDGPU: Fix v2i64<->v4f32 bitcast
I'm not sure how to test the v2i64->v4f32 case since I can't think of
any v2i64 cases that won't legalize to v4i32.
Sanjay Patel [Thu, 20 Feb 2020 14:22:56 +0000 (09:22 -0500)]
[Utils][x86] add an option to reduce scrubbing of shuffles with memops
I was drafting a patch that would increase broadcast load usage,
but our shuffle scrubbing makes it impossible to see if the memory
operand offset was getting created correctly. I'm proposing to make
that an option (defaulted to 'off' for now to reduce regression
test churn).
The updated files provide examples of tests where we can now verify
that the pointer offset for a loaded memory operand is correct. We
still have stack and constant scrubbing that can obscure the operand
even if we don't scrub the entire instruction.
Differential Revision: https://reviews.llvm.org/D74775
Sebastian Neubauer [Thu, 13 Feb 2020 08:43:08 +0000 (09:43 +0100)]
[AMDGPU] Don’t marke the .note section as ALLOC
Marking a section as ALLOC tells the ELF loader to load the section into memory.
As we do not want to load the notes into VRAM, the flag should not be there.
Differential Revision: https://reviews.llvm.org/D74600
Simon Pilgrim [Thu, 20 Feb 2020 13:54:20 +0000 (13:54 +0000)]
Regenerate rotate test. NFC.
Haojian Wu [Wed, 19 Feb 2020 11:27:12 +0000 (12:27 +0100)]
[clang][Index] Fix the incomplete instantiations in libindex.
Summary:
libindex will canonicalize references to template instantiations:
- 1) reference to an explicit template specialization, report the specializatiion
- 2) otherwise, report the primary template
but 2) is not true for incomplete instantiations, this patch fixes this.
Fixes https://github.com/clangd/clangd/issues/287
Reviewers: kadircet
Subscribers: ilya-biryukov, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D74830
Djordje Todorovic [Thu, 20 Feb 2020 12:43:01 +0000 (13:43 +0100)]
Revert "Reland "[DebugInfo] Enable the debug entry values feature by default""
This reverts commit rGfaff707db82d.
A failure found on an ARM 2-stage buildbot.
The investigation is needed.
Roman Lebedev [Thu, 20 Feb 2020 13:39:26 +0000 (16:39 +0300)]
[Sema] Demote call-site-based 'alignment is a power of two' check for AllocAlignAttr into a warning
Summary:
As @rsmith notes in https://reviews.llvm.org/D73020#inline-672219
while that is certainly UB land, it may not be actually reachable at runtime, e.g.:
```
template<int N> void *make() {
if ((N & (N-1)) == 0)
return operator new(N, std::align_val_t(N));
else
return operator new(N);
}
void *p = make<7>();
```
and we shouldn't really error-out there.
That being said, i'm not really following the logic here.
Which ones of these cases should remain being an error?
Reviewers: rsmith, erichkeane
Reviewed By: erichkeane
Subscribers: cfe-commits, rsmith
Tags: #clang
Differential Revision: https://reviews.llvm.org/D73996
Konrad Kleine [Thu, 20 Feb 2020 13:20:41 +0000 (08:20 -0500)]
[lldb]: fix typo in lldb-gdb-remote.txt
Summary: The logic of the sentence made more sense when "with" is replaced with "without".
Reviewers: labath
Subscribers: lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D74895
Pavel Labath [Thu, 20 Feb 2020 12:42:52 +0000 (13:42 +0100)]
[lldb] Add boilerplate to recognize the .debug_tu_index section
It's just like debug_cu_index, only for type units.
Andrzej Warzynski [Thu, 20 Feb 2020 10:40:39 +0000 (10:40 +0000)]
[AArch64][SVE] Re-arrange definitions in AArch64SVEInstrInfo.td (NFC)
Re-arrange definitions related to loads and stores so that they are
grouped together.
This patch implements only non-functional changes.
Simon Pilgrim [Thu, 20 Feb 2020 11:10:56 +0000 (11:10 +0000)]
[AMDGPU] simplifyI24 - replace GetDemandedBits with SimplifyMultipleUseDemandedBits
GetDemandedBits mostly just calls SimplifyMultipleUseDemandedBits now, but it does a very blunt constant simplification that SimplifyMultipleUseDemandedBits avoids.
If we need to demand bits from constants we should handle this through ShrinkDemandedConstant/targetShrinkDemandedConstant.
@arsenm confirmed that the sign extended immediates are better for code size.
Differential Revision: https://reviews.llvm.org/D74857
dfukalov [Wed, 19 Feb 2020 11:05:33 +0000 (14:05 +0300)]
SpeculativeExecution: fixed ingoring free execution
Summary:
After updating cost model in AMDGPU target (
47a5c36b37f0) the pass started to
ignore some BBs since they got all instructions estimated as free.
Reviewers: arsenm, chandlerc, nhaehnle
Reviewed By: nhaehnle
Subscribers: jvesely, wdng, nhaehnle, tpr, hiraditya, kerbowa, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D74825
Roman Lebedev [Thu, 20 Feb 2020 11:06:40 +0000 (14:06 +0300)]
[clang-tidy] misc-no-recursion: point to the function defs, not decls
Results in slightly better UX.
This actually was the initial intent, but it kinda got lost along the way.
Mikhail Maltsev [Thu, 20 Feb 2020 10:51:19 +0000 (10:51 +0000)]
[ARM,MVE] Add vqdmull[b,t]q intrinsic families
Summary:
This patch adds two families of ACLE intrinsics: vqdmullbq and
vqdmulltq (including vector-vector and vector-scalar variants) and the
corresponding LLVM IR intrinsics llvm.arm.mve.vqdmull and
llvm.arm.mve.vqdmull.predicated.
Reviewers: simon_tatham, MarkMurrayARM, dmgreen, ostannard
Reviewed By: MarkMurrayARM
Subscribers: kristof.beyls, hiraditya, cfe-commits, llvm-commits
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D74845
serge-sans-paille [Thu, 20 Feb 2020 10:22:35 +0000 (11:22 +0100)]
[NFC] Remove ar/ranlib test noise during cmake step
At least on RHEL, ar outputs on stderr a message similar to
.../bin/ar: creating t.a
Which creates noise during the cmake step. Get rid of it.