Simon Pilgrim [Sun, 17 Jul 2016 15:48:25 +0000 (15:48 +0000)]
[X86][SSE] lowerVectorShuffleAsPermuteAndUnpack tidyup. NFCI.
Moved unpack type determination into TryUnpack lambda.
Added missing comment describing lowerVectorShuffleAsPermuteAndUnpack call.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275708
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sun, 17 Jul 2016 14:47:01 +0000 (14:47 +0000)]
[ThinLTO] Perform profile-guided indirect call promotion
Summary:
To enable profile-guided indirect call promotion in ThinLTO mode, we
simply add call graph edges for each profitable target from the profile
to the summaries, then the summary-guided importing will consider the
callee for importing as usual.
Also we need to enable the indirect call promotion pass creation in the
PassManagerBuilder when PerformThinLTO=true (we are in the ThinLTO
backend), so that the newly imported functions are considered for
promotion in the backends.
The IC promotion profiles refer to callees by GUID, which required
adding GUIDs to the per-module VST in bitcode (and assigning them
valueIds similar to how they are assigned valueIds in the combined
index).
Reviewers: mehdi_amini, xur
Subscribers: mehdi_amini, davidxl, llvm-commits
Differential Revision: http://reviews.llvm.org/D21932
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275707
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sun, 17 Jul 2016 14:46:58 +0000 (14:46 +0000)]
Address review comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275706
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sun, 17 Jul 2016 14:46:54 +0000 (14:46 +0000)]
Refactor indirect call promotion profitability analysis (NFC)
Summary:
Refactored the profitability analysis out of the IC promotion pass and
into lib/Analysis so that it can be accessed by the summary index
builder in a follow-on patch to enable IC promotion in ThinLTO (D21932).
Reviewers: davidxl, xur
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D22182
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275705
91177308-0d34-0410-b5e6-
96231b3b80d8
Guy Blank [Sun, 17 Jul 2016 12:10:35 +0000 (12:10 +0000)]
test commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275703
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Sun, 17 Jul 2016 07:03:13 +0000 (07:03 +0000)]
X86: Updated a test file. NFC.
This test shows subotimal code generated for AVX-512 vs PENTIUM4.
The issue will be fixed in an upcomming commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275702
91177308-0d34-0410-b5e6-
96231b3b80d8
Dehao Chen [Sat, 16 Jul 2016 22:51:33 +0000 (22:51 +0000)]
[PM] Convert IVUsers analysis to new pass manager.
Summary: Convert IVUsers analysis to new pass manager.
Reviewers: davidxl, silvas
Subscribers: junbuml, sanjoy, llvm-commits, mzolotukhin
Differential Revision: https://reviews.llvm.org/D22434
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275698
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sat, 16 Jul 2016 18:29:26 +0000 (18:29 +0000)]
[InstCombine] allow X + signbit --> X ^ signbit for vector splats
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275691
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sat, 16 Jul 2016 18:24:18 +0000 (18:24 +0000)]
add vector test to show missing transform
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275690
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Sat, 16 Jul 2016 18:20:26 +0000 (18:20 +0000)]
IPRA: avoid double query to the map (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275689
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sat, 16 Jul 2016 18:08:22 +0000 (18:08 +0000)]
update tests to use FileCheck, consolidate tests, fix comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275688
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sat, 16 Jul 2016 16:31:58 +0000 (16:31 +0000)]
update test to use FileCheck
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275687
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sat, 16 Jul 2016 16:27:58 +0000 (16:27 +0000)]
auto-generate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275686
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sat, 16 Jul 2016 16:24:06 +0000 (16:24 +0000)]
auto-ggenerate checks
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275685
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sat, 16 Jul 2016 15:20:19 +0000 (15:20 +0000)]
[InstCombine] reassociate logic ops with constants separated by a zext
This is a partial implementation of a general fold for associative+commutative operators:
(op (cast (op X, C2)), C1) --> (cast (op X, op (C1, C2)))
(op (cast (op X, C2)), C1) --> (op (cast X), op (C1, C2))
There are 7 associative operators and 13 cast types, so this could potentially go a lot further.
Differential Revision: https://reviews.llvm.org/D22421
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275684
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Sat, 16 Jul 2016 07:21:28 +0000 (07:21 +0000)]
Revert "Revert r275027 - Let FuncAttrs infer the 'returned' argument attribute"
This reverts commit r275042; the initial commit triggered self-hosting failures
on ARM/AArch64. James Molloy identified the problematic backend code, which has
been disabled in r275677. Trying again...
Original commit message:
Let FuncAttrs infer the 'returned' argument attribute
A function can have one argument with the 'returned' attribute, indicating that
the associated argument is always the return value of the function. Add
FuncAttrs inference logic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275678
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Sat, 16 Jul 2016 07:07:29 +0000 (07:07 +0000)]
Disable this-return argument forwarding on ARM/AArch64
r275042 reverted function-attribute inference for the 'returned' attribute
because the feature triggered self-hosting failures on ARM and AArch64. James
Molloy determined that the this-return argument forwarding feature, which
directly ties the returned input argument to the returned value, was the cause.
It seems likely that this forwarding code contains, or triggers, a subtle bug.
Disabling for now until we can track that down.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275677
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaxun Liu [Sat, 16 Jul 2016 05:09:21 +0000 (05:09 +0000)]
Re-commit [AMDGPU] Add metadata for runtime
Attempting to fix lit test failure on ppc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275676
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 16 Jul 2016 03:42:59 +0000 (03:42 +0000)]
[AVX512] Remove CodeGenOnly VBROADCAST m_Int instructions. They can be implemented with patterns selecting existing instructions. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275671
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Sat, 16 Jul 2016 02:24:59 +0000 (02:24 +0000)]
llc: Add support for -run-pass none
This does not schedule any passes besides the ones necessary to
construct and print the machine function. This is useful to test .mir
file reading and printing.
Differential Revision: http://reviews.llvm.org/D22432
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275664
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Sat, 16 Jul 2016 02:24:15 +0000 (02:24 +0000)]
llc: Move pass query/add code into an own function; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275663
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Sat, 16 Jul 2016 02:24:13 +0000 (02:24 +0000)]
ARM/MIR: Move test from MIR to CodeGen/ARM directory
test/CodeGen/MIR/ARM/ARMLoadStoreDBG.mir is an actual test for the ARM
load store optimization pass and not a test of the mir parser/printer.
It belongs to test/CodeGen/ARM; This also updates the test to use the
new -run-pass llc syntax.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275662
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Sat, 16 Jul 2016 02:24:10 +0000 (02:24 +0000)]
ARM: Initialize LoadStore passes in TargetMachine
Initializing them in LLVMInitializeARMTarget() makes them visible early
enough for "llc -run-pass usage".
This required the pass to be renamed from "arm-load-store-opt" to
"arm-ldst-opt", because there already exists an arm-load-store-opt
cl::opt switch which would now clash with the passname getting added as
a switch in opt. On the bright side the pass name now matches the
DEBUG_TYPE name. Renamed "arm-prera-load-store-opt" to
"arm-repra-ldst-opt" as well for consistency.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275661
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Sat, 16 Jul 2016 01:55:45 +0000 (01:55 +0000)]
Reword comment to be more clear.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275659
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Sat, 16 Jul 2016 01:36:18 +0000 (01:36 +0000)]
MIParser: reject subregister indexes on physregs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275658
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Sat, 16 Jul 2016 01:05:39 +0000 (01:05 +0000)]
Fix modules buildbot after r275633.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275657
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Sat, 16 Jul 2016 00:59:41 +0000 (00:59 +0000)]
Don't do uint64_t(1) << 64 in maxUIntN.
Summary:
This shift is undefined behavior (and, as compiled by clang, gives the
wrong answer for maxUIntN(64)).
Reviewers: mkuper
Subscribers: llvm-commits, jroelofs, rsmith
Differential Revision: https://reviews.llvm.org/D22430
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275656
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Fri, 15 Jul 2016 23:27:19 +0000 (23:27 +0000)]
[libFuzzer] add hooks for strstr, strcasestr, strcasecmp, strncasecmp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275648
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Fri, 15 Jul 2016 23:15:35 +0000 (23:15 +0000)]
[llvm-cov] Attempt to appease an older builder
It's using a version of clang which can't (or won't) deduce an implicit
conversion from a SmallString to a StringRef. Write the conversion out
explicitly:
http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-buildserver/builds/8574
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275647
91177308-0d34-0410-b5e6-
96231b3b80d8
Sebastian Pop [Fri, 15 Jul 2016 23:15:06 +0000 (23:15 +0000)]
bugpoint: add flag -verbose-errors
The default behavior of bugpoint is to print "<crash>" when it finds a reduced
test that crashes compilation. With this flag we now can see the output of the
crashing program. This is useful to make sure it is the same error being
tracked down and not a different error that happens to crash the compiler as
well.
Differential Revision: https://reviews.llvm.org/D22411
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275646
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Fri, 15 Jul 2016 23:09:47 +0000 (23:09 +0000)]
Reapply "Mips: Avoid implicit iterator conversions, NFC"
This reverts commit r275562, effectively reapplying r275141. Doug
Gilmore reported that there was an error when bisecting the Mips
buildbot failure, and that r275141 was not to blame after all. Here is
the green build:
https://dmz-portal.mips.com/bb/builders/LLVM%20with%20integrated%20assembler%20and%20fPIC%20and%20-O0/builds/803
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275643
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Fri, 15 Jul 2016 23:08:22 +0000 (23:08 +0000)]
[llvm-cov] Attempt to appease Windows bots
They appear to reject r275640 because stdin is held open during an
ExecuteAndWait in which it's redirected:
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/8390
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275642
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Fri, 15 Jul 2016 22:44:57 +0000 (22:44 +0000)]
[llvm-cov] Optionally use a symbol demangler when preparing reports
Add an option to specify a symbol demangler (as well as options to the
demangler). This can be used to make reports more human-readable.
This option is especially useful in -output-dir mode, since it isn't as
easy to manually pipe reports into a demangler in this mode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275640
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Fri, 15 Jul 2016 22:44:54 +0000 (22:44 +0000)]
[llvm-cov] Document a few private fields of CodeCoverageTool (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275639
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Fri, 15 Jul 2016 22:44:52 +0000 (22:44 +0000)]
[Support] Fix a doxygen comment (NFC)
There was a missing "<" on a line, so its contents wrapped around into
the description of the next argument.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275638
91177308-0d34-0410-b5e6-
96231b3b80d8
Junmo Park [Fri, 15 Jul 2016 22:42:52 +0000 (22:42 +0000)]
Minor code cleanups. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275637
91177308-0d34-0410-b5e6-
96231b3b80d8
Jacques Pienaar [Fri, 15 Jul 2016 22:38:32 +0000 (22:38 +0000)]
[lanai] Small cleanup: remove/comment out unused args
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275636
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 15 Jul 2016 22:32:02 +0000 (22:32 +0000)]
AMDGPU: Fix verifier error from partially undef copy
In this situation:
%VGPR2<def> = BUFFER_LOAD_DWORD_OFFSET %SGPR8_SGPR9_SGPR10_SGPR11,
%VGPR7<def,tied3> = V_MAC_F32_e32 %VGPR0<undef>, %VGPR1<kill>, %VGPR7<kill,tied0>, %EXEC<imp-use>
%VGPR3_VGPR4_VGPR5_VGPR6<def> = COPY %VGPR0_VGPR1_VGPR2_VGPR3
%VGPR4<def> = COPY %VGPR2
The copy for VGPR1 -> VGPR4 was an error from reading undefined VGPR1,
but VGPR4 is defined immediately after this copy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275635
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Fri, 15 Jul 2016 22:31:14 +0000 (22:31 +0000)]
ExpandPostRAPseudos should transfer implicit uses, not only implicit defs
Previously, we would expand:
%BL<def> = COPY %DL<kill>, %EBX<imp-use,kill>, %EBX<imp-def>
Into:
%BL<def> = MOV8rr %DL<kill>, %EBX<imp-def>
Dropping the imp-use on the floor.
That confused CriticalAntiDepBreaker, which (correctly) assumes that if an
instruction defs but doesn't use a register, that register is dead immediately
before the instruction - while in this case, the high lanes of EBX can be very
much alive.
This fixes PR28560.
Differential Revision: https://reviews.llvm.org/D22425
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275634
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexei Starovoitov [Fri, 15 Jul 2016 22:27:55 +0000 (22:27 +0000)]
BPF: Use official ELF e_machine value
The same value for EM_BPF is being propagated to glibc,
elfutils, and binutils.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275633
91177308-0d34-0410-b5e6-
96231b3b80d8
Jacques Pienaar [Fri, 15 Jul 2016 22:18:33 +0000 (22:18 +0000)]
[lanai] Fix build by updating calls to getLoad & getStore.
rL275592 removed the boolean parameters of SelectionDAG::getLoad and getStore, updating Lanai backend's calls to these functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275631
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 15 Jul 2016 22:17:19 +0000 (22:17 +0000)]
[pdb] Teach MsfBuilder and other classes about the Free Page Map.
Block 1 and 2 of an MSF file are bit vectors that represent the
list of blocks allocated and free in the file. We had been using
these blocks to write stream data and other data, so we mark them
as the free page map now. We don't yet serialize these pages to
the disk, but at least we make a note of what it is, and avoid
writing random data to them.
Doing this also necessitated cleaning up some of the tests to be
more general and hardcode fewer values, which is nice.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275629
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 15 Jul 2016 22:17:08 +0000 (22:17 +0000)]
[pdb] Round trip the NameMap data structure to YAML.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275628
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 15 Jul 2016 22:16:56 +0000 (22:16 +0000)]
[pdb] Use MsfBuilder to handle the writing PDBs.
Previously we would read a PDB, then write some of it back out,
but write the directory, super block, and other pertinent metadata
back out unchanged. This generates incorrect PDBs since the amount
of data written was not always the same as the amount of data read.
This patch changes things to use the newly introduced `MsfBuilder`
class to write out a correct and accurate set of Msf metadata for
the data *actually* written, which opens up the door for adding and
removing type records, symbol records, and other types of data to
an existing PDB.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275627
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 15 Jul 2016 22:13:16 +0000 (22:13 +0000)]
StructurizeCFG: Fix inverting constantexpr conditions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275626
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 15 Jul 2016 21:34:02 +0000 (21:34 +0000)]
[Hexagon] Handle instruction latency for 0 or 2 cycles
The Hexagon schedulers need to handle instructions with a latency
of 0 or 2 more accurately. The problem, in v60, is that a dependence
between two instructions with a 2 cycle latency can use a .cur version
of the source to achieve a 0 cycle latency when the use is in the
same packet. Any othe use, must be at least 2 packets later, or a
stall occurs. In other words, the compiler does not want to schedule
the dependent instructions 1 cycle later.
To achieve this, the latency adjustment code allows only a single
dependence to have a zero latency. All other instructions have the
other value, which is typically 2 cycles. We use a heuristic to
determine which instruction gets the 0 latency.
The Hexagon machine scheduler was also changed to increase the cost
associated with 0 latency dependences than can be scheduled in the
same packet.
Patch by Brendon Cahoon.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275625
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 15 Jul 2016 21:27:13 +0000 (21:27 +0000)]
AMDGPU: Remove brev intrinsic
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275620
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 15 Jul 2016 21:27:08 +0000 (21:27 +0000)]
AMDGPU: Fix TargetPrefix for remaining r600 intrinsics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275619
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 15 Jul 2016 21:26:56 +0000 (21:26 +0000)]
AMDGPU: Remove AMDGPU.ldexp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275618
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 15 Jul 2016 21:26:52 +0000 (21:26 +0000)]
AMDGPU: Remove legacy rsq.clamped intrinsic
Mesa still has a use of llvm.AMDGPU.rsq.f64 remaining.
Also fix mismatch with non-IEEE rsq selecting to IEEE rsq.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275617
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 15 Jul 2016 21:26:46 +0000 (21:26 +0000)]
AMDGPU/R600: Delete dead code.
Dead or the same as the base implementation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275616
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Fri, 15 Jul 2016 21:10:31 +0000 (21:10 +0000)]
DebugInfo: reorder some initializers
Fix a few initialization ordering warnings from gcc from `-Wreorder`. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275615
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Fri, 15 Jul 2016 21:10:29 +0000 (21:10 +0000)]
CodeGen: avoid emitting unnecessary CFI
Remove unnecessary clutter in assembly output. When using SjLj EH, the CFI is
not actually used for anything. Do not emit the CFI needlessly. The minor test
adjustments are interesting. The prologue test was just overzealous matcching.
The interesting case is the LSDA change. It was originally added to ensure that
various compilations did not mangle the name (it explicitly checked the name!).
However, subsequent cleanups made it more reliant on the CFI to find the name.
Parse the generated code flow to generically find the label still.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275614
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Fri, 15 Jul 2016 21:08:41 +0000 (21:08 +0000)]
Make processInstruction from LCSSA.cpp externally available.
Summary:
When a pass tries to keep LCSSA form it's often convenient to be able to update
LCSSA for a set of instructions rather than for the entire loop. This patch makes the
processInstruction from LCSSA externally available under a name
formLCSSAForInstruction.
Reviewers: chandlerc, sanjoy, hfinkel
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D22378
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275613
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 15 Jul 2016 20:43:38 +0000 (20:43 +0000)]
[pdb] Introduce MsfBuilder for laying out PDB files.
Reviewed by: ruiu
Differential Revision: https://reviews.llvm.org/D22308
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275611
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Fri, 15 Jul 2016 20:18:37 +0000 (20:18 +0000)]
Teach fast isel about the win64 calling convention.
This mostly just works.
Vectorcall rets are still not supported.
The win64_eh test change is because fast isel doesn't use rsi for temporary
computations, so it doesn't need to be pushed. The test case I'm changing was
originally added to test pushes, but by now there are other test cases in that
file exercising that code path.
https://reviews.llvm.org/D22422
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275607
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 15 Jul 2016 20:16:03 +0000 (20:16 +0000)]
[Hexagon] Make MI scheduler check for stalls in previous packet on v60
Patch by Ikhlas Ajbar.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275606
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Fri, 15 Jul 2016 20:02:49 +0000 (20:02 +0000)]
[CFLAA] Add attributes handling for CFLAnders.
This patch adds proper handling of stratified attributes into our
anders-style CFLAA implementation. It also comes bundled with more
CFLAnders tests. :)
Patch by Jia Chen.
Differential Revision: https://reviews.llvm.org/D22325
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275604
91177308-0d34-0410-b5e6-
96231b3b80d8
Nemanja Ivanovic [Fri, 15 Jul 2016 19:56:32 +0000 (19:56 +0000)]
[PowerPC] Set kill flag for scratch register when spilling the link register
This fixes PR 28526.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275603
91177308-0d34-0410-b5e6-
96231b3b80d8
George Burgess IV [Fri, 15 Jul 2016 19:53:25 +0000 (19:53 +0000)]
[CFLAA] Add an initial CFLAnders implementation.
This adds an incomplete anders-style implementation for CFLAA. It's
incomplete in that it's missing interprocedural analysis, attrs
handling, etc. and that it needs more tests. More tests and features
will be added in future commits.
Patch by Jia Chen.
Differential Revision: https://reviews.llvm.org/D22291
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275602
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Fri, 15 Jul 2016 19:35:43 +0000 (19:35 +0000)]
Fix calls to SelectionDAG::getStore
It was refactored in r275592. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275601
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Fri, 15 Jul 2016 19:14:57 +0000 (19:14 +0000)]
Revert "[AMDGPU] Add metadata for runtime"
This reverts commit r275566.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275599
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 15 Jul 2016 19:09:37 +0000 (19:09 +0000)]
[Hexagon] Replace postprocessDAG with a more elaborate DAG mutation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275598
91177308-0d34-0410-b5e6-
96231b3b80d8
Jingyue Wu [Fri, 15 Jul 2016 18:47:17 +0000 (18:47 +0000)]
[ReassociateGEP] Update tests to allow missing "inbounds" on certain GEPs.
With r275532 fixing miscompilation of GVN, "inbounds" on certain GEPs in these
tests cannot be preserved any more. Left a TODO in the tests for future
reference.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275596
91177308-0d34-0410-b5e6-
96231b3b80d8
Sjoerd Meijer [Fri, 15 Jul 2016 18:41:56 +0000 (18:41 +0000)]
[MBP] Clean up of the comments, and a first attempt to better describe a part
of the algorithm.
Differential Revision: https://reviews.llvm.org/D22364
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275595
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 15 Jul 2016 18:39:02 +0000 (18:39 +0000)]
add tests for associative ops blocked by a cast
These are more generalized versions of the cases added in
r275302 and r275297.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275594
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 15 Jul 2016 18:33:16 +0000 (18:33 +0000)]
[SCCP] Merge two conditions into one. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275593
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Fri, 15 Jul 2016 18:27:10 +0000 (18:27 +0000)]
[SelectionDAG] Get rid of bool parameters in SelectionDAG::getLoad, getStore, and friends.
Summary:
Instead, we take a single flags arg (a bitset).
Also add a default 0 alignment, and change the order of arguments so the
alignment comes before the flags.
This greatly simplifies many callsites, and fixes a bug in
AMDGPUISelLowering, wherein the order of the args to getLoad was
inverted. It also greatly simplifies the process of adding another flag
to getLoad.
Reviewers: chandlerc, tstellarAMD
Subscribers: jholewinski, arsenm, jyknight, dsanders, nemanjai, llvm-commits
Differential Revision: http://reviews.llvm.org/D22249
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275592
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Lebar [Fri, 15 Jul 2016 18:26:59 +0000 (18:26 +0000)]
[CodeGen] Take a MachineMemOperand::Flags in MachineFunction::getMachineMemOperand.
Summary:
Previously we took an unsigned.
Hooray for type-safety.
Reviewers: chandlerc
Subscribers: dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D22282
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275591
91177308-0d34-0410-b5e6-
96231b3b80d8
Rong Xu [Fri, 15 Jul 2016 18:10:49 +0000 (18:10 +0000)]
[PGO] IRPGO pre-cleanup pass changes
This patch adds a selected set of cleanup passes including a pre-inline pass
before LLVM IR PGO instrumentation. The inline is only intended to apply those
obvious/trivial ones before instrumentation so that much less instrumentation
is needed to get better profiling information. This will drastically improve
the instrumented code performance for large C++ applications. Another benefit
is the context sensitive counts that can potentially improve the PGO
optimization.
Differential Revision: http://reviews.llvm.org/D21405
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275588
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 15 Jul 2016 18:03:59 +0000 (18:03 +0000)]
fix documentation comments; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275587
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 15 Jul 2016 17:48:09 +0000 (17:48 +0000)]
[Hexagon] Add a scheduling DAG mutation
- Remove output dependencies on USR_OVF register.
- Update chain edge latencies between v60 vector loads/stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275586
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Fri, 15 Jul 2016 17:23:20 +0000 (17:23 +0000)]
[OptRemark,LDist] RFC: Add hotness attribute
Summary:
This is the first set of changes implementing the RFC from
http://thread.gmane.org/gmane.comp.compilers.llvm.devel/98334
This is a cross-sectional patch; rather than implementing the hotness
attribute for all optimization remarks and all passes in a patch set, it
implements it for the 'missed-optimization' remark for Loop
Distribution. My goal is to shake out the design issues before scaling
it up to other types and passes.
Hotness is computed as an integer as the multiplication of the block
frequency with the function entry count. It's only printed in opt
currently since clang prints the diagnostic fields directly. E.g.:
remark: /tmp/t.c:3:3: loop not distributed: use -Rpass-analysis=loop-distribute for more info (hotness: 300)
A new API added is similar to emitOptimizationRemarkMissed. The
difference is that it additionally takes a code region that the
diagnostic corresponds to. From this, hotness is computed using BFI.
The new API is exposed via an analysis pass so that it can be made
dependent on LazyBFI. (Thanks to Hal for the analysis pass idea.)
This feature can all be enabled by setDiagnosticHotnessRequested in the
LLVM context. If this is off, LazyBFI is not calculated (D22141) so
there should be no overhead.
A new command-line option is added to turn this on in opt.
My plan is to switch all user of emitOptimizationRemark* to use this
module instead.
Reviewers: hfinkel
Subscribers: rcox2, mzolotukhin, llvm-commits
Differential Revision: http://reviews.llvm.org/D21771
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275583
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Fri, 15 Jul 2016 17:19:43 +0000 (17:19 +0000)]
[libFuzzer] add ThreadedLeakTest
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275582
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Fri, 15 Jul 2016 17:19:24 +0000 (17:19 +0000)]
[AliasAnalysis] Give back AA results for fence instructions
Calling getModRefInfo with a fence resulted in crashes because fences
don't have a memory location. Add a new predicate to Instruction
called isFenceLike which indicates that the instruction mutates memory
but not any single memory location in particular. In practice, it is a
proxy for the set of instructions which "mayWriteToMemory" but cannot be
used with MemoryLocation::get.
This fixes PR28570.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275581
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 15 Jul 2016 16:58:34 +0000 (16:58 +0000)]
[Hexagon] Update instruction itineraries
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275578
91177308-0d34-0410-b5e6-
96231b3b80d8
Dehao Chen [Fri, 15 Jul 2016 16:42:11 +0000 (16:42 +0000)]
[PM] Convert LoopInstSimplify Pass to new PM
Summary: Convert LoopInstSimplify to new PM. Unfortunately there is no exisiting unittest for this pass.
Reviewers: davidxl, silvas
Subscribers: silvas, llvm-commits, mzolotukhin
Differential Revision: https://reviews.llvm.org/D22280
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275576
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Fri, 15 Jul 2016 16:31:37 +0000 (16:31 +0000)]
IR: Sort generic intrinsics before target specific ones
This splits out the intrinsic table such that generic intrinsics come
first and target specific intrinsics are grouped by target. From here
we can find out which target an intrinsic is for or differentiate
between generic and target intrinsics.
The motivation here is to make it easier to move target specific
intrinsic handling out of generic code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275575
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 15 Jul 2016 16:29:02 +0000 (16:29 +0000)]
[Hexagon] Fixes/changes to instruction selection
- Add patterns for rr/abs addressing modes.
- Set addrMode to PostInc where necessary.
- Misc fixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275574
91177308-0d34-0410-b5e6-
96231b3b80d8
Jun Bum Lim [Fri, 15 Jul 2016 16:14:34 +0000 (16:14 +0000)]
[DSE]Enhance shorthening MemIntrinsic based on OverlapIntervals
Summary:
This change use the overlap interval map built from partial overwrite tracking to perform shortening MemIntrinsics.
Add test cases which was missing opportunities before.
Reviewers: hfinkel, eeckstein, mcrosier
Subscribers: mcrosier, llvm-commits
Differential Revision: https://reviews.llvm.org/D21909
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275571
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Fri, 15 Jul 2016 15:35:52 +0000 (15:35 +0000)]
[Hexagon] Improve patterns with stack-based addressing
- Treat bitwise OR with a frame index as an ADD wherever possible, fold it
into addressing mode.
- Extend patterns for memops to allow memops with frame indexes as address
operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275569
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Fri, 15 Jul 2016 15:30:18 +0000 (15:30 +0000)]
In dag-optnone.ll, use varargs instead of win64 to fast SDIsel.
The test used to rely on targeting win64 to disable fast isel,
but I'd like to teach fast isel about win64 rets. Change the
test to use varargs to disable fast isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275568
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Fri, 15 Jul 2016 15:22:43 +0000 (15:22 +0000)]
[LV] Swap A and B in interleaved access analysis (NFC)
This patch swaps A and B in the interleaved access analysis and clarifies
related comments. The algorithm is more intuitive if we let access A precede
access B in program order rather than the reverse. This change was requested in
the review of D19984.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275567
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaxun Liu [Fri, 15 Jul 2016 14:58:21 +0000 (14:58 +0000)]
[AMDGPU] Add metadata for runtime
Added emitting metadata to elf for runtime.
Runtime requires certain information (metadata) about kernels to be able to execute and query them. Such information is emitted to an elf section as a key-value pair stream.
Differential Revision: https://reviews.llvm.org/D21849
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275566
91177308-0d34-0410-b5e6-
96231b3b80d8
Jacques Pienaar [Fri, 15 Jul 2016 14:41:04 +0000 (14:41 +0000)]
Rename AnalyzeBranch* to analyzeBranch*.
Summary: NFC. Rename AnalyzeBranch/AnalyzeBranchPredicate to analyzeBranch/analyzeBranchPredicate to follow LLVM coding style and be consistent with TargetInstrInfo's analyzeCompare and analyzeSelect.
Reviewers: tstellarAMD, mcrosier
Subscribers: mcrosier, jholewinski, jfb, arsenm, dschuff, jyknight, dsanders, nemanjai
Differential Revision: https://reviews.llvm.org/D22409
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275564
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Laevsky [Fri, 15 Jul 2016 14:31:16 +0000 (14:31 +0000)]
Re-submit r272891 "Prevent dangling pointer problems in BranchProbabilityInfo"
Most possibly problem was caused by the same reason as PR28400. This change
bypasses it by using CallbackVH instead of AssertingVH.
Differential Revision: https://reviews.llvm.org/D20957
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275563
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Fri, 15 Jul 2016 13:54:20 +0000 (13:54 +0000)]
Revert r275141 - Mips: Avoid implicit iterator conversions, NFC
It appears to have caused some failures in our buildbots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275562
91177308-0d34-0410-b5e6-
96231b3b80d8
Sebastian Pop [Fri, 15 Jul 2016 13:45:20 +0000 (13:45 +0000)]
code hoisting pass based on GVN
This pass hoists duplicated computations in the program. The primary goal of
gvn-hoist is to reduce the size of functions before inline heuristics to reduce
the total cost of function inlining.
Pass written by Sebastian Pop, Aditya Kumar, Xiaoyu Hu, and Brian Rzycki.
Important algorithmic contributions by Daniel Berlin under the form of reviews.
Differential Revision: http://reviews.llvm.org/D19338
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275561
91177308-0d34-0410-b5e6-
96231b3b80d8
Nitesh Jain [Fri, 15 Jul 2016 12:56:37 +0000 (12:56 +0000)]
[LLVM][MIPS] Fix createStubFunction to emit JR encoding based on Arch.
Reviewers: vkalintiris, dsanders
Subscribers: jaydeep, bhushan, mohit.bhakkad, slthakur, llvm-commits
Differential Revision: https://reviews.llvm.org/D21172
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275559
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 15 Jul 2016 11:51:46 +0000 (11:51 +0000)]
[X86][AVX] Added shuffle tests for UNPCK+PERMUTE
lowerVectorShuffleAsPermuteAndUnpack could solve this if it worked with 256-bit vectors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275554
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 15 Jul 2016 11:40:27 +0000 (11:40 +0000)]
[X86][AVX2] Added a memory version of test_mm256_broadcastsi128_si256
This should lower to vbroadcasti128
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275552
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 15 Jul 2016 09:49:12 +0000 (09:49 +0000)]
[X86][AVX2] Improve lowerShuffleAsRepeatedMaskAndLanePermute permutation of 64-bit sub-lanes
As discussed on PR28136, lowerShuffleAsRepeatedMaskAndLanePermute was attempting to match repeated masks at the 128-bit level and then permute the resultant lanes at the 128-bit (AVX1) or 64-bit (AVX2) sub-lane level.
This change allows us to create the repeated masks at the sub-lane level (and then concat them together to create a 128-bit repeated mask) and then select which sub-lane to permute. This has no effect on the AVX1 codegen.
Fixes PR28136.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275543
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Fri, 15 Jul 2016 08:12:44 +0000 (08:12 +0000)]
[ARM] Fix build after r275540
A rebase seemed so innocent before committing. Turns out someone changed a pointer to a reference in the mean time :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275541
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Fri, 15 Jul 2016 08:03:56 +0000 (08:03 +0000)]
[Thumb-1] Select post-increment load and store where possible
Thumb-1 doesn't have post-inc or pre-inc load or store instructions. However the LDM/STM instructions with writeback can function as post-inc load/store:
ldm r0!, {r1} @ load from r0 into r1 and increment r0 by 4
Obviously, this only works if the post increment is 4.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275540
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Fri, 15 Jul 2016 07:57:35 +0000 (07:57 +0000)]
[ARM] Followup to r275537 addressing review comments
Address Chad's comment in D22216 which I missed due to tunnel vision on the "LGTM" comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275538
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Fri, 15 Jul 2016 07:55:21 +0000 (07:55 +0000)]
[ARM] Prefer indirect calls in minsize mode
... When we emit several calls to the same function in the same basic block.
An indirect call uses a "BLX r0" instruction which has a 16-bit encoding. If many calls are made to the same target, this can enable significant code size reductions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275537
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Fri, 15 Jul 2016 05:37:22 +0000 (05:37 +0000)]
XFAIL two SeparateConstOffsetFromGEP tests
They appear to have relied on bugs hidden in copyIRFlags/andIRFlags.
This has been filed as PR28564.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275533
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Fri, 15 Jul 2016 05:02:31 +0000 (05:02 +0000)]
[IR] andIRFlags and copyIRFlags needs to handle GEP
We didn't consider the inbounds flag on GEPs leading to downstream users
introducing UB.
This fixes PR28562.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275532
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Fri, 15 Jul 2016 02:11:37 +0000 (02:11 +0000)]
[llvm-cov] Relax a test for Windows
Attempt to address this bot failure:
http://bb.pgr.jp/builders/ninja-clang-i686-msc19-R/builds/4967
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275522
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Fri, 15 Jul 2016 01:53:39 +0000 (01:53 +0000)]
[llvm-cov] Improve error messages
While we're at it, extend an existing test to make sure that error
messages look reasonable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275520
91177308-0d34-0410-b5e6-
96231b3b80d8