platform/upstream/llvm.git
4 years ago[mlir][Parser] Update DenseElementsAttr to print in hex when the number of elements...
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

4 years agoRevert "[Driver] Escape the program path for -frecord-command-line"
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.

4 years ago[lldb/Plugin] Don't mark ProcessNetBSD as a plugin
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.

4 years ago[mlir] Use LLJIT::getMainJITDylib instead of hardcoding '<main>'
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.

4 years ago[mlir] [VectorOps] Multi-dim reductions for lowering vector.contract
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

4 years ago[SCCP] Do not mark unknown loads as overdefined.
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.

4 years ago[SVE] Add support for lowering GEPs involving scalable vectors.
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

4 years ago[Driver] Escape the program path for -frecord-command-line
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

4 years ago[ASTImporter] Add linkage check to ASTNodeImporter::hasSameVisibilityContext and...
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

4 years ago[AIX] Improve 32/64-bit build configuration
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

4 years agoRecommit "[X86] Replace a bad use of MVT::getVectorVT with EVT::getVectorVT""
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

4 years agoRevert 714265dabb606bfef2f85694234f152edbfa91ac "[X86] Replace a bad use of MVT:...
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.

4 years ago[X86] Replace a bad use of MVT::getVectorVT with EVT::getVectorVT
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

4 years agoRevert "libclang: Add static build support for Windows" and
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

4 years agoRevert "[AArch64][SVE] Add intrinsics for SVE2 bitwise ternary operations"
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.

4 years ago[ConstantFold] add/move tests for FP with undef operand; NFC
Sanjay Patel [Thu, 20 Feb 2020 18:41:56 +0000 (13:41 -0500)]
[ConstantFold] add/move tests for FP with undef operand; NFC

4 years agoRevert "[NFCI][DebugInfo]: Corrected a Typo."
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.

4 years ago[llvm][build] Fix shared lib builds. [NFC]
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.

4 years ago[cxx_status] Update -std= instructions for C++20.
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.

4 years ago[GISel][KnownBits] Give up on PHI analysis as soon as we don't know anything
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.

4 years ago[clang][doxygen] Fix false -Wdocumentation warning for tag typedefs
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

4 years ago[AIX] Pack BasicBlockBits
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

4 years agolibclang: Make shared object symbol exporting by default
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

4 years ago[clang-format] Merge name and colon into a single token for C# named arguments
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

4 years ago[X86] Fix NSW/NUW typo in avg test (PR44973)
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

4 years ago[ORC] Add a convenience method for setting the ExecutionSession to LLJITBuilder.
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.

4 years ago[ORC][examples] Fix ThinLtoJIT example after changes in 85fb997659b.
Lang Hames [Thu, 20 Feb 2020 18:41:07 +0000 (10:41 -0800)]
[ORC][examples] Fix ThinLtoJIT example after changes in 85fb997659b.

4 years agoFix some typos in the MLIR documentation.
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

4 years ago[libc] Add Initial Support for Signals
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

4 years ago[x86] allow peeking through an extract_subvector to find a splatted operand
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

4 years ago[PowerPC][NFC] Cleanup some of the Darwin mentions in the README.txt.
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.

4 years agoRevert "[macho][NFC] Extract all CPU_(SUB_)TYPE logic to libObject"
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.

4 years ago[mlir] Refactor the structure of the 'verifyConstructionInvariants' methods.
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

4 years ago[macho][NFC] Extract all CPU_(SUB_)TYPE logic to libObject
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

4 years ago[DAGCombiner] Use SDValue::getConstantOperandAPInt helper where possible. NFC.
Simon Pilgrim [Thu, 20 Feb 2020 18:22:45 +0000 (18:22 +0000)]
[DAGCombiner] Use SDValue::getConstantOperandAPInt helper where possible. NFC.

4 years ago[lldb] Fix version string when using LLDB_REVISION but not LLDB_REPOSITORY
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

4 years agoAdd target.xml support for qXfer request.
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

4 years ago[clang] Fix search path logic for C_INCLUDE_DIRS
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

4 years ago[X86] Fix a -Wparentheses warning. NFC
Craig Topper [Thu, 20 Feb 2020 17:27:18 +0000 (09:27 -0800)]
[X86] Fix a -Wparentheses warning. NFC

4 years ago[clang-tidy] rename_check.py: maintain alphabetical order in Renamed checks section
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

4 years ago[libc++] Fix unqualified call to 'ref' inside shared_ptr(unique_ptr<U, D>)
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

4 years ago[libc++] Fix unintended ADL inside ref(reference_wrapper<T>) and cref(reference_wrapp...
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

4 years ago[X86] Rewrite LowerBRCOND to remove dead code and handle ISD::SETCC and overflow...
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

4 years ago[AArch64] Move isOverflowIntrOpRes help function to the ISD namespace in SelectionDAG...
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.

4 years ago[x86] add vector tests for splatted memory ops; NFC
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

4 years ago[AArch64][SVE] Add intrinsics for SVE2 bitwise ternary operations
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

4 years ago[X86] Add DAG combines to form CVTPH2PS/CVTPS2PH from vXf16->vXf32/vXf64 fp_extends...
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

4 years ago[clang][analyzer] Modify include AllocationState.h in PutenvWithAutoChecker.cpp
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

4 years ago[DAGCombine] visitEXTRACT_VECTOR_ELT - add SimplifyDemandedBits multi use support
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.

4 years agoAdd #include <condition_variable> to fix build after 85fb997659b5
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

4 years ago[x86] regenerate test checks with less shuffle scrubbing; NFC
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.

4 years ago[PowerPC][NFC] We do not save/restore vrsave for any remaining subtargets.
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().

4 years ago[NFC][RDA] Break-up initialization code
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.

4 years agoAMDGPU: Fix v2i64<->v4f32 bitcast
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.

4 years ago[Utils][x86] add an option to reduce scrubbing of shuffles with memops
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

4 years ago[AMDGPU] Don’t marke the .note section as ALLOC
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

4 years agoRegenerate rotate test. NFC.
Simon Pilgrim [Thu, 20 Feb 2020 13:54:20 +0000 (13:54 +0000)]
Regenerate rotate test. NFC.

4 years ago[clang][Index] Fix the incomplete instantiations in libindex.
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

4 years agoRevert "Reland "[DebugInfo] Enable the debug entry values feature by default""
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.

4 years ago[Sema] Demote call-site-based 'alignment is a power of two' check for AllocAlignAttr...
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

4 years ago[lldb]: fix typo in lldb-gdb-remote.txt
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

4 years ago[lldb] Add boilerplate to recognize the .debug_tu_index section
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.

4 years ago[AArch64][SVE] Re-arrange definitions in AArch64SVEInstrInfo.td (NFC)
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.

4 years ago[AMDGPU] simplifyI24 - replace GetDemandedBits with SimplifyMultipleUseDemandedBits
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

4 years agoSpeculativeExecution: fixed ingoring free execution
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

4 years ago[clang-tidy] misc-no-recursion: point to the function defs, not decls
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.

4 years ago[ARM,MVE] Add vqdmull[b,t]q intrinsic families
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

4 years ago[NFC] Remove ar/ranlib test noise during cmake step
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.

4 years ago[compiler-rt] [builtins] Fix logb / logbl tests
Luís Marques [Thu, 20 Feb 2020 10:12:31 +0000 (10:12 +0000)]
[compiler-rt] [builtins] Fix logb / logbl tests

Like was done before in D67999 for `logbf`, this patch fixes the tests for
the internal compiler-rt implementations of `logb` and `logbl` to consider
all NaNs equivalent. Not doing so was resulting in test failures for
riscv64, since the the NaNs had different signs, but the spec doesn't
specify the NaN signedness or payload.

Fixes bug 44244.

Reviewers: rupprecht, delcypher
Reviewed By: rupprecht, delcypher
Differential Revision: https://reviews.llvm.org/D74826

4 years ago[lldb/DWARF] Always construct a DWARFDebugInfo object
Pavel Labath [Thu, 20 Feb 2020 09:36:11 +0000 (10:36 +0100)]
[lldb/DWARF] Always construct a DWARFDebugInfo object

Change the return value of SymbolFileDWARF::DebugInfo from a pointer to
a reference, and remove all null checks.

Previously, we were not constructing the DebugInfo object when the
debug_info section was empty. Now we always construct the object but
it will return an empty list of dwarf units (a thing which it already
supported).

4 years ago[LLD][ELF][ARM] Add test cases for R_ARM_THM_MOV*-type relocs
Tamas Petz [Thu, 20 Feb 2020 08:59:10 +0000 (09:59 +0100)]
[LLD][ELF][ARM] Add test cases for R_ARM_THM_MOV*-type relocs

Summary: This patch adds missing tests cases for R_ARM_THM_MOVW/MOVT* relocations for the sake of completeness.

Reviewers: peter.smith, MaskRay, espindola, psmith

Reviewed By: MaskRay, psmith

Subscribers: psmith, danielkiss, emaste, kristof.beyls, llvm-commits

Tags: #llvm, #lld

Differential Revision: https://reviews.llvm.org/D74827

4 years ago[Attributor] Make sure abstract attributes are properly initialized
Johannes Doerfert [Thu, 20 Feb 2020 08:03:32 +0000 (02:03 -0600)]
[Attributor] Make sure abstract attributes are properly initialized

4 years ago[Attributor][NFC] Refactor interface
Johannes Doerfert [Thu, 20 Feb 2020 08:02:57 +0000 (02:02 -0600)]
[Attributor][NFC] Refactor interface

4 years ago[Attributor][NFC] Prepare some tests to be used with update test script
Johannes Doerfert [Thu, 20 Feb 2020 08:06:14 +0000 (02:06 -0600)]
[Attributor][NFC] Prepare some tests to be used with update test script

4 years ago[lldb] Remove license headers from all test source files
Raphael Isemann [Thu, 20 Feb 2020 07:13:52 +0000 (08:13 +0100)]
[lldb] Remove license headers from all test source files

Summary:
Around a third of our test sources have LLVM license headers. This patch removes those headers from all test
sources and also fixes any tests that depended on the length of the license header.

The reasons for this are:

* A few tests verify line numbers and will start failing if the number of lines in the LLVM license header changes. Once I landed my patch for valid SourceLocations in debug info we will probably have even more tests that verify line numbers.
* No other LLVM project is putting license headers in its test files to my knowledge.
* They make the test sources much more verbose than they have to be. Several tests have longer license headers than the actual test source.

For the record, the following tests had their line numbers changed to pass with the removal of the license header:
    lldb-api :: functionalities/breakpoint/breakpoint_by_line_and_column/TestBreakpointByLineAndColumn.py
    lldb-shell :: Reproducer/TestGDBRemoteRepro.test
    lldb-shell :: Reproducer/TestMultipleTargets.test
    lldb-shell :: Reproducer/TestReuseDirectory.test
    lldb-shell :: ExecControl/StopHook/stop-hook-threads.test
    lldb-shell :: ExecControl/StopHook/stop-hook.test
    lldb-api :: lang/objc/exceptions/TestObjCExceptions.py

Reviewers: #lldb, espindola, JDevlieghere

Reviewed By: #lldb, JDevlieghere

Subscribers: emaste, aprantl, arphaman, JDevlieghere, lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D74839

4 years agoRemove debugging artefact.
Alexander Belyaev [Thu, 20 Feb 2020 07:29:39 +0000 (08:29 +0100)]
Remove debugging artefact.

4 years agoFix compiler extension in standalone mode
serge-sans-paille [Sun, 16 Feb 2020 08:31:16 +0000 (09:31 +0100)]
Fix compiler extension in standalone mode

Use a dedicated cmake file to store the extension configured within LLVM. That
way, a standalone build of clang can load this cmake file and get all the
configured standalone extensions.

This patch is related to https://reviews.llvm.org/D74602

Differential Revision: https://reviews.llvm.org/D74757

4 years ago[ELF][test] Fix section sh_type and sh_flags
Fangrui Song [Thu, 20 Feb 2020 05:27:13 +0000 (21:27 -0800)]
[ELF][test] Fix section sh_type and sh_flags

A future MC change may add a warning/error when a .section directive
specifies incorrect sh_flags/sh_type.

4 years ago[MustExecute] Add backward exploration for must-be-executed-context
Hideto Ueno [Thu, 20 Feb 2020 04:00:43 +0000 (13:00 +0900)]
[MustExecute] Add backward exploration for must-be-executed-context

Summary:
As mentioned in D71974, it is useful for must-be-executed-context to explore CFG backwardly.
This patch is ported from parts of D64975. We use a dominator tree to find the previous context if
a dominator tree is available.

Reviewers: jdoerfert, hfinkel, baziotis, sstefan1

Reviewed By: jdoerfert

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D74817

4 years ago[Attributor][NFC] Improve the debug output & add a TODO
Johannes Doerfert [Sun, 16 Feb 2020 23:37:50 +0000 (17:37 -0600)]
[Attributor][NFC] Improve the debug output & add a TODO

4 years ago[Attributor][NFC] Add more memory_location tests
Johannes Doerfert [Wed, 19 Feb 2020 22:53:56 +0000 (16:53 -0600)]
[Attributor][NFC] Add more memory_location tests

4 years ago[Attributor] Use existing `returned` information better
Johannes Doerfert [Thu, 20 Feb 2020 05:39:57 +0000 (23:39 -0600)]
[Attributor] Use existing `returned` information better

We can look through calls with `returned` argument attributes when we
collect subsuming positions. This allows us to get existing attributes
from more places.

4 years ago[Attributor][FIX] Avoid setting wrong load/store alignments
Johannes Doerfert [Wed, 19 Feb 2020 22:52:16 +0000 (16:52 -0600)]
[Attributor][FIX] Avoid setting wrong load/store alignments

4 years agoTableGen: Fix logic for default operands
Matt Arsenault [Tue, 18 Feb 2020 17:58:02 +0000 (12:58 -0500)]
TableGen: Fix logic for default operands

This was checking for default operands in the current DAG instruction,
rather than the correct result operand list. I'm not entirly sure how
this managed to work before, but was failing for me when multiple
default operands were overridden.

4 years ago[Attributor] Generalize `getAssumedConstantInt` interface
Johannes Doerfert [Sun, 16 Feb 2020 22:45:28 +0000 (16:45 -0600)]
[Attributor] Generalize `getAssumedConstantInt` interface

We are often interested in an assumed constant and sometimes it has to
be an integer constant. Before we only looked for the latter, now we can
ask for either.

4 years ago[Attributor][FIX] Do not create new calls edge we cannot handle
Johannes Doerfert [Mon, 17 Feb 2020 05:04:25 +0000 (23:04 -0600)]
[Attributor][FIX] Do not create new calls edge we cannot handle

If we propagate function pointers across function boundaries we can
create new call edges. These need to be represented in the CG if we run
as a CGSCC pass. In the new pass manager that is currently not handled
by the CallGraphUpdater so we need to prevent the situation for now.

4 years ago[lldb/Test] s/skipIfDarwinEmbedded/skipIfRemote/ in VSCode tests.
Jonas Devlieghere [Thu, 20 Feb 2020 04:19:08 +0000 (20:19 -0800)]
[lldb/Test] s/skipIfDarwinEmbedded/skipIfRemote/ in VSCode tests.

As pointed out on lldb-commits this skipIfRemote is the better fit for
the decorator.

4 years ago[Attributor] Add initial AAIsDead for arguments
Johannes Doerfert [Sun, 16 Feb 2020 22:42:47 +0000 (16:42 -0600)]
[Attributor] Add initial AAIsDead for arguments

We usually will ask for liveness of an argument anyway so we ended up
lazily creating the attribute anyway. However, that is not always the
case and even if it is we should go the eager route here. Various tests
show how this can improve the outcome. One test exposed a problem with
type mismatches between argument and call site argument, a fix is
included. For liveness various more tests were added as well.

4 years ago[examples] Fix the SpeculativeJIT example for 85fb997659b.
Lang Hames [Thu, 20 Feb 2020 03:06:15 +0000 (19:06 -0800)]
[examples] Fix the SpeculativeJIT example for 85fb997659b.

4 years ago[examples] Fix the clang-interpreter example for changes in 85fb997659b.
Lang Hames [Thu, 20 Feb 2020 03:00:35 +0000 (19:00 -0800)]
[examples] Fix the clang-interpreter example for changes in 85fb997659b.

4 years ago[Attributor] Allow multiple uses of a casted function pointer
Johannes Doerfert [Sun, 26 Jan 2020 02:24:38 +0000 (20:24 -0600)]
[Attributor] Allow multiple uses of a casted function pointer

If a function pointer is casted into a different type the resulting
expression can be a constant. If so, it can be used multiple times which
cannot be handled by the AbstractCallSite constructor alone. Instead, we
follow the cast expression uses now explicitly during the call site
traversal.

4 years agoFixup test after changes made in 709fd989.
Douglas Yung [Thu, 20 Feb 2020 02:39:54 +0000 (18:39 -0800)]
Fixup test after changes made in 709fd989.

The change added a test that required exceptions, so enable that explicitly
so that it works on platforms that default to having exceptions disabled
(like the PS4).

4 years ago[DebugInfo][NFCI]: Removed an exclamation mark from error message.
Sourabh Singh Tomar [Thu, 20 Feb 2020 01:55:40 +0000 (07:25 +0530)]
[DebugInfo][NFCI]: Removed an exclamation mark from error message.

4 years ago[DebugInfo] Remove a misleading comment for llvm::dwarf::FDE.
Igor Kudrin [Tue, 18 Feb 2020 13:34:33 +0000 (20:34 +0700)]
[DebugInfo] Remove a misleading comment for llvm::dwarf::FDE.

The comment described a linked CIE to be acquired lazily.
That is not true and looks like it was never true.

Differential Revision: https://reviews.llvm.org/D74761

4 years ago[DebugInfo] Read CIE pointer as a relocatable value.
Igor Kudrin [Thu, 13 Feb 2020 14:05:38 +0000 (21:05 +0700)]
[DebugInfo] Read CIE pointer as a relocatable value.

The CIE pointer field of an FDE record contains an offset to
a corresponding CIE record. In object files, this value comes with
relocation because the value has to be fixed when a linker combines
the final section from multiple sources. In most object files there is
only one CIE record at offset 0 of the .debug_frame section, so reading
a relocated or a raw value makes no difference. However, in partially
linked object files there are multiple CIE records and the relocations
should be applied to recover the right offset value.

Differential Revision: https://reviews.llvm.org/D74612

4 years ago[gn build] (manually) partially (?) merge 7ff1f55a1219
Nico Weber [Thu, 20 Feb 2020 02:09:36 +0000 (21:09 -0500)]
[gn build] (manually) partially (?) merge 7ff1f55a1219

4 years ago[lld][WebAssembly] Allow symbols with explict import names to be undefined at link...
Sam Clegg [Thu, 20 Feb 2020 01:27:09 +0000 (17:27 -0800)]
[lld][WebAssembly] Allow symbols with explict import names to be undefined at link time.

Differential Revision: https://reviews.llvm.org/D74110

4 years ago[lldb/Test] Skip VSCode test on embedded Darwin
Jonas Devlieghere [Thu, 20 Feb 2020 01:33:35 +0000 (17:33 -0800)]
[lldb/Test] Skip VSCode test on embedded Darwin

These tests are not configured to run on the device.

4 years ago[mlir] Update usage of createJITDylib to createBareJITDylib after LLVM change
River Riddle [Thu, 20 Feb 2020 00:46:16 +0000 (16:46 -0800)]
[mlir] Update usage of createJITDylib to createBareJITDylib after LLVM change

A few tests are broken, but this allows for MLIR to build.

4 years ago[WebAssembly] Use llvm::Optional to store optional symbol attributes. NFC.
Sam Clegg [Thu, 6 Feb 2020 05:18:55 +0000 (21:18 -0800)]
[WebAssembly] Use llvm::Optional to store optional symbol attributes.  NFC.

The changes the in-memory representation of wasm symbols such that their
optional ImportName and ImportModule use llvm::Optional.

ImportName is set whenever WASM_SYMBOL_EXPLICIT_NAME flag is set.
ImportModule (for imports) is currently always set since it defaults to
"env".

In the future we can possibly extent to binary format distingish
import which have explit module names.

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D74109