platform/upstream/llvm.git
5 years ago[GlobalISel][AArch64][NFC] Fix incorrect comment in selectUnmergeValues
Jessica Paquette [Fri, 25 Jan 2019 21:28:27 +0000 (21:28 +0000)]
[GlobalISel][AArch64][NFC] Fix incorrect comment in selectUnmergeValues

s/scalar/vector/

llvm-svn: 352243

5 years agoSimplify. NFC.
Rui Ueyama [Fri, 25 Jan 2019 21:25:25 +0000 (21:25 +0000)]
Simplify. NFC.

llvm-svn: 352242

5 years agoRevert rL352238.
Alina Sbirlea [Fri, 25 Jan 2019 21:12:08 +0000 (21:12 +0000)]
Revert rL352238.

llvm-svn: 352241

5 years ago[RISCV] Add another potential combine to {double,float}-bitmanip-dagcombines.ll
Alex Bradbury [Fri, 25 Jan 2019 21:06:47 +0000 (21:06 +0000)]
[RISCV] Add another potential combine to {double,float}-bitmanip-dagcombines.ll

(fcopysign a, (fneg b)) will be expanded to bitwise operations by
DAGTypeLegalizer::SoftenFloatRes_FCOPYSIGN if the floating point type isn't
legal. Arguably it might be worth doing a combine even if it is legal.

llvm-svn: 352240

5 years ago[Sema] Improve a -Warray-bounds diagnostic
Erik Pilkington [Fri, 25 Jan 2019 20:52:45 +0000 (20:52 +0000)]
[Sema] Improve a -Warray-bounds diagnostic

Fix a bug where we would compare array sizes with incompatible
element types, and look through explicit casts.

rdar://44800168

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

llvm-svn: 352239

5 years ago[WarnMissedTransforms] Set default to 1.
Alina Sbirlea [Fri, 25 Jan 2019 20:51:55 +0000 (20:51 +0000)]
[WarnMissedTransforms] Set default to 1.

Summary:
Set default value for retrieved attributes to 1, since the check is against 1.
Eliminates the warning noise generated when the attributes are not present.

Reviewers: sanjoy

Subscribers: jlebar, llvm-commits

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

llvm-svn: 352238

5 years agoReapply: [RISCV] Set isAsCheapAsAMove for ADDI, ORI, XORI, LUI
Ana Pazos [Fri, 25 Jan 2019 20:22:49 +0000 (20:22 +0000)]
Reapply: [RISCV] Set isAsCheapAsAMove for ADDI, ORI, XORI, LUI

This reapplies commit r352010 with RISC-V test fixes.

llvm-svn: 352237

5 years ago[MBP] Don't move bottom block before header if it can't reduce taken branches
Guozhi Wei [Fri, 25 Jan 2019 19:45:13 +0000 (19:45 +0000)]
[MBP] Don't move bottom block before header if it can't reduce taken branches

If bottom of block BB has only one successor OldTop, in most cases it is profitable to move it before OldTop, except the following case:

-->OldTop<-
|    .    |
|    .    |
|    .    |
---Pred   |
     |    |
    BB-----

Move BB before OldTop can't reduce the number of taken branches, this patch detects this case and prevent the moving.

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

llvm-svn: 352236

5 years ago[CMake] Use llvm-tblgen from NATIVE LLVM build when cross-compiling
Alex Langford [Fri, 25 Jan 2019 19:38:21 +0000 (19:38 +0000)]
[CMake] Use llvm-tblgen from NATIVE LLVM build when cross-compiling

Summary:
When cross-compiling LLDB, we want to use llvm-tblgen built for the
host, not the target.

Reviewers: compnerd, sgraenitz

Subscribers: mgorny, lldb-commits

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

llvm-svn: 352235

5 years agoFix XRayTest link on FreeBSD (and likely NetBSD too)
Dimitry Andric [Fri, 25 Jan 2019 19:36:47 +0000 (19:36 +0000)]
Fix XRayTest link on FreeBSD (and likely NetBSD too)

Summary:
As reported on llvm-testers, during 8.0.0-rc1 testing I got errors while
building of `XRayTest`, during `check-all`:

```
[100%] Generating XRayTest-x86_64-Test
/home/dim/llvm/8.0.0/rc1/Phase3/Release/llvmCore-8.0.0-rc1.obj/./lib/libLLVMSupport.a(Signals.cpp.o): In function `llvm::sys::PrintStackTrace(llvm::raw_ostream&)':
Signals.cpp:(.text._ZN4llvm3sys15PrintStackTraceERNS_11raw_ostreamE+0x24): undefined reference to `backtrace'
Signals.cpp:(.text._ZN4llvm3sys15PrintStackTraceERNS_11raw_ostreamE+0x254): undefined reference to `llvm::itaniumDemangle(char const*, char*, unsigned long*, int*)'
clang-8: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[3]: *** [projects/compiler-rt/lib/xray/tests/unit/CMakeFiles/TXRayTest-x86_64-Test.dir/build.make:73: projects/compiler-rt/lib/xray/tests/unit/XRayTest-x86_64-Test] Error 1
gmake[3]: Target 'projects/compiler-rt/lib/xray/tests/unit/CMakeFiles/TXRayTest-x86_64-Test.dir/build' not remade because of errors.
gmake[2]: *** [CMakeFiles/Makefile2:33513: projects/compiler-rt/lib/xray/tests/unit/CMakeFiles/TXRayTest-x86_64-Test.dir/all] Error 2
gmake[2]: Target 'CMakeFiles/check-all.dir/all' not remade because of errors.
gmake[1]: *** [CMakeFiles/Makefile2:737: CMakeFiles/check-all.dir/rule] Error 2
gmake[1]: Target 'check-all' not remade because of errors.
gmake: *** [Makefile:277: check-all] Error 2
[Release Phase3] check-all failed
```

This is because the `backtrace` function requires `-lexecinfo` on BSD
platforms.  To fix this, detect the `execinfo` library in
`cmake/config-ix.cmake`, and add it to the unit test link flags.

Additionally, since the code in `sys::PrintStackTrace` makes use of
`itaniumDemangle`, also add `-lLLVMDemangle`.  (Note that this is more
of a general problem with libLLVMSupport, but I'm looking for a quick
fix now so it can be merged to the 8.0 branch.)

Reviewers: dberris, hans, mgorny, samsonov

Reviewed By: dberris

Subscribers: krytarowski, delcypher, erik.pilkington, #sanitizers, emaste, llvm-commits

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

llvm-svn: 352234

5 years ago[CodeGen] Implement isTriviallyRecursive with StmtVisitor instead of RecursiveASTVisitor
Reid Kleckner [Fri, 25 Jan 2019 19:18:40 +0000 (19:18 +0000)]
[CodeGen] Implement isTriviallyRecursive with StmtVisitor instead of RecursiveASTVisitor

This code doesn't need to traverse types, lambdas, template arguments,
etc to detect trivial recursion. We can do a basic statement traversal
instead. This reduces the time spent compiling CodeGenModule.cpp, the
object file size (mostly reduced debug info), and the final executable
size by a small amount. I measured the exe mostly to check how much of
the overhead is from debug info, object file section headers, etc, vs
actual code.

metric   | before | after | diff
time (s) | 47.4   | 38.5  | -8.9
obj (kb) | 12888  | 12012 | -876
exe (kb) | 86072  | 85996 | -76

llvm-svn: 352232

5 years ago[clang-tidy] fix unit tests for dropped _Float16 support in X86
Jonas Toth [Fri, 25 Jan 2019 19:05:12 +0000 (19:05 +0000)]
[clang-tidy] fix unit tests for dropped _Float16 support in X86

Summary:
Because _Float16 was disabled for X86 targets the unit-tests started failing.
Extract the pieces for _Float16 and run theses tests under AArch64.

Reviewers: aaron.ballman, erichkeane, lebedev.ri

Reviewed By: erichkeane

Subscribers: javed.absar, xazax.hun, kristof.beyls, cfe-commits

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

llvm-svn: 352231

5 years ago[X86] Combine masked store and truncate into masked truncating stores.
Craig Topper [Fri, 25 Jan 2019 18:37:36 +0000 (18:37 +0000)]
[X86] Combine masked store and truncate into masked truncating stores.

We also need to combine to masked truncating with saturation stores, but I'm leaving that for a future patch.

This does regress some tests that used truncate wtih saturation followed by a masked store. Those now use a truncating store and use min/max to saturate.

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

llvm-svn: 352230

5 years agoRemove F16 literal support based on Float16 support.
Erich Keane [Fri, 25 Jan 2019 18:36:20 +0000 (18:36 +0000)]
Remove F16 literal support based on Float16 support.

Float16 support was disabled recently on many platforms, however that
commit still allowed literals of Float16 type to work.  This commit
removes those based on the same logic as Float16 disable.

Change-Id: I72243048ae2db3dc47bd3d699843e3edf9c395ea
llvm-svn: 352229

5 years ago[HotColdSplit] Introduce a cost model to control splitting behavior
Vedant Kumar [Fri, 25 Jan 2019 18:30:37 +0000 (18:30 +0000)]
[HotColdSplit] Introduce a cost model to control splitting behavior

The main goal of the model is to avoid *increasing* function size, as
that would eradicate any memory locality benefits from splitting. This
happens when:

  - There are too many inputs or outputs to the cold region. Argument
    materialization and reloads of outputs have a cost.

  - The cold region has too many distinct exit blocks, causing a large
    switch to be formed in the caller.

  - The code size cost of the split code is less than the cost of a
    set-up call.

A secondary goal is to prevent excessive overall binary size growth.

With the cost model in place, I experimented to find a splitting
threshold that works well in practice. To make warm & cold code easily
separable for analysis purposes, I moved split functions to a "cold"
section. I experimented with thresholds between [0, 4] and set the
default to the threshold which minimized geomean __text size.

Experiment data from building LNT+externals for X86 (N = 639 programs,
all sizes in bytes):

| Configuration | __text geom size | __cold geom size | TEXT geom size |
| **-Os**       | 1736.3           | 0, n=0           | 10961.6        |
| -Os, thresh=0 | 1740.53          | 124.482, n=134   | 11014          |
| -Os, thresh=1 | 1734.79          | 57.8781, n=90    | 10978.6        |
| -Os, thresh=2 | ** 1733.85 **    | 65.6604, n=61    | 10977.6        |
| -Os, thresh=3 | 1733.85          | 65.3071, n=61    | 10977.6        |
| -Os, thresh=4 | 1735.08          | 67.5156, n=54    | 10965.7        |
| **-Oz**       | 1554.4           | 0, n=0           | 10153          |
| -Oz, thresh=2 | ** 1552.2 **     | 65.633, n=61     | 10176          |
| **-O3**       | 2563.37          | 0, n=0           | 13105.4        |
| -O3, thresh=2 | ** 2559.49 **    | 71.1072, n=61    | 13162.4        |

Picking thresh=2 reduces the geomean __text section size by 0.14% at
-Os, -Oz, and -O3 and causes ~0.2% growth in the TEXT segment. Note that
TEXT size is page-aligned, whereas section sizes are byte-aligned.

Experiment data from building LNT+externals for ARM64 (N = 558 programs,
all sizes in bytes):

| Configuration | __text geom size | __cold geom size | TEXT geom size |
| **-Os**       | 1763.96          | 0, n=0           | 42934.9        |
| -Os, thresh=2 | ** 1760.9 **     | 76.6755, n=61    | 42934.9        |

Picking thresh=2 reduces the geomean __text section size by 0.17% at
-Os and causes no growth in the TEXT segment.

Measurements were done with D57082 (r352080) applied.

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

llvm-svn: 352228

5 years ago[MC] Teach the MachO object writer about N_FUNC_COLD
Vedant Kumar [Fri, 25 Jan 2019 18:30:22 +0000 (18:30 +0000)]
[MC] Teach the MachO object writer about N_FUNC_COLD

N_FUNC_COLD is a new MachO symbol attribute. It's a hint to the linker
to order a symbol towards the end of its section, to improve locality.

Example:

```
void a1() {}
__attribute__((cold)) void a2() {}
void a3() {}
int main() {
  a1();
  a2();
  a3();
  return 0;
}
```

A linker that supports N_FUNC_COLD will order _a2 to the end of the text
section. From `nm -njU` output, we see:

```
_a1
_a3
_main
_a2
```

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

llvm-svn: 352227

5 years agoResolveBreakpointSite: fix outdated warning message
Tatyana Krasnukha [Fri, 25 Jan 2019 18:27:09 +0000 (18:27 +0000)]
ResolveBreakpointSite: fix outdated warning message

Currently if a breakpoint site is already present, its ID will be returned, not the LLDB_INVALID_BREAK_ID.
On the other hand, Process::CreateBreakpointSite may have another reasons to return LLDB_INVALID_BREAK_ID.

llvm-svn: 352226

5 years agoTemporairly disable readability-uppercase-literal-suffix tests that depend on _Float1...
Roman Lebedev [Fri, 25 Jan 2019 18:05:43 +0000 (18:05 +0000)]
Temporairly disable readability-uppercase-literal-suffix tests that depend on _Float16, to get bots back to green

llvm-svn: 352224

5 years ago[opt-viewer] Add javascript to expand/hide full message for multiline remarks.
Florian Hahn [Fri, 25 Jan 2019 17:48:31 +0000 (17:48 +0000)]
[opt-viewer] Add javascript to expand/hide full message for multiline remarks.

This patch adds support for displaying remarks with multiple
lines. For such remarks, it creates a hidden div
containing the message's lines except the first one in a <pre>
tag. It also prepends a link (with '+' as text) to the regular remark
line. This link can be used to show/hide the div containing the
full remark.

In combination with D57159, this allows for better displaying of
multiline remarks in the html pages generated by opt-viewer.

The Javascript is very simple and should be supported by any recent
major browser.

Reviewers: hfinkel, anemet, thegameg, serge-sans-paille

Reviewed By: anemet

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

llvm-svn: 352223

5 years agoFix incorrect indent from r352221
Erich Keane [Fri, 25 Jan 2019 17:39:57 +0000 (17:39 +0000)]
Fix incorrect indent from r352221

Change-Id: I0a7b1443eb6912ef7bea1a4cf2f696fc01726557
llvm-svn: 352222

5 years agoDisable _Float16 for non ARM/SPIR Targets
Erich Keane [Fri, 25 Jan 2019 17:27:57 +0000 (17:27 +0000)]
Disable _Float16 for non ARM/SPIR Targets

As Discussed here:
http://lists.llvm.org/pipermail/llvm-dev/2019-January/129543.html

There are problems exposing the _Float16 type on architectures that
haven't defined the ABI/ISel for the type yet, so we're temporarily
disabling the type and making it opt-in.

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

Change-Id: I5db7366dedf1deb9485adb8948b1deb7e612a736
llvm-svn: 352221

5 years ago[scudo] Delay allocations in the RSS check test
Kostya Kortchinsky [Fri, 25 Jan 2019 17:23:29 +0000 (17:23 +0000)]
[scudo] Delay allocations in the RSS check test

Summary:
D57116 fails on the armv7 bots, which is I assume due to the timing of
the RSS check on the platform. While I don't have a platform to test
that change on, I assume this would do.

The test could be made more reliable by either delaying more the
allocations, or allocating more large-chunks, but both those options
have a somewhat non negligible impact (more memory used, longer test).

Hence me trying to keep the additional sleeping/allocating to a
minimum.

Reviewers: eugenis, yroux

Reviewed By: yroux

Subscribers: javed.absar, kristof.beyls, delcypher, #sanitizers, llvm-commits

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

llvm-svn: 352220

5 years agoAllow 'static' storage specifier on an out-of-line member function template
Erich Keane [Fri, 25 Jan 2019 17:01:42 +0000 (17:01 +0000)]
Allow 'static' storage specifier on an out-of-line member function template
declaration in MSVCCompat mode

Microsoft compiler permits the use of 'static' storage specifier outside
of a class definition if it's on an out-of-line member function template
declaration.

This patch allows 'static' storage specifier on an out-of-line member
function template declaration with a warning in Clang (To be compatible
with Microsoft).

Intel C/C++ compiler allows the 'static' keyword with a warning in
Microsoft mode. GCC allows this with -fpermissive.

Patch By: Manna

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

Change-Id: I97b2d9e9d57cecbcd545d17e2523142a85ca2702
llvm-svn: 352219

5 years ago[x86] simplify logic in lowerShuffleWithUndefHalf(); NFCI
Sanjay Patel [Fri, 25 Jan 2019 17:00:41 +0000 (17:00 +0000)]
[x86] simplify logic in lowerShuffleWithUndefHalf(); NFCI

This seems unnecessarily complicated because we gave names to
opposite polarity bools and have code comments that don't really
line up with the logic.

Step 1: remove UndefUpper and assert that it is the opposite of
UndefLower after the initial early exit.

llvm-svn: 352217

5 years ago[DiagnosticInfo] Add support for preserving newlines in remark arguments.
Florian Hahn [Fri, 25 Jan 2019 16:59:06 +0000 (16:59 +0000)]
[DiagnosticInfo] Add support for preserving newlines in remark arguments.

This patch adds a new type StringBlockVal which can be used to emit a
YAML block scalar, which preserves newlines in a multiline string. It
also updates  MappingTraits<DiagnosticInfoOptimizationBase::Argument> to
use it for argument values with more than a single newline.

This is helpful for remarks that want to display more in-depth
information in a more structured way.

Reviewers: thegameg, anemet

Reviewed By: anemet

Subscribers: hfinkel, hiraditya, llvm-commits

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

llvm-svn: 352216

5 years ago[TEST][COMMIT] - fix comment typo in AsmPrinter/DwarfDebug.cpp - NFC
Tom Weaver [Fri, 25 Jan 2019 16:29:35 +0000 (16:29 +0000)]
[TEST][COMMIT] - fix comment typo in AsmPrinter/DwarfDebug.cpp - NFC

llvm-svn: 352214

5 years ago[TblGen][NFC] Fix documentation formatting
Javed Absar [Fri, 25 Jan 2019 16:17:57 +0000 (16:17 +0000)]
[TblGen][NFC] Fix documentation formatting

llvm-svn: 352212

5 years ago[RISCV][NFC] s/f32/f64 in double-arith.ll
Alex Bradbury [Fri, 25 Jan 2019 16:04:04 +0000 (16:04 +0000)]
[RISCV][NFC] s/f32/f64 in double-arith.ll

The intrinsic names erroneously used the .f32 variant. As the return and
argument types were still double the intrinsics calls worked properly.

llvm-svn: 352211

5 years ago[X86] Simplify X86ISD::ADD/SUB if we don't use the result flag
Simon Pilgrim [Fri, 25 Jan 2019 15:58:28 +0000 (15:58 +0000)]
[X86] Simplify X86ISD::ADD/SUB if we don't use the result flag

Simplify to the generic ISD::ADD/SUB if we don't make use of the result flag.

This mainly helps with ADDCARRY/SUBBORROW intrinsics which get expanded to X86ISD::ADD/SUB but could be simplified further.

Noticed in some of the test cases in PR31754

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

llvm-svn: 352210

5 years ago[x86] narrow a shuffle that doesn't use or set any high elements
Sanjay Patel [Fri, 25 Jan 2019 15:37:42 +0000 (15:37 +0000)]
[x86] narrow a shuffle that doesn't use or set any high elements

This isn't the final fix for our reduction/horizontal codegen, but it takes care
of a lot of the problems. After we narrow the shuffle, existing combines for
insert/extract and binops kick in, and we end up with cheaper 128-bit ops.

The avg and mul reduction tests show an existing shuffle lowering hole for
AVX2/AVX512. I think in its most minimal form this is:
https://bugs.llvm.org/show_bug.cgi?id=40434
...but we might need multiple fixes to get it right.

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

llvm-svn: 352209

5 years agoRevert r351954 "Add a value_type to ArrayRef."
Clement Courbet [Fri, 25 Jan 2019 15:25:52 +0000 (15:25 +0000)]
Revert r351954 "Add a value_type to ArrayRef."

This breaks arm self-hosted buildbots.

llvm-svn: 352206

5 years ago[clangd] NFC: fix clang-tidy warnings.
Haojian Wu [Fri, 25 Jan 2019 15:14:03 +0000 (15:14 +0000)]
[clangd] NFC: fix clang-tidy warnings.

Most are about llvm code style violation (found via
readability-identifier-naming check).

llvm-svn: 352205

5 years ago[JSON] Work around excess-precision issue when comparing T_Integer numbers.
Sam McCall [Fri, 25 Jan 2019 15:05:33 +0000 (15:05 +0000)]
[JSON] Work around excess-precision issue when comparing T_Integer numbers.

Reviewers: bkramer

Subscribers: kristina, llvm-commits

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

llvm-svn: 352204

5 years ago[NFC][Clang] Add driver tests for sb and predres
Diogo N. Sampaio [Fri, 25 Jan 2019 14:57:22 +0000 (14:57 +0000)]
[NFC][Clang] Add driver tests for sb and predres

Add tests that arguments for enabling/disabling
sb and predres are correctly being or not passed
by the driver.

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

llvm-svn: 352203

5 years agogn build: Merge r352149
Nico Weber [Fri, 25 Jan 2019 14:53:30 +0000 (14:53 +0000)]
gn build: Merge r352149

llvm-svn: 352202

5 years agogn build: Revert r352200, commit message was wrong
Nico Weber [Fri, 25 Jan 2019 14:52:50 +0000 (14:52 +0000)]
gn build: Revert r352200, commit message was wrong

llvm-svn: 352201

5 years agogn build: Merge r352148
Nico Weber [Fri, 25 Jan 2019 14:50:14 +0000 (14:50 +0000)]
gn build: Merge r352148

llvm-svn: 352200

5 years ago[RISCV] Add tests to demonstrate bitcasted fneg/fabs dagcombines
Alex Bradbury [Fri, 25 Jan 2019 14:33:08 +0000 (14:33 +0000)]
[RISCV] Add tests to demonstrate bitcasted fneg/fabs dagcombines

This target-independent code won't trigger for cases such as RV32FD where
custom SelectionDAG nodes are generated. These new tests demonstrate such
cases. Additionally, float-arith.ll was updated so that fneg.s, fsgnjn.s, and
fabs.s selection patterns are actually exercised.

llvm-svn: 352199

5 years agoFix line endings and trim trailing whitespace. NFCI.
Simon Pilgrim [Fri, 25 Jan 2019 14:29:57 +0000 (14:29 +0000)]
Fix line endings and trim trailing whitespace. NFCI.

llvm-svn: 352198

5 years agogitignore: ignore clangd index files.
Haojian Wu [Fri, 25 Jan 2019 14:05:18 +0000 (14:05 +0000)]
gitignore: ignore clangd index files.

Reviewers: kadircet

Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, llvm-commits

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

llvm-svn: 352197

5 years ago[X86] Add addcarry/subborrow combine tests
Simon Pilgrim [Fri, 25 Jan 2019 12:26:27 +0000 (12:26 +0000)]
[X86] Add addcarry/subborrow combine tests

Show failure to simplify cases with zero op/flags

llvm-svn: 352196

5 years ago[llvm-symbolizer] Add switch to adjust addresses by fixed offset
James Henderson [Fri, 25 Jan 2019 11:49:21 +0000 (11:49 +0000)]
[llvm-symbolizer] Add switch to adjust addresses by fixed offset

If a stack trace or similar has a list of addresses from an executable
or DSO loaded at a variable address (e.g. due to ASLR), the addresses
will not directly correspond to the addresses stored in the object file.
If a user wishes to use llvm-symbolizer, they have to subtract the load
address from every address. This is somewhat inconvenient, especially as
the output of --print-address will result in the adjusted address being
listed, rather than the address coming from the stack trace, making it
harder to map results between the two.

This change adds a new switch to llvm-symbolizer --adjust-vma which
takes an offset, which is then used to automatically do this
calculation. The printed address remains the input address (allowing for
easy mapping), whilst the specified offset is applied to the addresses
when performing the lookup.

The switch is conceptually similar to llvm-objdump's new switch of the
same name (see D57051), which in turn mirrors a GNU switch. There is no
equivalent switch in addr2line.

Reviewed by: grimar

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

llvm-svn: 352195

5 years ago[NFC] One more crashing test on LoopSimplifyCFG
Max Kazantsev [Fri, 25 Jan 2019 11:47:16 +0000 (11:47 +0000)]
[NFC] One more crashing test on LoopSimplifyCFG

llvm-svn: 352194

5 years agoFix gcc -Wparentheses warning. NFCI.
Simon Pilgrim [Fri, 25 Jan 2019 11:38:40 +0000 (11:38 +0000)]
Fix gcc -Wparentheses warning. NFCI.

llvm-svn: 352193

5 years agoFix "control reaches end of non-void function" warning. NFCI.
Simon Pilgrim [Fri, 25 Jan 2019 11:36:51 +0000 (11:36 +0000)]
Fix "control reaches end of non-void function" warning. NFCI.

llvm-svn: 352192

5 years agoFix gcc -Wparentheses warning. NFCI.
Simon Pilgrim [Fri, 25 Jan 2019 11:34:58 +0000 (11:34 +0000)]
Fix gcc -Wparentheses warning. NFCI.

llvm-svn: 352191

5 years ago[NFC] Add failing test on LCSSA forming
Max Kazantsev [Fri, 25 Jan 2019 11:32:21 +0000 (11:32 +0000)]
[NFC] Add failing test on LCSSA forming

llvm-svn: 352190

5 years ago[ARM GlobalISel] Support shifts for Thumb2
Diana Picus [Fri, 25 Jan 2019 10:48:42 +0000 (10:48 +0000)]
[ARM GlobalISel] Support shifts for Thumb2

Same as ARM.

On this occasion we split some of the instruction select tests for more
complicated instructions into their own files, so we can reuse them for
ARM and Thumb mode. Likewise for the legalizer tests.

llvm-svn: 352188

5 years ago[ARM GlobalISel] Remove rebase artifact from r351882. NFC
Diana Picus [Fri, 25 Jan 2019 10:48:35 +0000 (10:48 +0000)]
[ARM GlobalISel] Remove rebase artifact from r351882. NFC

r351882 introduced some superfluous calls to mark G_INTTOPTR and
G_PTRTOINT as legal (looks like a rebase mishap). Remove them.

llvm-svn: 352187

5 years agoRevert r352181 as it's breaking the bots
Anton Korobeynikov [Fri, 25 Jan 2019 10:35:35 +0000 (10:35 +0000)]
Revert r352181 as it's breaking the bots

llvm-svn: 352186

5 years ago[TblGen] Extend !if semantics through new feature !cond
Javed Absar [Fri, 25 Jan 2019 10:25:25 +0000 (10:25 +0000)]
[TblGen] Extend !if semantics through new feature !cond

This patch extends TableGen language with !cond operator.
Instead of embedding !if inside !if which can get cumbersome,
one can now use !cond.
Below is an example to convert an integer 'x' into a string:

    !cond(!lt(x,0) : "Negative",
          !eq(x,0) : "Zero",
          !eq(x,1) : "One,
          1        : "MoreThanOne")

Reviewed By: hfinkel, simon_tatham, greened
Differential Revision: https://reviews.llvm.org/D55758

llvm-svn: 352185

5 years ago[clangd] Log clang-tidy configuration, NFC
Haojian Wu [Fri, 25 Jan 2019 10:14:27 +0000 (10:14 +0000)]
[clangd] Log clang-tidy configuration, NFC

Summary: This is used for debugging purpose.

Reviewers: sammccall

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

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

llvm-svn: 352184

5 years ago[clang-tidy] Add check for underscores in googletest names.
Haojian Wu [Fri, 25 Jan 2019 10:03:49 +0000 (10:03 +0000)]
[clang-tidy] Add check for underscores in googletest names.

Summary: Adds a clang-tidy warning for underscores in googletest names.

Patch by Kar Epker!

Reviewers: hokein, alexfh, aaron.ballman

Reviewed By: hokein

Subscribers: Eugene.Zelenko, JonasToth, MyDeveloperDay, lebedev.ri, xazax.hun, mgorny, cfe-commits

Tags: #clang-tools-extra

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

llvm-svn: 352183

5 years ago[llvm-objcopy] Add support for -g as an alias for --strip-debug
Douglas Yung [Fri, 25 Jan 2019 09:57:20 +0000 (09:57 +0000)]
[llvm-objcopy] Add support for -g as an alias for --strip-debug

This change adds an option -g to llvm-objcopy which is an alias for the existing option --strip-debug.

This fixes PR40003.

Reviewed by: alexshap

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

llvm-svn: 352182

5 years agoDisable PIC/PIE for MSP430 target by default.
Anton Korobeynikov [Fri, 25 Jan 2019 09:41:20 +0000 (09:41 +0000)]
Disable PIC/PIE for MSP430 target by default.

Relocatable code generation is meaningless on MSP430, as the platform is too small to use shared libraries.

Patch by Dmitry Mikushev!

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

llvm-svn: 352181

5 years agoFix typo in ClangModulesDeclVendor [NFC]
Raphael Isemann [Fri, 25 Jan 2019 09:28:48 +0000 (09:28 +0000)]
Fix typo in ClangModulesDeclVendor [NFC]

llvm-svn: 352180

5 years ago[llvm-mca][X86] Add missing shuffle tests
Simon Pilgrim [Fri, 25 Jan 2019 09:17:30 +0000 (09:17 +0000)]
[llvm-mca][X86] Add missing shuffle tests

Match the coverage of test\CodeGen\X86\avx512-shuffle-schedule.ll so we can get rid of -print-schedule (and fix PR37160) without losing schedule tests

llvm-svn: 352179

5 years ago[MSP430] Fix absolute addressing mode printing in AsmPrinter
Anton Korobeynikov [Fri, 25 Jan 2019 09:14:05 +0000 (09:14 +0000)]
[MSP430] Fix absolute addressing mode printing in AsmPrinter

Align checks for absolute addressing mode with its current
implementation (SR is used as a base register).

This fixes https://bugs.llvm.org/show_bug.cgi?id=39993

Patch by Kristina Bessonova!

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

llvm-svn: 352178

5 years ago[MSP430] Ajust f32/f64 alignment according to MSP430 EABI
Anton Korobeynikov [Fri, 25 Jan 2019 08:51:53 +0000 (08:51 +0000)]
[MSP430] Ajust f32/f64 alignment according to MSP430 EABI

Patch by Kristina Bessonova!

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

llvm-svn: 352177

5 years ago[NFC] Add test with multiple loops
Max Kazantsev [Fri, 25 Jan 2019 08:46:00 +0000 (08:46 +0000)]
[NFC] Add test with multiple loops

llvm-svn: 352176

5 years agoRefactor HAVE_LIBCOMPRESSION and related code in GDBRemoteCommunication
Raphael Isemann [Fri, 25 Jan 2019 08:21:47 +0000 (08:21 +0000)]
Refactor HAVE_LIBCOMPRESSION and related code in GDBRemoteCommunication

Summary:
The field `m_decompression_scratch_type` is only used when `HAVE_LIBCOMPRESSION` is
defined, which caused a warning which I fixed in rLLDB350675 by just marking the variable as always used.

This patch fixes this in a better way by only defining the variable (and the related `m_decompression_scratch`
variable) when `HAVE_LIBCOMPRESSION` is defined. This also required changing the way we handle
`HAVE_LIBCOMPRESSION` works, as this was previously always defined on macOS within the source file
but not in the header. Now it's always defined from within our config header when CMake defines it or when
we are on macOS.

The field initialization was moved to the header to prevent that we have `#ifdef` within our initializer list.

Reviewers: #lldb, jasonmolenda, sgraenitz, labath

Reviewed By: labath

Subscribers: labath, beanz, mgorny, lldb-commits, dblaikie

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

llvm-svn: 352175

5 years ago[PowerPC] Enhance the fast selection of cmp instruction and clean up related asserts
Zi Xuan Wu [Fri, 25 Jan 2019 07:24:59 +0000 (07:24 +0000)]
[PowerPC] Enhance the fast selection of cmp instruction and clean up related asserts

Fast selection of llvm icmp and fcmp instructions is not handled well about VSX instruction support.

We'd use VSX float comparison instruction instead of non-vsx float comparison instruction
if the operand register class is VSSRC or VSFRC because i32 and i64 are mapped to VSSRC and
VSFRC correspondingly if VSX feature is opened.

If the target does not have corresponding VSX instruction comparison for some type,
just copy VSX-related register to common float register class and use non-vsx comparison instruction.

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

llvm-svn: 352174

5 years ago[X86] Remove mask and passthru arguments from vpconflict builtins. Use select in...
Craig Topper [Fri, 25 Jan 2019 07:08:22 +0000 (07:08 +0000)]
[X86] Remove mask and passthru arguments from vpconflict builtins. Use select in IR instead.

llvm-svn: 352173

5 years ago[X86] Add non-masked versions of vpconflict intrinsics so we can use a select in...
Craig Topper [Fri, 25 Jan 2019 07:08:07 +0000 (07:08 +0000)]
[X86] Add non-masked versions of vpconflict intrinsics so we can use a select in the header file in clang.

I'll remove and autoupgrade the old intrinsics in a future commit.

llvm-svn: 352172

5 years ago[RISCV] Custom-legalise i32 SDIV/UDIV/UREM on RV64M
Alex Bradbury [Fri, 25 Jan 2019 05:11:34 +0000 (05:11 +0000)]
[RISCV] Custom-legalise i32 SDIV/UDIV/UREM on RV64M

Follow the same custom legalisation strategy as used in D57085 for
variable-length shifts (see that patch summary for more discussion). Although
we may lose out on some late-stage DAG combines, I think this custom
legalisation strategy is ultimately easier to reason about.

There are some codegen changes in rv64m-exhaustive-w-insts.ll but they are all
neutral in terms of the number of instructions.

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

llvm-svn: 352171

5 years ago[LoopSimplifyCFG] Fix inconsistency in blocks in loop markup
Max Kazantsev [Fri, 25 Jan 2019 05:05:02 +0000 (05:05 +0000)]
[LoopSimplifyCFG] Fix inconsistency in blocks in loop markup

2nd part of D57095 with the same reason, just in another place. We never
fold branches that are not immediately in the current loop, but this check
is missing in `IsEdgeLive` As result, it may think that the edge in subloop is
dead while it's live. It's a pessimization in the current stance.

Differential Revision: https://reviews.llvm.org/D57147
Reviewed By: rupprecht

llvm-svn: 352170

5 years ago[RISCV] Custom-legalise 32-bit variable shifts on RV64
Alex Bradbury [Fri, 25 Jan 2019 05:04:00 +0000 (05:04 +0000)]
[RISCV] Custom-legalise 32-bit variable shifts on RV64

The previous DAG combiner-based approach had an issue with infinite loops
between the target-dependent and target-independent combiner logic (see
PR40333). Although this was worked around in rL351806, the combiner-based
approach is still potentially brittle and can fail to select the 32-bit shift
variant when profitable to do so, as demonstrated in the pr40333.ll test case.

This patch instead introduces target-specific SelectionDAG nodes for
SHLW/SRLW/SRAW and custom-lowers variable i32 shifts to them. pr40333.ll is a
good example of how this approach can improve codegen.

This adds DAG combine that does SimplifyDemandedBits on the operands (only
lower 32-bits of first operand and lower 5 bits of second operand are read).
This seems better than implementing SimplifyDemandedBitsForTargetNode as there
is no guarantee that would be called (and it's not for e.g. the anyext return
test cases). Also implements ComputeNumSignBitsForTargetNode.

There are codegen changes in atomic-rmw.ll and atomic-cmpxchg.ll but the new
instruction sequences are semantically equivalent.

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

llvm-svn: 352169

5 years agoAMDGPU/GlobalISel: Remove leftover setAction
Matt Arsenault [Fri, 25 Jan 2019 04:54:00 +0000 (04:54 +0000)]
AMDGPU/GlobalISel: Remove leftover setAction

Also move G_GEP actions together.

llvm-svn: 352168

5 years agoAMDGPU/GlobalISel: Scalarize add/sub
Matt Arsenault [Fri, 25 Jan 2019 04:53:57 +0000 (04:53 +0000)]
AMDGPU/GlobalISel: Scalarize add/sub

llvm-svn: 352167

5 years agoGlobalISel: fewerElementsVector for more cast types
Matt Arsenault [Fri, 25 Jan 2019 04:37:33 +0000 (04:37 +0000)]
GlobalISel: fewerElementsVector for more cast types

llvm-svn: 352166

5 years agoGlobalISel: fewerElementsVector for a few more trivial ops
Matt Arsenault [Fri, 25 Jan 2019 04:03:38 +0000 (04:03 +0000)]
GlobalISel: fewerElementsVector for a few more trivial ops

llvm-svn: 352165

5 years agoAMDGPU/GlobalISel: Legalize smulh/umulh and scalarize mul
Matt Arsenault [Fri, 25 Jan 2019 03:23:04 +0000 (03:23 +0000)]
AMDGPU/GlobalISel: Legalize smulh/umulh and scalarize mul

llvm-svn: 352162

5 years ago[HotColdSplit] Describe the pass in more detail, NFC
Vedant Kumar [Fri, 25 Jan 2019 03:22:38 +0000 (03:22 +0000)]
[HotColdSplit] Describe the pass in more detail, NFC

llvm-svn: 352161

5 years ago[HotColdSplit] Split more aggressively before/after cold invokes
Vedant Kumar [Fri, 25 Jan 2019 03:22:23 +0000 (03:22 +0000)]
[HotColdSplit] Split more aggressively before/after cold invokes

While a cold invoke itself and its unwind destination can't be
extracted, code which unconditionally executes before/after the invoke
may still be profitable to extract.

With cost model changes from D57125 applied, this gives a 3.5% increase
in split text across LNT+externals on arm64 at -Os.

llvm-svn: 352160

5 years agoDefine the _fltused symbol in one lldb test as well, post-r352076.
James Y Knight [Fri, 25 Jan 2019 03:21:23 +0000 (03:21 +0000)]
Define the _fltused symbol in one lldb test as well, post-r352076.

llvm-svn: 352159

5 years agoRemove a warning in DynamicLoaderDarwin::UpdateImageLoadAddress
Jason Molenda [Fri, 25 Jan 2019 03:01:48 +0000 (03:01 +0000)]
Remove a warning in DynamicLoaderDarwin::UpdateImageLoadAddress
when the binary loaded in memory has a section that we cannot find
in the on-disk version.  I added this warning out of an overabundance
of caution originally, but I've never seen an instance of it being
hit in the past few years, and there are some changes for the shared
cache on darwin systems where a segment is added when the shared
cache is constructed so we're now hitting this warning.  I've decided
to remove it altogether.

<rdar://problem/46889346>

llvm-svn: 352158

5 years agoGlobalISel: Support fewerElementsVector for icmp/fcmp
Matt Arsenault [Fri, 25 Jan 2019 02:59:34 +0000 (02:59 +0000)]
GlobalISel: Support fewerElementsVector for icmp/fcmp

Also legalize 64-bit compares for AMDGPU

llvm-svn: 352157

5 years ago[AArch64] Make the test for rsr and rsr64 stricter
Petr Hosek [Fri, 25 Jan 2019 02:42:30 +0000 (02:42 +0000)]
[AArch64] Make the test for rsr and rsr64 stricter

ACLE specifies that return type for rsr and rsr64 is uint32_t and
uint64_t respectively. D56852 change the return type of rsr64 from
unsigned long to unsigned long long which at least on Linux doesn't
match uint64_t, but the test isn't strict enough to detect that
because compiler implicitly converts unsigned long long to uint64_t,
but it breaks other uses such as printf with PRIx64 type specifier.
This change makes the test stricter enforcing that the return type
of rsr and rsr64 builtins is what is actually specified in ACLE.

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

llvm-svn: 352156

5 years agoGlobalISel: Implement fewerElementsVector for extensions
Matt Arsenault [Fri, 25 Jan 2019 02:36:32 +0000 (02:36 +0000)]
GlobalISel: Implement fewerElementsVector for extensions

llvm-svn: 352155

5 years agoEnhance support for NetBSD in SafeStack
Kamil Rytarowski [Fri, 25 Jan 2019 02:18:01 +0000 (02:18 +0000)]
Enhance support for NetBSD in SafeStack

Summary:
Always try to detect and call internal or real libc symbols instead of
locally installed interceptors.

This covers:
 - GetTid()
 - TgKill()
 - Mmap()
 - Munmap()
 - Mprotect()

This cherry-picks code from sanitizer_common/sanitizer_netbsd.cc.

Reviewers: vitalybuka

Reviewed By: vitalybuka

Subscribers: llvm-commits, mgorny, #sanitizers

Tags: #sanitizers

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

llvm-svn: 352154

5 years agoRevert "[AArch64] Use LL for 64-bit intrinsic arguments"
Petr Hosek [Fri, 25 Jan 2019 02:16:29 +0000 (02:16 +0000)]
Revert "[AArch64] Use LL for 64-bit intrinsic arguments"

This reverts commit r351740: this broke on platforms where unsigned long
long isn't the same as uint64_t which is what ACLE specifies for the
return value of rsr64.

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

llvm-svn: 352153

5 years agohwasan: If we split the entry block, move static allocas back into the entry block.
Peter Collingbourne [Fri, 25 Jan 2019 02:08:46 +0000 (02:08 +0000)]
hwasan: If we split the entry block, move static allocas back into the entry block.

Otherwise they are treated as dynamic allocas, which ends up increasing
code size significantly. This reduces size of Chromium base_unittests
by 2MB (6.7%).

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

llvm-svn: 352152

5 years ago[hwasan] Madvise away thread aux data
Evgeniy Stepanov [Fri, 25 Jan 2019 02:05:48 +0000 (02:05 +0000)]
[hwasan] Madvise away thread aux data

Summary:
Release memory pages for thread data (allocator cache, stack allocations
ring buffer, etc) when a thread exits. We can not simply munmap them
because this memory is custom allocated within a limited address range,
and it needs to stay "reserved".

This change alters thread storage layout by putting the ring buffer
before Thread instead of after it. This makes it possible to find the
start of the thread aux allocation given only the Thread pointer.

Reviewers: kcc, pcc

Subscribers: kubamracek, llvm-commits

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

llvm-svn: 352151

5 years ago[hwasan] Implement print_module_map flag.
Evgeniy Stepanov [Fri, 25 Jan 2019 02:05:25 +0000 (02:05 +0000)]
[hwasan] Implement print_module_map flag.

Reviewers: kcc, pcc

Subscribers: kubamracek, llvm-commits

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

llvm-svn: 352150

5 years ago[analyzer] Port RetainSummaryManager to the new AnyCall interface, decouple ARCMT...
George Karpenkov [Fri, 25 Jan 2019 01:24:04 +0000 (01:24 +0000)]
[analyzer] Port RetainSummaryManager to the new AnyCall interface, decouple ARCMT from the analyzer

rdar://19694750

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

llvm-svn: 352149

5 years ago[analysis] Introduce an AnyCall helper class, for abstraction over different callables
George Karpenkov [Fri, 25 Jan 2019 01:23:51 +0000 (01:23 +0000)]
[analysis] Introduce an AnyCall helper class, for abstraction over different callables

A lot of code, particularly in the analyzer, has to perform a lot of
duplication to handle functions/ObjCMessages/destructors/constructors in
a generic setting.
The analyzer already has a CallEvent helper class abstracting over such
calls, but it's not always suitable, since it's tightly coupled to other
analyzer classes (ExplodedNode, ProgramState, etc.) and it's not always
possible to construct.

This change introduces a very simple, very lightweight helper class to
do simple generic operations over callables.

In future, parts of CallEvent could be changed to use this class to
avoid some duplication.

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

llvm-svn: 352148

5 years ago[AST] Add a method to get a call type from an ObjCMessageExpr
George Karpenkov [Fri, 25 Jan 2019 01:23:37 +0000 (01:23 +0000)]
[AST] Add a method to get a call type from an ObjCMessageExpr

Due to references, expression type does not always correspond to an
expected method return type (e.g. for a method returning int & the
expression type of the call would still be int).
We have a helper method for getting the expected type on CallExpr, but
not on ObjCMessageExpr.

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

llvm-svn: 352147

5 years agogn build: Set is_clang to true in stage2 toolchains.
Peter Collingbourne [Fri, 25 Jan 2019 01:18:55 +0000 (01:18 +0000)]
gn build: Set is_clang to true in stage2 toolchains.

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

llvm-svn: 352146

5 years ago[libFuzzer][MSVC] Disable exceptions in MSVC headers
Jonathan Metzman [Fri, 25 Jan 2019 01:10:57 +0000 (01:10 +0000)]
[libFuzzer][MSVC] Disable exceptions in MSVC headers

Summary:
Disable exceptions in MSVC headers using -D_HAS_EXCEPTIONS=0
to silence compiler warning instead of using /Ehsc.

Reviewers: rnk, morehouse, metzman

Reviewed By: rnk, morehouse, metzman

Subscribers: rnk, morehouse, mgorny

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

llvm-svn: 352144

5 years agoGlobalISel: Add convenience mutatations to scalarize
Matt Arsenault [Fri, 25 Jan 2019 00:51:00 +0000 (00:51 +0000)]
GlobalISel: Add convenience mutatations to scalarize

llvm-svn: 352143

5 years agosimplify COFF module assembly test and move it to Object
Bob Haarman [Fri, 25 Jan 2019 00:33:05 +0000 (00:33 +0000)]
simplify COFF module assembly test and move it to Object

Reviewers: pcc, rnk

Subscribers: llvm-commits

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

llvm-svn: 352142

5 years agogn build: Build clang with -fno-strict-aliasing, make building with gcc much quieter
Nico Weber [Fri, 25 Jan 2019 00:29:17 +0000 (00:29 +0000)]
gn build: Build clang with -fno-strict-aliasing, make building with gcc much quieter

- gcc doesn't understand -Wstring-conversion, so pass that only to clang
- disable a few gcc warnings that are noisy and also disabled in the cmake build
- -Wstrict-aliasing pointed out that the cmake build builds clang with
  -fno-strict-aliasing, so do that too

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

llvm-svn: 352141

5 years agoTry to address Windows bot failure after r352080
Vedant Kumar [Fri, 25 Jan 2019 00:15:16 +0000 (00:15 +0000)]
Try to address Windows bot failure after r352080

See the bot error message reported in https://reviews.llvm.org/D57082.

Avoid trying to match full class names in -debug-pass-manager output,
because they aren't portable.

llvm-svn: 352138

5 years agoGlobalISel: Add helper to LLT to get a scalar or vector
Matt Arsenault [Fri, 25 Jan 2019 00:10:49 +0000 (00:10 +0000)]
GlobalISel: Add helper to LLT to get a scalar or vector

llvm-svn: 352136

5 years ago[GlobalISel][AArch64] Avoid unused variable warning for variable only used in assert
Benjamin Kramer [Thu, 24 Jan 2019 23:45:07 +0000 (23:45 +0000)]
[GlobalISel][AArch64] Avoid unused variable warning for variable only used in assert

llvm-svn: 352133

5 years ago[PowerPC] Exploit store instructions that store a single vector element
Nemanja Ivanovic [Thu, 24 Jan 2019 23:44:28 +0000 (23:44 +0000)]
[PowerPC] Exploit store instructions that store a single vector element

This patch exploits the instructions that store a single element from a vector
to preform a (store (extract_elt)). We already have code that does this with
ISA 3.0 instructions that were added to handle i8/i16 types. However, we had
never exploited the existing ones that handle f32/f64/i32/i64 types.

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

llvm-svn: 352131

5 years agoRegBankSelect: Fix use after free in r352123
Matt Arsenault [Thu, 24 Jan 2019 23:42:01 +0000 (23:42 +0000)]
RegBankSelect: Fix use after free in r352123

llvm-svn: 352130

5 years ago[GlobalISel][AArch64] Avoid unused function warnings in Release builds
Benjamin Kramer [Thu, 24 Jan 2019 23:39:47 +0000 (23:39 +0000)]
[GlobalISel][AArch64] Avoid unused function warnings in Release builds

llvm-svn: 352129

5 years agopdbutil: Remove unused variables
David Blaikie [Thu, 24 Jan 2019 23:13:20 +0000 (23:13 +0000)]
pdbutil: Remove unused variables

llvm-svn: 352128

5 years ago[x86] move half-size shuffle mask creation to helper; NFC
Sanjay Patel [Thu, 24 Jan 2019 23:12:36 +0000 (23:12 +0000)]
[x86] move half-size shuffle mask creation to helper; NFC

As noted in D57156, we want to check at least part of
this pattern earlier (in combining), so this will allow
the code to be shared instead of duplicated.

llvm-svn: 352127