platform/upstream/llvm.git
4 years agoWhen making modules transitively visible, don't take into account
Richard Smith [Sat, 18 Apr 2020 03:25:15 +0000 (20:25 -0700)]
When making modules transitively visible, don't take into account
whether they have missing header files.

Whether a module's headers happen to be present on the local file system
should make no difference to whether we make its contents visible when
importing another module that re-exports it. If we have an up-to-date
AST file that we can load, that's all that matters.

This fixes the ability to header syntax checking for modular headers in
C++20 mode (or in prior modes where -fmodules-local-submodule-visibility
is enabled but -fmodules is not).

4 years agoRename IsMissingRequirement to IsUnimportable and set it for shadowed
Richard Smith [Fri, 17 Apr 2020 23:23:41 +0000 (16:23 -0700)]
Rename IsMissingRequirement to IsUnimportable and set it for shadowed
modules too.

This more accurately reflects the semantics of this flag, as distinct
from "IsAvailable", which (in an explicit modules world) only describes
whether a module is buildable, not whether it's importable.

4 years agoChange deprecated -fsanitize-recover flag to apply to all sanitizers, not just UBSan.
Richard Smith [Wed, 8 Apr 2020 21:03:40 +0000 (14:03 -0700)]
Change deprecated -fsanitize-recover flag to apply to all sanitizers, not just UBSan.

Summary:
This flag has been deprecated, with an on-by-default warning encouraging
users to explicitly specify whether they mean "all" or ubsan for 5 years
(released in Clang 3.7). Change it to mean what we wanted and
undeprecate it.

Also make the argument to -fsanitize-trap optional, and likewise default
it to 'all', and express the aliases for these flags in the .td file
rather than in code. (Plus documentation updates for the above.)

Reviewers: kcc

Subscribers: cfe-commits

Tags: #clang

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

4 years agofix to outline cfi instruction when can be grouped in a tail call
Andrew Litteken [Fri, 10 Apr 2020 01:06:38 +0000 (18:06 -0700)]
fix to outline cfi instruction when can be grouped in a tail call

[MachineOutliner] fix test for excluding CFI and add test to include CFI in outlining

New test to check that we only outline CFI instruction if all CFI
Instructions in the function would be captured by the outlining

adding x86 tests analagous to AARCH64 cfi tests

Revision: https://reviews.llvm.org/D77852

4 years ago[ADT] Fix bug in BitVector and SmallBitVector DenseMap hashing.
Brad Moody [Sat, 18 Apr 2020 05:09:30 +0000 (00:09 -0500)]
[ADT] Fix bug in BitVector and SmallBitVector DenseMap hashing.

BitVectors and SmallBitVectors with equal contents but different
capacities were getting different hashes.

Reviewed By: aganea

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

4 years ago[X86] Clean up some mir tests with INLINEASM to avoid regdef or to correct the immedi...
Craig Topper [Sat, 18 Apr 2020 03:45:58 +0000 (20:45 -0700)]
[X86] Clean up some mir tests with INLINEASM to avoid regdef or to correct the immediate for the regdef.

The immediate used for the regdef is the encoding for the register
class in the enum generated by tablegen. This encoding will change
any time a new register class is added. Since the number is part
of the input, this means it can become stale.

This change modifies some test to avoid this kind of immediate
all together. And updates one test to use the current encoding of
GR64.

4 years ago[MLIR] Update tutorial to add missing tests and bring directory paths and code snippe...
Lucy Fox [Sat, 18 Apr 2020 00:41:51 +0000 (17:41 -0700)]
[MLIR] Update tutorial to add missing tests and bring directory paths and code snippets up to date.

Summary:
The tests referred to in Chapter 3 of the tutorial were missing from the tutorial test
directory; this adds those missing tests. This also cleans up some stale directory paths and code
snippets used throughout the tutorial.

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

4 years ago[MLIR] Update tutorial to add missing tests and bring directory paths and code snippe...
Lucy Fox [Sat, 18 Apr 2020 00:12:25 +0000 (17:12 -0700)]
[MLIR] Update tutorial to add missing tests and bring directory paths and code snippets up to date.

Summary:
The tests referred to in Chapter 3 of the tutorial were missing from the tutorial test
directory; this adds those missing tests. This also cleans up some stale directory paths and code
snippets used throughout the tutorial.

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

4 years ago[MLIR] Update tutorial to add missing tests and bring directory paths and code snippe...
Lucy Fox [Wed, 25 Mar 2020 22:10:31 +0000 (15:10 -0700)]
[MLIR] Update tutorial to add missing tests and bring directory paths and code snippets up to date.

Summary:
The tests referred to in Chapter 3 of the tutorial were missing from the tutorial test
directory; this adds those missing tests. This also cleans up some stale directory paths and code
snippets used throughout the tutorial.

Subscribers: mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, aartbik, liufengdb, Joonsoo, llvm-commits

Tags: #llvm

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

4 years ago[llvm][NFC][CallSite] Remove CallSite from Evaluator.
Mircea Trofin [Fri, 17 Apr 2020 17:55:45 +0000 (10:55 -0700)]
[llvm][NFC][CallSite] Remove CallSite from Evaluator.

Reviewers: craig.topper, dblaikie

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years agoadd temporary logging to help diagnose a bot-only failure
Nico Weber [Sat, 18 Apr 2020 02:06:01 +0000 (22:06 -0400)]
add temporary logging to help diagnose a bot-only failure

4 years agoscudo: Add support for diagnosing memory errors when memory tagging is enabled.
Peter Collingbourne [Tue, 28 Jan 2020 02:43:46 +0000 (18:43 -0800)]
scudo: Add support for diagnosing memory errors when memory tagging is enabled.

Introduce a function __scudo_get_error_info() that may be called to interpret
a crash resulting from a memory error, potentially in another process,
given information extracted from the crashing process. The crash may be
interpreted as a use-after-free, buffer overflow or buffer underflow.

Also introduce a feature to optionally record a stack trace for each
allocation and deallocation. If this feature is enabled, a stack trace for
the allocation and (if applicable) the deallocation will also be available
via __scudo_get_error_info().

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

4 years ago[COFF] Assign unique identifiers to ObjFiles from LTO
Reid Kleckner [Wed, 15 Apr 2020 16:54:22 +0000 (09:54 -0700)]
[COFF] Assign unique identifiers to ObjFiles from LTO

Use the unique filenames that are used when /lldsavetemps is passed.
After this change, module names for LTO blobs in PDBs will be unique.
Visual Studio and probably other debuggers expect module names to be
unique.

Revert some changes from 1e0b158db (2017) that are no longer necessary
after removing MSVC LTO support.

Reviewed By: MaskRay

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

4 years ago[AbstractCallSite] Fix some doxygen comments I failed to update when ImmutableCallSit...
Craig Topper [Sat, 18 Apr 2020 00:07:19 +0000 (17:07 -0700)]
[AbstractCallSite] Fix some doxygen comments I failed to update when ImmutableCallSite was replaced with CallBase.

Also fix an 80 column violation.

4 years agoAMDGPU: Remove custom node for RSQ_LEGACY
Matt Arsenault [Fri, 6 Sep 2019 22:27:40 +0000 (18:27 -0400)]
AMDGPU: Remove custom node for RSQ_LEGACY

Directly select from the intrinsic. This wasn't getting much value
from the custom node.

4 years agoAdd SemaTemplateDeduction.cpp to /bigobj
Erich Keane [Fri, 17 Apr 2020 23:31:58 +0000 (16:31 -0700)]
Add SemaTemplateDeduction.cpp to /bigobj

According to Nathaniel McVicar on the review for D73967,
SematTemplateDeduction hit the 16 bit COFF limit.  This adds it to the
/bigobj list.

4 years agoADT: SmallVector size/capacity use word-size integers when elements are small
Andrew Browne [Fri, 17 Apr 2020 23:11:13 +0000 (16:11 -0700)]
ADT: SmallVector size/capacity use word-size integers when elements are small

SmallVector currently uses 32bit integers for size and capacity to reduce
sizeof(SmallVector). This limits the number of elements to UINT32_MAX.

For a SmallVector<char>, this limits the SmallVector size to only 4GB.
Buffering bitcode output uses SmallVector<char>, but needs >4GB output.

This changes SmallVector size and capacity to conditionally use word-size
integers if the element type is small (<4 bytes). For larger elements types,
the vector size can reach ~16GB with 32bit size.

Making this conditional on the element type provides both the smaller
sizeof(SmallVector) for larger types which are unlikely to grow so large,
and supports larger capacities for smaller element types.

This change also includes a fix for the bug where a SmallVector with 32bit
size has reached UINT32_MAX elements, and cannot provide guaranteed growth.

Context:

    // Double the size of the allocated memory, guaranteeing space for at
    // least one more element or MinSize if specified.
    void grow(size_t MinSize = 0) { this->grow_pod(MinSize, sizeof(T)); }

    void push_back(const T &Elt) {
      if (LLVM_UNLIKELY(this->size() >= this->capacity()))
        this->grow();
      memcpy(reinterpret_cast<void *>(this->end()), &Elt, sizeof(T));
      this->set_size(this->size() + 1);
    }

When grow is called in push_back() without a MinSize specified, this is
relying on the guarantee of space for at least one more element.

There is an edge case bug where the SmallVector is already at its maximum size
and push_back() calls grow() with default MinSize of zero. Grow is unable to
provide space for one more element, but push_back() assumes the additional
element it will be available. This can result in silent memory corruption, as
this->end() will be an invalid pointer and the program may continue executing.

An alternative to this fix would be to remove the default argument from
grow(), which would mean several changing grow() to grow(this->size()+1)
in several places.

No test case added because it would require allocating a large ammount.

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

4 years agoTest commit for AndrewLitteken (empty)
Andrew Litteken [Fri, 17 Apr 2020 22:50:01 +0000 (15:50 -0700)]
Test commit for AndrewLitteken (empty)

4 years ago[gn build] Port 66037b84cf5
LLVM GN Syncbot [Fri, 17 Apr 2020 22:33:56 +0000 (22:33 +0000)]
[gn build] Port 66037b84cf5

4 years agoMachineFunctionInfo for AArch64 in MIR
Jessica Paquette [Fri, 17 Apr 2020 22:16:59 +0000 (15:16 -0700)]
MachineFunctionInfo for AArch64 in MIR

Starting with hasRedZone adding MachineFunctionInfo to be put in the YAML for MIR files.

Split out of: D78062

Based on implementation for MachineFunctionInfo for WebAssembly

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

Patch by Andrew Litteken! (AndrewLitteken)

4 years ago[Darwin] Fix symbolization for recent simulator runtimes.
Dan Liew [Wed, 15 Apr 2020 05:27:49 +0000 (22:27 -0700)]
[Darwin] Fix symbolization for recent simulator runtimes.

Summary:
Due to sandbox restrictions in the recent versions of the simulator runtime the
atos program is no longer able to access the task port of a parent process
without additional help.

This patch fixes this by registering a task port for the parent process
before spawning atos and also tells atos to look for this by setting
a special environment variable.

This patch is based on an Apple internal fix (rdar://problem/43693565) that
unfortunately contained a bug (rdar://problem/58789439) because it used
setenv() to set the special environment variable. This is not safe because in
certain circumstances this can trigger a call to realloc() which can fail
during symbolization leading to deadlock. A test case is included that captures
this problem.

The approach used to set the necessary environment variable is as
follows:

1. Calling `putenv()` early during process init (but late enough that
malloc/realloc works) to set a dummy value for the environment variable.

2. Just before `atos` is spawned the storage for the environment
variable is modified to contain the correct PID.

A flaw with this approach is that if the application messes with the
atos environment variable (i.e. unsets it or changes it) between the
time its set and the time we need it then symbolization will fail. We
will ignore this issue for now but a `DCHECK()` is included in the patch
that documents this assumption but doesn't check it at runtime to avoid
calling `getenv()`.

The issue reported in rdar://problem/58789439 manifested as a deadlock
during symbolization in the following situation:

1. Before TSan detects an issue something outside of the runtime calls
setenv() that sets a new environment variable that wasn't previously
set. This triggers a call to malloc() to allocate a new environment
array. This uses TSan's normal user-facing allocator. LibC stores this
pointer for future use later.

2. TSan detects an issue and tries to launch the symbolizer. When we are in the
symbolizer we switch to a different (internal allocator) and then we call
setenv() to set a new environment variable. When this happen setenv() sees
that it needs to make the environment array larger and calls realloc() on the
existing enviroment array because it remembers that it previously allocated
memory for it. Calling realloc() fails here because it is being called on a
pointer its never seen before.

The included test case closely reproduces the originally reported
problem but it doesn't replicate the `((kBlockMagic)) ==
((((u64*)addr)[0])` assertion failure exactly. This is due to the way
TSan's normal allocator allocates the environment array the first time
it is allocated. In the test program addr[0] accesses an inaccessible
page and raises SIGBUS. If TSan's SIGBUS signal handler is active, the
signal is caught and symbolication is attempted again which results in
deadlock.

In the originally reported problem the pointer is successfully derefenced but
then the assert fails due to the provided pointer not coming from the active
allocator. When the assert fails TSan tries to symbolicate the stacktrace while
already being in the middle of symbolication which results in deadlock.

rdar://problem/58789439

Reviewers: kubamracek, yln

Subscribers: jfb, #sanitizers, llvm-commits

Tags: #sanitizers

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

4 years agoFix buildbot failure due to obsolete CallSite usage
Anna Thomas [Fri, 17 Apr 2020 21:38:20 +0000 (17:38 -0400)]
Fix buildbot failure due to obsolete CallSite usage

Fix buildbot failures due to ef49b1d97e1ac75bff8ff7dec3097b43bcd07e73
(which was a revert of a previous change).

4 years ago[cmake] Temporarily disable building std::filesystem in CrossWinToARMLinux.cmake
Sergej Jaskiewicz [Fri, 17 Apr 2020 21:29:07 +0000 (00:29 +0300)]
[cmake] Temporarily disable building std::filesystem in CrossWinToARMLinux.cmake

4 years agoDon't accidentally create MachineFunctions in mir-debugify/mir-strip-debugify
Daniel Sanders [Fri, 17 Apr 2020 17:24:35 +0000 (10:24 -0700)]
Don't accidentally create MachineFunctions in mir-debugify/mir-strip-debugify

We should only modify existing ones. Previously, we were creating
MachineFunctions for externally-available functions. AFAICT this was benign
in tree but ultimately led to asan bugs in our out of tree target.

4 years agoRevert "[InlineFunction] Update metadata on loads that are return values"
Anna Thomas [Fri, 17 Apr 2020 21:11:21 +0000 (17:11 -0400)]
Revert "[InlineFunction] Update metadata on loads that are return values"

This reverts commit 1d0f757904919d19f1cf5dcd307874bceb1e9efb because of
https://bugs.llvm.org/show_bug.cgi?id=45590. Needs investigation.

4 years agoRevert "[libc++] Use proper shell escaping in the executors"
Louis Dionne [Fri, 17 Apr 2020 21:06:17 +0000 (17:06 -0400)]
Revert "[libc++] Use proper shell escaping in the executors"

This reverts f8452ddfcc, which broke some bots. I'll figure out what's
wrong and commit it again.

4 years agoRemove asserting getters from base Type
Christopher Tetreault [Fri, 17 Apr 2020 20:29:38 +0000 (13:29 -0700)]
Remove asserting getters from base Type

Summary:
Remove asserting vector getters from Type in preparation for the
VectorType refactor. The existence of these functions complicates the
refactor while adding little value.

Reviewers: dexonsmith, sdesmalen, efriedma

Reviewed By: efriedma

Subscribers: cfe-commits, hiraditya, llvm-commits

Tags: #llvm, #clang

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

4 years ago[libc++] Use proper shell escaping in the executors
Louis Dionne [Fri, 17 Apr 2020 20:43:35 +0000 (16:43 -0400)]
[libc++] Use proper shell escaping in the executors

4 years ago[globalisel][legalizer] Expect to lose DebugLocs in dead code
Daniel Sanders [Fri, 17 Apr 2020 18:42:53 +0000 (11:42 -0700)]
[globalisel][legalizer] Expect to lose DebugLocs in dead code

There's not really anything else that can be done with them.
Fortunately, this dead code cleanup doesn't seem to trigger
very often.

4 years ago[globalisel][legalizer] Include newly-dead code in artifact combine checks for DebugL...
Daniel Sanders [Fri, 17 Apr 2020 18:39:54 +0000 (11:39 -0700)]
[globalisel][legalizer] Include newly-dead code in artifact combine checks for DebugLoc loss

This dead code deletion is part of the combine and the combine
results should account for their locations.

4 years ago[globalisel][legalizer] Fix --verify-legalizer-debug-locs values
Daniel Sanders [Fri, 17 Apr 2020 18:25:51 +0000 (11:25 -0700)]
[globalisel][legalizer] Fix --verify-legalizer-debug-locs values

It was using the enum class name, like so:
    =DebugLocVerifyLevel::None                                         -   No verification
Changed it to:
    =none                                                              -   No verification

4 years ago[X86] Remove single incoming value phis from tests for the loop SAD pattern. NFC
Craig Topper [Fri, 17 Apr 2020 20:37:47 +0000 (13:37 -0700)]
[X86] Remove single incoming value phis from tests for the loop SAD pattern. NFC

InstCombine should ensure these don't exist.

I'm looking at making some changes to how we detect these
patterns and not having to worry about these phis will help.

4 years ago[PowerPC] Refactor ppcUserFeaturesCheck()
Lei Huang [Fri, 17 Apr 2020 20:19:46 +0000 (15:19 -0500)]
[PowerPC] Refactor ppcUserFeaturesCheck()

Summary: This function keeps growing, refactor to use lambda.

Reviewers: nemanjai, stefanp

Subscribers: kbarton, shchenz, cfe-commits

Tags: #clang

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

4 years ago[CUDA] Define __CUDACC__ before standard library headers
Raul Tambre [Fri, 17 Apr 2020 19:22:04 +0000 (12:22 -0700)]
[CUDA] Define __CUDACC__ before standard library headers

libstdc++ since version 7 when GNU extensions are enabled (e.g. -std=gnu++11)
use it to avoid defining overloads using `__float128`.  This fixes compiling
with GNU extensions failing due to `__float128` being used.

Discovered at https://gitlab.kitware.com/cmake/cmake/-/merge_requests/4442#note_737136.

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

4 years ago[Float2Int] Make iteration over Roots deterministic
Bjorn Pettersson [Fri, 10 Apr 2020 17:24:11 +0000 (19:24 +0200)]
[Float2Int] Make iteration over Roots deterministic

Summary:
Use a SmallSetVector instead of a SmallPtrSet when collecting
and storing Roots.

The iteration order for a SmallPtrSet is not deterministic,
so in the past the order of items inserted in the WorkList
inside walkBackwards has been non-deterministic. This patch
intends to make the order of rewrites done in Float2Int
deterministic by changing the container for the Roots set.

The semantics result of the transformation should not be
any different afaict. But at least naming of IR variables
(when outputting the result as an ll file) should be more
stable now.

Reviewers: craig.topper, spatel, cameron.mcinally

Reviewed By: spatel

Subscribers: mgrang, llvm-commits

Tags: #llvm

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

4 years ago[llvm][CodeGen] Addressing modes for SVE stN.
Francesco Petrogalli [Fri, 17 Apr 2020 19:18:02 +0000 (20:18 +0100)]
[llvm][CodeGen] Addressing modes for SVE stN.

This reverts commit 17b1869b72f30f2702cb1abd7222027082e49eb6.

It is an attempt to fix the failure reported at

The patch differs from the original one reviwed at
https://reviews.llvm.org/D77435 only for the use of the std::make_tuple
in building the return value of `findAddrModeSVELoadStore`:

   -  return {IsRegReg ? Opc_rr : Opc_ri, NewBase, NewOffset};
   +  return std::make_tuple(IsRegReg ? Opc_rr : Opc_ri, NewBase,

the original patch submitted at
https://github.com/llvm/llvm-project/commit/fc4e954ed5c0825cdfe3a590ff1904ef38bc47db
was failing the following build:

http://lab.llvm.org:8011/builders/clang-armv7-linux-build-cache/builds/29420/

with error:

/home/buildslave/buildslave/clang-armv7-linux-build-cache/llvm/llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
/home/buildslave/buildslave/clang-armv7-linux-build-cache/llvm/llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp:1439:10:
error: chosen constructor is explicit in copy-initialization
  return {IsRegReg ? Opc_rr : Opc_ri, NewBase, NewOffset};
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   /usr/bin/../lib/gcc/arm-linux-gnueabihf/5.4.0/../../../../include/c++/5.4.0/tuple:479:19:
   note: explicit constructor declared here
           constexpr tuple(_UElements&&... __elements)
                     ^
     1 error generated.

4 years agoRevert "[llvm][CodeGen] Addressing modes for SVE stN."
Francesco Petrogalli [Fri, 17 Apr 2020 19:02:03 +0000 (20:02 +0100)]
Revert "[llvm][CodeGen] Addressing modes for SVE stN."

This reverts commit fc4e954ed5c0825cdfe3a590ff1904ef38bc47db.

The commit reported the following failure:

http://lab.llvm.org:8011/builders/clang-armv7-linux-build-cache/builds/29420

FAILED: lib/Target/AArch64/CMakeFiles/LLVMAArch64CodeGen.dir/AArch64ISelDAGToDAG.cpp.o
/usr/bin/c++   -DGTEST_HAS_RTTI=0 -D_DEBUG -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib/Target/AArch64 -I/home/buildslave/buildslave/clang-armv7-linux-build-cache/llvm/llvm/lib/Target/AArch64 -I/usr/include/libxml2 -Iinclude -I/home/buildslave/buildslave/clang-armv7-linux-build-cache/llvm/llvm/include -mthumb -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -fdiagnostics-color -ffunction-sections -fdata-sections -O3  -fvisibility=hidden    -fno-exceptions -fno-rtti -UNDEBUG -std=c++14 -MMD -MT lib/Target/AArch64/CMakeFiles/LLVMAArch64CodeGen.dir/AArch64ISelDAGToDAG.cpp.o -MF lib/Target/AArch64/CMakeFiles/LLVMAArch64CodeGen.dir/AArch64ISelDAGToDAG.cpp.o.d -o lib/Target/AArch64/CMakeFiles/LLVMAArch64CodeGen.dir/AArch64ISelDAGToDAG.cpp.o -c /home/buildslave/buildslave/clang-armv7-linux-build-cache/llvm/llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
/home/buildslave/buildslave/clang-armv7-linux-build-cache/llvm/llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp:1439:10: error: chosen constructor is explicit in copy-initialization
  return {IsRegReg ? Opc_rr : Opc_ri, NewBase, NewOffset};
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   /usr/bin/../lib/gcc/arm-linux-gnueabihf/5.4.0/../../../../include/c++/5.4.0/tuple:479:19: note: explicit constructor declared here
           constexpr tuple(_UElements&&... __elements)

4 years ago[AMDGPU] copyPhysReg() for 16 bit SGPR subregs
Stanislav Mekhanoshin [Wed, 15 Apr 2020 23:16:13 +0000 (16:16 -0700)]
[AMDGPU] copyPhysReg() for 16 bit SGPR subregs

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

4 years agoFix interaction of static plugins with -DLLVM_LINK_LLVM_DYLIB=ON.
Eli Friedman [Thu, 16 Apr 2020 21:32:15 +0000 (14:32 -0700)]
Fix interaction of static plugins with -DLLVM_LINK_LLVM_DYLIB=ON.

We should link static plugins into libLLVM.so; they shouldn't depend on
libLLVM.so.

Fixes https://bugs.llvm.org/show_bug.cgi?id=45571

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

4 years ago[libc++] Split features for platform detection into its own function
Louis Dionne [Fri, 17 Apr 2020 18:44:22 +0000 (14:44 -0400)]
[libc++] Split features for platform detection into its own function

This will allow refactoring how the locales are figured out more easily.

4 years ago[AMDGPU] Use SDWA for 16 bit subreg copy
Stanislav Mekhanoshin [Wed, 15 Apr 2020 22:40:13 +0000 (15:40 -0700)]
[AMDGPU] Use SDWA for 16 bit subreg copy

This simplifies the logic and allows to use it on GFX8.

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

4 years ago[llvm][CodeGen] Addressing modes for SVE stN.
Francesco Petrogalli [Fri, 17 Apr 2020 18:26:28 +0000 (19:26 +0100)]
[llvm][CodeGen] Addressing modes for SVE stN.

Reviewers: efriedma, sdesmalen, c-rhodes, ctetreau

Reviewed By: c-rhodes

Subscribers: tschuett, hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[llvm][CodeGen] Fix issue for SVE gather prefetch.
Francesco Petrogalli [Fri, 17 Apr 2020 18:05:31 +0000 (19:05 +0100)]
[llvm][CodeGen] Fix issue for SVE gather prefetch.

Summary:
This change is fixing an issue where the dagcombine incorrectly used an addressing mode with scaled offsets (indices), instead of unscaled offsets.
Those addressing modes do not exist for `prfh` , `prfw` and `prfd`, hence we can reuse `prfb` because that has unscaled offsets, and because the pseudo-code in the XML spec suggests that the element size is not used for the amount of data that is prefetched by the instruction.

FWIW, GCC also emits a `prfb` for these cases.

Reviewers: sdesmalen, andwar, rengolin

Reviewed By: sdesmalen

Subscribers: tschuett, hiraditya, llvm-commits

Tags: #llvm

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

4 years agoAllow lldb-test to combine -find with -dump-clang-ast
Adrian Prantl [Thu, 16 Apr 2020 21:10:23 +0000 (14:10 -0700)]
Allow lldb-test to combine -find with -dump-clang-ast

This patch threads an lldb::DescriptionLevel through the typesystem to
allow dumping the full Clang AST (level=verbose) of any lldb::Type in
addition to the human-readable source description (default
level=full). This type dumping interface is currently not exposed
through the SBAPI.

The application is to let lldb-test dump the clang AST of search
results. I need this to test lazy type completion of clang types in
subsequent patches.

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

4 years agoClean up usages of asserting vector getters in Type
Christopher Tetreault [Fri, 17 Apr 2020 17:39:33 +0000 (10:39 -0700)]
Clean up usages of asserting vector getters in Type

Summary:
Remove usages of asserting vector getters in Type in preparation for the
VectorType refactor. The existence of these functions complicates the
refactor while adding little value.

Reviewers: craig.topper, sdesmalen, efriedma, RKSimon

Reviewed By: efriedma

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years agoReland Implement _ExtInt as an extended int type specifier.
Erich Keane [Fri, 17 Apr 2020 17:44:19 +0000 (10:44 -0700)]
Reland Implement _ExtInt as an extended int type specifier.

I fixed the LLDB issue, so re-applying the patch.

This reverts commit a4b88c044980337bb14390be654fe76864aa60ec.

4 years ago[CallSite removal][Attributor] Replaces use of CallSite with CallBase. NFC
Craig Topper [Fri, 17 Apr 2020 17:33:59 +0000 (10:33 -0700)]
[CallSite removal][Attributor] Replaces use of CallSite with CallBase. NFC

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

4 years ago[AArch64] Fold one-use variables into assert
Benjamin Kramer [Fri, 17 Apr 2020 17:43:06 +0000 (19:43 +0200)]
[AArch64] Fold one-use variables into assert

Avoids unused variable warnings in Release builds.

4 years ago[CallSite removal][MemCpyOptimizer] Replace CallSite with CallBase. NFC
Craig Topper [Fri, 17 Apr 2020 17:12:15 +0000 (10:12 -0700)]
[CallSite removal][MemCpyOptimizer] Replace CallSite with CallBase. NFC

There are also some adjustments to use MaybeAlign in here due
to CallBase::getParamAlignment() being deprecated. It would
be a little cleaner if getOrEnforceKnownAlignment was migrated
to Align/MaybeAlign.

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

4 years agoRevert "Implement _ExtInt as an extended int type specifier."
Sterling Augustine [Fri, 17 Apr 2020 16:43:55 +0000 (09:43 -0700)]
Revert "Implement _ExtInt as an extended int type specifier."

This reverts commit 61ba1481e200b5b35baa81ffcff81acb678e8508.

I'm reverting this because it breaks the lldb build with
incomplete switch coverage warnings. I would fix it forward,
but am not familiar enough with lldb to determine the correct
fix.

lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp:3958:11: error: enumeration values 'DependentExtInt' and 'ExtInt' not handled in switch [-Werror,-Wswitch]
  switch (qual_type->getTypeClass()) {
          ^
lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp:4633:11: error: enumeration values 'DependentExtInt' and 'ExtInt' not handled in switch [-Werror,-Wswitch]
  switch (qual_type->getTypeClass()) {
          ^
lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp:4889:11: error: enumeration values 'DependentExtInt' and 'ExtInt' not handled in switch [-Werror,-Wswitch]
  switch (qual_type->getTypeClass()) {

4 years ago[libc] Add write(2) implementation for Linux and FDReader test utility
Alex Brachet [Fri, 17 Apr 2020 17:21:05 +0000 (13:21 -0400)]
[libc] Add write(2) implementation for Linux and FDReader test utility

Summary: Adds `write` for Linux and FDReader utility which should be useful for some stdio tests as well.

Reviewers: sivachandra, PaulkaToast

Reviewed By: sivachandra

Subscribers: mgorny, tschuett, libc-commits

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

4 years agoRevert "[CallSite removal][MemCpyOptimizer] Replace CallSite with CallBase. NFC"
Craig Topper [Fri, 17 Apr 2020 17:10:53 +0000 (10:10 -0700)]
Revert "[CallSite removal][MemCpyOptimizer] Replace CallSite with CallBase. NFC"

There were extra changes that weren't supposed to be in there

This reverts commit b91f78db370bb8161472acd75a67916d033c3348.

4 years ago[libc] Add spec/*.td as dependencies to add_gen_header
Alex Brachet [Fri, 17 Apr 2020 17:10:46 +0000 (13:10 -0400)]
[libc] Add spec/*.td as dependencies to add_gen_header

Summary: It also re formats long lines in `add_gen_header`

Reviewers: sivachandra

Reviewed By: sivachandra

Subscribers: mgorny, tschuett, libc-commits

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

4 years ago[CallSite removal][MemCpyOptimizer] Replace CallSite with CallBase. NFC
Craig Topper [Fri, 17 Apr 2020 16:48:11 +0000 (09:48 -0700)]
[CallSite removal][MemCpyOptimizer] Replace CallSite with CallBase. NFC

There are also some adjustments to use MaybeAlign in here due
to CallBase::getParamAlignment() being deprecated. It would
be cleaner if getOrEnforceKnownAlignment was migrated
to Align/MaybeAlign.

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

4 years ago[LVI] Cleanup/unify cache access
Nikita Popov [Tue, 24 Mar 2020 19:31:13 +0000 (20:31 +0100)]
[LVI] Cleanup/unify cache access

This patch combines the "has" and "get" parts of the cache access.
getCachedValueInfo() now both sets the BBLV return argument, and
returns whether the value was found.

Additionally, the management of the work stack is now integrated
into getBlockValue(). If the value is not cached yet, we try to
push to the stack (and return false, indicating that we need to
solve first), or return overdefined in case of a cycle.

These changes a) avoid a duplicate cache lookup for has & get and
b) ensure that the logic is uniform everywhere. For this reason
this change is also not quite NFC, because previously overdefined
values from the cache, and overdefined values from a cycle received
different treatment when it came to assumption intersection.

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

4 years ago[MI] Reduce MachineInstr size (NFC)
Nikita Popov [Wed, 15 Apr 2020 20:40:08 +0000 (22:40 +0200)]
[MI] Reduce MachineInstr size (NFC)

Move CapOperands next to AsmPrinterFlags, to reduce size of
MachineInstr by 8 bytes.

4 years ago[PredicateInfo] Remove unused member (NFC)
Nikita Popov [Thu, 16 Apr 2020 19:19:45 +0000 (21:19 +0200)]
[PredicateInfo] Remove unused member (NFC)

PredicateInfo takes up a large amount of memory during IPSCCP
with many functions. And a large part of that space seems to
be going completely to waste here...

4 years ago[libc++] List the set of __config_site macros used for features
Louis Dionne [Mon, 13 Apr 2020 21:15:37 +0000 (17:15 -0400)]
[libc++] List the set of __config_site macros used for features

Instead of creating Lit features for all __config_site macros automatically,
only do so for macros that generate features actually used in the test
suite. This makes it easier to know which ones are supported by the test
suite at a glance.

Note that the `libcpp-abi-version-vN` is dropped altogether, but it
wasn't used anywhere.

4 years ago[ARM] Fix conditions for lowering to S[LR]I
Petre-Ionut Tudor [Tue, 31 Mar 2020 16:27:45 +0000 (17:27 +0100)]
[ARM] Fix conditions for lowering to S[LR]I

Summary:
Fixed wrong conditions for generating (S[LR]I X, Y, C2) from
(or (and X, BvecC1), (lsl Y, C2)) and added ISel nodes to lower to S[LR]I. The
optimisation is also enabled by default now.

Subscribers: kristof.beyls, hiraditya, llvm-commits

Tags: #llvm

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

4 years agoNFC: remove outdated TODOs from ARM test file.
Sjoerd Meijer [Fri, 17 Apr 2020 16:08:11 +0000 (17:08 +0100)]
NFC: remove outdated TODOs from ARM test file.

4 years ago[PowerPC][Future] More support for PCRel addressing for global values
Stefan Pintilie [Fri, 17 Apr 2020 16:05:02 +0000 (11:05 -0500)]
[PowerPC][Future] More support for PCRel addressing for global values

Add initial support for PC Relative addressing for global values that
require GOT indirect addressing. This patch adds PCRelative support for
global addresses that may not be known at link time and may require
access through the GOT.

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

4 years ago[libc] Disable AOR ulp tests for sinf, cosf and sincosf.
Siva Chandra Reddy [Fri, 17 Apr 2020 15:59:35 +0000 (08:59 -0700)]
[libc] Disable AOR ulp tests for sinf, cosf and sincosf.

They seemed to fallback to the system libc and start depending on its
accuracy.

4 years ago[Support][X86] Include sched.h after D78324
Fangrui Song [Fri, 17 Apr 2020 15:43:02 +0000 (08:43 -0700)]
[Support][X86] Include sched.h after D78324

http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/28848/steps/build%20stage%201/logs/stdio

4 years ago[builtins] Add missing header in D77912 and make __builtin_clzll more robust
Fangrui Song [Fri, 17 Apr 2020 15:29:58 +0000 (08:29 -0700)]
[builtins] Add missing header in D77912 and make __builtin_clzll more robust

4 years ago[ELF] Support a few more SPARCv9 relocations
LemonBoy [Fri, 17 Apr 2020 14:58:15 +0000 (07:58 -0700)]
[ELF] Support a few more SPARCv9 relocations

Implemented a bunch of relocations found in binaries with medium/large code model and the Local-Exec TLS model. The binaries link and run fine in Qemu.
In addition, the emulation `elf64_sparc` is now recognized.

Reviewed By: MaskRay

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

4 years ago[SYCL] Update __builtin_unique_stable_name for other backends.
Erich Keane [Fri, 17 Apr 2020 14:52:50 +0000 (07:52 -0700)]
[SYCL] Update __builtin_unique_stable_name for other backends.

The CUDA backend (and other downstreams) have trouble with the tilde and
arrow delimiter, so replace these with 'm' (for macro) and '_'.  Since
these are in the normal lambda ID location, the format of these should
not conflict with anything else.

4 years ago[Support][X86] Change getHostNumPhsicalCores() to return number of physical cores...
Fangrui Song [Thu, 16 Apr 2020 19:05:53 +0000 (12:05 -0700)]
[Support][X86] Change getHostNumPhsicalCores() to return number of physical cores enabled by affinity

Fixes https://bugs.llvm.org/show_bug.cgi?id=45556

While here, make the x86-64 code available for x86-32.

The output has been available and stable since
https://git.kernel.org/linus/3dd9d514846cdca1dcef2e4fce666d85e199e844 (2005)
```
processor:
...
physical id:
siblings:
core id:
```

Don't check HAVE_SCHED_GETAFFINITY/HAVE_CPU_COUNT. The interface is
simply available in every libc which can build LLVM.

Reviewed By: aganea

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

4 years ago[GlobalISel][AMDGPU] add legalization for G_FREEZE
Dominik Montada [Tue, 14 Apr 2020 09:25:05 +0000 (11:25 +0200)]
[GlobalISel][AMDGPU] add legalization for G_FREEZE

Summary:
Copy the legalization rules from SelectionDAG:
-widenScalar using anyext
-narrowScalar using intermediate merges
-scalarize/fewerElements using unmerge
-moreElements using G_IMPLICIT_DEF and insert

Add G_FREEZE legalization actions to AMDGPULegalizerInfo.
Use the same legalization actions as G_IMPLICIT_DEF.

Depends on D77795.

Reviewers: dsanders, arsenm, aqjune, aditya_nandakumar, t.p.northover, lebedev.ri, paquette, aemerson

Reviewed By: arsenm

Subscribers: kzhuravl, yaxunl, dstuttard, tpr, t-tye, jvesely, nhaehnle, kerbowa, wdng, rovka, hiraditya, volkan, llvm-commits

Tags: #llvm

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

4 years ago[ValueLattice] Steal bits from Tag to track range extensions (NFC).
Florian Hahn [Fri, 17 Apr 2020 14:30:00 +0000 (15:30 +0100)]
[ValueLattice] Steal bits from Tag to track range extensions (NFC).

Users of ValueLatticeElement currently have to ensure constant ranges
are not extended indefinitely. For example, in SCCP, mergeIn goes to
overdefined if a constantrange value is repeatedly merged with larger
constantranges. This is a simple form of widening.

In some cases, this leads to an unnecessary loss of information and
things can be improved by allowing a small number of extensions in the
hope that a fixed point is reached after a small number of steps.

To make better decisions about widening, it is helpful to keep track of
the number of range extensions. That state is tied directly to a
concrete ValueLatticeElement and some unused bits in the class can be
used. The current patch preserves the existing behavior by default:
CheckWiden defaults to false and if CheckWiden is true, a single change
to the range is allowed.

Follow-up patches will slightly increase the threshold for widening.

Reviewers: efriedma, davide, mssimpso

Reviewed By: efriedma

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

4 years ago[libc++] NFC: Rename Lit feature for no RTTI to -fno-rtti
Louis Dionne [Fri, 17 Apr 2020 14:36:32 +0000 (10:36 -0400)]
[libc++] NFC: Rename Lit feature for no RTTI to -fno-rtti

4 years agoRemove accidental include.
Benjamin Kramer [Fri, 17 Apr 2020 14:36:30 +0000 (16:36 +0200)]
Remove accidental include.

Thank you clangd.

4 years agoChange users of CreateShuffleVector to pass the masks as int instead of Constants
Benjamin Kramer [Fri, 17 Apr 2020 14:33:39 +0000 (16:33 +0200)]
Change users of CreateShuffleVector to pass the masks as int instead of Constants

No functionality change intended.

4 years ago[PhaseOrdering] remove blank lines in tests; NFC
Sanjay Patel [Fri, 17 Apr 2020 13:34:34 +0000 (09:34 -0400)]
[PhaseOrdering] remove blank lines in tests; NFC

4 years ago[AMDGPU] New helper functions to get a register class of a given width
Jay Foad [Thu, 9 Apr 2020 11:01:05 +0000 (12:01 +0100)]
[AMDGPU] New helper functions to get a register class of a given width

Summary:
Introduce new helper functions getVGPRClassForBitWidth,
getAGPRClassForBitWidth, getSGPRClassForBitWidth and use them to
refactor various other functions that all contained their own lists of
valid register class widths. NFC.

Reviewers: arsenm, rampitec

Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, kerbowa, llvm-commits

Tags: #llvm

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

4 years agoImplement _ExtInt as an extended int type specifier.
Erich Keane [Tue, 24 Dec 2019 15:28:40 +0000 (07:28 -0800)]
Implement _ExtInt as an extended int type specifier.

Introduction/Motivation:
LLVM-IR supports integers of non-power-of-2 bitwidth, in the iN syntax.
Integers of non-power-of-two aren't particularly interesting or useful
on most hardware, so much so that no language in Clang has been
motivated to expose it before.

However, in the case of FPGA hardware normal integer types where the
full bitwidth isn't used, is extremely wasteful and has severe
performance/space concerns.  Because of this, Intel has introduced this
functionality in the High Level Synthesis compiler[0]
under the name "Arbitrary Precision Integer" (ap_int for short). This
has been extremely useful and effective for our users, permitting them
to optimize their storage and operation space on an architecture where
both can be extremely expensive.

We are proposing upstreaming a more palatable version of this to the
community, in the form of this proposal and accompanying patch.  We are
proposing the syntax _ExtInt(N).  We intend to propose this to the WG14
committee[1], and the underscore-capital seems like the active direction
for a WG14 paper's acceptance.  An alternative that Richard Smith
suggested on the initial review was __int(N), however we believe that
is much less acceptable by WG14.  We considered _Int, however _Int is
used as an identifier in libstdc++ and there is no good way to fall
back to an identifier (since _Int(5) is indistinguishable from an
unnamed initializer of a template type named _Int).

[0]https://www.intel.com/content/www/us/en/software/programmable/quartus-prime/hls-compiler.html)
[1]http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2472.pdf

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

4 years ago[libc++abi] NFC: Remove trailing whitespace
Louis Dionne [Fri, 17 Apr 2020 14:06:55 +0000 (10:06 -0400)]
[libc++abi] NFC: Remove trailing whitespace

4 years ago[XCOFF][AIX] Fix getSymbol to return the correct qualname when necessary
jasonliu [Thu, 16 Apr 2020 19:52:34 +0000 (19:52 +0000)]
[XCOFF][AIX] Fix getSymbol to return the correct qualname when necessary

Summary:
AIX symbol have qualname and unqualified name. The stock getSymbol
could only return unqualified name, which leads us to patch many
caller side(lowerConstant, getMCSymbolForTOCPseudoMO).
So we should try to address this problem in the callee
side(getSymbol) and clean up the caller side instead.

Note: this is a "mostly" NFC patch, with a fix for the original
lowerConstant behavior.

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

4 years ago[AMDGPU] Simplify SIRegisterInfo::getRegSplitParts
Jay Foad [Fri, 17 Apr 2020 09:28:47 +0000 (10:28 +0100)]
[AMDGPU] Simplify SIRegisterInfo::getRegSplitParts

Summary:
Use more logic and fewer tables. This reduces the line count and
reduces the effort required to introduce more register classes of
different sizes in future.

Reviewers: arsenm, rampitec, nhaehnle

Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, hiraditya, kerbowa, llvm-commits

Tags: #llvm

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

4 years ago[VectorUtils] Create shufflevector masks as int vectors instead of Constants
Benjamin Kramer [Fri, 17 Apr 2020 13:28:00 +0000 (15:28 +0200)]
[VectorUtils] Create shufflevector masks as int vectors instead of Constants

No functionality change intended.

4 years ago[clang][AST] Support AST files larger than 512M
Dmitry Polukhin [Thu, 16 Apr 2020 16:24:46 +0000 (09:24 -0700)]
[clang][AST] Support AST files larger than 512M

Summary:
Clang uses 32-bit integers for storing bit offsets from the beginning of
the file that results in 512M limit on AST file. This diff replaces
absolute offsets with relative offsets from the beginning of
corresponding data structure when it is possible. And uses 64-bit
offsets for DeclOffests and TypeOffssts because these coder AST
section may easily exceeds 512M alone.

This diff breaks AST file format compatibility so VERSION_MAJOR bumped.

Test Plan:
Existing clang AST serialization tests
Tested on clangd with ~700M and ~900M preamble files
check-clang with ubsan

Reviewers: rsmith, dexonsmith

Subscribers: ilya-biryukov, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[libc++] Move .fail.cpp tests with verify-support to .verify.cpp
Louis Dionne [Fri, 17 Apr 2020 12:47:40 +0000 (08:47 -0400)]
[libc++] Move .fail.cpp tests with verify-support to .verify.cpp

4 years ago[x86] rename variables for types for readability; NFC
Sanjay Patel [Fri, 17 Apr 2020 12:41:18 +0000 (08:41 -0400)]
[x86] rename variables for types for readability; NFC

This gets harder to follow if we allow changing types/sizes
between source, dest, and intermediate value.

4 years ago[x86] add/adjust tests for FP<->int casts; NFC
Sanjay Patel [Fri, 17 Apr 2020 12:22:17 +0000 (08:22 -0400)]
[x86] add/adjust tests for FP<->int casts; NFC

4 years ago[RISCV][AsmParser] Implement .option (no)pic
Roger Ferrer Ibanez [Fri, 17 Apr 2020 07:39:49 +0000 (07:39 +0000)]
[RISCV][AsmParser] Implement .option (no)pic

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

4 years ago[clangd] Fix memory leak in FileIndexTest
Kadir Cetinkaya [Fri, 17 Apr 2020 11:56:22 +0000 (13:56 +0200)]
[clangd] Fix memory leak in FileIndexTest

4 years ago[clangd] Drop dangling relations while sharding
Kadir Cetinkaya [Fri, 17 Apr 2020 11:19:52 +0000 (13:19 +0200)]
[clangd] Drop dangling relations while sharding

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

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

4 years agoRecommit [X86][MC][NFC] Reduce the parameters of functions in X86MCCodeEmitter(Part II)
Shengchen Kan [Fri, 17 Apr 2020 03:17:38 +0000 (11:17 +0800)]
Recommit [X86][MC][NFC] Reduce the parameters of functions in X86MCCodeEmitter(Part II)

Previous patch didn't handle the early return in `emitREXPrefix` correctly,
which causes REX prefix was not emitted for instruction without
operands. This patch includes the fix for that.

4 years agoUnifyFunctionExitNodes.h - remove unnecessary PassRegistry.h include. NFC
Simon Pilgrim [Fri, 17 Apr 2020 11:14:02 +0000 (12:14 +0100)]
UnifyFunctionExitNodes.h - remove unnecessary PassRegistry.h include. NFC

4 years agoSSAUpdaterBulk.h - remove unnecessary SmallPtrSet.h include. NFC
Simon Pilgrim [Fri, 17 Apr 2020 11:01:25 +0000 (12:01 +0100)]
SSAUpdaterBulk.h - remove unnecessary SmallPtrSet.h include. NFC

4 years agoScalar.h - remove unused forward declarations. NFC.
Simon Pilgrim [Fri, 17 Apr 2020 10:49:13 +0000 (11:49 +0100)]
Scalar.h - remove unused forward declarations. NFC.

4 years agoAMDGPU/GlobalISel: Work around another selector crash
Jay Foad [Fri, 17 Apr 2020 10:49:38 +0000 (11:49 +0100)]
AMDGPU/GlobalISel: Work around another selector crash

This does for G_EXTRACT_VECTOR_ELT what 588bd7be366 did for G_TRUNC.

Ideally types without a corresponding register class wouldn't reach
here, but we're currently missing some (in particular a 192-bit class
is missing).

4 years ago[NFC] Add missing 'const' notion to LCSSA-related functions
Max Kazantsev [Fri, 17 Apr 2020 10:18:01 +0000 (17:18 +0700)]
[NFC] Add missing 'const' notion to LCSSA-related functions

These functions don't really do any changes to loop info or
dominator tree. We should state this explicitly using 'const'.

4 years agoProvide operand indices to adjustSchedDependency
Fraser Cormack [Tue, 31 Mar 2020 10:57:51 +0000 (11:57 +0100)]
Provide operand indices to adjustSchedDependency

This allows targets to know exactly which operands are contributing to
the dependency, which is required for targets with per-operand
scheduling models.

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

4 years ago[cmake] LLVMVectorize - add include/llvm/Transforms/Vectorize header path
Simon Pilgrim [Fri, 17 Apr 2020 10:06:26 +0000 (11:06 +0100)]
[cmake] LLVMVectorize - add include/llvm/Transforms/Vectorize header path

MSVC projects were missing the llvm/Transforms/Vectorize/* headers

4 years agoMCObjectWriter.h - remove Endian.h/EndianStream.h/raw_ostream.h includes. NFC
Simon Pilgrim [Thu, 16 Apr 2020 18:31:45 +0000 (19:31 +0100)]
MCObjectWriter.h - remove Endian.h/EndianStream.h/raw_ostream.h includes. NFC

Push these includes down to the the writers that actually need them, a number of which were implicitly relying on the MCObjectWriter.h.

4 years agoConstantPools.h - remove unused DenseMap.h include. NFC.
Simon Pilgrim [Thu, 16 Apr 2020 17:25:44 +0000 (18:25 +0100)]
ConstantPools.h - remove unused DenseMap.h include. NFC.

4 years agoMCStreamer.h - remove unused llvm::MCCodePaddingContext forward declaration. NFC.
Simon Pilgrim [Thu, 16 Apr 2020 17:21:35 +0000 (18:21 +0100)]
MCStreamer.h - remove unused llvm::MCCodePaddingContext forward declaration. NFC.

4 years agoMCWasmStreamer.h.h - cleanup includes and forward declarations. NFC.
Simon Pilgrim [Thu, 16 Apr 2020 17:13:23 +0000 (18:13 +0100)]
MCWasmStreamer.h.h - cleanup includes and forward declarations. NFC.
Remove unnecessary SmallPtrSet.h/SectionKind.h includes
Remove unused MCAssembler/raw_ostream forward declarations

4 years agoMCSectionXCOFF.h - remove unnecessary Twine.h include. NFC
Simon Pilgrim [Thu, 16 Apr 2020 17:10:59 +0000 (18:10 +0100)]
MCSectionXCOFF.h - remove unnecessary Twine.h include. NFC

4 years ago[tools][tests] - Use --check-prefixes instead of multiple --check-prefix. NFCI.
Georgii Rymar [Wed, 15 Apr 2020 15:28:08 +0000 (18:28 +0300)]
[tools][tests] - Use --check-prefixes instead of multiple --check-prefix. NFCI.

There is no need to use `--check-prefix` multiple times.
It helps to improve readability/test maintainability.
This patch does it for all tools at once.

Differential revision: https://reviews.llvm.org/D78217