platform/upstream/llvm.git
5 years ago[clangd] Ensure that we reply to each call exactly once. NFC (I think!)
Sam McCall [Wed, 24 Oct 2018 14:26:26 +0000 (14:26 +0000)]
[clangd] Ensure that we reply to each call exactly once. NFC (I think!)

Summary:
In debug builds, getting this wrong will trigger asserts.
In production builds, it will send an error reply if none was sent,
and drop redundant replies. (And log).

No tests because this is always a programming error.
(We did have some cases of this, but I fixed them with the new dispatcher).

Reviewers: ioeric

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, jfb, kadircet, cfe-commits

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

llvm-svn: 345144

5 years agoSplit a function. NFC.
Rui Ueyama [Wed, 24 Oct 2018 14:24:01 +0000 (14:24 +0000)]
Split a function. NFC.

llvm-svn: 345143

5 years ago[DEBUGINFO, NVPTX] Try to pack bytes data into a single string.
Alexey Bataev [Wed, 24 Oct 2018 14:04:00 +0000 (14:04 +0000)]
[DEBUGINFO, NVPTX] Try to pack bytes data into a single string.

Summary:
If the target does not support `.asciz` and `.ascii` directives, the
strings are represented as bytes and each byte is placed on the new line
as a separate byte directive `.b8 <data>`. NVPTX target allows to
represent the vector of the data of the same type as a vector, where
values are separated using `,` symbol: `.b8 <data1>,<data2>,...`. This
allows to reduce the size of the final PTX file. Ptxas tool includes ptx
files into the resulting binary object, so reducing the size of the PTX
file is important.

Reviewers: tra, jlebar, echristo

Subscribers: jholewinski, llvm-commits

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

llvm-svn: 345142

5 years ago[clangd] Don't show base class versions of members as completions.
Sam McCall [Wed, 24 Oct 2018 13:51:44 +0000 (13:51 +0000)]
[clangd] Don't show base class versions of members as completions.

Summary:
These are available via qualifiers, but signal to noise level is low.
Keep required quailifier machinery around though, for cross-ns completion.

Reviewers: ioeric

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

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

llvm-svn: 345141

5 years ago[clangd] Downrank members from base class
Eric Liu [Wed, 24 Oct 2018 13:45:17 +0000 (13:45 +0000)]
[clangd] Downrank members from base class

Reviewers: sammccall, ilya-biryukov

Reviewed By: sammccall

Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits

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

llvm-svn: 345140

5 years agoAdd parenthese around a bitand.
Rui Ueyama [Wed, 24 Oct 2018 13:44:51 +0000 (13:44 +0000)]
Add parenthese around a bitand.

llvm-svn: 345139

5 years agoMake a local variable scope narrower. NFC.
Rui Ueyama [Wed, 24 Oct 2018 13:42:33 +0000 (13:42 +0000)]
Make a local variable scope narrower. NFC.

llvm-svn: 345138

5 years agoFix llvm-strings crash for negative char values
James Henderson [Wed, 24 Oct 2018 13:16:16 +0000 (13:16 +0000)]
Fix llvm-strings crash for negative char values

On Windows at least, llvm-strings was crashing if it encountered bytes
that mapped to negative chars, as it was passing these into
std::isgraph and std::isblank functions, resulting in undefined
behaviour. On debug builds using MSVC, these functions verfiy that the
value passed in is representable as an unsigned char. Since the char is
promoted to an int, a value greater than 127 would turn into a negative
integer value, and fail the check. Using the llvm::isPrint function is
sufficient to solve the issue.

Reviewed by: ruiu, mstorsjo

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

llvm-svn: 345137

5 years ago[X86][SSE] Update PMULDQ schedule tests to survive more aggressive SimplifyDemandedBits
Simon Pilgrim [Wed, 24 Oct 2018 13:13:36 +0000 (13:13 +0000)]
[X86][SSE] Update PMULDQ schedule tests to survive more aggressive SimplifyDemandedBits

llvm-svn: 345136

5 years ago[CodeComplete] Expose InBaseClass signal in code completion results.
Eric Liu [Wed, 24 Oct 2018 12:57:27 +0000 (12:57 +0000)]
[CodeComplete] Expose InBaseClass signal in code completion results.

Summary:
No new tests as the existing tests for result priority should give us
coverage. Also as the new flag is trivial enough, I'm reluctant to plumb the
flag to c-index-test output.

Reviewers: ilya-biryukov

Reviewed By: ilya-biryukov

Subscribers: cfe-commits

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

llvm-svn: 345135

5 years ago[clangd] Hide position line and column fields.
Haojian Wu [Wed, 24 Oct 2018 12:56:41 +0000 (12:56 +0000)]
[clangd] Hide position line and column fields.

Reviewers: sammccall

Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits

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

llvm-svn: 345134

5 years ago[autocompletion] Handle the space before pressing tab
Yuka Takahashi [Wed, 24 Oct 2018 12:43:25 +0000 (12:43 +0000)]
[autocompletion] Handle the space before pressing tab

Summary:
Distinguish "--autocomplete=-someflag" and "--autocomplete=-someflag,"
because the latter indicates that the user put a space before pushing tab
which should end up in a file completion.

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

llvm-svn: 345133

5 years agoSupport accepting __gnu__ as a scoped attribute namespace that aliases to gnu.
Aaron Ballman [Wed, 24 Oct 2018 12:26:23 +0000 (12:26 +0000)]
Support accepting __gnu__ as a scoped attribute namespace that aliases to gnu.

This is useful in libstdc++ to avoid clashes with identifiers in the user's namespace.

llvm-svn: 345132

5 years ago[MinGW] Enable large file for mingw-w64
Martin Storsjo [Wed, 24 Oct 2018 12:22:12 +0000 (12:22 +0000)]
[MinGW] Enable large file for mingw-w64

64-bit mingw doesn't define _FILE_OFFSET_BITS=64 by default.

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

llvm-svn: 345131

5 years ago[llvm-exegesis] Implements a cache of Instruction objects.
Guillaume Chatelet [Wed, 24 Oct 2018 11:55:06 +0000 (11:55 +0000)]
[llvm-exegesis] Implements a cache of Instruction objects.

llvm-svn: 345130

5 years ago[llvm-mca] [llvm-mca] Improved error handling and error reporting from class InstrBui...
Andrea Di Biagio [Wed, 24 Oct 2018 10:56:47 +0000 (10:56 +0000)]
[llvm-mca] [llvm-mca] Improved error handling and error reporting from class InstrBuilder.

A new class named InstructionError has been added to Support.h in order to
improve the error reporting from class InstrBuilder.
The llvm-mca driver is responsible for handling InstructionError objects, and
printing them out to stderr.

The goal of this patch is to remove all the remaining error handling logic from
the library code.
In particular, this allows us to:
 - Simplify the logic in InstrBuilder by removing a needless dependency from
MCInstrPrinter.
 - Centralize all the error halding logic in a new function named 'runPipeline'
(see llvm-mca.cpp).

This is also a first step towards generalizing class InstrBuilder, so that in
future, we will be able to reuse its logic to also "lower" MachineInstr to
mca::Instruction objects.

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

llvm-svn: 345129

5 years ago[clangd] Simplify auto hover
Ilya Biryukov [Wed, 24 Oct 2018 10:09:34 +0000 (10:09 +0000)]
[clangd] Simplify auto hover

Summary:
Use helper from clang. Also fixes some weird corner cases, e.g.
    auto (*foo)() = bar;

Reviewers: kadircet, hokein

Reviewed By: kadircet, hokein

Subscribers: ioeric, MaskRay, jkorous, arphaman, cfe-commits

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

llvm-svn: 345128

5 years ago[LLDB] - Add support for DW_RLE_base_address and DW_RLE_offset_pair entries (.debug_r...
George Rimar [Wed, 24 Oct 2018 09:56:20 +0000 (09:56 +0000)]
[LLDB] - Add support for DW_RLE_base_address and DW_RLE_offset_pair entries (.debug_rnglists)

The patch implements the support for DW_RLE_base_address and DW_RLE_offset_pair
.debug_rnglists entries

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

llvm-svn: 345127

5 years ago[clangd] Remove outdated comment-out code. NFC
Ilya Biryukov [Wed, 24 Oct 2018 09:47:24 +0000 (09:47 +0000)]
[clangd] Remove outdated comment-out code. NFC

llvm-svn: 345126

5 years ago[clangd] Fix a link in documentation. NFC
Ilya Biryukov [Wed, 24 Oct 2018 09:00:30 +0000 (09:00 +0000)]
[clangd] Fix a link in documentation. NFC

llvm-svn: 345125

5 years ago[ThinLTO] Change parameter type. NFC
Eugene Leviant [Wed, 24 Oct 2018 08:59:58 +0000 (08:59 +0000)]
[ThinLTO] Change parameter type. NFC

Change destination module type for consistency with r345118

llvm-svn: 345124

5 years agoRevert r345114
Gil Rapaport [Wed, 24 Oct 2018 08:41:22 +0000 (08:41 +0000)]
Revert r345114

Investigating fails.

llvm-svn: 345123

5 years ago[Sema] Do not show unused parameter warnings when body is skipped
Ilya Biryukov [Wed, 24 Oct 2018 08:29:24 +0000 (08:29 +0000)]
[Sema] Do not show unused parameter warnings when body is skipped

Summary: Without the function body, we cannot determine is parameter was used.

Reviewers: ioeric, sammccall

Reviewed By: sammccall

Subscribers: arphaman, cfe-commits

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

llvm-svn: 345122

5 years ago[bash-autocompletion] Fix bug when a flag ends with '='
Yuka Takahashi [Wed, 24 Oct 2018 08:24:16 +0000 (08:24 +0000)]
[bash-autocompletion] Fix bug when a flag ends with '='

There was a bug that when a flag ends with '=' and no value was suggested,
clang autocompletes the flag itself.
For example, in bash, it looked like this:
```
$ clang -fmodule-file=[tab]
-> $clang -fmodule-file=-fmodule-file
```
This is not what we expect. We expect a file autocompletion when no value
was found. With this patch, pressing tab suggests files in the current
directory.

Reviewers: teemperor, ruiu

Subscribers: cfe-commits
llvm-svn: 345121

5 years ago[AMDGPU] Defined gfx909 Raven Ridge 2
Tim Renouf [Wed, 24 Oct 2018 08:14:07 +0000 (08:14 +0000)]
[AMDGPU] Defined gfx909 Raven Ridge 2

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

Change-Id: Ie3d054f2e956c2768988c0f4c0ffd29a47294eef
llvm-svn: 345120

5 years ago[clangd] Embed fixes as CodeAction, instead of clangd_fixes. Clean up serialization.
Sam McCall [Wed, 24 Oct 2018 07:59:38 +0000 (07:59 +0000)]
[clangd] Embed fixes as CodeAction, instead of clangd_fixes. Clean up serialization.

Summary:
CodeAction provides us with a standard way of representing fixes inline, so
use it, replacing our existing ad-hoc extension.

After this, it's easy to serialize diagnostics using the structured
toJSON/Protocol.h mechanism rather than assembling JSON ad-hoc.

Reviewers: hokein, arphaman

Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, kadircet, cfe-commits

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

llvm-svn: 345119

5 years ago[ThinLTO] Fix dot dumper for regular LTO modules
Eugene Leviant [Wed, 24 Oct 2018 07:48:32 +0000 (07:48 +0000)]
[ThinLTO] Fix dot dumper for regular LTO modules

Regular LTO module identifier is (unsigned)-1. This patch emits correct
module identifier while printing edges with source summary in regular
LTO module.

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

llvm-svn: 345118

5 years ago[MinGW] Support for multiarch runtimes layout
Martin Storsjo [Wed, 24 Oct 2018 07:42:10 +0000 (07:42 +0000)]
[MinGW] Support for multiarch runtimes layout

Patch by Peiyuan Song!

llvm-svn: 345117

5 years ago[ELF] Remove a superfluous semicolon, fixing warnings. NFC.
Martin Storsjo [Wed, 24 Oct 2018 07:42:06 +0000 (07:42 +0000)]
[ELF] Remove a superfluous semicolon, fixing warnings. NFC.

llvm-svn: 345116

5 years ago[LV] Don't have fold-tail under optsize invalidate interleave-groups when
Dorit Nuzman [Wed, 24 Oct 2018 07:11:38 +0000 (07:11 +0000)]
[LV] Don't have fold-tail under optsize invalidate interleave-groups when
masked-interleaving is enabled

Enable interleave-groups under fold-tail scenario for Opt for size compilation;
D50480 added support for vectorizing loops of arbitrary trip-count without a
remiander, which in turn makes everything in the loop conditional, including
interleave-groups if any. It therefore invalidated all interleave-groups
because we didn't have support for vectorizing predicated interleaved-groups
at the time. In the meantime, D53011 introduced this support, so we don't
have to invalidate interleave-groups when masked-interleaved support is enabled.

Reviewers: Ayal, hsaito, dcaballe, fhahn

Reviewed By: hsaito

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

llvm-svn: 345115

5 years ago[LSR] Combine unfolded offset into invariant register
Gil Rapaport [Wed, 24 Oct 2018 07:08:38 +0000 (07:08 +0000)]
[LSR] Combine unfolded offset into invariant register

LSR reassociates constants as unfolded offsets when the constants fit as
immediate add operands, which currently prevents such constants from being
combined later with loop invariant registers.
This patch modifies GenerateCombinations() to generate a second formula which
includes the unfolded offset in the combined loop-invariant register.

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

llvm-svn: 345114

5 years ago[clangd] Truncate SymbolID to 16 bytes.
Sam McCall [Wed, 24 Oct 2018 06:58:42 +0000 (06:58 +0000)]
[clangd] Truncate SymbolID to 16 bytes.

Summary:
The goal is 8 bytes, which has a nonzero risk of collisions with huge indexes.
This patch should shake out any issues with truncation at all, we can lower
further later.

Reviewers: ioeric

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

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

llvm-svn: 345113

5 years ago[X86] Correct a bad isel predicate. Though I don't think it can be exposed.
Craig Topper [Wed, 24 Oct 2018 06:13:36 +0000 (06:13 +0000)]
[X86] Correct a bad isel predicate. Though I don't think it can be exposed.

This B/W VPTEST instructions are only available with AVX512BW. But lowering should prevent any byte or word elements from getting to isel so this can't be exposed.

llvm-svn: 345112

5 years ago[Sema] Fix -Wcomma in dependent context
Richard Trieu [Wed, 24 Oct 2018 02:07:41 +0000 (02:07 +0000)]
[Sema] Fix -Wcomma in dependent context

When there is a dependent type inside a cast, the CastKind becomes CK_Dependent
instead of CK_ToVoid.  This fix will check that there is a dependent cast,
the original type is dependent, and the target type is void to ignore the cast.

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

llvm-svn: 345111

5 years ago[hwasan] when printing a stack-related bugs, also print stack frame descriptions...
Kostya Serebryany [Wed, 24 Oct 2018 01:35:50 +0000 (01:35 +0000)]
[hwasan] when printing a stack-related bugs, also print stack frame descriptions provided by the compiler

llvm-svn: 345110

5 years agoDebug Info (-gmodules): emit full types for non-anchored template specializations
Adrian Prantl [Wed, 24 Oct 2018 00:06:02 +0000 (00:06 +0000)]
Debug Info (-gmodules): emit full types for non-anchored template specializations

Before this patch, clang would emit a (module-)forward declaration for
template instantiations that are not anchored by an explicit template
instantiation, but still are guaranteed to be available in an imported
module. Unfortunately detecting the owning module doesn't reliably
work when local submodule visibility is enabled and the template is
inside a cross-module namespace.

This make clang debuggable again with -gmodules and LSV enabled.

rdar://problem/41552377

llvm-svn: 345109

5 years ago[ARM64][Windows] Add unwind support to llvm-readobj
Sanjin Sijaric [Wed, 24 Oct 2018 00:03:34 +0000 (00:03 +0000)]
[ARM64][Windows] Add unwind support to llvm-readobj

This patch adds support for dumping the unwind info from ARM64 COFF object
files.

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

llvm-svn: 345108

5 years agoARM: handle checking aliases with out-of-bounds GEPs
Saleem Abdulrasool [Wed, 24 Oct 2018 00:00:52 +0000 (00:00 +0000)]
ARM: handle checking aliases with out-of-bounds GEPs

A global alias may use indices which are not considered in bounds.  In
such a case, accessing the base object will fail as it only peers
through inbounds accesses.  This pattern is used by the swift compiler
to create references to preceeding members in the type metadata.  This
would cause the code generation to fail when targeting a platform that
used ELF as the object file format.  Be conservative and fail the
read-only check if we run into an alias that we cannot peer through.

llvm-svn: 345107

5 years agoSupport nwere versions of the Segger J-Link jtag board software.
Jason Molenda [Tue, 23 Oct 2018 23:45:56 +0000 (23:45 +0000)]
Support nwere versions of the Segger J-Link jtag board software.
Add support in ProcessGDBRemote::GetGDBServerRegisterInfo
for recognizing a generic "arm" architecture that will be used if
nothing better is available so that we don't ignore the register
definitions if we didn't already have an architecture set.
Also in ProcessGDBRemote::DoConnectRemote don't set the target
arch unless we have a valid architecture to set it to.

Platform::ConnectProcess will try to get the current target's
architecture, or the default architecture, when creating the
target for the connection to be attempted.  If lldb was started
with a target binary, we want to create this target with that
architecture in case the remote gdb stub doesn't supply a
qHostInfo arch.

Add logging to Target::MergeArchitecture.

<rdar://problem/34916465>

llvm-svn: 345106

5 years agoCommit missing comment edit and use correct cast to fix std::min overload
Reid Kleckner [Tue, 23 Oct 2018 23:44:44 +0000 (23:44 +0000)]
Commit missing comment edit and use correct cast to fix std::min overload

llvm-svn: 345105

5 years ago[hurd] Make getMainExecutable get the real binary path
Reid Kleckner [Tue, 23 Oct 2018 23:35:43 +0000 (23:35 +0000)]
[hurd] Make getMainExecutable get the real binary path

On GNU/Hurd, llvm-config is returning bogus value, such as:

$ llvm-config-6.0 --includedir
/usr/include

while it should be:
$ llvm-config-6.0 --includedir
/usr/lib/llvm-6.0/include

This is because getMainExecutable does not get the actual installation
path. On GNU/Hurd, /proc/self/exe is indeed a symlink to the path that
was used to start the program, and not the eventual binary file. Llvm's
getMainExecutable thus needs to run realpath over it to get the actual
place where llvm was installed (/usr/lib/llvm-6.0/bin/llvm-config), and
not /usr/bin/llvm-config-6.0. This will not change the result on Linux,
where /proc/self/exe already points to the eventual file.

Patch by Samuel Thibault!

While making changes here, I reformatted this block a bit to reduce
indentation and match 2 space indent style.

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

llvm-svn: 345104

5 years ago[PM] keeping history when original SCC split and then merge into itself
Wei Mi [Tue, 23 Oct 2018 23:29:45 +0000 (23:29 +0000)]
[PM] keeping history when original SCC split and then merge into itself
in the same round of SCC update.

In https://reviews.llvm.org/rL309784, inline history is added to prevent
infinite inlining across multiple run of inliner and SCC update, but the
history will only be kept when new SCC is actually generated during SCC update.

We found a case that SCC can be split and then merge into itself in the same
round of SCC update, so the same SCC will be pop out from UR.CWorklist and
then added back immediately, without any new SCC generated, that is why the
existing patch cannot catch the infinite inline case.

What the patch does is even if no new SCC is generated, if only the current
SCC appears in UR.CWorklist again, then keep the inline history.

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

llvm-svn: 345103

5 years agoSelectionDAG: Reuse bigger sized constants in memset expansion.
Matthias Braun [Tue, 23 Oct 2018 23:19:23 +0000 (23:19 +0000)]
SelectionDAG: Reuse bigger sized constants in memset expansion.

When implementing memset's today we often see this pattern:
$x0 = MOV 0xXYXYXYXYXYXYXYXY
store $x0, ...
$w1 = MOV 0xXYXYXYXY
store $w1, ...

We first create a 64bit constant in a 64bit register with all bytes the
same and then create a 32bit constant with all bytes the same in a 32bit
register. In many targets we could just access the lower byte of the
64bit register instead.

- Ideally this would be handled by the ConstantHoist pass but it runs
  too early when memset isn't expanded yet.
- The memset expansion code already had this optimization implemented,
  however SelectionDAG constantfolding would constantfold the
  "trunc(bigconstnat)" pattern to "smallconstant".
- This patch makes the memset expansion mark the constant as Opaque and
  stop DAGCombiner from constant folding in this situation. (Similar to
  how ConstantHoisting marks things as Opaque to avoid folding
  ADD/SUB/etc.)

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

llvm-svn: 345102

5 years ago[analyzer] [NFC] Change scanReachableSymbols to use ranges
George Karpenkov [Tue, 23 Oct 2018 23:12:12 +0000 (23:12 +0000)]
[analyzer] [NFC] Change scanReachableSymbols to use ranges

Remove unused overload. Clean up some usages.

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

llvm-svn: 345101

5 years ago[analyzer] Do not stop tracking CXX methods touching OSObject.
George Karpenkov [Tue, 23 Oct 2018 23:11:50 +0000 (23:11 +0000)]
[analyzer] Do not stop tracking CXX methods touching OSObject.

Trust generalized annotations for OSObject.

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

llvm-svn: 345100

5 years ago[analyzer] Trust summaries for OSObject::retain and OSObject::release
George Karpenkov [Tue, 23 Oct 2018 23:11:30 +0000 (23:11 +0000)]
[analyzer] Trust summaries for OSObject::retain and OSObject::release

Refactor the way in which summaries are consumed for safeMetaCast

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

llvm-svn: 345099

5 years ago[ORC] Re-apply r345077 with fixes to remove ambiguity in lookup calls.
Lang Hames [Tue, 23 Oct 2018 23:01:39 +0000 (23:01 +0000)]
[ORC] Re-apply r345077 with fixes to remove ambiguity in lookup calls.

llvm-svn: 345098

5 years agoRevert "[ThinLTO] Fix a crash in lazy loading of Metadata"
Teresa Johnson [Tue, 23 Oct 2018 23:00:29 +0000 (23:00 +0000)]
Revert "[ThinLTO] Fix a crash in lazy loading of Metadata"

This reverts commit r345095. It was accidentally committed.

llvm-svn: 345097

5 years ago[hot-cold-split] Only perform splitting in ThinLTO backend post-link
Teresa Johnson [Tue, 23 Oct 2018 22:57:40 +0000 (22:57 +0000)]
[hot-cold-split] Only perform splitting in ThinLTO backend post-link

Summary:
Fix the new PM to only perform hot cold splitting once during ThinLTO,
by skipping it in the pre-link phase.

This was already fixed in the old PM by the move of the hot cold split
pass later (after the early return when PrepareForThinLTO) by r344869.

Reviewers: vsk, sebpop, hiraditya

Subscribers: mehdi_amini, inglorion, eraman, steven_wu, dexonsmith, llvm-commits

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

llvm-svn: 345096

5 years ago[ThinLTO] Fix a crash in lazy loading of Metadata
Teresa Johnson [Tue, 23 Oct 2018 22:57:21 +0000 (22:57 +0000)]
[ThinLTO] Fix a crash in lazy loading of Metadata

Summary:
This is a revised version of D41474.

When the debug location is parsed in BitcodeReader::parseFunction, the
scope and inlinedAt MDNodes are obtained via MDLoader->getMDNodeFwdRefOrNull(),
which will create a forward ref if they were not yet loaded.
Specifically, if one of these MDNodes is in the module level metadata
block, and this is during ThinLTO importing, that metadata block is
lazily loaded.

Most places in that invoke getMDNodeFwdRefOrNull have a corresponding call
to resolveForwardRefsAndPlaceholders which will take care of resolving them.
E.g. places that call getMetadataFwdRefOrLoad, or at the end of parsing a
function-level metadata block, or at the end of the initial lazy load of
module level metadata in order to handle invocations of getMDNodeFwdRefOrNull
for named metadata and global object attachments. However, the calls for
the scope/inlinedAt of debug locations are not backed by any such call to
resolveForwardRefsAndPlaceholders.

To fix this, change the scope and inlinedAt parsing to instead use
getMetadataFwdRefOrLoad, which will ensure the forward refs to lazily
loaded metadata are resolved.

Fixes PR35472.

Reviewers: dexonsmith, Sunil_Srivastava, vsk

Subscribers: inglorion, eraman, steven_wu, sebpop, mehdi_amini, dmikulin, vsk, hiraditya, llvm-commits

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

llvm-svn: 345095

5 years agoMove forward declarations to the top of the file and sort.
Rui Ueyama [Tue, 23 Oct 2018 22:37:14 +0000 (22:37 +0000)]
Move forward declarations to the top of the file and sort.

llvm-svn: 345094

5 years agoMove a function out of a class because it doesn't depend on any class member. NFC.
Rui Ueyama [Tue, 23 Oct 2018 22:31:08 +0000 (22:31 +0000)]
Move a function out of a class because it doesn't depend on any class member. NFC.

llvm-svn: 345093

5 years agoRemove unused private methods.
Zachary Turner [Tue, 23 Oct 2018 22:15:27 +0000 (22:15 +0000)]
Remove unused private methods.

llvm-svn: 345092

5 years agoFix some comments pointed out by Leonard Mosescu.
Zachary Turner [Tue, 23 Oct 2018 22:15:05 +0000 (22:15 +0000)]
Fix some comments pointed out by Leonard Mosescu.

These were originally pointed out in D53511 but I forgot
to incorporate them in my patch.

llvm-svn: 345091

5 years agoActually fix test from r345085 REQUIRE: asserts
Fangrui Song [Tue, 23 Oct 2018 22:07:34 +0000 (22:07 +0000)]
Actually fix test from r345085 REQUIRE: asserts

llvm-svn: 345090

5 years agoFix test after r345085
Fangrui Song [Tue, 23 Oct 2018 22:04:33 +0000 (22:04 +0000)]
Fix test after r345085

llvm-svn: 345089

5 years agoFactor out code to a new function. NFC.
Rui Ueyama [Tue, 23 Oct 2018 22:03:33 +0000 (22:03 +0000)]
Factor out code to a new function. NFC.

llvm-svn: 345088

5 years ago[X86] Autogenerate comple checks. NFC
Craig Topper [Tue, 23 Oct 2018 21:58:49 +0000 (21:58 +0000)]
[X86] Autogenerate comple checks. NFC

llvm-svn: 345087

5 years agoRemove unused variable.
Eric Christopher [Tue, 23 Oct 2018 21:55:41 +0000 (21:55 +0000)]
Remove unused variable.

llvm-svn: 345086

5 years agoPrint out DebugCounter info with -print-debug-counter
Zhizhou Yang [Tue, 23 Oct 2018 21:51:56 +0000 (21:51 +0000)]
Print out DebugCounter info with -print-debug-counter

Summary:
This patch will print out {Counter, Skip, StopAfter} info of all passes which have DebugCounter set at destruction.

It can be used to monitor how many times does certain transformation happen in a pass, and also help check if -debug-counter option is set correctly.

Please refer to this [[ http://lists.llvm.org/pipermail/llvm-dev/2018-July/124722.html  | thread ]] for motivation.

Reviewers: george.burgess.iv, davide, greened

Reviewed By: greened

Subscribers: kristina, llozano, mgorny, llvm-commits, mgrang

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

llvm-svn: 345085

5 years ago[dwarfdump] Make incompatibility between -diff and -verbose explicit.
Jonas Devlieghere [Tue, 23 Oct 2018 21:51:44 +0000 (21:51 +0000)]
[dwarfdump] Make incompatibility between -diff and -verbose explicit.

Using -diff and -verbose together doesn't work today. We should audit
where these two options interact and fix them. In the meantime we error
out when the user try to specify both.

llvm-svn: 345084

5 years agoFix typo in verifier error message
Matt Arsenault [Tue, 23 Oct 2018 21:23:52 +0000 (21:23 +0000)]
Fix typo in verifier error message

llvm-svn: 345083

5 years agoCGP: Clear data structures at the end of a loop iteration instead of the beginning.
Peter Collingbourne [Tue, 23 Oct 2018 21:23:18 +0000 (21:23 +0000)]
CGP: Clear data structures at the end of a loop iteration instead of the beginning.

Clearing LargeOffsetGEPMap at the end fixes a bug where if a large
offset GEP is in a dead basic block, we fail an assertion when trying
to delete the block due to the asserting VH in LargeOffsetGEPMap.

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

llvm-svn: 345082

5 years agoSimplify. NFC.
Rui Ueyama [Tue, 23 Oct 2018 21:17:00 +0000 (21:17 +0000)]
Simplify. NFC.

A higher order function `applySyntehtic` can be replaced with a simpler function.

llvm-svn: 345081

5 years agoRemove a global variable that is set but not used.
Rui Ueyama [Tue, 23 Oct 2018 21:00:28 +0000 (21:00 +0000)]
Remove a global variable that is set but not used.

llvm-svn: 345080

5 years ago[llvm-objcopy] Fix use-after-move clang-tidy warning
Jordan Rupprecht [Tue, 23 Oct 2018 20:54:51 +0000 (20:54 +0000)]
[llvm-objcopy] Fix use-after-move clang-tidy warning

llvm-svn: 345079

5 years agoRevert r345077 "[ORC] Change how non-exported symbols are matched during lookup."
Reid Kleckner [Tue, 23 Oct 2018 20:54:43 +0000 (20:54 +0000)]
Revert r345077 "[ORC] Change how non-exported symbols are matched during lookup."

Doesn't build on Windows. The call to 'lookup' is ambiguous. Clang and
MSVC agree, anyway.

http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/787
C:\b\slave\clang-x64-windows-msvc\build\llvm.src\unittests\ExecutionEngine\Orc\CoreAPIsTest.cpp(315): error C2668: 'llvm::orc::ExecutionSession::lookup': ambiguous call to overloaded function
C:\b\slave\clang-x64-windows-msvc\build\llvm.src\include\llvm/ExecutionEngine/Orc/Core.h(823): note: could be 'llvm::Expected<llvm::JITEvaluatedSymbol> llvm::orc::ExecutionSession::lookup(llvm::ArrayRef<llvm::orc::JITDylib *>,llvm::orc::SymbolStringPtr)'
C:\b\slave\clang-x64-windows-msvc\build\llvm.src\include\llvm/ExecutionEngine/Orc/Core.h(817): note: or       'llvm::Expected<llvm::JITEvaluatedSymbol> llvm::orc::ExecutionSession::lookup(const llvm::orc::JITDylibSearchList &,llvm::orc::SymbolStringPtr)'
C:\b\slave\clang-x64-windows-msvc\build\llvm.src\unittests\ExecutionEngine\Orc\CoreAPIsTest.cpp(315): note: while trying to match the argument list '(initializer list, llvm::orc::SymbolStringPtr)'

llvm-svn: 345078

5 years ago[ORC] Change how non-exported symbols are matched during lookup.
Lang Hames [Tue, 23 Oct 2018 20:20:22 +0000 (20:20 +0000)]
[ORC] Change how non-exported symbols are matched during lookup.

In the new scheme the client passes a list of (JITDylib&, bool) pairs, rather
than a list of JITDylibs. For each JITDylib the boolean indicates whether or not
to match against non-exported symbols (true means that they should be found,
false means that they should not). The MatchNonExportedInJD and MatchNonExported
parameters on lookup are removed.

The new scheme is more flexible, and easier to understand.

This patch also updates JITDylib search orders to be lists of (JITDylib&, bool)
pairs to match the new lookup scheme. Error handling is also plumbed through
the LLJIT class to allow regression tests to fail predictably when a lookup from
a lazy call-through fails.

llvm-svn: 345077

5 years agoOff-by-one errors strike again. Thank goodness for ASAN and the bots.
Marshall Clow [Tue, 23 Oct 2018 20:07:45 +0000 (20:07 +0000)]
Off-by-one errors strike again. Thank goodness for ASAN and the bots.

llvm-svn: 345076

5 years agoNFC: Remove MANGLE_CHECKER from ItaniumMangle.cpp
Erik Pilkington [Tue, 23 Oct 2018 19:55:38 +0000 (19:55 +0000)]
NFC: Remove MANGLE_CHECKER from ItaniumMangle.cpp

This hasn't even compiled since 2011. It would be useful to have some test to
verify that ItaniumMangle and ItaniumDemangle agree, but this isn't it.

llvm-svn: 345075

5 years ago[test-suite/doc] Add list of programs we might add.
Michael Kruse [Tue, 23 Oct 2018 19:46:29 +0000 (19:46 +0000)]
[test-suite/doc] Add list of programs we might add.

Add a list of benchmarks, applications and algorithms which are under
discussion to be added to the test-suite.

The initial list includes the the benchmarks mentioned at
https://llvm.org/PR34216, missing SPEC benchmarks, some image processing
algorithms and a few others. The bug tracker only allows adding to the
discussion, not removing, commenting, adding details to individual
benchmarks.

The first proposal was to add these benchmark into the test-suite
repository, but after a discussion, adding it to llvm/docs/Proposals
seem more appropriate. One advantage is that llvm.org will have a
browsable web page with these suggestions.

Suggested-by: Hal Finkel
Differential Revision: https://reviews.llvm.org/D46714

llvm-svn: 345074

5 years agoChange getRedeclContext() to support enumerations as another kind of transparent...
Aaron Ballman [Tue, 23 Oct 2018 19:44:51 +0000 (19:44 +0000)]
Change getRedeclContext() to support enumerations as another kind of transparent context in C.

This change fixes PR15071 and ensures that enumerators redefined in a struct cannot conflict with enumerators defined outside of the struct.

llvm-svn: 345073

5 years ago[HotColdSplitting] Attach MinSize to outlined code
Vedant Kumar [Tue, 23 Oct 2018 19:41:12 +0000 (19:41 +0000)]
[HotColdSplitting] Attach MinSize to outlined code

Outlined code is cold by assumption, so it makes sense to optimize it
for minimal code size rather than performance.

After r344869 moved the splitting pass to the end of the IR pipeline,
this does not result in much of a code size reduction. This is probably
because a comparatively small number backend transforms make use of the
MinSize hint.

Running LNT on x86_64, I see that 33/1020 binaries shrink for a total of
919 bytes of TEXT reduction. I didn't measure a significant performance
impact.

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

llvm-svn: 345072

5 years agoFix doxygen comment.
Adrian Prantl [Tue, 23 Oct 2018 19:39:02 +0000 (19:39 +0000)]
Fix doxygen comment.

llvm-svn: 345071

5 years ago[X86][SSE] Revert rL343922 combinePMULDQ AddToWorklist (PR39398)
Simon Pilgrim [Tue, 23 Oct 2018 19:07:53 +0000 (19:07 +0000)]
[X86][SSE] Revert rL343922 combinePMULDQ AddToWorklist (PR39398)

We can't add the MULDQ node back to the worklist after the demanded bits change has been committed in case the node has been removed entirely. This will have to wait until we have SimplifyDemandedBitsForTargetNode.

llvm-svn: 345070

5 years agoAdd UdtRecordCompleter.cpp.
Jason Molenda [Tue, 23 Oct 2018 19:03:52 +0000 (19:03 +0000)]
Add UdtRecordCompleter.cpp.

llvm-svn: 345069

5 years ago[llvm-strip] Support -s alias for --strip-all. Make both strip and objcopy case sensi...
Jordan Rupprecht [Tue, 23 Oct 2018 18:46:33 +0000 (18:46 +0000)]
[llvm-strip] Support -s alias for --strip-all. Make both strip and objcopy case sensitive to support both -s (--strip-all) and -S (--strip-debug).

Summary:
GNU strip supports both `-s` and `-S` as aliases for `--strip-all` and `--strip-debug`, respectfully.

As part of this, it turns out that strip/objcopy were accepting case insensitive command line args. I'm not sure if there was an explicit reason for this. The only others uses of this are llvm-cvtres/llvm-mt/llvm-lib, which are all tools specific for windows support. Forcing case sensitivity allows both aliases to exist, but seems like a good idea anyway.

And as a surprise test case adjustment, the llvm-strip unit test was running with `-keep=unavailable_symbol`, despite `keep` not be a valid flag for strip. This is because there is a flag `-K` which, when case insensitivity is permitted, allows it to be interpreted as `-K` = `eep=unavailable_symbol` (e.g. to allow `-Kfoo` == `--keep-symbol=foo`).

Reviewers: jakehehrlich, jhenderson, alexshap

Reviewed By: jakehehrlich

Subscribers: llvm-commits

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

llvm-svn: 345068

5 years agoWhen filling a vector<bool> with stuff, initialize the last word of the storage that...
Marshall Clow [Tue, 23 Oct 2018 18:38:15 +0000 (18:38 +0000)]
When filling a vector<bool> with stuff, initialize the last word of the storage that you're touching. Otherwise, when we lay down the bits with operator&=, we get UB from reading uninitialized memory. Fixes Bug 39354. Thanks to David Wagner for the bug report.

llvm-svn: 345067

5 years ago[LegalizeDAG] Share Vector/Scalar CTPOP Expansion
Simon Pilgrim [Tue, 23 Oct 2018 18:28:24 +0000 (18:28 +0000)]
[LegalizeDAG] Share Vector/Scalar CTPOP Expansion

As suggested on D53258, this patch move the CTPOP expansion code from SelectionDAGLegalize to TargetLowering to allow it to be reused by the VectorLegalizer.

Proper vector support will be added by D53258.

llvm-svn: 345066

5 years agoX86DAGToDAGISel::matchBitExtract(): lambdas can't have default arguments.
Roman Lebedev [Tue, 23 Oct 2018 18:27:10 +0000 (18:27 +0000)]
X86DAGToDAGISel::matchBitExtract(): lambdas can't have default arguments.

As reported by ctopper.
That is a gcc-only warning at the moment.

llvm-svn: 345065

5 years ago[analyzer] Rename trackNullOrUndefValue to trackExpressionValue
George Karpenkov [Tue, 23 Oct 2018 18:24:53 +0000 (18:24 +0000)]
[analyzer] Rename trackNullOrUndefValue to trackExpressionValue

trackNullOrUndefValue is a long and confusing name,
and it does not actually reflect what the function is doing.
Give a function a new name, with a relatively clear semantics.

Also remove some dead code.

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

llvm-svn: 345064

5 years ago[Fixed Point Arithmetic] Fixed Point to Boolean Cast
Leonard Chan [Tue, 23 Oct 2018 17:55:35 +0000 (17:55 +0000)]
[Fixed Point Arithmetic] Fixed Point to Boolean Cast

This patch is a part of https://reviews.llvm.org/D48456 in an attempt to split
the casting logic up into smaller patches. This contains the code for casting
from fixed point types to boolean types.

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

llvm-svn: 345063

5 years agoAdd a comment.
Rui Ueyama [Tue, 23 Oct 2018 17:52:44 +0000 (17:52 +0000)]
Add a comment.

llvm-svn: 345062

5 years agoSkip test with older versions of clang
Jonas Devlieghere [Tue, 23 Oct 2018 17:49:51 +0000 (17:49 +0000)]
Skip test with older versions of clang

This was failing for the bots that build with older clangs:

http://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake-clang-5.0.2/
http://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake-clang-6.0.1/

llvm-svn: 345061

5 years ago[LegalizeDAG] Share Vector/Scalar CTLZ Expansion
Simon Pilgrim [Tue, 23 Oct 2018 17:48:30 +0000 (17:48 +0000)]
[LegalizeDAG] Share Vector/Scalar CTLZ Expansion

As suggested on D53258, this patch shares common CTLZ expansion code between VectorLegalizer and SelectionDAGLegalize by putting it in TargetLowering.

Extension to D53474

llvm-svn: 345060

5 years agoFix MSVC build by correcting placement of declspec after r345056
Daniel Sanders [Tue, 23 Oct 2018 17:41:39 +0000 (17:41 +0000)]
Fix MSVC build by correcting placement of declspec after r345056

Going by the MSVC toolchains at godbolt.org, declspec comes after the template<...>.

llvm-svn: 345059

5 years agoRemove a global variable that we can live without.
Rui Ueyama [Tue, 23 Oct 2018 17:39:43 +0000 (17:39 +0000)]
Remove a global variable that we can live without.

Out::DebugInfo was used only by GdbIndex class to determine if
we need to create a .gdb_index section, but we can do the same
check without it.

Added a test that this patch doesn't change the existing behavior.

llvm-svn: 345058

5 years ago[IR] Fix -Wunused-function after r345052
Fangrui Song [Tue, 23 Oct 2018 17:24:15 +0000 (17:24 +0000)]
[IR] Fix -Wunused-function after r345052

llvm-svn: 345057

5 years ago[tblgen] Allow FixedLenDecoderEmitter to use APInt-like objects as InsnType
Daniel Sanders [Tue, 23 Oct 2018 17:23:31 +0000 (17:23 +0000)]
[tblgen] Allow FixedLenDecoderEmitter to use APInt-like objects as InsnType

Summary:
Some targets have very long encodings and uint64_t isn't sufficient. uint128_t
isn't portable so such targets need to use an object instead.

There is one catch with this at the moment, no string of bits extracted
from the encoding may exceeed 64-bits. Fields are still permitted to
exceed 64-bits so long as they aren't one contiguous string of bits. If
this proves to be a problem then we can modify the generation of
fieldFromInstruction() calls to account for it but for now I've added an
assertion for this.

InsnType must either be integral or an APInt-like object that must:
* Have a static const max_size_in_bits equal to the number of bits in the encoding.
* be default-constructible and copy-constructible
* be constructible from a uint64_t (this is the key area the interface deviates
  from APInt since this constructor does not take the bit width)
* be constructible from an APInt (this can be private)
* be convertible to uint64_t
* Support the ~, &,, ==, !=, and |= operators with other objects of the same type
* Support shift (<<, >>) with signed and unsigned integers on the RHS
* Support put (<<) to raw_ostream&

Reviewers: bogner, charukcs

Subscribers: nhaehnle, llvm-commits

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

llvm-svn: 345056

5 years agoChange two methods from const char* to StringRef [NFC].
Zachary Turner [Tue, 23 Oct 2018 17:22:02 +0000 (17:22 +0000)]
Change two methods from const char* to StringRef [NFC].

llvm-svn: 345055

5 years ago[PDB] Fix -Wunused-private-field in DIA
Reid Kleckner [Tue, 23 Oct 2018 17:20:16 +0000 (17:20 +0000)]
[PDB] Fix -Wunused-private-field in DIA

llvm-svn: 345054

5 years ago[Power9] Add __float128 support in the backend for bitcast to a i128
Stefan Pintilie [Tue, 23 Oct 2018 17:11:36 +0000 (17:11 +0000)]
[Power9] Add __float128 support in the backend for bitcast to a i128

Add support to allow bit-casting from f128 to i128 and then
extracting 64 bits from the result.

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

llvm-svn: 345053

5 years ago[IR] remove fake binop queries for not/neg
Sanjay Patel [Tue, 23 Oct 2018 17:06:03 +0000 (17:06 +0000)]
[IR] remove fake binop queries for not/neg

The initial motivation is that we want to remove the
fneg API because that would silently fail if we add
an actual fneg instruction to IR. The same would be
true for the integer ops, so we might as well get rid
of these too.

We have a newer 'match' API that makes checking for
these patterns simpler. It also works with vectors
that may include undef elements in constants.

If any out-of-tree users need updating, they can model
their code changes on these commits:
rL345050
rL345043
rL345042
rL345041
rL345036
rL345030

llvm-svn: 345052

5 years ago[OpenCL] Remove PIPE_RESERVE_ID_VALID_BIT from opencl-c.h
Andrew Savonichev [Tue, 23 Oct 2018 17:05:29 +0000 (17:05 +0000)]
[OpenCL] Remove PIPE_RESERVE_ID_VALID_BIT from opencl-c.h

Summary:
PIPE_RESERVE_ID_VALID_BIT is implementation defined, so lets not keep it in the header.

Previously the topic was discussed here: https://reviews.llvm.org/D32896

Reviewers: Anastasia, yaxunl

Reviewed By: Anastasia

Subscribers: cfe-commits, asavonic, bader

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

llvm-svn: 345051

5 years ago[InstCombine] use 'match' to simplify code
Sanjay Patel [Tue, 23 Oct 2018 16:54:28 +0000 (16:54 +0000)]
[InstCombine] use 'match' to simplify code

There's probably some vector-with-undef-element pattern
that shows an improvement, so this is probably not quite
'NFC'.

This is the last step towards removing the fake binop
queries for not/neg. Ie, there are no more uses of those
functions in trunk. Fneg should follow.

llvm-svn: 345050

5 years ago[clang-tidy] Add a separate section for NOLINT(NEXTLINE)? doc.
Alexander Kornienko [Tue, 23 Oct 2018 16:48:16 +0000 (16:48 +0000)]
[clang-tidy] Add a separate section for NOLINT(NEXTLINE)? doc.

llvm-svn: 345049

5 years ago[TTI][X86] Treat SK_Transpose shuffles as SK_PermuteTwoSrc - there's no difference...
Simon Pilgrim [Tue, 23 Oct 2018 16:45:26 +0000 (16:45 +0000)]
[TTI][X86] Treat SK_Transpose shuffles as SK_PermuteTwoSrc - there's no difference in lowering.

llvm-svn: 345048

5 years ago[NativePDB] Add basic support for tag types to the native pdb plugin.
Zachary Turner [Tue, 23 Oct 2018 16:37:53 +0000 (16:37 +0000)]
[NativePDB] Add basic support for tag types to the native pdb plugin.

This adds support to LLDB for named types (class, struct, union, and
enum).  This is true cross platform support, and hits the PDB file
directly without a dependency on Windows.  Tests are added which
compile a program with certain interesting types and then use
load the target in LLDB and use "type lookup -- <TypeName>" to
dump the layout of the type in LLDB without a running process.

Currently only fields are parsed -- we do not parse methods.  Also
we don't deal with bitfields or virtual bases correctly.  Those
will make good followups.

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

llvm-svn: 345047

5 years ago[DebugInfo][GlobalOpt] Fix -debugify for globalopt shrinking globals to booleans.
Jordan Rupprecht [Tue, 23 Oct 2018 16:35:51 +0000 (16:35 +0000)]
[DebugInfo][GlobalOpt] Fix -debugify for globalopt shrinking globals to booleans.

Summary:
TryToShrinkGlobalToBoolean, when possible, will split store <value> + load <value> into store <bool> + select <bool ? value : 0>. This preserves DebugLoc during that pass.

Fixes PR37959. The test case here is the simplified .ll for:

```
static int foo;
int bar() {
  foo = 5;
  return foo;
}
```

Reviewers: dblaikie, gbedwell, aprantl

Reviewed By: dblaikie

Subscribers: mehdi_amini, JDevlieghere, dexonsmith, llvm-commits

Tags: #debug-info

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

llvm-svn: 345046

5 years ago[CostModel][X86] Add transpose shuffle cost tests
Simon Pilgrim [Tue, 23 Oct 2018 16:27:14 +0000 (16:27 +0000)]
[CostModel][X86] Add transpose shuffle cost tests

llvm-svn: 345045