Stanislav Mekhanoshin [Thu, 16 Mar 2017 16:11:46 +0000 (16:11 +0000)]
[AMDGPU] Run always inliner early in opt
We can mark functions to always inline early in the opt. Since we do not have
call support this early inlining creates opportunities for inter-procedural
optimizations which would not occur otherwise.
Differential Revision: https://reviews.llvm.org/D31016
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297958
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Thu, 16 Mar 2017 15:10:42 +0000 (15:10 +0000)]
[X86] Add PR22338 test case
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297957
91177308-0d34-0410-b5e6-
96231b3b80d8
Aditya Kumar [Thu, 16 Mar 2017 14:09:18 +0000 (14:09 +0000)]
Fix: Refactor SimplifyCFG:canSinkInstructions [NFC]
Differential Revision: https://reviews.llvm.org/D30116
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297955
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Thu, 16 Mar 2017 14:05:34 +0000 (14:05 +0000)]
[BasicTTIImpl] Bugfix in getIntrinsicInstrCost()
Don't call getScalarizationOverhead(RetTy, true, false) if RetTy is void type.
Review: Hal Finkel
https://reviews.llvm.org/D31024
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297954
91177308-0d34-0410-b5e6-
96231b3b80d8
Bjorn Pettersson [Thu, 16 Mar 2017 13:22:01 +0000 (13:22 +0000)]
[InstCombine] Liberate assert in InstCombiner::visitZExt
Summary:
The call to canEvaluateZExtd in InstCombiner::visitZExt may
return with BitsToClear == SrcTy->getScalarSizeInBits(), but
there is an assert that BitsToClear should be smaller than
SrcTy->getScalarSizeInBits().
I have a test case that triggers the assert, but it only happens
for my downstream target. I've not been able to trigger it for
any upstream target.
The assert triggered for a piece of code such as this
%shr1 = lshr i16 undef, 15
...
%shr2 = lshr i16 %shr1, 1
%conv = zext i16 %shr2 to i32
Normally the lshr instructions are constant folded before we
visit the zext (that is why it is so hard to reproduce).
The original pattern, before instcombine, is of course a lot more
complicated in my test case. The shift count in the second lshr
is for example determined by the outcome of a PHI instruction.
It seems like other rewrites by instcombine leads up to
the pattern above. And then the zext is pulled from the
worklist, and visited (hitting the assert), before we detect
that the lshr instrucions can be constant folded.
Anyway, since the canEvaluateZExtd may return with BitsToClear
equal to SrcTy->getScalarSizeInBits(), and since the rewrite
that converts the expression type to avoid a zero extend works
also for the case where SrcBitsKept ends up being zero, then
it should be OK to liberate the assert to
assert(BitsToClear <= SrcTy->getScalarSizeInBits() &&
"Unreasonable BitsToClear");
Reviewers: hfinkel
Reviewed By: hfinkel
Subscribers: hfinkel, llvm-commits
Differential Revision: https://reviews.llvm.org/D30993
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297952
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Liu [Thu, 16 Mar 2017 13:16:35 +0000 (13:16 +0000)]
Revert "[PGO] Value profile for size of memory intrinsic calls"
This commit reverts r297897 and r297909.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297951
91177308-0d34-0410-b5e6-
96231b3b80d8
James Henderson [Thu, 16 Mar 2017 11:22:09 +0000 (11:22 +0000)]
[Support] Add support for getting file system permissions on Windows and implement sys::fs::set/getPermissions to work with them
This change adds support for functions to set and get file permissions, in a similar manner to the C++17 permissions() function in <filesystem>. The setter uses chmod on Unix systems and SetFileAttributes on Windows, setting the permissions as passed in. The getter simply uses the existing status() function.
Prior to this change, status() would always return an unknown value for the permissions on a Windows file, making it impossible to test the new function on Windows. I have therefore added support for this as well. On Linux, prior to this change, the permissions included the file type, which should actually be accessed via a different member of the file_status class.
Note that on Windows, only the *_write permission bits have any affect - if any are set, the file is writable, and if not, the file is read-only. This is in common with what MSDN describes for their behaviour of std::filesystem::permissions(), and also what boost::filesystem does.
The motivation behind this change is so that we can easily test behaviour on read-only files in LLVM unit tests, but I am sure that others may find it useful in some situations.
Reviewers: zturner, amccarth, aaron.ballman
Differential Revision: https://reviews.llvm.org/D30736
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297945
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 16 Mar 2017 10:45:42 +0000 (10:45 +0000)]
[PM/Inliner] Fix a bug in r297374 where we would leave stale calls in
the work queue and crash when trying to visit them after deleting the
function containing those calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297940
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 16 Mar 2017 10:13:55 +0000 (10:13 +0000)]
[PM/Inliner] Add a test case that encapsulates the core issue addressed
in r297374.
I've extracted a small version of this from the C++ metaprogram Richard
came up with to exercise these kinds of issues and written comments to
describe both how to reproduce a fresh version of the test case and what
likely failure modes are.
The test case is still a bit brittle as it depends on the particular
inline cost modeling and SCC visitation order, but it definitely would
have caught the bug right away when developing things so it seems
a really valuable test case to have.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297935
91177308-0d34-0410-b5e6-
96231b3b80d8
Oren Ben Simhon [Thu, 16 Mar 2017 08:15:52 +0000 (08:15 +0000)]
Fixing typos.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297932
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Thu, 16 Mar 2017 07:17:12 +0000 (07:17 +0000)]
[SelectionDAG] Optimize VSELECT->SETCC of incompatible or illegal types.
Don't scalarize VSELECT->SETCC when operands/results needs to be widened,
or when the type of the SETCC operands are different from those of the VSELECT.
(VSELECT SETCC) and (VSELECT (AND/OR/XOR (SETCC,SETCC))) are handled.
The previous splitting of VSELECT->SETCC in DAGCombiner::visitVSELECT() is
no longer needed and has been removed.
Updated tests:
test/CodeGen/ARM/vuzp.ll
test/CodeGen/NVPTX/f16x2-instructions.ll
test/CodeGen/X86/2011-10-19-widen_vselect.ll
test/CodeGen/X86/2011-10-21-widen-cmp.ll
test/CodeGen/X86/psubus.ll
test/CodeGen/X86/vselect-pcmp.ll
Review: Eli Friedman, Simon Pilgrim
https://reviews.llvm.org/D29489
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297930
91177308-0d34-0410-b5e6-
96231b3b80d8
Tobias Grosser [Thu, 16 Mar 2017 03:59:23 +0000 (03:59 +0000)]
[ADCE] Remove redundent code [NFC]
Summary:
In commit r289548 ([ADCE] Add code to remove dead branches) a redundant loop
nest was accidentally introduced, which implements exactly the same
functionality as has already been available right after. This redundancy has
been found when inspecting the ADCE code in the context of our recent
discussions on post-dominator modeling. This redundant code was also eliminated
by r296535 (which sparked the discussion), but only as part of a larger semantic
change of the post-dominance modeling. As this redundency in [ADCE] is really
just an oversight completely independent of the post-dominance changes under
discussion, we remove this redundancy independently.
Reviewers: dberlin, david2050
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D31023
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297929
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Thu, 16 Mar 2017 03:54:38 +0000 (03:54 +0000)]
Fix pessimising moves.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297928
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Thu, 16 Mar 2017 03:42:00 +0000 (03:42 +0000)]
Support: Add a cache pruning policy parser.
The idea is that the policy string fully specifies the policy and is portable
between clients.
Differential Revision: https://reviews.llvm.org/D31020
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297927
91177308-0d34-0410-b5e6-
96231b3b80d8
Colin LeMahieu [Thu, 16 Mar 2017 01:52:10 +0000 (01:52 +0000)]
[Hexagon] Fixing test from 297920 to add Hexagon triple.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297926
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Thu, 16 Mar 2017 01:32:29 +0000 (01:32 +0000)]
CodeGen: BlockPlacement: Reduce TriangleChainCount to 2
This produces a 1% speedup on an important internal Google benchmark
(protocol buffers), with no other regressions in google or in the llvm
test-suite. Only 5 targets in the entire llvm test-suite are affected,
and on those 5 targets the size increase is 0.027%
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297925
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 16 Mar 2017 00:52:18 +0000 (00:52 +0000)]
Check that line table entries don't spill over between sections even if they're empty at the end of a section
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297922
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 16 Mar 2017 00:43:19 +0000 (00:43 +0000)]
Simplify/make more explicit (by making less explicit in some ways) some function calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297921
91177308-0d34-0410-b5e6-
96231b3b80d8
Colin LeMahieu [Thu, 16 Mar 2017 00:35:28 +0000 (00:35 +0000)]
[Hexagon] Updating inline saturate lanes for v62 version.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297920
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 15 Mar 2017 23:54:40 +0000 (23:54 +0000)]
[libFuzzer] add a dummy LLVMFuzzerMutate to afl/afl_driver.cpp (https://github.com/google/oss-fuzz/issues/460)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297919
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 15 Mar 2017 23:27:53 +0000 (23:27 +0000)]
[libFuzzer] call __sanitizer_print_memory_profile with two params
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297916
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 15 Mar 2017 23:27:43 +0000 (23:27 +0000)]
Remove redundant condition (PR32263). NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297915
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 15 Mar 2017 23:15:12 +0000 (23:15 +0000)]
AMDGPU: Allow sinking of addressing modes for atomic_inc/dec
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297913
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Wed, 15 Mar 2017 23:08:18 +0000 (23:08 +0000)]
Revert "[libFuzzer] Use ChooseUnitIdxToMutate to pick item for crossover."
Fails LLVMFuzzer.LLVMFuzzer.value-profile-strncmp.test.
This reverts commit r297891.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297912
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Wed, 15 Mar 2017 23:07:41 +0000 (23:07 +0000)]
Revert "Revert "[PGO] Minor cleanup for count instruction in SelectInstVisitor.""
Previously reverted wrong revision.
This reverts commit r297910.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297911
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Wed, 15 Mar 2017 23:06:22 +0000 (23:06 +0000)]
Revert "[PGO] Minor cleanup for count instruction in SelectInstVisitor."
Fails LLVMFuzzer.LLVMFuzzer.value-profile-strncmp.test
This reverts commit r297892.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297910
91177308-0d34-0410-b5e6-
96231b3b80d8
Rong Xu [Wed, 15 Mar 2017 23:00:19 +0000 (23:00 +0000)]
Fix build failure from r297897.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297909
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 15 Mar 2017 22:54:18 +0000 (22:54 +0000)]
Support: Simplify the CachePruning API. NFCI.
Change the function that implements the pruning into a free function that
takes the policy as a struct argument.
Differential Revision: https://reviews.llvm.org/D31009
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297907
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 15 Mar 2017 22:50:47 +0000 (22:50 +0000)]
Removed unnecessary semicolon. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297906
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 15 Mar 2017 22:40:26 +0000 (22:40 +0000)]
[StackColoring] Remove unused header file for post-order traversal. Update comment that indicated we were using it when we really use a depth-first search. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297904
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 15 Mar 2017 22:35:20 +0000 (22:35 +0000)]
CodeGenPrepare: Sink addressing modes for atomics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297903
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 15 Mar 2017 22:32:59 +0000 (22:32 +0000)]
Try to fix build break due to template argument deduction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297902
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 15 Mar 2017 22:19:30 +0000 (22:19 +0000)]
[llvm-pdbdump] Add support for diffing the String Table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297901
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 15 Mar 2017 22:18:53 +0000 (22:18 +0000)]
[pdb] Write the module info and symbol record streams.
Previously we did not have support for writing detailed
module information for each module, as well as the symbol
records. This patch adds support for this, and in doing
so enables the ability to construct minimal PDBs from
just a few lines of YAML. A test is added to illustrate
this functionality.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297900
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 15 Mar 2017 21:50:46 +0000 (21:50 +0000)]
Fix up grammar in a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297898
91177308-0d34-0410-b5e6-
96231b3b80d8
Rong Xu [Wed, 15 Mar 2017 21:47:27 +0000 (21:47 +0000)]
[PGO] Value profile for size of memory intrinsic calls
This patch adds the value profile support to profile the size parameter of
memory intrinsic calls: memcpy, memcmp, and memmov.
Differential Revision: http://reviews.llvm.org/D28965
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297897
91177308-0d34-0410-b5e6-
96231b3b80d8
Zvi Rackover [Wed, 15 Mar 2017 21:13:45 +0000 (21:13 +0000)]
Second attempt for fix Hexagon buildbot by moving test to under X86/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297893
91177308-0d34-0410-b5e6-
96231b3b80d8
Rong Xu [Wed, 15 Mar 2017 21:05:24 +0000 (21:05 +0000)]
[PGO] Minor cleanup for count instruction in SelectInstVisitor.
Summary:
NSIs can be double-counted by different operations in
SelectInstVisitor. Sink the the update to VM_counting mode only.
Also reset the value for each counting operation.
Reviewers: davidxl
Reviewed By: davidxl
Subscribers: xur, llvm-commits
Differential Revision: https://reviews.llvm.org/D30999
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297892
91177308-0d34-0410-b5e6-
96231b3b80d8
Vitaly Buka [Wed, 15 Mar 2017 20:59:27 +0000 (20:59 +0000)]
[libFuzzer] Use ChooseUnitIdxToMutate to pick item for crossover.
Differential Revision: https://reviews.llvm.org/D30683
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297891
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 15 Mar 2017 20:51:44 +0000 (20:51 +0000)]
Add GDB pretty-printer for llvm::Twine type
Patch by Simon Marchi!
Differential Revision: https://reviews.llvm.org/D30994
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297889
91177308-0d34-0410-b5e6-
96231b3b80d8
Zvi Rackover [Wed, 15 Mar 2017 20:29:58 +0000 (20:29 +0000)]
Limit test's triple in attempt to fix broken buildbot
Regression test for a target-independent bug keeps failing in the
Hexagon backend due to what appears an unrelated issue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297888
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian McCarthy [Wed, 15 Mar 2017 20:29:06 +0000 (20:29 +0000)]
NFC: Corrects comments that were supposed to go in with earlier commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297887
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 15 Mar 2017 20:25:05 +0000 (20:25 +0000)]
[EarlyCSE] reduce indent; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297886
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Wed, 15 Mar 2017 20:18:38 +0000 (20:18 +0000)]
[tablegen][globalisel] Trivial changes to reduce size of following patch. NFC.
Summary:
* Move namespace {
* Trivial: Typo
* RuleMatcher: Separate class and definition
* Trivial: const findNodeEquiv
Reviewers: t.p.northover, qcolombet, aditya_nandakumar, ab, rovka
Reviewed By: rovka
Subscribers: dberris, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D30531
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297884
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian McCarthy [Wed, 15 Mar 2017 20:17:58 +0000 (20:17 +0000)]
Introduce NativeEnumModules and NativeCompilandSymbol
Together, these allow lldb-pdbdump to list all the modules from a PDB using a
native reader (rather than DIA).
Note that I'll probably be specializing NativeRawSymbol in a subsequent patch.
Differential Revision: https://reviews.llvm.org/D30956
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297883
91177308-0d34-0410-b5e6-
96231b3b80d8
Zvi Rackover [Wed, 15 Mar 2017 19:48:36 +0000 (19:48 +0000)]
[DAGCombine] Bail out if can't create a vector with at least two elements
Summary:
Fixes pr32278
Reviewers: igorb, craig.topper, RKSimon, spatel, hfinkel
Reviewed By: RKSimon
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D30978
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297878
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Wed, 15 Mar 2017 19:36:02 +0000 (19:36 +0000)]
[WebAssembly] Update format of 'names' section.
This change updates to the format of the 'names' sectionin the
generated wasm binary to match the latest changesto the design
and 'wabt'.
Differential Revision: https://reviews.llvm.org/D30950
Patch by Sam Clegg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297877
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 15 Mar 2017 19:34:55 +0000 (19:34 +0000)]
[X86] Add missing BITREVERSE costs for SSE2 vectors and i8/i16/i32/i64 scalars
Prep work for PR31810
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297876
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Wed, 15 Mar 2017 19:21:11 +0000 (19:21 +0000)]
[GlobalISel] Avoid translating synthetic constants to new G_CONSTANTS.
Currently, we create a G_CONSTANT for every "synthetic" integer
constant operand (for instance, for the G_GEP offset).
Instead, share the G_CONSTANTs we might have created by going through
the ValueToVReg machinery.
When we're emitting synthetic constants, we do need to get Constants from
the context. One could argue that we shouldn't modify the context at
all (for instance, this means that we're going to use a tad more memory
if the constant wasn't used elsewhere), but constants are mostly
harmless. We currently do this for extractvalue and all.
For constant fcmp, this does mean we'll emit an extra COPY, which is not
necessarily more optimal than an extra materialized constant.
But that preserves the current intended design of uniqued G_CONSTANTs,
and the rematerialization problem exists elsewhere and should be
resolved with a single coherent solution.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297875
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Wed, 15 Mar 2017 19:20:59 +0000 (19:20 +0000)]
[GlobalISel][AArch64] Select ADDXri.
We're now able to select ADDWri thanks to the new complex pattern
support. Extend that to ADDXri.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297874
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 15 Mar 2017 19:04:26 +0000 (19:04 +0000)]
AMDGPU: Fix unnecessary ands when packing f16 vectors
computeKnownBits didn't handle fp_to_fp16 to report
the high bits as 0. ARM maps the generic node to an instruction
that does not modify the high bits of the register, so introduce
a target node where the high bits are known 0.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297873
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Wed, 15 Mar 2017 18:38:13 +0000 (18:38 +0000)]
ARM: avoid clobbering register in v6 jump-table expansion.
If we got unlucky with register allocation and actual constpool placement, we
could end up producing a tTBB_JT with an index that's already been clobbered.
Technically, we might be able to fix this situation up with a MOV, but I think
the constant islands pass is complex enough without having to deal with more
weird edge-cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297871
91177308-0d34-0410-b5e6-
96231b3b80d8
Rong Xu [Wed, 15 Mar 2017 18:23:39 +0000 (18:23 +0000)]
[PGO] Refactor the code for value profile annotation
This patch refactors the code for value profile annotation to facilitate
of adding other kind of value profiles.
Differential Revision: http://reviews.llvm.org/D30989
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297870
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Wed, 15 Mar 2017 18:22:37 +0000 (18:22 +0000)]
[GlobalISel] Insert translated switch icmp blocks after switch parent.
Now that we preserve the IR layout, we would end up with all the newly
synthesized switch comparison blocks at the end of the function.
Instead, use a hopefully more reasonable layout, with the comparison
blocks immediately following the switch comparison blocks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297869
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Wed, 15 Mar 2017 18:22:33 +0000 (18:22 +0000)]
[GlobalISel] Preserve IR block layout.
It makes the output function layout more predictable; the layout has
an effect on performance, we don't want it to be at the mercy of the
translator's visitation order and such.
The predictable output is also easier to digest.
getOrCreateBB isn't appropriately named anymore, as it never needs to
create anything. Rename it and extract the MBB creation logic out of it.
A couple tests were sensitive to the order. Update them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297868
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Wed, 15 Mar 2017 18:22:24 +0000 (18:22 +0000)]
[GlobalISel] Use ASCII quote/apostrophe in comment. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297867
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Wed, 15 Mar 2017 18:00:12 +0000 (18:00 +0000)]
AMDGPU: Minor SIAnnotateControlFlow cleanups
Newline fixes, early return, range loops.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297865
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 15 Mar 2017 17:47:39 +0000 (17:47 +0000)]
[YAML] When outputting, provide the ability to write default values.
Previously, if you attempted to write a key/value pair and the
value was equal to the key's default value, we would not output
the value. Sometimes it is useful to be able to see this value
in the output anyway.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297864
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 15 Mar 2017 17:43:40 +0000 (17:43 +0000)]
Move some LAST_* enum sentinels out of their enums
These are not valid values of the enum, so this will improve clang
-Wcovered-switch-default diagnostics. It also fixes some
-Wbitfield-enum-conversion warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297863
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 15 Mar 2017 16:53:53 +0000 (16:53 +0000)]
[CodeGen] Use APInt::setLowBits/setHighBits/setBitsFrom in more places
This patch replaces ORs with getHighBits/getLowBits etc. with setLowBits/setHighBits/setBitsFrom.
In a few of the places we weren't ORing, but the KnownZero/KnownOne vectors were already initialized to zero. We exploit this in most places already there were just some that were inconsistent.
Differential Revision: https://reviews.llvm.org/D30965
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297860
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Wed, 15 Mar 2017 16:51:41 +0000 (16:51 +0000)]
[GlobalISel][AArch64] Add back constant select tests. NFC.
More of r297856.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297859
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Wed, 15 Mar 2017 16:29:40 +0000 (16:29 +0000)]
[GlobalISel][AArch64] Use appropriate test function names. NFC.
These FP tests are on FPR, not GPR. Don't lie in the name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297857
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Wed, 15 Mar 2017 16:29:37 +0000 (16:29 +0000)]
[GlobalISel][AArch64] Split out select tests. NFC.
The test has grown enough to be annoying to navigate.
While there, Remove unnecessary RUNs, and cleanup a couple comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297856
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Wed, 15 Mar 2017 16:29:32 +0000 (16:29 +0000)]
[GlobalISel] Remove dead member. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297855
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 15 Mar 2017 16:28:43 +0000 (16:28 +0000)]
Re-apply r296730, "cmake: Configure the ThinLTO cache directory when using ELF lld or gold."
All known cache-related bugs observed when self hosting have been fixed (r296907
and r297853).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297854
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 15 Mar 2017 16:24:52 +0000 (16:24 +0000)]
CodeGen: Use the source filename as the argument to .file, rather than the module ID.
Using the module ID here is wrong for a couple of reasons:
1) The module ID is not persisted, so we can end up with different
object file contents given the same input file (for example if the same
file is accessed via different paths).
2) With ThinLTO the module ID field may contain the path to a bitcode file,
which is incorrect, as the .file argument is supposed to contain the path to
a source file.
Differential Revision: https://reviews.llvm.org/D30584
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297853
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 15 Mar 2017 16:22:24 +0000 (16:22 +0000)]
[SelectionDAG] Support BUILD_VECTOR implicit truncation in SelectionDAG::ComputeNumSignBits (PR32273)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297852
91177308-0d34-0410-b5e6-
96231b3b80d8
Nemanja Ivanovic [Wed, 15 Mar 2017 16:04:53 +0000 (16:04 +0000)]
[PowerPC][Altivec] Add mfvrd and mffprd extended mnemonic
mfvrd and mffprd are both alias to mfvrsd.
This patch enables correct parsing of the aliases, but we still emit a mfvrsd.
Committing on behalf of brunoalr (Bruno Rosa).
Differential Revision: https://reviews.llvm.org/D29177
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297849
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 15 Mar 2017 15:40:34 +0000 (15:40 +0000)]
[SelectionDAG][AArch64] Add test case showing incorrect SelectionDAG::ComputeNumSignBits BUILD_VECTOR handling
Reduced from a mixture of PR32273 and David Green's test cases showing SelectionDAG::ComputeNumSignBits not correctly handling BUILD_VECTOR implicit truncation of inputs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297847
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 15 Mar 2017 15:37:42 +0000 (15:37 +0000)]
Cyle -> Cycle; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297846
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Liu [Wed, 15 Mar 2017 15:29:42 +0000 (15:29 +0000)]
Revert "Refactor SimplifyCFG:canSinkInstructions [NFC]"
This reverts commit r297839, which breaks Transforms/SimplifyCFG/sink-common-code.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297845
91177308-0d34-0410-b5e6-
96231b3b80d8
Artyom Skrobov [Wed, 15 Mar 2017 14:50:43 +0000 (14:50 +0000)]
Revert "[Thumb1] Fix the bug when adding/subtracting -
2147483648"
This reverts r297820 which apparently fails on A15 hosts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297842
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 15 Mar 2017 14:47:30 +0000 (14:47 +0000)]
Reverted unintended commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297841
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 15 Mar 2017 14:38:19 +0000 (14:38 +0000)]
Fix Wint-in-bool-context warning (PR32248)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297840
91177308-0d34-0410-b5e6-
96231b3b80d8
Aditya Kumar [Wed, 15 Mar 2017 14:26:45 +0000 (14:26 +0000)]
Refactor SimplifyCFG:canSinkInstructions [NFC]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297839
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Wed, 15 Mar 2017 14:06:42 +0000 (14:06 +0000)]
Reverting r297821 due to breaking lld test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297838
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 15 Mar 2017 14:01:28 +0000 (14:01 +0000)]
[Target] fix typo; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297836
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Liu [Wed, 15 Mar 2017 13:37:20 +0000 (13:37 +0000)]
Add 'REQUIRES: asserts' to pr32278.ll introduced in r297822
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297835
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 15 Mar 2017 13:16:46 +0000 (13:16 +0000)]
[X86][SSE] Fixed shuffle MOVSS/MOVSD combining of all zeroable inputs
Turns out it can happen, so the assertion was too harsh
Found during fuzz testing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297833
91177308-0d34-0410-b5e6-
96231b3b80d8
Petar Jovanovic [Wed, 15 Mar 2017 13:10:08 +0000 (13:10 +0000)]
[Mips] Add support to match more patterns for DEXT and CINS
This patch adds support for recognizing more patterns to match to DEXT and
CINS instructions.
It finds cases where multiple instructions could be replaced with a single
DEXT or CINS instruction.
For example, for the following:
define i64 @dext_and32(i64 zeroext %a) {
entry:
%and = and i64 %a,
4294967295
ret i64 %and
}
instead of generating:
0000000000000088 <dext_and32>:
88:
64010001 daddiu at,zero,1
8c:
0001083c dsll32 at,at,0x0
90:
6421ffff daddiu at,at,-1
94:
03e00008 jr ra
98:
00811024 and v0,a0,at
9c:
00000000 nop
the following gets generated:
0000000000000068 <dext_and32>:
68:
03e00008 jr ra
6c:
7c82f803 dext v0,a0,0x0,0x20
Cases that are covered:
DEXT:
1. and $src, mask where mask > 0xffff
2. zext $src zero extend from i32 to i64
CINS:
1. and (shl $src, pos), mask
2. shl (and $src, mask), pos
3. zext (shl $src, pos) zero extend from i32 to i64
Patch by Violeta Vukobrat.
Differential Revision: https://reviews.llvm.org/D30464
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297832
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Wed, 15 Mar 2017 11:57:42 +0000 (11:57 +0000)]
Align cost model columns. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297824
91177308-0d34-0410-b5e6-
96231b3b80d8
Zvi Rackover [Wed, 15 Mar 2017 11:44:14 +0000 (11:44 +0000)]
Fix malformed XFAIL in previous commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297823
91177308-0d34-0410-b5e6-
96231b3b80d8
Zvi Rackover [Wed, 15 Mar 2017 11:34:51 +0000 (11:34 +0000)]
[DAGCombine] Add reproducer for pr32278
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297822
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Wed, 15 Mar 2017 10:21:23 +0000 (10:21 +0000)]
[ARM] Fix for branch label disassembly for Thumb
Different MCInstrAnalysis classes for arm and thumb mode, each with
their own evaluateBranch implementation. I added a test case and
fixed the coff-relocations test to use '<label>:' rather than
'<label>' in the CHECK-LABEL entries, since the ones without the
colon would match branch targets. Might be worth noticing that
llvm-objdump does not lookup the relocation and thus assigns it a
target depending on the encoded immediate which #0, so it thinks it
branches to the next instruction.
Committed on behalf of Andre Vieira (avieira).
Differential Revision: https://reviews.llvm.org/D30943
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297821
91177308-0d34-0410-b5e6-
96231b3b80d8
Artyom Skrobov [Wed, 15 Mar 2017 10:19:16 +0000 (10:19 +0000)]
[Thumb1] Fix the bug when adding/subtracting -
2147483648
Differential Revision: https://reviews.llvm.org/D30829
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297820
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Wed, 15 Mar 2017 09:33:33 +0000 (09:33 +0000)]
fix gcc -Wmisleading-indentation [NFC]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297816
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Liu [Wed, 15 Mar 2017 08:41:00 +0000 (08:41 +0000)]
[Support][CommandLine] Make it possible to get error messages from ParseCommandLineOptions when ignoring errors.
Summary:
Previously, ParseCommandLineOptions returns false and ignores error messages
when IgnoreErrors. It would be useful to also return error messages if users
decide to check parsing result instead of having the program exit on error.
Reviewers: chandlerc, mehdi_amini, rnk
Reviewed By: rnk
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D30893
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297810
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Wed, 15 Mar 2017 08:27:11 +0000 (08:27 +0000)]
[ARM] Enable SMLAL[B|T] isel
Enable the selection of the 64-bit signed multiply accumulate
instructions which operate on 16-bit operands. These are enabled for
ARMv5TE onwards for ARM and for V6T2 and other DSP enabled Thumb
architectures.
Differential Revision: https://reviews.llvm.org/D30044
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297809
91177308-0d34-0410-b5e6-
96231b3b80d8
Taewook Oh [Wed, 15 Mar 2017 06:29:23 +0000 (06:29 +0000)]
NFC: Reformats comments according to the coding guildelines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297808
91177308-0d34-0410-b5e6-
96231b3b80d8
Michal Gorny [Wed, 15 Mar 2017 05:57:29 +0000 (05:57 +0000)]
[llvm-config] Add minimal sanity tests for path options
Add minimal tests that check whether path options do not fail and output
directories looking like expected. Requested in
https://reviews.llvm.org/rL291218.
Differential Revision: https://reviews.llvm.org/D28533
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297807
91177308-0d34-0410-b5e6-
96231b3b80d8
Taewook Oh [Wed, 15 Mar 2017 05:44:59 +0000 (05:44 +0000)]
[BranchFolding] Merge debug locations from common tail instead of removing
Summary: D25742 improved the precision of debug locations for PGO by removing debug locations from common tail when tail-merging. However, if identical insturctions that are merged into a common tail have the same debug locations, there's no need to remove them. This patch creates a merged debug location of identical instructions across SameTails and assign it to the instruction in the common tail, so that the debug locations are maintained if they are same across identical instructions.
Reviewers: aprantl, probinson, MatzeB, rob.lougher
Reviewed By: aprantl
Subscribers: andreadb, llvm-commits
Differential Revision: https://reviews.llvm.org/D30226
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297805
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Wed, 15 Mar 2017 04:18:16 +0000 (04:18 +0000)]
Ensure that prefix data is preserved with subsections-via-symbols
On MachO platforms that use subsections-via-symbols dead code stripping will
drop prefix data. Unfortunately there is no great way to convey the relationship
between a function and its prefix data to the linker. We are forced to use a bit
of a hack: we give the prefix data it’s own symbol, and mark the actual function
entry an .alt_entry.
Patch by Moritz Angermann!
Differential Revision: https://reviews.llvm.org/D30770
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297804
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 15 Mar 2017 00:39:06 +0000 (00:39 +0000)]
[libFuzzer] remove even more stale code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297797
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 15 Mar 2017 00:34:25 +0000 (00:34 +0000)]
[libFuzzer] simplify code a bit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297796
91177308-0d34-0410-b5e6-
96231b3b80d8
Francis Visoiu Mistrih [Tue, 14 Mar 2017 23:58:57 +0000 (23:58 +0000)]
[MachineFunction] Fix documentation. NFC
MachineFunction::getBlockNumber -> MachineFunction::getNumber.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297795
91177308-0d34-0410-b5e6-
96231b3b80d8
Volkan Keles [Tue, 14 Mar 2017 23:45:06 +0000 (23:45 +0000)]
[GlobalISel] IRTranslator: Return the scalar for <1 x Ty> constant vectors
Summary:
<1 x Ty> is not a legal vector type in LLT, we shouldn’t build G_MERGE_VALUES
instruction for them.
Reviewers: qcolombet, aditya_nandakumar, dsanders, t.p.northover, ab, javed.absar
Reviewed By: qcolombet
Subscribers: dberris, rovka, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D30948
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297792
91177308-0d34-0410-b5e6-
96231b3b80d8
Fiona Glaser [Tue, 14 Mar 2017 22:37:38 +0000 (22:37 +0000)]
MemCpyOptimizer: don't create new addrspace casts
This isn't safe on all targets, and since we don't have a way
to know it's safe, avoid doing it for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297788
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Tue, 14 Mar 2017 22:09:29 +0000 (22:09 +0000)]
[globalisel] LLVM_BUILD_GLOBAL_ISEL=OFF should prevent GlobalISel instruction selector from being declared.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297786
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Tue, 14 Mar 2017 21:47:52 +0000 (21:47 +0000)]
[libFuzzer] remove more stale code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297785
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Tue, 14 Mar 2017 21:40:53 +0000 (21:40 +0000)]
[libFuzzer] don't clear Counters in TracePC::CollectFeatures since they will be cleared anyway in ResetMaps
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297783
91177308-0d34-0410-b5e6-
96231b3b80d8