Hans Wennborg [Wed, 20 Jan 2016 21:30:57 +0000 (21:30 +0000)]
Merging r257940:
------------------------------------------------------------------------
r257940 | djg | 2016-01-15 13:56:40 -0800 (Fri, 15 Jan 2016) | 10 lines
[SelectionDAG] CSE nodes with differing SDNodeFlags
In the optimizer (GVN etc.) when eliminating redundant nodes with different
flags, the flags are ignored for the purposes of testing for congruence, and
then intersected for the purposes of producing a result that supports the union
of all the uses. This commit makes SelectionDAG's CSE do the same thing,
allowing it to CSE nodes in more cases. This fixes PR26063.
Differential Revision: http://reviews.llvm.org/D15957
------------------------------------------------------------------------
Merging r257942:
------------------------------------------------------------------------
r257942 | djg | 2016-01-15 14:07:35 -0800 (Fri, 15 Jan 2016) | 2 lines
Remove a now-empty file left behind by r257940.
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@258351
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Wed, 20 Jan 2016 21:14:05 +0000 (21:14 +0000)]
Merging r258273:
------------------------------------------------------------------------
r258273 | josepht | 2016-01-19 18:15:15 -0800 (Tue, 19 Jan 2016) | 37 lines
[Inliner/WinEH] Honor implicit nounwinds
Summary:
Funclet EH tables require that a given funclet have only one unwind
destination for exceptional exits. The verifier will therefore reject
e.g. two cleanuprets with different unwind dests for the same cleanup, or
two invokes exiting the same funclet but to different unwind dests.
Because catchswitch has no 'nounwind' variant, and because IR producers
are not *required* to annotate calls which will not unwind as 'nounwind',
it is legal to nest a call or an "unwind to caller" catchswitch within a
funclet pad that has an unwind destination other than caller; it is
undefined behavior for such a call or catchswitch to unwind.
Normally when inlining an invoke, calls in the inlined sequence are
rewritten to invokes that unwind to the callsite invoke's unwind
destination, and "unwind to caller" catchswitches in the inlined sequence
are rewritten to unwind to the callsite invoke's unwind destination.
However, if such a call or "unwind to caller" catchswitch is located in a
callee funclet that has another exceptional exit with an unwind
destination within the callee, applying the normal transformation would
give that callee funclet multiple unwind destinations for its exceptional
exits. There would be no way for EH table generation to determine which
is the "true" exit, and the verifier would reject the function
accordingly.
Add logic to the inliner to detect these cases and leave such calls and
"unwind to caller" catchswitches as calls and "unwind to caller"
catchswitches in the inlined sequence.
This fixes PR26147.
Reviewers: rnk, andrew.w.kaylor, majnemer
Subscribers: alexcrichton, llvm-commits
Differential Revision: http://reviews.llvm.org/D16319
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@258349
91177308-0d34-0410-b5e6-
96231b3b80d8
Renato Golin [Wed, 20 Jan 2016 18:01:05 +0000 (18:01 +0000)]
Merging r258308: [AArch64] Fix two bugs in the .inst directive
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@258326
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Wed, 20 Jan 2016 01:14:03 +0000 (01:14 +0000)]
Merging r258221:
------------------------------------------------------------------------
r258221 | qcolombet | 2016-01-19 15:29:03 -0800 (Tue, 19 Jan 2016) | 8 lines
[X86] Do not run shrink-wrapping on function with split-stack attribute or HiPE
calling convention.
The implementation of the related callbacks in the x86 backend for such
functions are not ready to deal with a prologue block that is not the entry
block of the function.
This fixes PR26107, but the longer term solution would be to fix those callbacks.
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@258269
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Wed, 20 Jan 2016 01:09:12 +0000 (01:09 +0000)]
Merging r258207:
------------------------------------------------------------------------
r258207 | qcolombet | 2016-01-19 14:31:12 -0800 (Tue, 19 Jan 2016) | 1 line
[MachineFunction] Constify getter. NFC.
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@258268
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Wed, 20 Jan 2016 00:48:30 +0000 (00:48 +0000)]
Merging r257977:
------------------------------------------------------------------------
r257977 | kfischer | 2016-01-15 17:11:33 -0800 (Fri, 15 Jan 2016) | 1 line
[DwarfDebug] Move MergeValues to .cpp, NFC
------------------------------------------------------------------------
Merging r257979:
------------------------------------------------------------------------
r257979 | kfischer | 2016-01-15 17:15:32 -0800 (Fri, 15 Jan 2016) | 11 lines
[DwarfDebug] Don't merge DebugLocEntries if their pieces overlap
Summary:
Later in DWARF emission we check that DebugLocEntries have
non-overlapping pieces, so we should create any such entries
by merging here.
Fixes PR26163.
Reviewers: aprantl
Differential Revision: http://reviews.llvm.org/D16249
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@258267
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 20 Jan 2016 00:32:09 +0000 (00:32 +0000)]
[r257857] lli: use llvm::utostr() instead of std::to_string().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@258266
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 20 Jan 2016 00:28:22 +0000 (00:28 +0000)]
[r257732] Mark remote-JIT tests as XFAIL, as well as win32, for targeting mingw32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@258265
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 19 Jan 2016 20:49:25 +0000 (20:49 +0000)]
Merging r257875:
------------------------------------------------------------------------
r257875 | jamesm | 2016-01-15 01:20:19 -0800 (Fri, 15 Jan 2016) | 11 lines
[InstCombine] Rewrite bswap/bitreverse handling completely.
There are several requirements that ended up with this design;
1. Matching bitreversals is too heavyweight for InstCombine and doesn't really need to be done so early.
2. Bitreversals and byteswaps are very related in their matching logic.
3. We want to implement support for matching more advanced bswap/bitreverse patterns like partial bswaps/bitreverses.
4. Bswaps are best matched early in InstCombine.
The result of these is that a new utility function is created in Transforms/Utils/Local.h that can be configured to search for bswaps, bitreverses or both. InstCombine uses it to find only bswaps, CGP uses it to find only bitreversals.
We can then extend the matching logic in one place only.
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@258180
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 19 Jan 2016 19:28:41 +0000 (19:28 +0000)]
Merging r258168:
------------------------------------------------------------------------
r258168 | hans | 2016-01-19 11:21:58 -0800 (Tue, 19 Jan 2016) | 3 lines
test-release.sh: Use CMake also for Darwin
This didn't work for 3.7, but hopefully it should work now.
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@258170
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 19 Jan 2016 18:53:02 +0000 (18:53 +0000)]
Merging r257925, r257929, r257930, and r257997:
------------------------------------------------------------------------
r257925 | mren | 2016-01-15 11:35:42 -0800 (Fri, 15 Jan 2016) | 10 lines
CXX_FAST_TLS calling convention: fix issue on X86-64.
When we have a single basic block, the explicit copy-back instructions should
be inserted right before the terminator. Before this fix, they were wrongly
placed at the beginning of the basic block.
I will commit fixes to other platforms as well.
PR26136
------------------------------------------------------------------------
------------------------------------------------------------------------
r257929 | mren | 2016-01-15 12:13:28 -0800 (Fri, 15 Jan 2016) | 10 lines
CXX_FAST_TLS calling convention: fix issue on AArch64.
When we have a single basic block, the explicit copy-back instructions should
be inserted right before the terminator. Before this fix, they were wrongly
placed at the beginning of the basic block.
I will commit fixes to other platforms as well.
PR26136
------------------------------------------------------------------------
------------------------------------------------------------------------
r257930 | mren | 2016-01-15 12:24:11 -0800 (Fri, 15 Jan 2016) | 8 lines
CXX_FAST_TLS calling convention: fix issue on ARM.
When we have a single basic block, the explicit copy-back instructions should
be inserted right before the terminator. Before this fix, they were wrongly
placed at the beginning of the basic block.
PR26136
------------------------------------------------------------------------
------------------------------------------------------------------------
r257997 | mren | 2016-01-16 08:39:46 -0800 (Sat, 16 Jan 2016) | 12 lines
CXX_FAST_TLS calling convention: fix issue on x86-64.
%RBP can't be handled explicitly. We generate the following code:
pushq %rbp
movq %rsp, %rbp
...
movq %rbx, (%rbp) ## 8-byte Spill
where %rbp will be overwritten by the spilled value.
The fix is to let PEI handle %RBP.
PR26136
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@258162
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 19 Jan 2016 18:26:37 +0000 (18:26 +0000)]
Merging r257902 (and r257775)
------------------------------------------------------------------------
r257775 | jyknight | 2016-01-14 08:33:21 -0800 (Thu, 14 Jan 2016) | 3 lines
Revert "Stop increasing alignment of externally-visible globals on ELF platforms."
This reverts commit r257719, due to PR26144.
------------------------------------------------------------------------
------------------------------------------------------------------------
r257902 | jyknight | 2016-01-15 08:33:06 -0800 (Fri, 15 Jan 2016) | 17 lines
Stop increasing alignment of externally-visible globals on ELF
platforms.
With ELF, the alignment of a global variable in a shared library will
get copied into an executables linked against it, if the executable even
accesss the variable. So, it's not possible to implicitly increase
alignment based on access patterns, or you'll break existing binaries.
This happened to affect libc++'s std::cout symbol, for example. See
thread: http://thread.gmane.org/gmane.comp.compilers.clang.devel/45311
(This is a re-commit of r257719, without the bug reported in
PR26144. I've tweaked the code to not assert-fail in
enforceKnownAlignment when computeKnownBits doesn't recurse far enough
to find the underlying Alloca/GlobalObject value.)
Differential Revision: http://reviews.llvm.org/D16145
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@258155
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 19 Jan 2016 17:28:24 +0000 (17:28 +0000)]
Merging r257905:
------------------------------------------------------------------------
r257905 | hans | 2016-01-15 09:04:45 -0800 (Fri, 15 Jan 2016) | 3 lines
test-release.sh: Fix clang-tools-extra symlink for CMake build
The CMake and Autoconf builds want the symlink set up differently.
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@258146
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Thu, 14 Jan 2016 23:24:17 +0000 (23:24 +0000)]
Merging r257791:
------------------------------------------------------------------------
r257791 | hans | 2016-01-14 11:21:14 -0800 (Thu, 14 Jan 2016) | 4 lines
Exclude test-suite from CMake builds in test-release.sh
It's broken. In 3.7 there wasn't a CMake build for test-suite at all,
so we're not losing something we had before.
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@257836
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Thu, 14 Jan 2016 17:52:28 +0000 (17:52 +0000)]
Merging r257730:
------------------------------------------------------------------------
r257730 | majnemer | 2016-01-13 17:20:03 -0800 (Wed, 13 Jan 2016) | 11 lines
[X86] Don't alter HasOpaqueSPAdjustment after we've relied on it
We rely on HasOpaqueSPAdjustment not changing after we've calculated
things based on it. Things like whether or not we can use 'rep;movs' to
copy bytes around, that sort of thing. If it changes, invariants in the
backend will quietly break. This situation arose when we had a call to
memcpy *and* a COPY of the FLAGS register where we would attempt to
reference local variables using %esi, a register that was clobbered by
the 'rep;movs'.
This fixes PR26124.
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@257779
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Thu, 14 Jan 2016 00:23:32 +0000 (00:23 +0000)]
ReleaseNotes.rst: a few entries from Rafael
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@257725
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Wed, 13 Jan 2016 21:18:59 +0000 (21:18 +0000)]
Merging r257648:
------------------------------------------------------------------------
r257648 | hans | 2016-01-13 10:59:45 -0800 (Wed, 13 Jan 2016) | 1 line
Fix struct/class mismatch for MachineSchedContext
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@257668
91177308-0d34-0410-b5e6-
96231b3b80d8
Dimitry Andric [Wed, 13 Jan 2016 19:37:51 +0000 (19:37 +0000)]
Merging r257645:
------------------------------------------------------------------------
r257645 | dim | 2016-01-13 19:29:46 +0100 (Wed, 13 Jan 2016) | 22 lines
Avoid undefined behavior in LinkAllPasses.h
The LinkAllPasses.h file is included in several main programs, to force
a large number of passes to be linked in. However, the ForcePassLinking
constructor uses undefined behavior, since it calls member functions on
`nullptr`, e.g.:
((llvm::Function*)nullptr)->viewCFGOnly();
llvm::RGPassManager RGM;
((llvm::RegionPass*)nullptr)->runOnRegion((llvm::Region*)nullptr, RGM);
When the optimization level is -O2 or higher, the code below the first
nullptr dereference is optimized away, and replaced by `ud2` (on x86).
Therefore, the calls after that first dereference are never emitted. In
my case, I noticed there was no call to `llvm::sys::RunningOnValgrind()`!
Replace instances of dereferencing `nullptr` with either objects on the
stack, or regular function calls.
Differential Revision: http://reviews.llvm.org/D15996
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@257660
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Wed, 13 Jan 2016 19:03:44 +0000 (19:03 +0000)]
Drop 'svn' suffix from version.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@257651
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Wed, 13 Jan 2016 17:34:56 +0000 (17:34 +0000)]
Creating release_38 branch off revision 257626
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@257630
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 13 Jan 2016 17:23:52 +0000 (17:23 +0000)]
fix typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257626
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Wed, 13 Jan 2016 17:23:20 +0000 (17:23 +0000)]
AMDGPU/SI: Fix a GPU hang with POS_W_FLOAT enabled
Reviewers: tstellarAMD, arsenm
Subscribers: arsenm
Differential Revision: http://reviews.llvm.org/D16037
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257625
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Wed, 13 Jan 2016 17:23:15 +0000 (17:23 +0000)]
AMDGPU/SI: Add tests for non-void functions and InitialPSInputAddr
Reviewers: tstellarAMD, arsenm
Differential Revision: http://reviews.llvm.org/D16036
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257624
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Wed, 13 Jan 2016 17:23:12 +0000 (17:23 +0000)]
AMDGPU/SI: Remove ending s_endpgm from non-void functions
Reviewers: tstellarAMD, arsenm
Subscribers: arsenm
Differential Revision: http://reviews.llvm.org/D16035
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257623
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Wed, 13 Jan 2016 17:23:09 +0000 (17:23 +0000)]
AMDGPU/SI: Add s_waitcnt at the end of non-void functions
Summary:
v2: Make ReturnsVoid private, so that I can another 8 lines of code and
look more productive.
Reviewers: tstellarAMD, arsenm
Subscribers: arsenm
Differential Revision: http://reviews.llvm.org/D16034
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257622
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Wed, 13 Jan 2016 17:23:04 +0000 (17:23 +0000)]
AMDGPU/SI: Add support for non-void functions
Summary:
Return values can be stored in SGPRs (i32) and VGPRs (f32).
This will be used by functions which expect some bytecode or other binary to
be appended at the end. It allows defining in which registers the return
values will be stored.
v2: don't do this for compute shaders
Reviewers: tstellarAMD, arsenm
Subscribers: arsenm
Differential Revision: http://reviews.llvm.org/D16033
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257621
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Wed, 13 Jan 2016 17:10:28 +0000 (17:10 +0000)]
[WebAssemly] Invalidate liveness in CFG stackifier
WebAssemblyCFGStackify does not track liveness for EXPR_STACK, causing
verifier failure if liveness has not already been invalidated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257620
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 13 Jan 2016 16:46:41 +0000 (16:46 +0000)]
fix typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257617
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Liew [Wed, 13 Jan 2016 16:43:49 +0000 (16:43 +0000)]
[lit] Fix handling of per test timeout when the installed psutil version
is < ``2.0``.
Older versions of psutil (e.g. ``1.2.1`` which is the version shipped with
Ubuntu 14.04) use a different API for retrieving the child processes.
To handle this try the new API first and if that fails try the old API.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257616
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 13 Jan 2016 16:34:10 +0000 (16:34 +0000)]
fix typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257613
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 13 Jan 2016 16:30:44 +0000 (16:30 +0000)]
fix typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257611
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolai Haehnle [Wed, 13 Jan 2016 16:10:10 +0000 (16:10 +0000)]
AMDGPU/SI: Add SI Machine Scheduler
Summary:
It is off by default, but can be used
with --misched=si
Patch by: Axel Davy
Reviewers: arsenm, tstellarAMD, nhaehnle
Subscribers: nhaehnle, solenskiner, arsenm, llvm-commits
Differential Revision: http://reviews.llvm.org/D11885
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257609
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zuckerman [Wed, 13 Jan 2016 15:48:42 +0000 (15:48 +0000)]
Fixing warning by adding the X86ISD::VROTRI case.
Differential Revision: http://reviews.llvm.org/D16052
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257607
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Wed, 13 Jan 2016 15:48:18 +0000 (15:48 +0000)]
[Hexagon] Do not insert non-phis before phis in bit simplification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257606
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zuckerman [Wed, 13 Jan 2016 14:59:19 +0000 (14:59 +0000)]
[AVX512] Adding PMOVSXBD/W/Q , PMOVZSDQ and PMOVZSWD/Q Intrinsics .
Differential Revision: http://reviews.llvm.org/D16111
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257604
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zuckerman [Wed, 13 Jan 2016 14:25:21 +0000 (14:25 +0000)]
[AVX512] Adding PMOVZXBD/W/Q , PMOVZXDQ and PMOVZXWD/Q Intrinsics
Differential Revision:http://reviews.llvm.org/D16071
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257601
91177308-0d34-0410-b5e6-
96231b3b80d8
Ulrich Weigand [Wed, 13 Jan 2016 13:12:23 +0000 (13:12 +0000)]
[PowerPC] Fix large code model with the ELFv2 ABI
The global entry point prologue currently assumes that the TOC
associated with a function is less than 2GB away from the function
entry point. This is always true when using the medium or small
code model, but may not be the case when using the large code model.
This patch adds a new variant of the ELFv2 global entry point prologue
that lifts the 2GB restriction when building with -mcmodel=large.
This works by emitting a quadword containing the distance from the
function entry point to its associated TOC immediately before the
entry point, and then using a prologue like:
ld r2,-8(r12)
add r2,r2,r12
Since creation of the entry point prologue is now split across two
separate routines (PPCLinuxAsmPrinter::EmitFunctionEntryLabel emits
the data word, PPCLinuxAsmPrinter::EmitFunctionBodyStart the prolog
code), I've switched to using named labels instead of just temporaries
to indicate the locations of the global and local entry points and the
new TOC offset data word.
These names are provided by new routines in PPCFunctionInfo modeled
after the existing PPCFunctionInfo::getPICOffsetSymbol.
Note that a corresponding change was committed to GCC here:
https://gcc.gnu.org/ml/gcc-patches/2015-12/msg00355.html
Reviewers: hfinkel
Differential Revision: http://reviews.llvm.org/D15500
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257597
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zuckerman [Wed, 13 Jan 2016 12:39:33 +0000 (12:39 +0000)]
[AVX512] adding PRORQ , PRORD , PRORLVQ and PRORLVD Intrinsics
Differential Revision: http://reviews.llvm.org/D16052
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257594
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Wed, 13 Jan 2016 11:46:48 +0000 (11:46 +0000)]
AMDGPU/SI: Allow more shader inputs
Reviewers: tstellarAMD, arsenm
Subscribers: arsenm
Differential Revision: http://reviews.llvm.org/D16032
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257593
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Wed, 13 Jan 2016 11:46:10 +0000 (11:46 +0000)]
AMDGPU/SI: Allow any number of PS inputs
Summary:
With the ability to concatenate shader binaries, the limit of 15 no longer
applies.
Reviewers: tstellarAMD, arsenm
Subscribers: arsenm
Differential Revision: http://reviews.llvm.org/D16031
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257592
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Wed, 13 Jan 2016 11:45:36 +0000 (11:45 +0000)]
AMDGPU/SI: Add new target attribute InitialPSInputAddr
Summary:
This allows Mesa to pass initial SPI_PS_INPUT_ADDR to LLVM.
The register assigns VGPR locations to PS inputs, while the ENA register
determines whether or not they are loaded.
Mesa needs to set some inputs as not-movable, so that a pixel shader prolog
binary appended at the beginning can assume where some inputs are.
v2: Make PSInputAddr private, because there is never enough silly getters
and setters for people to read.
Reviewers: tstellarAMD, arsenm
Subscribers: arsenm
Differential Revision: http://reviews.llvm.org/D16030
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257591
91177308-0d34-0410-b5e6-
96231b3b80d8
Marek Olsak [Wed, 13 Jan 2016 11:44:29 +0000 (11:44 +0000)]
AMDGPU/SI: Fix a bug in SIFoldOperands
Summary: ret.ll will contain a test for this
Reviewers: tstellarAMD, arsenm
Subscribers: arsenm
Differential Revision: http://reviews.llvm.org/D16029
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257590
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrey Turetskiy [Wed, 13 Jan 2016 11:30:44 +0000 (11:30 +0000)]
LEA code size optimization pass (Part 2): Remove redundant LEA instructions.
Make x86 OptimizeLEAs pass remove LEA instruction if there is another LEA
(in the same basic block) which calculates address differing only be a
displacement. Works only for -Oz.
Differential Revision: http://reviews.llvm.org/D13295
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257589
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 13 Jan 2016 07:53:11 +0000 (07:53 +0000)]
Add test cases that will show the bug that was fixed in r256725.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257584
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 13 Jan 2016 07:20:13 +0000 (07:20 +0000)]
[TableGen] Cleanup output formatting and add llvm_unreachables to the output the AsmMatcher uses when it overflows the 64-bit tables. No in tree targets use this code, but I tested it with an temporarily reduced table width.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257583
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 13 Jan 2016 07:20:12 +0000 (07:20 +0000)]
[TableGen] Replace some hardcoded assumptions that the OpcodeInfo table is 64-bits for cleanliness. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257582
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 13 Jan 2016 07:20:10 +0000 (07:20 +0000)]
[TableGen] Use std::remove_if instead of an n^2 loop. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257581
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 13 Jan 2016 07:20:07 +0000 (07:20 +0000)]
[TableGen] Fix up some stale comments in the AsmMatcher. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257580
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 13 Jan 2016 07:20:05 +0000 (07:20 +0000)]
[TableGen] Move calls to getValueAsInt out of a loop since they aren't simple functions. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257579
91177308-0d34-0410-b5e6-
96231b3b80d8
Junmo Park [Wed, 13 Jan 2016 07:03:42 +0000 (07:03 +0000)]
Remove extra whitespace. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257578
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Wed, 13 Jan 2016 06:34:57 +0000 (06:34 +0000)]
[ORC] Add extra debugging output to OrcRemoteTargetServer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257577
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Wed, 13 Jan 2016 06:08:07 +0000 (06:08 +0000)]
[ORC] Fix typo in debugging output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257576
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Wed, 13 Jan 2016 06:02:45 +0000 (06:02 +0000)]
[Inliner] Merge the attributes of the caller and callee functions
This patch turns off the fast-math optimization attribute on the caller
if the callee's fast-math attribute is not turned on.
For example,
- before inlining
caller: "less-precise-fpmad"="true"
callee: "less-precise-fpmad"="false"
- after inlining
caller: "less-precise-fpmad"="false"
Alternatively, it's possible to block inlining if the caller's and
callee's attributes don't match. If this approach is preferable to the
one in this patch, we can discuss post-commit.
rdar://problem/
19836465
Differential Revision: http://reviews.llvm.org/D7802
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257575
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Wed, 13 Jan 2016 05:59:13 +0000 (05:59 +0000)]
Fix PointerIntPair so that it can use an enum class as its integer template argument.
Summary:
The problem here is that an enum class can not be implicitly converted to an
integer. That assumption snuck back into PointerIntPair. This commit fixes the
issue and more importantly adds some unittests to make sure that we do not break
this again.
rdar://
23594806
Reviewers: gribozavr
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D16131
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257574
91177308-0d34-0410-b5e6-
96231b3b80d8
JF Bastien [Wed, 13 Jan 2016 04:52:26 +0000 (04:52 +0000)]
Doc fix: code-quote load / store doc the same way
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257573
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Wed, 13 Jan 2016 04:44:14 +0000 (04:44 +0000)]
[SPARC] Revamp AnalyzeBranch and add ReverseBranchCondition.
AnalyzeBranch on X86 (and, previously, SPARC, which implementation was
copied from X86) tries to modify the branches based on block
layout (e.g. checking isLayoutSuccessor), when AllowModify is true.
The rest of the architectures leave that up to the caller, which can
call InsertBranch, RemoveBranch, and ReverseBranchCondition as
appropriate. That appears to be the preferred way to do it nowadays.
This commit makes SPARC like the rest: replaces AnalyzeBranch with an
implementation cribbed from AArch64, and adds a ReverseBranchCondition
implementation.
Additionally, a test-case has been added (also cribbed from AArch64)
demonstrating that redundant branch sequences no longer get emitted.
E.g., it used to emit code like this:
bne .LBB1_2
nop
ba .LBB1_1
nop
.LBB1_2:
And now emits:
cmp %i0, 42
be .LBB1_1
nop
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257572
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Wed, 13 Jan 2016 04:36:15 +0000 (04:36 +0000)]
[Coverage] Refactor coverage mapping reader code
(Resubmit after fixing a typo that breaks test on big endian
machines)
In this refactoring, member functions are introduced to access
CovMap header/func record members and hide layout details. This
will enable further code restructuring to support reading multiple
versions of coverage mapping data with shared/templatized code.
(When coveremap format version changes, backward compatibtility
should be preserved).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257571
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Wed, 13 Jan 2016 04:11:36 +0000 (04:11 +0000)]
[llvm-readobj] Remove dead code. Add an assertion instead.
When we arrive at the end of the function, the validation of
the object has been done already. In theory, so, we should never
arrive here with something broken as the object isn't mutated.
Practice sometimes proves theory to be wrong, so leave an assertion
instead, as suggested by David Blaikie, to catch bugs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257570
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Wed, 13 Jan 2016 02:46:40 +0000 (02:46 +0000)]
Rollback r257551 -- unexpected test failures TBI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257564
91177308-0d34-0410-b5e6-
96231b3b80d8
Keno Fischer [Wed, 13 Jan 2016 02:31:14 +0000 (02:31 +0000)]
Re-Revert r257105 (Verifier debug info changes)
While I investigate some new buildbot failures. This was originally reapplied
as r257550 and r257558.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257563
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Wed, 13 Jan 2016 02:03:31 +0000 (02:03 +0000)]
[llvm-objdump] Use report_error() and improve error coverage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257561
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 13 Jan 2016 01:58:27 +0000 (01:58 +0000)]
[libFuzzer] make sure to update CurrentUnit when drilling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257560
91177308-0d34-0410-b5e6-
96231b3b80d8
Keno Fischer [Wed, 13 Jan 2016 01:26:57 +0000 (01:26 +0000)]
Use utostr rather than std::to_string
Looks like std::to_string is not available for Android. Hopefully
this fixes the bot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257558
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Wed, 13 Jan 2016 01:18:13 +0000 (01:18 +0000)]
AsmPrinter: Fix wrong OS X versions being emitted for darwin triples
The version numbers of the darwin kernel are different from the version
numbers of OS X, so we need adjustments if we had "*-*-darwin" triples.
Use the existing utility functions in TargetTriple for this.
Fixes rdar://
22056966
Differential Revision: http://reviews.llvm.org/D14601
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257555
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 13 Jan 2016 01:05:23 +0000 (01:05 +0000)]
[CodeView] Mark our lines as statements, not expressions
The line tables for CodeView make a distinction between expressions and
statements. As it turns out, MSVC always emits them as statements and
we always emit them as expressions. Let's switch to statements to match
the CodeView that they emit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257553
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 13 Jan 2016 01:05:16 +0000 (01:05 +0000)]
[CodeView] Improve the line table dumper
This change has us print out fields we didn't previously understand. To
improve readability, we now group column information with it's
respective line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257552
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Wed, 13 Jan 2016 00:53:46 +0000 (00:53 +0000)]
[Coverage] Refactor coverage mapping reader code /NFC
(Resubmit after fixing build bot failures)
In this refactoring, member functions are introduced to access
CovMap header/func record members and hide layout details. This
will enable further code restructuring to support reading multiple
versions of coverage mapping data with shared/templatized code.
(When coveremap format version changes, backward compatibtility
should be preserved).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257551
91177308-0d34-0410-b5e6-
96231b3b80d8
Keno Fischer [Wed, 13 Jan 2016 00:31:44 +0000 (00:31 +0000)]
Reapply r257105 "[Verifier] Check that debug values have proper size"
The follow extra changes were made to test cases:
Manually making the variable be the actual type instead of a pointer
to avoid pointer-size differences in generic code:
LLVM :: DebugInfo/Generic/2010-03-24-MemberFn.ll
LLVM :: DebugInfo/Generic/2010-04-06-NestedFnDbgInfo.ll
LLVM :: DebugInfo/Generic/2010-05-03-DisableFramePtr.ll
LLVM :: DebugInfo/Generic/varargs.ll
Delete sizing information from debug info for the same reason
(but the presence of the pointer was important to the test case):
LLVM :: DebugInfo/Generic/restrict.ll
LLVM :: DebugInfo/Generic/tu-composite.ll
LLVM :: Linker/type-unique-type-array-a.ll
LLVM :: Linker/type-unique-simple2.ll
Fixing an incorrect DW_OP_deref
LLVM :: DebugInfo/Generic/2010-05-03-OriginDIE.ll
Fixing a missing DW_OP_deref
LLVM :: DebugInfo/Generic/incorrect-variable-debugloc.ll
Additionally, clang should no longer complain during bootstrap should no
longer happen after r257534.
The original commit message was:
```
Summary:
Teach the Verifier to make sure that the storage size given to llvm.dbg.declare
or the value size given to llvm.dbg.value agree with what is declared in
DebugInfo. This is implicitly assumed in a number of passes (e.g. in SROA).
Additionally this catches a number of common mistakes, such as passing a
pointer when a value was intended or vice versa.
One complication comes from stack coloring which modifies the original IR when
it merges allocas in order to make sure that if AA falls back to the IR it gets
the correct result. However, given this new invariant, indiscriminately
replacing one alloca by a different (differently sized one) is no longer valid.
Fix this by just undefing out any use of the alloca in a dbg.declare in this
case.
Additionally, I had to fix a number of test cases. Of particular note:
- I regenerated dbg-changes-codegen-branch-folding.ll from the given source as
it was affected by the bug fixed in r256077
- two-cus-from-same-file.ll was changed to avoid having a variable-typed debug
variable as that would depend on the target, even though this test is
supposed to be generic
- I had to manually declared size/align for reference type. See also the
discussion for D14275/r253186.
- fpstack-debuginstr-kill.ll required changing `double` to `long double`
- most others were just a question of adding OP_deref
```
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257550
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Wed, 13 Jan 2016 00:27:24 +0000 (00:27 +0000)]
Rollback r257547 -- buildbot failure TBI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257549
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Wed, 13 Jan 2016 00:25:36 +0000 (00:25 +0000)]
For llvm-objdump, add the option -private-header (without the trailing ’s’)
to only print the first private header.
Which for Mach-O files only prints the Mach header and not the subsequent load
commands. Which is used by scripts to match what the darwin otool(1) with the
-h flag does without the -l flag.
For non-Mach-O files it has the same functionality as -private-headers (with
the trailing ’s’).
rdar://
24158331
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257548
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Wed, 13 Jan 2016 00:16:43 +0000 (00:16 +0000)]
[Coverage] Refactor coverage mapping reader code /NFC
In this refactoring, member functions are introduced to access
CovMap header/func record members and hide layout details. This
will enable further code restructuring to support reading multiple
versions of coverage mapping data with shared/templatized code.
(When coveremap format version changes, backward compatibtility
should be preserved).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257547
91177308-0d34-0410-b5e6-
96231b3b80d8
Ana Pazos [Wed, 13 Jan 2016 00:03:35 +0000 (00:03 +0000)]
Guard fabs to bfc convert with V6T2 flag
Summary:
BFC instructions are available in ARMv6T2 and above.
Reviewers: t.p.northover
Subscribers: aemerson
Differential Revision: http://reviews.llvm.org/D16076
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257546
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Wed, 13 Jan 2016 00:02:40 +0000 (00:02 +0000)]
[ARM] Mark VMOV with immediate: isAsCheapAsMove.
VMOVs are not strictly speaking cheap, but they are as expensive as a vector
copy (VORR), so we should prefer rematerialization over splitting when it
applies.
rdar://problem/
23754176
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257545
91177308-0d34-0410-b5e6-
96231b3b80d8
Fiona Glaser [Tue, 12 Jan 2016 23:37:30 +0000 (23:37 +0000)]
CannotBeOrderedLessThanZero: add some missing cases
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257542
91177308-0d34-0410-b5e6-
96231b3b80d8
Rui Ueyama [Tue, 12 Jan 2016 23:28:42 +0000 (23:28 +0000)]
COFF: Teach llvm-objdump how to dump DLL forwarder symbols.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257539
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Tue, 12 Jan 2016 23:03:40 +0000 (23:03 +0000)]
[WebAssembly] Fix disassembler shared-libs build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257536
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Tue, 12 Jan 2016 22:57:35 +0000 (22:57 +0000)]
RegisterPressure: Expose RegisterOperands API
Previously the RegisterOperands have only been used internally in
RegisterPressure.cpp. However this datastructure can be useful for other
tasks as well and allows refactoring of PDiff initialisation out of
RPTracker::recede().
This patch:
- Exposes RegisterOperands as public API
- Splits RPTracker::recede() into a part that skips DebugValues and
maintains the region borders, and the core that changes register
pressure when given a set of RegisterOperands.
- This allows to move the PDiff initialisation out recede() into a
method of the PressureDiffs class.
- The upcoming subregister scheduling code will also use
RegisterOperands to avoid pushing more unrelated functionality into
recede()/advance().
Differential Revision: http://reviews.llvm.org/D15473
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257535
91177308-0d34-0410-b5e6-
96231b3b80d8
Keno Fischer [Tue, 12 Jan 2016 22:46:09 +0000 (22:46 +0000)]
[Utils] Insert DW_OP_bit_piece when only describing part of the variable
Summary: The dbg.declare -> dbg.value conversion looks through any zext/sext
to find a value to describe the variable (in the expectation that those
zext/sext instruction will go away later). However, those values do not
cover the entire variable and thus need a DW_OP_bit_piece.
Reviewers: aprantl
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D16061
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257534
91177308-0d34-0410-b5e6-
96231b3b80d8
Nathan Slingerland [Tue, 12 Jan 2016 22:34:00 +0000 (22:34 +0000)]
[Support] Add saturating multiply-add support function
Summary: Add SaturatingMultiplyAdd convenience function template since A + (X * Y) comes up frequently when doing weighted arithmetic.
Reviewers: davidxl, silvas
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D15385
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257532
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 12 Jan 2016 21:58:20 +0000 (21:58 +0000)]
[CodeView] Initialize column-end to zero
CodeView, unlike DWARF, can associate code with a range of columns.
However, LLVM can only represent a single column position internally.
We used to claim that the end column and start column were the same
which yielded less than satisfactory results: we would stop printing at
the _beginning_ of the source expression! Instead, mark the column-end
as 'zero' to indicate that we don't have one (as per the documentation
for IDiaLineNumber::get_lineNumberEnd).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257528
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 12 Jan 2016 21:27:55 +0000 (21:27 +0000)]
[WebAsssembly] Register the MC register info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257525
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zuckerman [Tue, 12 Jan 2016 21:19:17 +0000 (21:19 +0000)]
[AVX512] adding PROLQ and PROLD Intrinsics
Differential Revision: http://reviews.llvm.org/D16048
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257523
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 12 Jan 2016 21:01:30 +0000 (21:01 +0000)]
[WebAssembly] Fix a test to work even when the integrated assembler is enabled.
Add -no-integrated-as to this test, since it's testing inline asm strings
that aren't actually valid assembly syntax.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257519
91177308-0d34-0410-b5e6-
96231b3b80d8
Kyle Butt [Tue, 12 Jan 2016 21:00:43 +0000 (21:00 +0000)]
Codegen: [PPC] Handle weighted comparisons when inserting selects.
Only non-weighted predicates were handled in PPCInstrInfo::insertSelect. Handle
the weighted predicates as well.
This latent bug was triggered by r255398, because it added use of the
branch-weighted predicates.
While here, switch over an enum instead of an int to get the compiler to enforce
totality in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257518
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 12 Jan 2016 20:56:01 +0000 (20:56 +0000)]
[WebAssembly] Add a EM_WEBASSEMBLY value, and several bits of code that use it.
A request has been made to the official registry, but an official value is
not yet available. This patch uses a temporary value in order to support
development. When an official value is recieved, the value of EM_WEBASSEMBLY
will be updated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257517
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 12 Jan 2016 20:51:40 +0000 (20:51 +0000)]
[WebAssembly] Add ELFRelocs/WebAssembly.def as a "textual header" to the module map.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257515
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 12 Jan 2016 20:30:51 +0000 (20:30 +0000)]
[WebAssembly] Introduce a WebAssemblyTargetStreamer class.
Refactor .param, .result, .local, and .endfunc, as directives, using the
proper MCTargetStreamer mechanism, rather than fake instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257511
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Tue, 12 Jan 2016 19:27:59 +0000 (19:27 +0000)]
Replace inherited constructor with an explicit one
Some bots failed when the inherited constructor was used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257508
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 12 Jan 2016 19:14:46 +0000 (19:14 +0000)]
[WebAssembly] Make CFG stackification independent of basic-block labels.
This patch changes the way labels are referenced. Instead of referencing the
basic-block label name (eg. .LBB0_0), instructions now just have an immediate
which indicates the depth in the control-flow stack to find a label to jump to.
This makes them much closer to what we expect to have in the binary encoding,
and avoids the problem of basic-block label names not being explicit in the
binary encoding.
Also, it terminates blocks and loops with end_block and end_loop instructions,
rather than basic-block label names, for similar reasons.
This will also fix problems where two constructs appear to have the same label,
because we no longer explicitly use labels, so consumers that need labels will
presumably create their own labels, and presumably they won't reuse labels
when they do.
This patch does make the code a little more awkward to read; as a partial
mitigation, this patch also introduces comments showing where the labels are,
and comments on each branch showing where it's branching to.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257505
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Tue, 12 Jan 2016 19:09:01 +0000 (19:09 +0000)]
[Hexagon] Implement RDF-based post-RA optimizations
- Handle simple cases of register copies (what current RDF CP allows).
- Hexagon-specific dead code elimination: handles dead address updates
in post-increment instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257504
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 12 Jan 2016 19:06:35 +0000 (19:06 +0000)]
[LibCallSimplifier] use instruction-level fast-math-flags to transform pow(x, 0.5) calls
Also, propagate the FMF to the newly created sqrt() call.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257503
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 12 Jan 2016 19:01:49 +0000 (19:01 +0000)]
[ORC] More cleanup, partially aimed at working around GCC ICE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257501
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 12 Jan 2016 18:47:59 +0000 (18:47 +0000)]
rangify; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257500
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Tue, 12 Jan 2016 18:33:49 +0000 (18:33 +0000)]
Auto-link with ole32.dll to simplify building LLVM.dll
Patch by Jakob Bornecrantz
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257499
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 12 Jan 2016 18:17:23 +0000 (18:17 +0000)]
[Orc] Replace lambda with a helper method.
This is good cleanup, but I'm also hoping it'll fix some more GCC ICEs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257498
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 12 Jan 2016 18:03:37 +0000 (18:03 +0000)]
function names start with a lower case letter ; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257496
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Tue, 12 Jan 2016 17:53:59 +0000 (17:53 +0000)]
Fix bot failure from r257493: remove extraneous temp file read
This was left from an earlier version of the test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257494
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Tue, 12 Jan 2016 17:48:44 +0000 (17:48 +0000)]
[ThinLTO] Handle an external call from an import to an alias in dest
The findExternalCalls routine ignores calls to functions already
defined in the dest module. This was not handling the case where
the definition in the current module is actually an alias to a
function call.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257493
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 12 Jan 2016 17:30:37 +0000 (17:30 +0000)]
[LibCallSimplifier] use instruction-level fast-math-flags to transform pow(exp(x)) calls
See also:
http://reviews.llvm.org/rL255555
http://reviews.llvm.org/rL256871
http://reviews.llvm.org/rL256964
http://reviews.llvm.org/rL257400
http://reviews.llvm.org/rL257404
http://reviews.llvm.org/rL257414
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257491
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Tue, 12 Jan 2016 17:23:48 +0000 (17:23 +0000)]
RDF: Copy propagation
This is a very limited implementation of DFG-based copy propagation.
It only handles actual COPY instructions (does not handle other equivalents
such as add-immediate with a 0 operand).
The major limitation is that it does not update the DFG: that will be the
change required to make it more robust (hopefully coming up soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257490
91177308-0d34-0410-b5e6-
96231b3b80d8