OSDN Git Service

android-x86/external-llvm.git
5 years ago[Analysis] Link library dependencies to Analysis plugins
Petr Hosek [Wed, 22 May 2019 00:47:37 +0000 (00:47 +0000)]
[Analysis] Link library dependencies to Analysis plugins

These are needed to avoid undefined symbols which aren't satisfied
by Clang itself.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361340 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] fold shuffles of insert_subvectors
Sanjay Patel [Wed, 22 May 2019 00:32:25 +0000 (00:32 +0000)]
[InstCombine] fold shuffles of insert_subvectors

This should be a valid exception to the general rule of not creating new shuffle masks in IR...
because we already do it. :)
Also, DAG combining/legalization will undo this by widening the shuffle back out if needed.

Explanation for how we already do this: SLP or vector source can create chains of insert/extract
as shown in 1 of the examples from PR16739:
https://godbolt.org/z/NlK7rA
https://bugs.llvm.org/show_bug.cgi?id=16739

And we expect instcombine or DAGCombine to clean that up by creating relatively simple shuffles.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361338 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Assume calls read exec
Matt Arsenault [Tue, 21 May 2019 23:23:16 +0000 (23:23 +0000)]
AMDGPU: Assume calls read exec

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361333 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Add some tests for inlineasm behavior
Matt Arsenault [Tue, 21 May 2019 23:23:12 +0000 (23:23 +0000)]
AMDGPU: Add some tests for inlineasm behavior

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361332 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Assume call pseudos are convergent
Matt Arsenault [Tue, 21 May 2019 23:23:10 +0000 (23:23 +0000)]
AMDGPU: Assume call pseudos are convergent

There should probably be nonconvergent versions, but my guess is it
doesn't matter in practice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361331 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Fix not marking new gfx10 SGPRs as CSRs
Matt Arsenault [Tue, 21 May 2019 23:23:05 +0000 (23:23 +0000)]
AMDGPU: Fix not marking new gfx10 SGPRs as CSRs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361330 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[WebAssembly] Add the signature for the new llround builtin function
Dan Gohman [Tue, 21 May 2019 23:06:34 +0000 (23:06 +0000)]
[WebAssembly] Add the signature for the new llround builtin function

r360889 added new llround builtin functions. This patch adds their
signatures for the WebAssembly backend.

It also adds wasm32 support to utils/update_llc_test_checks.py, since
that's the script other targets are using for their testcases for this
feature.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361327 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ORC] Guarantee unique JITDylib names in lli, add usage notes to createJITDylib.
Lang Hames [Tue, 21 May 2019 22:07:53 +0000 (22:07 +0000)]
[ORC] Guarantee unique JITDylib names in lli, add usage notes to createJITDylib.

JITDylibs should have unique names. This patch adds code to lli to respect this
invariant (by refering to the exist JITDylib if a -jd <name> option is specified
more than once). It also adds usage notes to the doxygen comment for
createJITDylib method in ExecutionSession and LLJIT.

http://llvm.org/PR41937

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361322 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC][AMDGPU] Autogenerate llvm.amdgcn.s.barrier.ll test
Roman Lebedev [Tue, 21 May 2019 21:49:14 +0000 (21:49 +0000)]
[NFC][AMDGPU] Autogenerate llvm.amdgcn.s.barrier.ll test

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361320 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC][X86] Autogenerate ragreedy-hoist-spill.ll test
Roman Lebedev [Tue, 21 May 2019 21:49:10 +0000 (21:49 +0000)]
[NFC][X86] Autogenerate ragreedy-hoist-spill.ll test

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361319 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC][Thumb2] Autogenerate thumb2-ldr_pre.ll test
Roman Lebedev [Tue, 21 May 2019 21:49:05 +0000 (21:49 +0000)]
[NFC][Thumb2] Autogenerate thumb2-ldr_pre.ll test

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361318 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] add more tests for shuffle folding; NFC
Sanjay Patel [Tue, 21 May 2019 21:45:24 +0000 (21:45 +0000)]
[InstCombine] add more tests for shuffle folding; NFC

As discussed in D62024, we want to limit any potential IR
transforms of shuffles to cases where we know the SDAG
conversion would result in equivalent patterns for these
IR variants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361317 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Add large integer comparison tests for PR41971; NFC
Nikita Popov [Tue, 21 May 2019 21:27:08 +0000 (21:27 +0000)]
[X86] Add large integer comparison tests for PR41971; NFC

In these cases we would prefer a direct comparison over going through
a vector type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361315 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC][InstCombine] Add unary fneg tests to operand-complexity.ll.
Cameron McInally [Tue, 21 May 2019 21:07:46 +0000 (21:07 +0000)]
[NFC][InstCombine] Add unary fneg tests to operand-complexity.ll.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361311 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC][InstCombine] Add unary FNeg tests to X86/x86-avx512.ll
Cameron McInally [Tue, 21 May 2019 20:31:09 +0000 (20:31 +0000)]
[NFC][InstCombine] Add unary FNeg tests to X86/x86-avx512.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361308 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agobuild: enable CMake policy 0077
Saleem Abdulrasool [Tue, 21 May 2019 20:28:32 +0000 (20:28 +0000)]
build: enable CMake policy 0077

Enable CMake policy 77. This alters the behavior of option. The old behavior
would remove the value of the option from the cache and create a new one. The
new behavior does not create the variable if it is defined already. This ensures
that subsequent reconfigures will behave identically. This seems better than the
setting of OLD - the desire is to ensure that it is set to OLD or NEW.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361307 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoMove csr-save-restore-order.ll to the right place
Yi-Hong Lyu [Tue, 21 May 2019 20:28:31 +0000 (20:28 +0000)]
Move csr-save-restore-order.ll to the right place

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361306 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC][X86][AArch64] Add tests for sinking of add/sub by constant through add/sub
Roman Lebedev [Tue, 21 May 2019 20:14:54 +0000 (20:14 +0000)]
[NFC][X86][AArch64] Add tests for sinking of add/sub by constant through add/sub

Looks we can transform all 8 variants of the pattern:
https://rise4fun.com/Alive/auH

This comes up as an issue on the path towards
https://bugs.llvm.org/show_bug.cgi?id=41952

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361303 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix register coalescer failure to prune value
Stanislav Mekhanoshin [Tue, 21 May 2019 19:32:41 +0000 (19:32 +0000)]
Fix register coalescer failure to prune value

Register coalescer fails for the test in the patch with the assertion in
JoinVals::ConflictResolution `DefMI != nullptr'. It attempts to join
live intervals for two adjacent instructions and erase the copy:

    %2:vreg_256 = COPY %1
    %3:vreg_256 = COPY killed %1

The LI needs to be adjusted to kill subrange for the erased instruction
and extend the subrange of the original def. That was done for the main
interval only but not for the subrange. As a result subrange had a VNI
pointing to the erased slot resulting in the above failure.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361293 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix for sphinx bot warning
Leonard Chan [Tue, 21 May 2019 19:30:25 +0000 (19:30 +0000)]
Fix for sphinx bot warning

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361292 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[cmake] Don't use VERSION_GREATER_EQUAL in cmake versions prior to 3.72.
Don Hinton [Tue, 21 May 2019 19:25:54 +0000 (19:25 +0000)]
[cmake] Don't use VERSION_GREATER_EQUAL in cmake versions prior to 3.72.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361291 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Intrinsic] Signed Fixed Point Saturation Multiplication Intrinsic
Leonard Chan [Tue, 21 May 2019 19:17:19 +0000 (19:17 +0000)]
[Intrinsic] Signed Fixed Point Saturation Multiplication Intrinsic

Add an intrinsic that takes 2 signed integers with the scale of them provided
as the third argument and performs fixed point multiplication on them. The
result is saturated and clamped between the largest and smallest representable
values of the first 2 operands.

This is a part of implementing fixed point arithmetic in clang where some of
the more complex operations will be implemented as intrinsics.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361289 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Remove an unneeded ZERO_EXTEND creation from LowerINTRINSIC_W_CHAIN. NFC
Craig Topper [Tue, 21 May 2019 19:03:45 +0000 (19:03 +0000)]
[X86] Remove an unneeded ZERO_EXTEND creation from LowerINTRINSIC_W_CHAIN. NFC

We were trying to ZERO_EXTEND from an i8 X86ISD::SETCC to i8 again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361288 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[SelectionDAG] fold insert subvector of undef into undef
Sanjay Patel [Tue, 21 May 2019 18:53:53 +0000 (18:53 +0000)]
[SelectionDAG] fold insert subvector of undef into undef

DAGCombiner simplifies this more liberally as:
  // If inserting an UNDEF, just return the original vector.
  if (N1.isUndef())
    return N0;

So there's no way to make this visible in output AFAIK, but
doing this at node creation time should be slightly more efficient.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361287 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[cmake] Try to make cmake happy and fix bots.
Don Hinton [Tue, 21 May 2019 18:51:21 +0000 (18:51 +0000)]
[cmake] Try to make cmake happy and fix bots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361286 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[SelectionDAG] remove redundant code; NFCI
Sanjay Patel [Tue, 21 May 2019 18:28:22 +0000 (18:28 +0000)]
[SelectionDAG] remove redundant code; NFCI

getNode() squashes concatenation of undefs via FoldCONCAT_VECTORS():
  // Concat of UNDEFs is UNDEF.
  if (llvm::all_of(Ops, [](SDValue Op) { return Op.isUndef(); }))
    return DAG.getUNDEF(VT);

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361284 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[cmake] Bug in r361281: make include optional and fix typo which might make a differe...
Don Hinton [Tue, 21 May 2019 18:15:01 +0000 (18:15 +0000)]
[cmake] Bug in r361281: make include optional and fix typo which might make a difference on some systems.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361282 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MergeICmps] Make sorting strongly stable on the rhs.
Clement Courbet [Tue, 21 May 2019 17:58:42 +0000 (17:58 +0000)]
[MergeICmps] Make sorting strongly stable on the rhs.

Summary:
Because the sort order was not strongly stable on the RHS, whether the
chain could merge would depend on the order of the blocks in the Phi.

EXPENSIVE_CHECKS would shuffle the blocks before sorting, resulting in
non-deterministic merging.

Reviewers: gchatelet

Subscribers: hiraditya, llvm-commits, RKSimon

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361281 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[cmake] Add custom command to touch archives on Darwin so ninja won't rebuild them.
Don Hinton [Tue, 21 May 2019 17:56:45 +0000 (17:56 +0000)]
[cmake] Add custom command to touch archives on Darwin so ninja won't rebuild them.

Summary:
clang and newer versions of ninja use high-resolutions timestamps, but
older versions of libtool on Darwin don't, so the archive will often
get an older timestamp than the last object that was added or updated.
To fix this, we add a custom command to touch the archive after it's
been built so that ninja won't rebuild it unnecessarily the next time
it's run.

Reviewed By: beanz

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361280 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Bugpoint] fix use-after-move. NFC
Nick Desaulniers [Tue, 21 May 2019 17:55:26 +0000 (17:55 +0000)]
[Bugpoint] fix use-after-move. NFC

Summary:
This was flagged in https://www.viva64.com/en/b/0629/ under "Snippet No.
6".

Note that author also states:
"Note that the loop doesn't actually execute at all."

This is not true, but the author can be forgiven; there's two distinct
variables with very similar identifiers:

MiscompiledFunctions
MisCompFunctions

Reviewers: echristo, srhines, RKSimon

Reviewed By: RKSimon

Subscribers: llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361279 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Dsymutil] Remove redundant argument (NFC)
Jonas Devlieghere [Tue, 21 May 2019 17:31:51 +0000 (17:31 +0000)]
[Dsymutil] Remove redundant argument (NFC)

The dwarf streamer already holds a copy of the link options, so there's
no need to pass them as an argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361276 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[docs] Add new document on building distributions
Chris Bieneman [Tue, 21 May 2019 16:29:31 +0000 (16:29 +0000)]
[docs] Add new document on building distributions

Summary:
This document is an attempt to provide a guide for best practices for using the LLVM build system to generate distributable LLVM-based tools.

Most of the document is geared toward distributions of LLVM-based toolchains, but much of it also applies to distributing other LLVM-based tools and libraries.

Reviewers: tstellar, phosek, jroelofs, hans, sylvestre.ledru

Reviewed By: tstellar

Subscribers: smeenai, dschuff, arphaman, winksaville, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361272 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86][SSE] computeKnownBitsForTargetNode - add X86ISD::ANDNP support
Simon Pilgrim [Tue, 21 May 2019 15:20:24 +0000 (15:20 +0000)]
[X86][SSE] computeKnownBitsForTargetNode - add X86ISD::ANDNP support

Fixes PACKSS-PSHUFB shuffle regressions mentioned on D61692

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361270 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DAGCombiner] prevent unsafe reassociation of FP ops
Sanjay Patel [Tue, 21 May 2019 14:47:38 +0000 (14:47 +0000)]
[DAGCombiner] prevent unsafe reassociation of FP ops

There are no FP callers of DAGCombiner::reassociateOps() currently,
but we can add a fast-math check to make sure this API is not being
misused.

This was noted as a potential risk (and that risk might increase) with:
D62191

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361268 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r361264
Nico Weber [Tue, 21 May 2019 14:41:27 +0000 (14:41 +0000)]
gn build: Merge r361264

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361267 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert r361257 "[MergeICmps][NFC] Make BCEAtom move-only."
Clement Courbet [Tue, 21 May 2019 14:24:46 +0000 (14:24 +0000)]
Revert r361257 "[MergeICmps][NFC] Make BCEAtom move-only."

Broke some bots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361263 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Run `git ls-files '*.gn' '*.gni' | xargs llvm/utils/gn/gn.py format`
Nico Weber [Tue, 21 May 2019 14:22:38 +0000 (14:22 +0000)]
gn build: Run `git ls-files '*.gn' '*.gni' | xargs llvm/utils/gn/gn.py format`

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361262 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r361252
Nico Weber [Tue, 21 May 2019 14:20:46 +0000 (14:20 +0000)]
gn build: Merge r361252

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361260 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r361233
Nico Weber [Tue, 21 May 2019 14:10:55 +0000 (14:10 +0000)]
gn build: Merge r361233

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361259 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MergeICmps][NFC] Make BCEAtom move-only.
Clement Courbet [Tue, 21 May 2019 13:34:12 +0000 (13:34 +0000)]
[MergeICmps][NFC] Make BCEAtom move-only.

And handle for self-move. This is required so that llvm::sort can work
with EXPENSIVE_CHECKS, as it will do a random shuffle of the input
which can result in self-moves.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361257 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix typo in r361251.
Paul Robinson [Tue, 21 May 2019 13:23:32 +0000 (13:23 +0000)]
Fix typo in r361251.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361256 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC][X86][AArch64] Shift amount masking: tests that show that 'neg' doesn't last
Roman Lebedev [Tue, 21 May 2019 13:04:56 +0000 (13:04 +0000)]
[NFC][X86][AArch64] Shift amount masking: tests that show that 'neg' doesn't last

Meaning if we were to produce 'neg' in dagcombine, we will get an
endless cycle; some inverse transform would need to be guarded somehow.

Also, the 'and (sub 0, x), 31' variant is sticky,
doesn't get optimized in any way.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361254 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ScheduleDAGInstrs] Compute topological ordering on demand.
Florian Hahn [Tue, 21 May 2019 13:04:53 +0000 (13:04 +0000)]
[ScheduleDAGInstrs] Compute topological ordering on demand.

In most cases, the topological ordering does not get changed in
ScheduleDAGInstrs. We can compute the ordering on demand, similar to
D60125.

This drastically cuts down the number of times we need to compute the
topological ordering, e.g. for SPEC2006, SPEC2k and MultiSource, we get
the following stats for -O3 -flto on X86 (showing the top reductions,
with small absolute values filtered). The smallest reduction is -50%.

Slightly positive impact on compile-time (-0.1 % geomean speedup for
test-suite + SPEC & co, with -O1 on X86)

Tests: 243
Metric: pre-RA-sched.NumTopoInits

Program                                        base       patch  diff
 test-suite...ngs-C/fixoutput/fixoutput.test   115.00      3.00   -97.4%
 test-suite...ks/Prolangs-C/cdecl/cdecl.test   957.00     26.00   -97.3%
 test-suite...math/automotive-basicmath.test   107.00      3.00   -97.2%
 test-suite...rolangs-C++/deriv2/deriv2.test   144.00      6.00   -95.8%
 test-suite...lowfish/security-blowfish.test   410.00     18.00   -95.6%
 test-suite...frame_layout/frame_layout.test   441.00     23.00   -94.8%
 test-suite...rolangs-C++/employ/employ.test   159.00     11.00   -93.1%
 test-suite...s/Ptrdist/anagram/anagram.test   157.00     11.00   -93.0%
 test-suite...s-C/unix-smail/unix-smail.test   829.00     59.00   -92.9%
 test-suite...chmarks/Olden/power/power.test   154.00     11.00   -92.9%
 test-suite...T95/147.vortex/147.vortex.test   19876.00  1434.00  -92.8%
 test-suite...000/255.vortex/255.vortex.test   19881.00  1435.00  -92.8%
 test-suite...ce/Applications/Burg/burg.test   2203.00   168.00   -92.4%
 test-suite...urce/Applications/hbd/hbd.test   1067.00    85.00   -92.0%
 test-suite...ternal/HMMER/hmmcalibrate.test   3145.00   251.00   -92.0%
 test-suite.../Applications/spiff/spiff.test   1037.00    84.00   -91.9%
 test-suite...SPEC/CINT95/130.li/130.li.test   5913.00   487.00   -91.8%
 test-suite.../CINT95/134.perl/134.perl.test   12532.00  1041.00  -91.7%
 test-suite...ce/Benchmarks/Olden/bh/bh.test   220.00     19.00   -91.4%
 test-suite :: External/Nurbs/nurbs.test       2304.00   206.00   -91.1%
 test-suite...arks/VersaBench/dbms/dbms.test   773.00     75.00   -90.3%
 test-suite...ce/Applications/siod/siod.test   9043.00   878.00   -90.3%
 test-suite...pplications/treecc/treecc.test   4510.00   438.00   -90.3%
 test-suite...T2006/456.hmmer/456.hmmer.test   7093.00   697.00   -90.2%
 test-suite...s-C/Pathfinder/PathFinder.test   882.00     87.00   -90.1%
 test-suite.../CINT2000/176.gcc/176.gcc.test   64978.00  6721.00  -89.7%
 test-suite...cations/hexxagon/hexxagon.test   657.00     69.00   -89.5%
 test-suite...fice-ispell/office-ispell.test   2712.00   285.00   -89.5%
 test-suite.../CINT2006/403.gcc/403.gcc.test   139613.00 14992.00 -89.3%
 test-suite...lications/ClamAV/clamscan.test   25880.00  2785.00  -89.2%

Reviewers: MatzeB, atrick, efriedma, niravd

Reviewed By: efriedma

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361253 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DebugInfo] Fix tests missed by r362148
Paul Robinson [Tue, 21 May 2019 12:48:46 +0000 (12:48 +0000)]
[DebugInfo] Fix tests missed by r362148

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361251 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoDe-Window-ize a test
Paul Robinson [Tue, 21 May 2019 12:08:42 +0000 (12:08 +0000)]
De-Window-ize a test

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361250 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DebugInfo] Handle '# line "file"' correctly for asm source.
Paul Robinson [Tue, 21 May 2019 11:59:03 +0000 (11:59 +0000)]
[DebugInfo] Handle '# line "file"' correctly for asm source.
This provides the correct file path for the original source, rather
than the preprocessed source.

Part of the fix for PR41839.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361248 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert r360902 "Resubmit: [Salvage] Change salvage debug info ..."
Bob Haarman [Tue, 21 May 2019 11:53:41 +0000 (11:53 +0000)]
Revert r360902 "Resubmit: [Salvage] Change salvage debug info ..."

This reverts commit rr360902. It caused an assertion failure in
lib/IR/DebugInfoMetadata.cpp: Assertion `(OffsetInBits + SizeInBits <=
FragmentSizeInBits) && "new fragment outside of original fragment"'
failed.

PR41931.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361246 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DebugInfo] Handle -main-file-name correctly for asm source.
Paul Robinson [Tue, 21 May 2019 11:52:27 +0000 (11:52 +0000)]
[DebugInfo] Handle -main-file-name correctly for asm source.
This option provides only the base filename, not a full relative path.

Part of the fix for PR41839.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361245 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86][SSE] Add shuffle tests for 'splat3' patterns.
Simon Pilgrim [Tue, 21 May 2019 11:42:28 +0000 (11:42 +0000)]
[X86][SSE] Add shuffle tests for 'splat3' patterns.

Test codegen from shuffles for { dst[0] = dst[1] = dst[2] = *src++; dst += 3 } 'splatting' memcpy patterns generated by loop-vectorizer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361243 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC][X86][AArch64] Add some more tests for shift amount masking
Roman Lebedev [Tue, 21 May 2019 11:14:01 +0000 (11:14 +0000)]
[NFC][X86][AArch64] Add some more tests for shift amount masking

The negation creation should be more eager:
https://bugs.llvm.org/show_bug.cgi?id=41952

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361241 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-objdump] Make --disassemble-functions imply -d
George Rimar [Tue, 21 May 2019 11:05:46 +0000 (11:05 +0000)]
[llvm-objdump] Make --disassemble-functions imply -d

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

Patch by Mike Pozulp!

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361240 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[MergeICmps] Preserve the dominator tree.
Clement Courbet [Tue, 21 May 2019 11:02:23 +0000 (11:02 +0000)]
[MergeICmps] Preserve the dominator tree.

Summary: In preparation for D60318 .

Reviewers: gchatelet, efriedma

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361239 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[PPC64] Update LocalEntry from assigned symbols
Fangrui Song [Tue, 21 May 2019 10:41:25 +0000 (10:41 +0000)]
[PPC64] Update LocalEntry from assigned symbols

On PowerPC64 ELFv2 ABI, functions may have 2 entry points: global and local.
The local entry point location of a function is stored in the st_other field of the symbol, as an offset relative to the global entry point.

In order to make symbol assignments (e.g. .equ/.set) work properly with this, PPCTargetELFStreamer already copies the local entry bits from the source symbol to the destination one, on emitAssignment(). The problem is that this copy is performed only at the assignment location, where the source symbol may not yet have processed the .localentry directive, that sets the local entry. This may cause the destination symbol to end up with wrong local entry information. Other symbol info is not affected by this because, in this case, the destination symbol value is actually a symbol reference.

This change keeps track of these assignments, and update all needed st_other fields when finish() is called.

Patch by Leandro Lupori!

Reviewed By: MaskRay

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361237 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AArch64] Skip mask checks for masks with an odd number of elements.
Florian Hahn [Tue, 21 May 2019 10:05:26 +0000 (10:05 +0000)]
[AArch64] Skip mask checks for masks with an odd number of elements.

Some checks in isShuffleMaskLegal expect an even number of elements,
e.g. isTRN_v_undef_Mask or isUZP_v_undef_Mask, otherwise they access
invalid elements and crash. This patch adds checks to the impacted
functions.

Fixes PR41951

Reviewers: t.p.northover, dmgreen, samparker

Reviewed By: dmgreen

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361235 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-objcopy] Strip file symbols with --strip-unneeded
Eugene Leviant [Tue, 21 May 2019 09:09:33 +0000 (09:09 +0000)]
[llvm-objcopy] Strip file symbols with --strip-unneeded

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361231 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AArch64][SVE2] Asm: add integer unary instructions (predicated)
Cullen Rhodes [Tue, 21 May 2019 09:06:51 +0000 (09:06 +0000)]
[AArch64][SVE2] Asm: add integer unary instructions (predicated)

Summary:
Patch adds support for the following instructions:

    * URECPE, URSQRTE, SQABS, SQNEG

The specification can be found here:
https://developer.arm.com/docs/ddi0602/latest

Reviewed By: SjoerdMeijer

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361230 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AArch64][SVE2] Asm: add integer pairwise arithmetic instructions
Cullen Rhodes [Tue, 21 May 2019 08:59:00 +0000 (08:59 +0000)]
[AArch64][SVE2] Asm: add integer pairwise arithmetic instructions

Summary:
Patch adds support for the following instructions:

    ADDP, SMAXP, UMAXP, SMINP, UMINP

The specification can be found here:
https://developer.arm.com/docs/ddi0602/latest

Reviewed By: SjoerdMeijer

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361229 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ARM][CGP] Skip nuw in PrepareConstants
Sam Parker [Tue, 21 May 2019 07:56:47 +0000 (07:56 +0000)]
[ARM][CGP] Skip nuw in PrepareConstants

PrepareConstants step converts add/sub with 'negative' immediates to
sub/add with a 'positive' imm to make promotion more simple. nuw
already states that the add shouldn't cause an unsigned wrap, so
it shouldn't need any tweaking. Plus, we also don't allow a sub with
a 'negative' immediate to be safe wrap, so this functionality has
been removed. The PrepareConstants step now just handles the add
instructions that we've determined would be safe if they wrap around
zero.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361227 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[CMake] Specify component for all target types
Petr Hosek [Tue, 21 May 2019 07:13:58 +0000 (07:13 +0000)]
[CMake] Specify component for all target types

This addresses an issue introduced in r360230 which broke existing
use cases of LLVM_DISTRIBUTION_COMPONENTS since ARCHIVE and LIBRARY
target types are no longer handled as components.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361223 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAdd TargetLoweringInfo hook for explicitly setting the ABI calling convention endianess
Dylan McKay [Tue, 21 May 2019 06:38:02 +0000 (06:38 +0000)]
Add TargetLoweringInfo hook for explicitly setting the ABI calling convention endianess

Summary:
The endianess used in the calling convention does not always match the
endianess of the target on all architectures, namely AVR.

When an argument is too large to be legalised by the architecture and is
split for the ABI, a new hook TargetLoweringInfo::shouldSplitFunctionArgumentsAsLittleEndian
is queried to find the endianess that function arguments must be laid
out in.

This approach was recommended by Eli Friedman.

Originally reported in https://github.com/avr-rust/rust/issues/129.

Patch by Carl Peto.

Reviewers: bogner, t.p.northover, RKSimon, niravd, efriedma

Reviewed By: efriedma

Subscribers: JDevlieghere, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361222 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC][PowerPC] Add a test to verify if the scheduler schedule the addi before the...
QingShan Zhang [Tue, 21 May 2019 06:32:31 +0000 (06:32 +0000)]
[NFC][PowerPC] Add a test to verify if the scheduler schedule the addi before the load.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361221 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoMove thumbv7k test from AArch64 to ARM
Nikita Popov [Tue, 21 May 2019 06:24:36 +0000 (06:24 +0000)]
Move thumbv7k test from AArch64 to ARM

As pointed out by charukcs on rL361166, this test uses an ARM triple.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361220 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[PowerPC] test cases for selecting x-form instruction for unaligned offset - NFC
Chen Zheng [Tue, 21 May 2019 05:06:09 +0000 (05:06 +0000)]
[PowerPC] test cases for selecting x-form instruction for unaligned offset - NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361219 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[PowerPC] use more meaningful name - NFC
Chen Zheng [Tue, 21 May 2019 03:54:42 +0000 (03:54 +0000)]
[PowerPC] use more meaningful name - NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361218 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ORC] Assert that JITDylibs have unique names.
Lang Hames [Tue, 21 May 2019 03:23:08 +0000 (03:23 +0000)]
[ORC] Assert that JITDylibs have unique names.

Patch by Praveen Velliengiri. Thanks Praveen!

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361215 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoTweaks for setting CMAKE_LINKER to lld-link
Nico Weber [Tue, 21 May 2019 03:01:01 +0000 (03:01 +0000)]
Tweaks for setting CMAKE_LINKER to lld-link

- Just look for "lld-link", not "lld-link.exe".
  llvm/cmake/platforms/WinMsvc.cmake for example sets CMAKE_LINKER to
  lld-link without .exe

- Stop passing -gwarf to the compiler in sanitizer options when lld is
  enabled -- there's no reason to use different debug information keyed
  off the linker. (If this was for MinGW, we should check for that
  instead.)

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361214 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoTry to fix build with older gccs after r361152
Nico Weber [Tue, 21 May 2019 00:27:26 +0000 (00:27 +0000)]
Try to fix build with older gccs after r361152

Also merge the cmake change there to the gn build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361209 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ORC] fix use-after-move. NFC
Nick Desaulniers [Mon, 20 May 2019 22:17:43 +0000 (22:17 +0000)]
[ORC] fix use-after-move. NFC

Summary:
scan-build flagged a potential use-after-move in debug builds.  It's not
safe that a moved from value contains anything but garbage.  Manually
DRY up these repeated expressions.

Reviewers: lhames

Reviewed By: lhames

Subscribers: hiraditya, llvm-commits, srhines

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361203 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU: Force skip branches over calls
Matt Arsenault [Mon, 20 May 2019 22:04:42 +0000 (22:04 +0000)]
AMDGPU: Force skip branches over calls

Unfortunately the way SIInsertSkips works is backwards, and is
required for correctness. r338235 added handling of some special cases
where skipping is mandatory to avoid side effects if no lanes are
active. It conservatively handled asm correctly, but the same logic
needs to apply to calls.

Usually the call sequence code is larger than the skip threshold,
although the way the count is computed is really broken, so I'm not
sure if anything was likely to really hit this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361202 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[docs] Fix an RST typo: "code-blocks" should be "code-block".
Lang Hames [Mon, 20 May 2019 21:33:25 +0000 (21:33 +0000)]
[docs] Fix an RST typo: "code-blocks" should be "code-block".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361200 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ORC] Remove some unreachable code.
Lang Hames [Mon, 20 May 2019 21:30:33 +0000 (21:30 +0000)]
[ORC] Remove some unreachable code.

Fixes http://llvm.org/PR41662.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361199 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[docs] Add more details/examples for LLJIT/LLLazyJIT, tweak lookup discussion.
Lang Hames [Mon, 20 May 2019 21:07:16 +0000 (21:07 +0000)]
[docs] Add more details/examples for LLJIT/LLLazyJIT, tweak lookup discussion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361198 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC][InstCombine] Add FIXME for one-use check on constant negation transforms.
Cameron McInally [Mon, 20 May 2019 21:00:42 +0000 (21:00 +0000)]
[NFC][InstCombine] Add FIXME for one-use check on constant negation transforms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361197 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Support] Renamed member 'Size' to 'AllocatedSize' in MemoryBlock and OwningMemoryBlock.
Lang Hames [Mon, 20 May 2019 20:53:05 +0000 (20:53 +0000)]
[Support] Renamed member 'Size' to 'AllocatedSize' in MemoryBlock and OwningMemoryBlock.

Rename member 'Size' to 'AllocatedSize' in order to provide a hint that the
allocated size may be different than the requested size. Comments are added to
clarify this point.  Updated the InMemoryBuffer in FileOutputBuffer.cpp to track
the requested buffer size.

Patch by Machiel van Hooren. Thanks Machiel!

https://reviews.llvm.org/D61599

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361195 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AArch64] Handle lowering lround on windows, where long is 32 bit
Martin Storsjo [Mon, 20 May 2019 19:53:28 +0000 (19:53 +0000)]
[AArch64] Handle lowering lround on windows, where long is 32 bit

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361192 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r361148
Nico Weber [Mon, 20 May 2019 19:33:32 +0000 (19:33 +0000)]
gn build: Merge r361148

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361191 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[LFTR] Add additional PR31181 test cases
Nikita Popov [Mon, 20 May 2019 19:13:04 +0000 (19:13 +0000)]
[LFTR] Add additional PR31181 test cases

One case where overflow happens in the first loop iteration, and
two cases where we switch to a dynamically dead IV with post/pre
increment, respectively.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361189 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] Add visitFNeg(...) visitor for unary Fneg
Cameron McInally [Mon, 20 May 2019 19:10:30 +0000 (19:10 +0000)]
[InstCombine] Add visitFNeg(...) visitor for unary Fneg

Also, break out a helper function, namely foldFNegIntoConstant(...), which performs transforms common between visitFNeg(...) and visitFSub(...).

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361188 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[TableGen] - Type comparison LE should be LT or equal.
Pete Couperus [Mon, 20 May 2019 18:09:37 +0000 (18:09 +0000)]
[TableGen] - Type comparison LE should be LT or equal.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361183 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] auto-generate test checks; NFC
Sanjay Patel [Mon, 20 May 2019 17:52:22 +0000 (17:52 +0000)]
[InstCombine] auto-generate test checks; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361181 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstSimplify] update stale comment; NFC
Sanjay Patel [Mon, 20 May 2019 17:52:18 +0000 (17:52 +0000)]
[InstSimplify] update stale comment; NFC

Missed this diff with rL361118.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361180 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Add test case for r361177.
Craig Topper [Mon, 20 May 2019 17:37:52 +0000 (17:37 +0000)]
[X86] Add test case for r361177.

That commit makes sure we flush PendingExports in SelectDAGBuilder
before we create INLINEASM_BR. Unfortunatley, I haven't yet found
a CodeGen failure without that change.

This commit uses the debug output from SelectionDAG to at least
ensure we build the DAG correctly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361179 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[SelectionDAGBuilder] Flush PendingExports before creating INLINEASM_BR node for...
Craig Topper [Mon, 20 May 2019 17:08:02 +0000 (17:08 +0000)]
[SelectionDAGBuilder] Flush PendingExports before creating INLINEASM_BR node for asm goto.

Since INLINEASM_BR is a terminator we need to flush the pending exports before
emitting it. If we don't do this, a TokenFactor can be inserted between it and
the BR instruction emitted to finish the callbr lowering.

It looks like nodes are glued to the INLINEASM_BR so I had to make sure we emit
the TokenFactor before that.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361177 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DWARF] hoist nullptr checks. NFC
Nick Desaulniers [Mon, 20 May 2019 16:58:59 +0000 (16:58 +0000)]
[DWARF] hoist nullptr checks. NFC

Summary:
This was flagged in https://www.viva64.com/en/b/0629/ under "Snippet No.
15" (see under #13). It looks like PVS studio flags nullptr checks where
the ptr is used inbetween creation and checking against nullptr.

Reviewers: JDevlieghere, probinson

Reviewed By: JDevlieghere

Subscribers: RKSimon, hiraditya, llvm-commits, srhines

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361176 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Add icelake-client and tremont model numbers to getHostCPUName.
Craig Topper [Mon, 20 May 2019 16:58:23 +0000 (16:58 +0000)]
[X86] Add icelake-client and tremont model numbers to getHostCPUName.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361174 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[INLINER] allow inlining of blockaddresses if sole uses are callbrs
Nick Desaulniers [Mon, 20 May 2019 16:48:09 +0000 (16:48 +0000)]
[INLINER] allow inlining of blockaddresses if sole uses are callbrs

Summary:
It was supposed that Ref LazyCallGraph::Edge's were being inserted by
inlining, but that doesn't seem to be the case.  Instead, it seems that
there was no test for a blockaddress Constant in an instruction that
referenced the function that contained the instruction. Ex:

```
define void @f() {
  %1 = alloca i8*, align 8
2:
  store i8* blockaddress(@f, %2), i8** %1, align 8
  ret void
}
```

When iterating blockaddresses, do not add the function they refer to
back to the worklist if the blockaddress is referring to the contained
function (as opposed to an external function).

Because blockaddress has sligtly different semantics than GNU C's
address of labels, there are 3 cases that can occur with blockaddress,
where only 1 can happen in GNU C due to C's scoping rules:
* blockaddress is within the function it refers to (possible in GNU C).
* blockaddress is within a different function than the one it refers to
(not possible in GNU C).
* blockaddress is used in to declare a global (not possible in GNU C).

The second case is tested in:

```
$ ./llvm/build/unittests/Analysis/AnalysisTests \
  --gtest_filter=LazyCallGraphTest.HandleBlockAddress
```

This patch adjusts the iteration of blockaddresses in
LazyCallGraph::visitReferences to not revisit the blockaddresses
function in the first case.

The Linux kernel contains code that's not semantically valid at -O0;
specifically code passed to asm goto. It requires that asm goto be
inline-able. This patch conservatively does not attempt to handle the
more general case of inlining blockaddresses that have non-callbr users
(pr/39560).

https://bugs.llvm.org/show_bug.cgi?id=39560
https://bugs.llvm.org/show_bug.cgi?id=40722
https://github.com/ClangBuiltLinux/linux/issues/6
https://reviews.llvm.org/rL212077

Reviewers: jyknight, eli.friedman, chandlerc

Reviewed By: chandlerc

Subscribers: george.burgess.iv, nathanchance, mgorny, craig.topper, mengxu.gatech, void, mehdi_amini, E5ten, chandlerc, efriedma, eraman, hiraditya, haicheng, pirama, llvm-commits, srhines

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361173 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AMDGPU] Fix std::array initializers to avoid warnings with older tool chains. NFC
Bjorn Pettersson [Mon, 20 May 2019 16:41:08 +0000 (16:41 +0000)]
[AMDGPU] Fix std::array initializers to avoid warnings with older tool chains. NFC

A std::array is implemented as a template with an array
inside a struct. Older versions of clang, like 3.6,
require an extra set of curly braces around std::array
initializations to avoid warnings.

The C++ language was changed regarding this by CWG 1270.
So more modern tool chains does not complaing even if
leaving out one level of braces.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361171 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Intrinsics] Merge lround.i32 and lround.i64 into a single intrinsic with overloaded...
Craig Topper [Mon, 20 May 2019 16:27:09 +0000 (16:27 +0000)]
[Intrinsics] Merge lround.i32 and lround.i64 into a single intrinsic with overloaded result type. Make result type for llvm.llround overloaded instead of fixing to i64

We shouldn't really make assumptions about possible sizes for long and long long. And longer term we should probably support vectorizing these intrinsics. By making the result types not fixed we can support vectors as well.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361169 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DAGCombiner] Refactor code in visitShiftByConstant slightly to make it more readable...
Craig Topper [Mon, 20 May 2019 16:26:55 +0000 (16:26 +0000)]
[DAGCombiner] Refactor code in visitShiftByConstant slightly to make it more readable. NFC

This changes the isShift variable to include the constant operand
check that was previously in the if statement.

While there fix an 80 column violation and an unnecessary use of
getNode. Also fix variable name capitalization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361168 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoR600: Fix unconditional return in loop
Matt Arsenault [Mon, 20 May 2019 16:22:11 +0000 (16:22 +0000)]
R600: Fix unconditional return in loop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361167 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[SDAG] Vector op legalization for overflow ops
Nikita Popov [Mon, 20 May 2019 16:09:22 +0000 (16:09 +0000)]
[SDAG] Vector op legalization for overflow ops

Fixes issue reported by aemerson on D57348. Vector op legalization
support is added for uaddo, usubo, saddo and ssubo (umulo and smulo
were already supported). As usual, by extracting TargetLowering methods
and calling them from vector op legalization.

Vector op legalization doesn't really deal with multiple result nodes,
so I'm explicitly performing a recursive legalization call on the
result value that is not being legalized.

There are some existing test changes because expansion happens
earlier, so we don't get a DAG combiner run in between anymore.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361166 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-readelf] - Rework how we parse the .dynamic section.
George Rimar [Mon, 20 May 2019 15:41:48 +0000 (15:41 +0000)]
[llvm-readelf] - Rework how we parse the .dynamic section.

This is a result of what I found during my work on https://bugs.llvm.org/show_bug.cgi?id=41679.

Previously LLVM readelf took the information about .dynamic section
from its PT_DYNAMIC segment only. GNU tools have a bit different logic.
They also use the information from the .dynamic section header if it is available.
This patch changes the code to improve the compatibility with the GNU Binutils.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361165 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRegAlloc: Fix verifier error with undef identity copies
Matt Arsenault [Mon, 20 May 2019 14:09:36 +0000 (14:09 +0000)]
RegAlloc: Fix verifier error with undef identity copies

The code did not match the example in the comment, and was checking
the undef flag on the copy dest instead of source. The existing tests
were only hitting the > 2 operands case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361156 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFixed the Bindings/OCaml/core.ml test
Dmitri Gribenko [Mon, 20 May 2019 14:06:21 +0000 (14:06 +0000)]
Fixed the Bindings/OCaml/core.ml test

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361155 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AArch64][SVE2] Asm: add SADALP and UADALP instructions
Cullen Rhodes [Mon, 20 May 2019 13:50:15 +0000 (13:50 +0000)]
[AArch64][SVE2] Asm: add SADALP and UADALP instructions

Summary:
This patch adds support for the integer pairwise add and accumulate long
instructions SADALP/UADALP. These instructions are predicated.

The specification can be found here:
https://developer.arm.com/docs/ddi0602/latest

Reviewed By: SjoerdMeijer

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361154 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Merge r361152
Nico Weber [Mon, 20 May 2019 13:46:42 +0000 (13:46 +0000)]
gn build: Merge r361152

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361153 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstSimplify] Teach fsub -0.0, (fneg X) ==> X about unary fneg
Cameron McInally [Mon, 20 May 2019 13:13:35 +0000 (13:13 +0000)]
[InstSimplify] Teach fsub -0.0, (fneg X) ==> X about unary fneg

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361151 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoResubmit "[DebugInfo] Update loop metadata for inlined loops"
Orlando Cazalet-Hyams [Mon, 20 May 2019 13:02:30 +0000 (13:02 +0000)]
Resubmit "[DebugInfo] Update loop metadata for inlined loops"

This reverts commit 95805bc425b264805a472232a75ed2ffe58aceda.
I've squashed the test fix into this commit.

[DebugInfo] Update loop metadata for inlined loops

Currently, when a loop is cloned while inlining function (A) into function (B)
the loop metadata is copied and then not modified at all. The loop metadata can
encode the loop's start and end DILocations. Therefore, the new inlined loop in
function (B) may have loop metadata which shows start and end locations residing
in function (A).

This patch ensures loop metadata is updated while inlining so that the start and
end DILocations are given the "inlinedAt" operand. I've also added a regression
test for this.

This fix is required for D60831 because that patch uses loop metadata to
determine the DILocation for the branches of new loop preheaders.

Reviewers: aprantl, dblaikie, anemet

Reviewed By: aprantl

Subscribers: eraman, hiraditya, llvm-commits

Tags: #debug-info, #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361149 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert "[DebugInfo] Update loop metadata for inlined loops"
Orlando Cazalet-Hyams [Mon, 20 May 2019 11:24:39 +0000 (11:24 +0000)]
Revert "[DebugInfo] Update loop metadata for inlined loops"

This reverts commit 6e8f1a80cd988db8870aff9c3bc2ca7a20e04104.
Reverting patch while investigating build bot failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361143 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC] Refactor visitIntrinsicCall so it doesn't return a const char*
Guillaume Chatelet [Mon, 20 May 2019 11:01:30 +0000 (11:01 +0000)]
[NFC] Refactor visitIntrinsicCall so it doesn't return a const char*

Summary: API simplification

Reviewers: courbet

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361140 91177308-0d34-0410-b5e6-96231b3b80d8