OSDN Git Service
Balaram Makam [Tue, 11 Apr 2017 22:14:10 +0000 (22:14 +0000)]
[AArch64] Fix scheduling info for INS(vector, general) instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299994
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Tue, 11 Apr 2017 22:11:46 +0000 (22:11 +0000)]
Avoid some string copies, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299993
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Tue, 11 Apr 2017 21:52:40 +0000 (21:52 +0000)]
Minor updates to floating point intrinsic documentation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299991
91177308-0d34-0410-b5e6-
96231b3b80d8
Zvi Rackover [Tue, 11 Apr 2017 21:37:02 +0000 (21:37 +0000)]
InstSimplify: A shuffle of a splat is always the splat itself
Summary:
Fold:
shuffle (splat-shuffle), undef, M --> splat-shuffle
Reviewers: spatel, RKSimon, craig.topper
Reviewed By: RKSimon
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31527
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299990
91177308-0d34-0410-b5e6-
96231b3b80d8
Zvi Rackover [Tue, 11 Apr 2017 21:16:59 +0000 (21:16 +0000)]
[DAGCombine] Add more test cases for shuffle of splat. NFC.
Tests added contain splat-masks with undef elements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299988
91177308-0d34-0410-b5e6-
96231b3b80d8
Easwaran Raman [Tue, 11 Apr 2017 21:05:02 +0000 (21:05 +0000)]
[x86] Relax the check in areLoadsFromSameBasePtr
Check if the scale operand is identical (doesn't have to be 1) and
do not check the chaain operand.
Differential revision: https://reviews.llvm.org/D31833
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299986
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Thomas [Tue, 11 Apr 2017 21:02:00 +0000 (21:02 +0000)]
[LV] Avoid vectorizing first order recurrence when phi uses are outside loop
In the vectorization of first order recurrence, we vectorize such
that the last element in the vector will be the one extracted to pass into the
scalar remainder loop. However, this is not true when there is a phi (other
than the primary induction variable) is used outside the loop.
In such a case, we need the value from the second last iteration (i.e.
the phi value), not the last iteration (which would be the phi update).
I've added a test case for this. Also see PR32396.
A follow up patch would generate the correct code gen for such cases,
and turn this vectorization on.
Differential Revision: https://reviews.llvm.org/D31910
Reviewers: mssimpso
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299985
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 11 Apr 2017 20:54:57 +0000 (20:54 +0000)]
[InstSimplify] add tests for chains of shuffles; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299984
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Tue, 11 Apr 2017 20:06:36 +0000 (20:06 +0000)]
MemorySSA: Move to Analysis, from Transforms/Utils. It's used as
Analysis, it has Analysis passes, and once NewGVN is made an Analysis,
this removes the cross dependency from Analysis to Transform/Utils.
NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299980
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Tue, 11 Apr 2017 19:32:41 +0000 (19:32 +0000)]
MIR: Allow parsing of empty machine functions
If you run llc -stop-after=codegenprepare and feed the resulting MIR
to llc -start-after=codegenprepare, you'll have an empty machine
function since we haven't run any isel yet. Of course, this only works
if the MIRParser believes you that this is okay.
This is essentially a revert of r241862 with a fix for the problem it
was papering over.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299975
91177308-0d34-0410-b5e6-
96231b3b80d8
Evandro Menezes [Tue, 11 Apr 2017 19:13:11 +0000 (19:13 +0000)]
[AArch64] Simplify MacroFusion
This patch assumes that the dependents to be scanned for the ExitSU are its
predecessors; otherwise, the successors of the instr are scanned.
Furthermore, sometimes the ExitSU was being fused twice, since it may be
fused once when scanning the successors from the beginning of the BB and
then again when scanning the predecessors of ExitSU. Thus, when scanning
the successors of an instr, skip the ExitSU.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299974
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Tue, 11 Apr 2017 19:11:20 +0000 (19:11 +0000)]
[X86] Create the correct ADC/SBB SDNode when lowering add.
Differential Revision: https://reviews.llvm.org/D31911
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299973
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Tue, 11 Apr 2017 19:07:30 +0000 (19:07 +0000)]
[AddDiscriminators] Assign discriminators to MemIntrinsic calls.
Before this patch, pass AddDiscriminators always avoided to assign
discriminators to intrinsic calls. This was done mainly for two reasons:
1) We wanted to minimize the number of based discriminators used.
2) We wanted to avoid non-deterministic discriminator assignment for
different debug levels.
Unfortunately, that approach was problematic for MemIntrinsic calls.
MemIntrinsic calls can be split by SROA into loads and stores, and each new
load/store instruction would obtain the debug location from the original
intrinsic call.
If we don't assign a discriminator to MemIntrinsic calls, then we cannot
correctly set the discriminator for the newly created loads and stores.
This may have a negative impact on the basic block weight computation
performed by the SampleLoader.
This patch fixes the issue by letting MemIntrinsic calls have a discriminator.
Differential Revision: https://reviews.llvm.org/D31900
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299972
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 11 Apr 2017 18:50:48 +0000 (18:50 +0000)]
[InstCombine] Add testcases for (B&A)^A -> ~B & A and (B|A)^A -> B & ~A
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299971
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 11 Apr 2017 18:47:58 +0000 (18:47 +0000)]
Fix spelling compliment->complement. Mostly refering to 2s complement. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299970
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Thomas [Tue, 11 Apr 2017 18:31:42 +0000 (18:31 +0000)]
[LV] Move first order recurrence test to common folder. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299969
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Tue, 11 Apr 2017 18:20:05 +0000 (18:20 +0000)]
[libFuzzer] fix type in signal name.
Fixes PR32576.
Patch by Jakub Zawadzki.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299968
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Tue, 11 Apr 2017 18:12:00 +0000 (18:12 +0000)]
llvm-lto2: Move the LTO::run() action behind a subcommand.
Move LTO::run() to a "run" subcommand so that we can introduce new subcommands
for testing different parts of the LTO implementation.
This doesn't use llvm::cl subcommands because it doesn't appear to be currently
possible to pass an argument not associated with a subcommand to a subcommand
(e.g. -lto-use-new-pm, -mcpu=yonah).
Differential Revision: https://reviews.llvm.org/D31410
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299967
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 11 Apr 2017 17:42:40 +0000 (17:42 +0000)]
[InstCombine] Use ConstantExpr::getBinOpIdentity to implement getIdentityValue.
This removes a TODO in getIdentityValue and may allow some transforms to occur earlier. But I was unable to find any transforms we didn't already handle.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299966
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaxun Liu [Tue, 11 Apr 2017 17:18:13 +0000 (17:18 +0000)]
[AMDGPU] Add A5 to data layout for amdgiz environment
Differential Revision: https://reviews.llvm.org/D31589
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299964
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Tue, 11 Apr 2017 16:27:20 +0000 (16:27 +0000)]
Revert 299953 : test failure needs to be fixed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299959
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Tue, 11 Apr 2017 16:26:15 +0000 (16:26 +0000)]
[PDB] Emit index/offset pairs for TPI and IPI streams
Summary:
This lets PDB readers lookup type record data by type index in O(log n)
time. It also enables makes `cvdump -t` work on PDBs produced by LLD.
cvdump will not dump a PDB that doesn't have an index-to-offset table.
The table is sorted by type index, and has an entry every 8KB. Looking
up a type record by index is a binary search of this table, followed by
a scan of at most 8KB.
Reviewers: ruiu, zturner, inglorion
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31636
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299958
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 11 Apr 2017 15:57:32 +0000 (15:57 +0000)]
revert r299851 - [InstCombine] fix matching of or-of-icmps constants (PR32524)
This is a candidate culprit for multiple bot fails, so reverting pending investigation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299955
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Tue, 11 Apr 2017 15:51:32 +0000 (15:51 +0000)]
[Profile] PE binary coverage bug fix
PR/32584
Differential Revision: https://reviews.llvm.org/D31939
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299953
91177308-0d34-0410-b5e6-
96231b3b80d8
Serge Guelton [Tue, 11 Apr 2017 15:01:18 +0000 (15:01 +0000)]
Module::getOrInsertFunction is using C-style vararg instead of variadic templates.
From a user prospective, it forces the use of an annoying nullptr to mark the end of the vararg, and there's not type checking on the arguments.
The variadic template is an obvious solution to both issues.
Differential Revision: https://reviews.llvm.org/D31070
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299949
91177308-0d34-0410-b5e6-
96231b3b80d8
Vassil Vassilev [Tue, 11 Apr 2017 14:55:32 +0000 (14:55 +0000)]
Remove unused functions. Remove static qualifier from functions in header files. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299947
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonathan Roelofs [Tue, 11 Apr 2017 14:51:49 +0000 (14:51 +0000)]
[AVR] Migrate to new MCAsmBackend applyFixup
https://reviews.llvm.org/D31875
Patch by Leslie Zhai!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299946
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Tue, 11 Apr 2017 14:42:08 +0000 (14:42 +0000)]
[ARM] Refactor Thumb2 sat instructions
Refactor the USAT, SSAT, USAT16 and SSAT16 instruction descriptions
for Thumb2.
Differential Revision: https://reviews.llvm.org/D31933
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299945
91177308-0d34-0410-b5e6-
96231b3b80d8
Geoff Berry [Tue, 11 Apr 2017 14:36:30 +0000 (14:36 +0000)]
[GVNHoist] Re-enable GVNHoist by default
Turn GVNHoist back on by default now that PR32153 has been fixed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299944
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Tue, 11 Apr 2017 13:41:19 +0000 (13:41 +0000)]
[SDAG] Factor CandidateMatch check into lambda. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299939
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Tue, 11 Apr 2017 13:41:17 +0000 (13:41 +0000)]
[SDAG] Factor ChainMerge into helper function NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299938
91177308-0d34-0410-b5e6-
96231b3b80d8
Nirav Dave [Tue, 11 Apr 2017 13:41:16 +0000 (13:41 +0000)]
[SDAG] Reorder expensive StoreMerge Check after cheaper one. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299937
91177308-0d34-0410-b5e6-
96231b3b80d8
Keno Fischer [Tue, 11 Apr 2017 13:32:11 +0000 (13:32 +0000)]
[StripDeadDebug/DIFinder] Track inlined SPs
Summary:
In rL299692 I improved strip-dead-debug-info's ability to drop CUs that are not
referenced from the current module. However, in doing so I neglected to realize
that some SPs could be referenced entirely from inlined functions. It appears
I was not the only one to make this mistake, because DebugInfoFinder, doesn't
find those SPs either. Fix this in DebugInfoFinder and then use that to make
sure not to drop those CUs in strip-dead-debug-info.
Reviewers: aprantl
Reviewed By: aprantl
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31904
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299936
91177308-0d34-0410-b5e6-
96231b3b80d8
Jan Sjodin [Tue, 11 Apr 2017 11:40:55 +0000 (11:40 +0000)]
Add MachineRegionInfoPassID to Passes.h.
Differential Revision: https://reviews.llvm.org/D31899
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299932
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Tue, 11 Apr 2017 10:52:34 +0000 (10:52 +0000)]
GlobalISel: Allow legalizing G_FADD to a libcall
Use the same handling in the generic legalizer code as for the other
libcalls (G_FREM, G_FPOW).
Enable it on ARM for float and double so we can test it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299931
91177308-0d34-0410-b5e6-
96231b3b80d8
Volkan Keles [Tue, 11 Apr 2017 10:10:14 +0000 (10:10 +0000)]
[GlobalISel] LegalizerInfo: Enable legalization of non-power-of-2 types
Summary: Legalize only if the type is marked as Legal or Custom. If not, return Unsupported as LegalizerHelper is not able to handle non-power-of-2 types right now.
Reviewers: qcolombet, aditya_nandakumar, dsanders, t.p.northover, kristof.beyls, javed.absar, ab
Reviewed By: kristof.beyls, ab
Subscribers: dberris, rovka, igorb, llvm-commits
Differential Revision: https://reviews.llvm.org/D31711
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299929
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Tue, 11 Apr 2017 10:07:12 +0000 (10:07 +0000)]
Revert "Turn some C-style vararg into variadic templates"
This reverts commit r299925 because it broke the buildbots. See e.g.
http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/6008
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299928
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Tue, 11 Apr 2017 08:43:32 +0000 (08:43 +0000)]
[SelectionDAG] Check CALLSEQ_BEGIN nodes in DelayForLiveRegs
A fix for the bug reported in PR30911.
The issue arises when multiple CALLSEQ_BEGIN nodes are unscheduled as
the last node to be unscheduled will gain access to the CallResource
register. But when a node is being picked, only CALLSEQ_END nodes are
checked against the CallResource and have their chains evaluated.
This then means that other CALLSEQ_BEGIN nodes can be scheduled
before the existing call sequence has been finalised. This patch adds
a check against the FrameSetup nodes in DelayForLiveRegs to prevent
this from happening.
Differential Revision: https://reviews.llvm.org/D31536
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299926
91177308-0d34-0410-b5e6-
96231b3b80d8
Serge Guelton [Tue, 11 Apr 2017 08:36:52 +0000 (08:36 +0000)]
Turn some C-style vararg into variadic templates
Module::getOrInsertFunction is using C-style vararg instead of
variadic templates.
From a user prospective, it forces the use of an annoying nullptr
to mark the end of the vararg, and there's not type checking on the
arguments. The variadic template is an obvious solution to both
issues.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299925
91177308-0d34-0410-b5e6-
96231b3b80d8
Sylvestre Ledru [Tue, 11 Apr 2017 08:21:27 +0000 (08:21 +0000)]
Simplify the code and remove dead code
Summary: Fix coverity cid
1374240
Reviewers: dberlin
Reviewed By: dberlin
Differential Revision: https://reviews.llvm.org/D31928
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299924
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 11 Apr 2017 06:41:55 +0000 (06:41 +0000)]
[IR] Fix a typo in a comment. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299918
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 11 Apr 2017 06:32:48 +0000 (06:32 +0000)]
[InstCombine] Refinement of r299915. Only consider a ConstantVector for Neg if all the elements are Undef or ConstantInt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299917
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 11 Apr 2017 05:42:47 +0000 (05:42 +0000)]
[InstCombine] Support weird size element types in dyn_castNegVal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299915
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Tue, 11 Apr 2017 04:11:47 +0000 (04:11 +0000)]
[LoopUnswitch] Fix a test case
(h/t to Chandler for pointing this out)
The test in question was not at all testing what it was supposed to
test. We do not //care// about placing `!make.implicit` in inner
constant branch (since it will be folded away anyway). We care about
placing `!make.implicit` in the outer branch that switches between
either version of the loop.
Having said that, it is _correct_ to leave behind the `!make.implicit`
in the inner branch, but there is no need to do so.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299912
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Tue, 11 Apr 2017 02:22:54 +0000 (02:22 +0000)]
[LICM] Hoist fp division from the loops and replace by a reciprocal
When allowed, we can hoist a division out of a loop in favor of a
multiplication by the reciprocal. Fixes PR32157.
Patch by vit9696!
Differential Revision: https://reviews.llvm.org/D30819
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299911
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Tue, 11 Apr 2017 02:03:17 +0000 (02:03 +0000)]
[PowerPC] multiply-with-overflow might use the CTR register
Check the legality of ISD::[US]MULO to see whether
Intrinsic::[us]mul_with_overflow will legalize into a function call (and, thus,
will use the CTR register). Fixes PR32485.
Patch by Tim Neumann!
Differential Revision: https://reviews.llvm.org/D31790
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299910
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Tue, 11 Apr 2017 00:18:42 +0000 (00:18 +0000)]
[bugpoint] Also remove comdat's from externalized GVs
We were removing comdats from externalized functions (function declarations
can't be comdat), but were not doing the same for variable. Failure to do this
would cause bugpoint to fail ("Declaration may not be in a Comdat!").
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299908
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Tue, 11 Apr 2017 00:16:00 +0000 (00:16 +0000)]
[IR] Sink some AttributeListImpl methods out of headers NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299906
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Tue, 11 Apr 2017 00:07:26 +0000 (00:07 +0000)]
Revert "NewGVN: Don't propagate over phi backedges where undef causes us to have >1 value."
It's not ready yet this was an accidental commit :(
This reverts r299903
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299904
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Tue, 11 Apr 2017 00:02:38 +0000 (00:02 +0000)]
NewGVN: Don't propagate over phi backedges where undef causes us to have >1 value.
Fixes PR 32607.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299903
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 10 Apr 2017 23:46:08 +0000 (23:46 +0000)]
Remove AttributeSetNode::get(AttributeList, unsigned) and sink constructor
The getter was equivalent to AttributeList::getAttributes(unsigned),
which seems like a better way to express getting the AttributeSet for a
given index. This static helper was only used in one place anyway.
The constructor doesn't benefit from inlining and doesn't need to be in
a header.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299900
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 10 Apr 2017 23:31:05 +0000 (23:31 +0000)]
Reland "[IR] Make AttributeSetNode public, avoid temporary AttributeList copies"
This re-lands r299875.
I introduced a bug in Clang code responsible for replacing K&R, no
prototype declarations with a real function definition with a prototype.
The bug was here:
// Collect any return attributes from the call.
- if (oldAttrs.hasAttributes(llvm::AttributeList::ReturnIndex))
- newAttrs.push_back(llvm::AttributeList::get(newFn->getContext(),
- oldAttrs.getRetAttributes()));
+ newAttrs.push_back(oldAttrs.getRetAttributes());
Previously getRetAttributes() carried AttributeList::ReturnIndex in its
AttributeList. Now that we return the AttributeSetNode* directly, it no
longer carries that index, and we call this overload with a single node:
AttributeList::get(LLVMContext&, ArrayRef<AttributeSetNode*>)
That aborted with an assertion on x86_32 targets. I added an explicit
triple to the test and added CHECKs to help find issues like this in the
future sooner.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299899
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 10 Apr 2017 23:26:31 +0000 (23:26 +0000)]
[ARM, x86] add tests to show possible improvement for bool math; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299897
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Mon, 10 Apr 2017 23:08:35 +0000 (23:08 +0000)]
[NewGVN] Surround with parens to clarify allegedly ambiguous precedence.
This Placates GCC7 with -Werror. Also, clang-format the assertions
while I'm here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299895
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Mon, 10 Apr 2017 22:44:46 +0000 (22:44 +0000)]
[MemorySSA] We don't need to compute dominator levels anymore.
Differential Revision: https://reviews.llvm.org/D31818
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299893
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Mon, 10 Apr 2017 22:28:22 +0000 (22:28 +0000)]
CodeGen: BlockPlacement: Don't always tail-duplicate with no other successor.
The math works out where it can actually be counter-productive. The probability
calculations correctly handle the case where the alternative is 0 probability,
rely on those calculations.
Includes a test case that demonstrates the problem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299892
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Mon, 10 Apr 2017 22:28:18 +0000 (22:28 +0000)]
CodeGen: BlockPlacement: Minor probability changes.
Qin may be large, and Succ may be more frequent than BB. Take these both into
account when deciding if tail-duplication is profitable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299891
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Mon, 10 Apr 2017 22:28:12 +0000 (22:28 +0000)]
CodeGen: BranchFolding: Merge identical blocks, even if they are short.
Merging identical blocks when it doesn't reduce fallthrough. It is common for
the blocks created from critical edge splitting to be identical. We would like
to merge these blocks whenever doing so would not reduce fallthrough.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299890
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 10 Apr 2017 22:27:50 +0000 (22:27 +0000)]
Allow DataLayout to specify addrspace for allocas.
LLVM makes several assumptions about address space 0. However,
alloca is presently constrained to always return this address space.
There's no real way to avoid using alloca, so without this
there is no way to opt out of these assumptions.
The problematic assumptions include:
- That the pointer size used for the stack is the same size as
the code size pointer, which is also the maximum sized pointer.
- That 0 is an invalid, non-dereferencable pointer value.
These are problems for AMDGPU because alloca is used to
implement the private address space, which uses a 32-bit
index as the pointer value. Other pointers are 64-bit
and behave more like LLVM's notion of generic address
space. By changing the address space used for allocas,
we can change our generic pointer type to be LLVM's generic
pointer type which does have similar properties.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299888
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 10 Apr 2017 22:22:11 +0000 (22:22 +0000)]
Get the TOC save offset off of PPCFrameLowering rather than a separate copy of the same data.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299887
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Mon, 10 Apr 2017 21:17:54 +0000 (21:17 +0000)]
Bitcode: Merge the code for parsing global value module codes in the summary bitcode reader. NFCI.
This code will need to be taught to handle string tables and it's better if
there is only one copy of it.
Differential Revision: https://reviews.llvm.org/D31829
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299886
91177308-0d34-0410-b5e6-
96231b3b80d8
Dehao Chen [Mon, 10 Apr 2017 20:49:16 +0000 (20:49 +0000)]
Emit less compiler optimization remarks in samplepgo to reduce a call to findCalleeFunctionSamples which is going to be refactored.
Summary: Now the SamplePGO support is more stable, we do not need so many verbose optimization remarks emitted.
Reviewers: dnovillo, davidxl
Reviewed By: davidxl
Subscribers: fhahn, llvm-commits
Differential Revision: https://reviews.llvm.org/D31826
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299883
91177308-0d34-0410-b5e6-
96231b3b80d8
Geoff Berry [Mon, 10 Apr 2017 20:45:17 +0000 (20:45 +0000)]
[GVNHoist] Call isGuaranteedToTransferExecutionToSuccessor on each instruction
w.r.t. https://bugs.llvm.org/show_bug.cgi?id=32153
The consensus seems to be isGuaranteedToTransferExecutionToSuccessor should be called for each function.
Patch by Aditya Kumar
Differential Revision: https://reviews.llvm.org/D31035
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299882
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Mon, 10 Apr 2017 20:36:36 +0000 (20:36 +0000)]
Revert "[asan] Put ctor/dtor in comdat."
This reverts commit r299696, which is causing mysterious test failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299880
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Mon, 10 Apr 2017 20:36:30 +0000 (20:36 +0000)]
Revert "[asan] Fix dead stripping of globals on Linux."
This reverts commit r299697, which caused a big increase in object file size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299879
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 10 Apr 2017 20:34:19 +0000 (20:34 +0000)]
Revert "[IR] Make AttributeSetNode public, avoid temporary AttributeList copies"
This reverts r299875. A Linux bot came back with a test failure:
http://bb.pgr.jp/builders/test-clang-i686-linux-RA/builds/741/steps/test_clang/logs/Clang%20%3A%3A%20CodeGen__2006-05-19-SingleEltReturn.c
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299878
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 10 Apr 2017 20:18:21 +0000 (20:18 +0000)]
Add address space mangling to lifetime intrinsics
In preparation for allowing allocas to have non-0 addrspace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299876
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 10 Apr 2017 20:18:10 +0000 (20:18 +0000)]
[IR] Make AttributeSetNode public, avoid temporary AttributeList copies
Summary:
AttributeList::get(Fn|Ret|Param)Attributes no longer creates a temporary
AttributeList just to hide the AttributeSetNode type.
I've also added a factory method to create AttributeLists from a
parallel array of AttributeSetNodes. I think this simplifies
construction of AttributeLists when rewriting function prototypes.
Previously we would test if a particular index had attributes, and
conditionally add a temporary attribute list to a vector. Now the
attribute set vector is parallel to the argument vector already that
these passes already construct.
My long term vision is to wrap AttributeSetNode* inside an AttributeSet
type that holds the enum attributes, but that will come in a follow up
change.
I haven't done any performance measurements for this change because
profiling hasn't shown that any of the affected code is hot.
Reviewers: pete, chandlerc, sanjoy, hfinkel
Reviewed By: pete
Subscribers: jfb, llvm-commits
Differential Revision: https://reviews.llvm.org/D31198
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299875
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 10 Apr 2017 20:16:54 +0000 (20:16 +0000)]
Remove svn:eol-style properties from some files so 'git llvm push' works for them
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299874
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 10 Apr 2017 20:01:50 +0000 (20:01 +0000)]
Fix signed / unsigned comparison warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299873
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Mon, 10 Apr 2017 19:42:44 +0000 (19:42 +0000)]
[mips] Use Triple::isLittleEndian to check endianness. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299872
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 10 Apr 2017 19:38:36 +0000 (19:38 +0000)]
[InstCombine] improve variable names; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299871
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 10 Apr 2017 19:37:10 +0000 (19:37 +0000)]
[InstSimplify] Use cast instead of dyn_cast after isa<> check. NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299870
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 10 Apr 2017 19:33:29 +0000 (19:33 +0000)]
[llvm-pdbdump] Display padding bytes on record layout
When dumping classes, show where padding occurs, and at the end of the
class print statistics about how many bytes total of padding exist in a
class.
Since PDB doesn't specifically contain information about padding, we have
to mimic this by sort of reversing a small portion of the record layout
algorithm (e.g. looking at offsets and sizes and trying to determine
whether something is part of the same field or a new field).
Differential Revision: https://reviews.llvm.org/D31800
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299869
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 10 Apr 2017 19:00:25 +0000 (19:00 +0000)]
[MemCpyOpt] Only replace memcpy with bitcast if address spaces match
Patch by James Price
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299866
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Mon, 10 Apr 2017 18:46:00 +0000 (18:46 +0000)]
MemorySSA: Make lifetime starts defs for mustaliased pointers
Summary:
While we don't want them aliasing with other pointers, there seems to
be no point in not having them clobber must-aliased'd pointers.
If some day, we split the aliasing and ordering chains, we'd make this
not aliasing but an ordering barrier (IE it doesn't affect it's
memory, but we can't hoist it above it).
Reviewers: hfinkel, george.burgess.iv
Subscribers: Prazek, llvm-commits
Differential Revision: https://reviews.llvm.org/D31865
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299865
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Simpson [Mon, 10 Apr 2017 18:34:37 +0000 (18:34 +0000)]
[ARM/AArch64] Ensure valid vector element types for interleaved accesses
This patch refactors and strengthens the type checks performed for interleaved
accesses. The primary functional change is to ensure that the interleaved
accesses have valid element types. The added test cases previously failed
because the element type is f128.
Differential Revision: https://reviews.llvm.org/D31817
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299864
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 10 Apr 2017 18:09:25 +0000 (18:09 +0000)]
[InstCombine] Use commutable matchers and m_OneUse in visitSub to shorten code. Add missing test cases.
In one case I removed commute handling for a multiply with a constant since we'll eventually get the constant on the right hand side.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299863
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 10 Apr 2017 17:58:06 +0000 (17:58 +0000)]
AMDGPU: Fix crash when disassembling VOP3 mac
The unused dummy src2_modifiers is missing, so it crashes
when trying to print it.
I tried to fully remove src2_modifiers, but there are some
irritations in the places where it is converted to mad since
it starts to require modifying use lists while iterating over
them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299861
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 10 Apr 2017 17:18:54 +0000 (17:18 +0000)]
[Support] Add support for finding unset bits in a BitVector.
BitVector had methods for searching for the first and next
set bits, but it did not have analagous methods for finding
the first and next unset bits. This is useful when your ones
and zeros are grouped together and you want to iterate over
ranges of ones and zeros.
Differential Revision: https://reviews.llvm.org/D31802
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299857
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 10 Apr 2017 17:17:11 +0000 (17:17 +0000)]
Fix line endings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299856
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 10 Apr 2017 17:15:11 +0000 (17:15 +0000)]
Remove eol-style:native from BitVector.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299855
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 10 Apr 2017 16:59:40 +0000 (16:59 +0000)]
[InstCombine] Use m_c_Add to shorten some code. Add testcases for this fold since they were missing. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299853
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 10 Apr 2017 16:58:07 +0000 (16:58 +0000)]
[X86][MMX] Add fast-isel support for MMX non-temporal writes
Differential Revision: https://reviews.llvm.org/D31754
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299852
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 10 Apr 2017 16:55:57 +0000 (16:55 +0000)]
[InstCombine] fix matching of or-of-icmps constants (PR32524)
Also, make the same change in and-of-icmps and remove a hack for detecting that case.
Finally, add some FIXME comments because the code duplication here is awful.
This should fix the remaining IR problem noted in:
https://bugs.llvm.org/show_bug.cgi?id=32524
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299851
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian McCarthy [Mon, 10 Apr 2017 16:43:09 +0000 (16:43 +0000)]
Improves pretty printing of variable types in llvm-pdbdump
* Adds support for pointers to arrays, which was missing
* Adds some tests
* Improves consistency of const and volatile qualifiers
* Eliminates non-composable special case code for arrays and function by using
a more general recursive approach
* Has a hack for getting the calling convention into the right spot for
pointer-to-functions
Given the rapid changes happenning in llvm-pdbdump, this may be difficult to
merge.
Differential Revision: https://reviews.llvm.org/D31832
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299848
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 10 Apr 2017 16:40:00 +0000 (16:40 +0000)]
[InstCombine] Support folding of add instructions with vector constants into select operations
We currently only fold scalar add of constants into selects. This improves this to support vectors too.
Differential Revision: https://reviews.llvm.org/D31683
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299847
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 10 Apr 2017 16:28:08 +0000 (16:28 +0000)]
[InstCombine] add test for PR32524; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299846
91177308-0d34-0410-b5e6-
96231b3b80d8
Diana Picus [Mon, 10 Apr 2017 09:27:39 +0000 (09:27 +0000)]
[ARM] GlobalISel: Support G_FPOW for float and double
Legalize to a libcall.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299841
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 10 Apr 2017 07:13:40 +0000 (07:13 +0000)]
[InstCombine] Use commutable and/or/xor matchers to simplify some code
Summary:
This is my first time using the commutable matchers so wanted to make sure I was doing it right.
Are there any other matcher tricks to further shrink this? Can we commute the whole match so we don't have to LHS and RHS separately?
Reviewers: davide, spatel
Reviewed By: davide
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31680
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299840
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 10 Apr 2017 07:06:44 +0000 (07:06 +0000)]
[SelectionDAG] TargetLowering::SimplifyDemandedBits how to properly calculate KnownZero bits for ISD::SETCC and ISD::AssertZExt
Summary:
For SETCC we aren't calculating the KnownZero bits at all. I've copied the code from computeKnownZero over for this.
For AssertZExt we were only setting KnownZero for bits that were demanded. But the upper bits are zero whether they were demanded or not.
I'm interested in fixing this because my belief is the first part of the ISD::AND handling code in SimplifyDemandedBits largely exists because of these two bugs. In that code we go to computeKnownBits for the LHS and optimize a RHS constant. Because computeKnownBits handles SETCC and AssertZExt correctly we get better information sometimes than when we call SimplifyDemandedBits on the LHS later. With these two issues fixed in SimplifyDemandedBits I was able to remove that computeKnownBits call and still pass all X86 tests. I'll submit that change in a separate patch.
Reviewers: RKSimon, spatel
Reviewed By: RKSimon
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31715
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299839
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 10 Apr 2017 07:00:10 +0000 (07:00 +0000)]
[InstCombine] Make sure we preserve fast math flags when folding fp instructions into phi nodes
Summary: I noticed in the select folding code that we copied fast math flags, but did not do the same for the similar handling in phi nodes. This patch fixes that to do the same thing as select
Reviewers: spatel, davide, majnemer, hfinkel
Reviewed By: davide
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31690
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299838
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 10 Apr 2017 06:53:28 +0000 (06:53 +0000)]
[InstCombine] use m_c_And and m_c_Xor to handle commuted versions of a transform.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299837
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 10 Apr 2017 06:53:25 +0000 (06:53 +0000)]
[InstCombine] Add test cases demonstrating missing handling for the commuted version of a transform. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299836
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 10 Apr 2017 06:53:23 +0000 (06:53 +0000)]
[InstCombine] Remove unnecessary dyn_cast to BinaryOperator around some matcher checks in visitXor.
The matchers themselves should be enough.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299835
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 10 Apr 2017 06:53:21 +0000 (06:53 +0000)]
[InstCombine] Make the (A|B)^B -> A & ~B transform code consistent with the very similar (A&B)^B -> ~A & B code. This should be NFC except for the addition of hasOneUse check.
I think this code is still overly complicated and should use matchers, but first I wanted to make it consistent.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299834
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 10 Apr 2017 06:53:19 +0000 (06:53 +0000)]
[InstCombine] Use m_OneUse to shorten some code. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299833
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 10 Apr 2017 06:30:28 +0000 (06:30 +0000)]
Remove unused method.
This is causing build breaks, but it's unused anyway, so delete
it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299832
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 10 Apr 2017 06:14:09 +0000 (06:14 +0000)]
General usability improvements to generic PDB library.
1. Added some asserts to make sure concrete symbol types don't
get constructed with RawSymbols that have an incompatible
SymTag enum value.
2. Added new forwarding macros that auto-define an Id/Sym method
pair whenever there is a method that returns a SymIndexId.
Previously we would just provide one method that returned only
the SymIndexId and it was up to the caller to use the Session
object to get a pointer to the symbol. Now we automatically
get both the method that returns the Id, as well as a method
that returns the pointer directly with just one macro.
3. Added some methods for dumping straight to stdout that can
be used from inside the debugger for diagnostics during a
debug session.
4. Added a clone() method and a cast<T>() method to PDBSymbol
that can shorten some usage patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299831
91177308-0d34-0410-b5e6-
96231b3b80d8
Xin Tong [Mon, 10 Apr 2017 00:33:25 +0000 (00:33 +0000)]
[SCCP] Resolve indirect branch target when possible.
Summary:
Resolve indirect branch target when possible.
This potentially eliminates more basicblocks and result in better evaluation for phi and other things.
Reviewers: davide, efriedma, sanjoy
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D30322
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299830
91177308-0d34-0410-b5e6-
96231b3b80d8