Zachary Turner [Tue, 10 Feb 2015 22:56:21 +0000 (22:56 +0000)]
Add missing function and header include.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228758
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 10 Feb 2015 22:47:14 +0000 (22:47 +0000)]
Oops. Don't call Windows functions on non-windows.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228756
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 10 Feb 2015 22:43:25 +0000 (22:43 +0000)]
Rewrite llvm-pdbdump in terms of LLVMDebugInfoPDB.
This makes llvm-pdbdump available on all platforms, although it
will currently fail to create a dumper if there is no PDB reader
implementation for the current platform.
It implements dumping of compilands and children, which is less
information than was previously available, but it has to be
rewritten from scratch using the new set of interfaces, so the
rest of the functionality will be added back in subsequent commits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228755
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 10 Feb 2015 22:00:34 +0000 (22:00 +0000)]
X86: @llvm.frameaddress should defer to SelectionDAG for Win CFI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228754
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 10 Feb 2015 21:40:29 +0000 (21:40 +0000)]
Fix build due to mismatched function signatures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228752
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Tue, 10 Feb 2015 21:38:25 +0000 (21:38 +0000)]
[Object] Reformat the code with clang-format
No functional changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228751
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 10 Feb 2015 21:22:05 +0000 (21:22 +0000)]
X86: Make @llvm.frameaddress work correctly with Windows unwind codes
Simply loading or storing the frame pointer is not sufficient for
Windows targets. Instead, create a synthetic frame object that we will
lower later. References to this synthetic object will be replaced with
the correct reference to the frame address.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228748
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 10 Feb 2015 21:17:52 +0000 (21:17 +0000)]
Provide DIA implementation of DebugInfoPDB.
This implements DebugInfoPDB when the DIA SDK is present on the system.
Specifically, this means that the following conditions are met:
1) You are building on Windows.
2) You are building with MSVC.
3) Visual Studio did not corrupt the installation of DIA due to a
known issue with side-by-side installations of VS2012 and VS2013.
If all of these conditions are true, you will be able to pass a value
of PDB_Reader::DIA to PDB::createPdbReader().
There are no tests for this yet, as any test will be in the form of a
lit test which tests the llvm-pdbdump.exe, which still needs to be
rewritten in terms of this library.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228747
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 10 Feb 2015 21:15:06 +0000 (21:15 +0000)]
Reformat (and remove some tabs) to make debugging this code a
little easier to step through.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228746
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Tue, 10 Feb 2015 21:13:04 +0000 (21:13 +0000)]
Now use the __debugbreak intrinsic instead of calling RaiseException; it requires no forward declares and still calls VEH.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228745
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Jasper [Tue, 10 Feb 2015 20:49:05 +0000 (20:49 +0000)]
Fix overly prescriptive test that broken on Mac after r228725.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228742
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Tue, 10 Feb 2015 20:43:54 +0000 (20:43 +0000)]
fix docs typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228741
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Tue, 10 Feb 2015 20:13:52 +0000 (20:13 +0000)]
Changing the status code generated by LLVM_BUILTIN_TRAP on Windows to be something categorized as a valid error code. Fixes crashing uses (such as not --crash) with existing sys::Wait behavior.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228738
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Tue, 10 Feb 2015 19:52:43 +0000 (19:52 +0000)]
Adding support for llvm.eh.begincatch and llvm.eh.endcatch intrinsics and beginning the documentation of native Windows exception handling.
Differential Revision: http://reviews.llvm.org/D7398
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228733
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Tue, 10 Feb 2015 19:49:18 +0000 (19:49 +0000)]
DeadArgElim: arguments affect all returned sub-values by default.
Unless we meet an insertvalue on a path from some value to a return, that value
will be live if *any* of the return's components are live, so all of those
components must be added to the MaybeLiveUses.
Previously we were deleting arguments if sub-value 0 turned out to be dead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228731
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Schmidt [Tue, 10 Feb 2015 19:31:55 +0000 (19:31 +0000)]
Fix up r228725, missed change in PPCSubtarget definition
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228728
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 19:13:46 +0000 (19:13 +0000)]
IR: Add MDNode::replaceWithPermanent()
Add new API for converting temporaries that may self-reference.
Self-referencing nodes are not allowed to be uniqued, so sending them
into `replaceWithUniqued()` is dangerous (and this commit adds
assertions that prevent it).
`replaceWithPermanent()` has similar semantics to `get()` followed by
calls to `replaceOperandWith()`. In particular, if there's a
self-reference, it returns a distinct node; otherwise, it returns a
uniqued one. Like `replaceWithUniqued()` and `replaceWithDistinct()`
(well, it calls out to them) it mutates the temporary node in place if
possible, only calling `replaceAllUsesWith()` on a uniquing collision.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228726
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Schmidt [Tue, 10 Feb 2015 19:09:05 +0000 (19:09 +0000)]
[PowerPC] Fix reverted patch r227976 to avoid register assignment issues
See full discussion in http://reviews.llvm.org/D7491.
We now hide the add-immediate and call instructions together in a
separate pseudo-op, which is tagged to define GPR3 and clobber the
call-killed registers. The PPCTLSDynamicCall pass prior to RA now
expands this op into the two separate addi and call ops, with explicit
definitions of GPR3 on both instructions, and explicit clobbers on the
call instruction. The pass is now marked as requiring and preserving
the LiveIntervals and SlotIndexes analyses, and fixes these up after
the replacement sequences are introduced.
Self-hosting has been verified on LE P8 and BE P7 with various
optimization levels, etc. It has also been verified with the
--no-tls-optimize flag workaround removed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228725
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 10 Feb 2015 19:01:47 +0000 (19:01 +0000)]
X86: Emit Win64 SaveXMM opcodes at the right offset in the right order
Walk the instructions marked FrameSetup and consider any stores of XMM
registers to the stack as needing a SaveXMM opcode.
This fixes PR22521.
Differential Revision: http://reviews.llvm.org/D7527
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228724
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Tue, 10 Feb 2015 18:45:02 +0000 (18:45 +0000)]
[PowerPC] Support the (old) cntlz instruction alias
Some old assembly code uses the cntlz alias for cntlzw, binutils supports this,
and we should too. Fixes PR22519.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228719
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Tue, 10 Feb 2015 17:54:54 +0000 (17:54 +0000)]
Add a test case for new unrolling heuristics.
THe heuristics were added in r228265 and r228434.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228713
91177308-0d34-0410-b5e6-
96231b3b80d8
Colin LeMahieu [Tue, 10 Feb 2015 16:59:36 +0000 (16:59 +0000)]
[Hexagon] Adding vector load with post-increment instructions. Adding decoder function for 64bit control register class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228708
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Tue, 10 Feb 2015 16:36:20 +0000 (16:36 +0000)]
[mips][microMIPS] Implement movep instruction
Differential Revision: http://reviews.llvm.org/D7465
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228703
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Tue, 10 Feb 2015 15:34:29 +0000 (15:34 +0000)]
Two comment typo fixes in lib/CodeGen/SelectionDAG/DAGCombiner.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228700
91177308-0d34-0410-b5e6-
96231b3b80d8
Paul Robinson [Tue, 10 Feb 2015 15:30:02 +0000 (15:30 +0000)]
Explicitly initialize a flag in a default constructor.
Works around a Visual C++ issue.
Patch by Douglas Yung!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228699
91177308-0d34-0410-b5e6-
96231b3b80d8
Bradley Smith [Tue, 10 Feb 2015 15:15:08 +0000 (15:15 +0000)]
[ARM] Add armv6s[-]m as an alias to armv6[-]m
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228696
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Tue, 10 Feb 2015 14:28:11 +0000 (14:28 +0000)]
Re-committing r228628 with a fix for 64-bit builds.
On Windows, we now use RaiseException to generate the kind of trap we require (one which calls our vectored exception handler), and fall back to using a volatile write to simulate a trap elsewhere.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228691
91177308-0d34-0410-b5e6-
96231b3b80d8
Renato Golin [Tue, 10 Feb 2015 14:15:58 +0000 (14:15 +0000)]
Fix typo in cmake example docs
Patch by Vinicius Tinti.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228690
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 10 Feb 2015 13:22:57 +0000 (13:22 +0000)]
[X86][AVX2] Missing AVX2 memory folding instructions
Added most of the missing vector folding patterns for AVX2 (as well as fixing the vpermpd and verpmq patterns)
Differential Revision: http://reviews.llvm.org/D7492
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228688
91177308-0d34-0410-b5e6-
96231b3b80d8
Jozef Kolek [Tue, 10 Feb 2015 13:20:51 +0000 (13:20 +0000)]
[mips][microMIPS] Add disassembler tests for 16-bit instructions BREAK16 and SDBBP16
Differential Revision: http://reviews.llvm.org/D7443
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228687
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Paulsson [Tue, 10 Feb 2015 13:03:32 +0000 (13:03 +0000)]
Bugfix for missed dependency from store to load in buildSchedGraph().
Background: When handling underlying objects for a store, the vector
of previous mem uses, mapped to the same Value, is afterwards cleared
(regardless of ThisMayAlias). This means that during handling of the
next store using the same Value, adjustChainDeps() must be called,
otherwise a dependency might be missed.
For example, three spill/reload (NonAliasing) memory accesses using
the same Value 'a', with different offsets:
SU(2): store @a
SU(1): store @a, Offset:1
SU(0): load @a
In this case we have:
* SU(1) does not need a dep against SU(0). Therefore,SU(0) ends up in
RejectMemNodes and is removed from the mem-uses list (AliasMemUses
or NonAliasMemUses), as this list is cleared.
* SU(2) needs a dep against SU(0). Therefore, SU(2) must check
RejectMemNodes by calling adjustChainDeps().
Previously, for store SUs, adjustChainDeps() was only called if
MayAlias was true, missing the S(2) to S(0) dependency in the case
above. The fix is to always call adjustChainDeps(), regardless of
MayAlias, since this applies both for AliasMemUses and
NonAliasMemUses.
No testcase found for any in-tree target.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228686
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Tue, 10 Feb 2015 12:57:17 +0000 (12:57 +0000)]
[X86][XOP] Added XOP memory folding patterns + tests
This patch adds the complete AMD Bulldozer XOP instruction set to the memory folding pattern tables for stack folding, etc.
Note: Many of the XOP instructions have multiple table entries as it can fold loads from different sources.
Differential Revision: http://reviews.llvm.org/D7484
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228685
91177308-0d34-0410-b5e6-
96231b3b80d8
Jozef Kolek [Tue, 10 Feb 2015 12:41:13 +0000 (12:41 +0000)]
[mips][microMIPS] Fix disassembling of 16-bit microMIPS instructions LWM16 and SWM16
Differential Revision: http://reviews.llvm.org/D7436
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228683
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Tue, 10 Feb 2015 12:04:41 +0000 (12:04 +0000)]
[X86][FastIsel] Avoid introducing legacy SSE instructions if the target has AVX.
This patch teaches X86FastISel how to select AVX instructions for scalar
float/double convert operations.
Before this patch, X86FastISel always selected legacy SSE instructions
for FPExt (from float to double) and FPTrunc (from double to float).
For example:
\code
define double @foo(float %f) {
%conv = fpext float %f to double
ret double %conv
}
\end code
Before (with -mattr=+avx -fast-isel) X86FastIsel selected a CVTSS2SDrr which is
legacy SSE:
cvtss2sd %xmm0, %xmm0
With this patch, X86FastIsel selects a VCVTSS2SDrr instead:
vcvtss2sd %xmm0, %xmm0, %xmm0
Added test fast-isel-fptrunc-fpext.ll to check both the register-register and
the register-memory float/double conversion variants.
Differential Revision: http://reviews.llvm.org/D7438
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228682
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 10 Feb 2015 08:07:32 +0000 (08:07 +0000)]
Revert r228556: InstCombine: propagate nonNull through assume
This commit isn't using the correct context, and is transfoming calls
that are operands to loads rather than calls that are operands to an
icmp feeding into an assume. I've replied on the original review thread
with a very reduced test case and some thoughts on how to rework this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228677
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 10 Feb 2015 07:35:39 +0000 (07:35 +0000)]
[Orc] Fix a bug in the LazyEmittingLayer - capture names by value (as
std::strings) rather than StringRefs in JITSymbol get-address lambda.
Capturing a StringRef by-value is still effectively capturing a reference, which
is no good here because the referenced string may be gone by the time the lambda
is being evaluated the original value may be gone. Make sure to capture a
std::string instead.
No test case: This bug doesn't manifest under OrcMCJITReplacement, since it
keeps IR modules (from which the StringRefs are sourced) alive permanently.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228676
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 10 Feb 2015 07:26:19 +0000 (07:26 +0000)]
[Orc] Add missing casserts header to JITSymbol.h.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228675
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 10 Feb 2015 06:29:28 +0000 (06:29 +0000)]
[X86] Preserve mem refs on newly created 'Store' node instead of 'Load' node when handling store unfolding.
Bug spotted by Steve King.
I have no idea how to test this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228672
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 10 Feb 2015 05:10:50 +0000 (05:10 +0000)]
[X86] Remove unnecessary alignment checks from the load folding tables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228671
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 10 Feb 2015 05:04:37 +0000 (05:04 +0000)]
Teach llvm_add_library() to find include dirs.
Since header files are not compilation units, CMake does not require
you to specify them in the CMakeLists.txt file. As a result, unless a
header file is explicitly added, CMake won't know about it, and when
generating IDE-based projects, CMake won't put the header files into
the IDE project. LLVM currently tries to deal with this in two ways:
1) It looks for all .h files that are in the project directory, and
adds those.
2) llvm_add_library() understands the ADDITIONAL_HEADERS argument,
which allows one to list an arbitrary list of headers.
This patch takes things one step further. It adds the ability for
llvm_add_library() to take an ADDITIONAL_HEADER_DIRS argument, which
will specify a list of folders which CMake will glob for header files.
Furthermore, it will glob not only for .h files, but also for .inc
files.
Included in this CL is an update to one of the existing users of
ADDITIONAL_HEADERS to use this new argument instead, to serve as an
illustration of how this cleans up the CMake.
The big advantage of this new approach is that until now, there was no
way for the IDE projects to locate the header files that are in the
include tree. In other words, if you are in, for example,
lib/DebugInfo/DWARF, the corresponding includes for this project will
be located under include/llvm/DebugInfo/DWARF. Now, in the
CMakeLists.txt for lib/DebugInfo/DWARF, you can simply write:
ADDITIONAL_HEADER_DIRS
../../include/llvm/DebugInfo/DWARF
as an argument to llvm_add_library(), and all header files will get
added to the IDE project.
Differential Revision: http://reviews.llvm.org/D7460
Reviewed By: Chris Bieneman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228670
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Tue, 10 Feb 2015 05:04:25 +0000 (05:04 +0000)]
Define HAVE_DIA_SDK on Windows when DIA is present.
This allows all CMake projects, as well as C++ code, to detect if
and when DIA SDK is available for use so that we can enable the
DIA-based PDB reader implementation.
Differential Revision: http://reviews.llvm.org/D7457
Reviewed By: Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228669
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 10 Feb 2015 02:39:17 +0000 (02:39 +0000)]
Remove non-test files that appear to have been accidentally committed in r228641.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228657
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 10 Feb 2015 02:25:56 +0000 (02:25 +0000)]
[x86] Fix PR22524: the DAG combiner was incorrectly handling illegal
nodes when folding bitcasts of constants.
We can't fold things and then check after-the-fact whether it was legal.
Once we have formed the DAG node, arbitrary other nodes may have been
collapsed to it. There is no easy way to go back. Instead, we need to
test for the specific folding cases we're interested in and ensure those
are legal first.
This could in theory make this less powerful for bitcasting from an
integer to some vector type, but AFAICT, that can't actually happen in
the SDAG so its fine. Now, we *only* whitelist specific int->fp and
fp->int bitcasts for post-legalization folding. I've added the test case
from the PR.
(Also as a note, this does not appear to be in 3.6, no backport needed)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228656
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 02:25:18 +0000 (02:25 +0000)]
Verifier: reuse getInlinedAt() result, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228655
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Tue, 10 Feb 2015 02:04:29 +0000 (02:04 +0000)]
[DOC] Asserts are only enabled in Debug build, update the doc accordingly
Summary:
The CMake configuration is explicitely looking for Debug build, all the
other variant disable assertions.
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D7359
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228653
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 01:59:57 +0000 (01:59 +0000)]
IR: Remove unnecessary fields from MDTemplateParameter
I noticed this fields were never used in r228607, but I neglected to
propagate that into `MDTemplateParameter` until now. This really should
have been done before commit in r228640; sorry for the churn.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228652
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 01:40:40 +0000 (01:40 +0000)]
Verifier: Check for valid tags in debug nodes
Check that specialized `DebugNode`s have valid `DW_TAG`s.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228649
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 01:36:46 +0000 (01:36 +0000)]
IR: Add accessors to MDExpression
Add some accessors to `MDExpression`.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228648
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 01:32:56 +0000 (01:32 +0000)]
Verifier: Add simple checks for MDLocation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228647
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 01:09:50 +0000 (01:09 +0000)]
Verifier: Create stubs for specialized metadata nodes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228645
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 01:08:16 +0000 (01:08 +0000)]
AsmParser: Add stubs for specialized MDNodes, NFC
Well, the exact error from the failed parse will change, but...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228644
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Tue, 10 Feb 2015 00:57:42 +0000 (00:57 +0000)]
X86: Emit an ABI compliant prologue and epilogue for Win64
Win64 has specific contraints on what valid prologues and epilogues look
like. This constraint is born from the flexibility and descriptiveness
of Win64's unwind opcodes.
Prologues previously emitted by LLVM could not be represented by the
unwind opcodes, preventing operations powered by stack unwinding to
successfully work.
Differential Revision: http://reviews.llvm.org/D7520
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228641
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 10 Feb 2015 00:52:32 +0000 (00:52 +0000)]
IR: Add specialized debug info metadata nodes
Add specialized debug info metadata nodes that match the `DIDescriptor`
wrappers (used by `DIBuilder`) closely. Assembly and bitcode support to
follow soon (it'll mostly just be obvious), but this sketches in today's
schema. This is the first big commit (well, the only *big* one aside
from the testcase changes that'll come when I move this into place) for
PR22464.
I've marked a bunch of obvious changes as `TODO`s in the source; I plan
to make those changes promptly after this hierarchy is moved underneath
`DIDescriptor`, but for now I'm aiming mostly to match the status quo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228640
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 10 Feb 2015 00:44:17 +0000 (00:44 +0000)]
Migrate PPCAsmPrinter's subtarget from reference to pointer in
preparation for making it MachineFunction dependent.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228638
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 10 Feb 2015 00:37:26 +0000 (00:37 +0000)]
[Orc] Back out one of the GCC ICE workarounds from r228568. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228637
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 10 Feb 2015 00:16:36 +0000 (00:16 +0000)]
Fix the clang -Werror build (-Wunused-variable)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228635
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Tue, 10 Feb 2015 00:04:53 +0000 (00:04 +0000)]
Adjust how we avoid poll insertion inside the poll function (NFC)
I realized that my early fix for this was overly complicated. Rather than scatter checks around in a bunch of places, just exit early when we visit the poll function itself.
Thinking about it a bit, the whole inlining mechanism used with gc.safepoint_poll could probably be cleaned up a bit. Originally, poll insertion was fused with gc relocation rewriting. It might be worth going back to see if we can simplify the chain of events now that these two are seperated. As one thought, maybe it makes sense to rewrite calls inside the helper function before inlining it to the many callers. This would require us to visit the poll function before any other functions though..
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228634
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Tue, 10 Feb 2015 00:00:54 +0000 (00:00 +0000)]
Reverting r228628; it broke at least one builder due to the forward declare of RaiseException.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228633
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Mon, 9 Feb 2015 23:57:22 +0000 (23:57 +0000)]
Debug info: When updating debug info during SROA, do not emit debug info
for any padding introduced by SROA. In particular, do not emit debug info
for an alloca that represents only the padding introduced by a previous
iteration.
Fixes PR22495.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228632
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Mon, 9 Feb 2015 23:57:15 +0000 (23:57 +0000)]
Debug info: Use DW_OP_bit_piece instead of DW_OP_piece in the
intermediate representation. This
- increases consistency by using the same granularity everywhere
- allows for pieces < 1 byte
- DW_OP_piece didn't actually allow storing an offset.
Part of PR22495.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228631
91177308-0d34-0410-b5e6-
96231b3b80d8
Colin LeMahieu [Mon, 9 Feb 2015 23:45:24 +0000 (23:45 +0000)]
[Hexagon] Adding missing load instructions and removing an unused multiclass parameter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228630
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Mon, 9 Feb 2015 23:21:05 +0000 (23:21 +0000)]
ADT: Allow up to 18 arguments in hash_combine()
I just realized that the specialized metadata node patch I'm about to
commit won't compile on old compilers. Bump `hash_combine()`'s support
for non-variadic templates to 18 (I tested this by reversing the logic
in the #ifdef).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228629
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 9 Feb 2015 23:11:39 +0000 (23:11 +0000)]
On Windows, we now use RaiseException to generate the kind of trap we require (one which calls our vectored exception handler), and fall back to using a volatile write to simulate a trap elsewhere.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228628
91177308-0d34-0410-b5e6-
96231b3b80d8
Colin LeMahieu [Mon, 9 Feb 2015 23:05:44 +0000 (23:05 +0000)]
[Hexagon] Factoring classes out of some load patterns and deleting some unused ones.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228627
91177308-0d34-0410-b5e6-
96231b3b80d8
Ramkumar Ramachandra [Mon, 9 Feb 2015 23:02:10 +0000 (23:02 +0000)]
[Statepoint] Improve two asserts, fix some style (NFC)
Summary:
It's important that our users immediately know what gc.safepoint_poll
is. Also fix the style of the declaration of CreateGCStatepoint, in
preparation for another change that will wrap it.
Reviewers: reames
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D7517
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228626
91177308-0d34-0410-b5e6-
96231b3b80d8
Ramkumar Ramachandra [Mon, 9 Feb 2015 23:00:40 +0000 (23:00 +0000)]
PlaceSafepoints: modernize gc.result.* -> gc.result
Differential Revision: http://reviews.llvm.org/D7516
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228625
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Mon, 9 Feb 2015 22:48:04 +0000 (22:48 +0000)]
DebugInfo: Remove DW_TAG_constant
Remove handling for DW_TAG_constant. We started producing it in
r110656, but reverted that in r110876 without dropping the support.
Finish the job.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228623
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Mon, 9 Feb 2015 22:44:03 +0000 (22:44 +0000)]
Update file comment to clarify points highlighted in review (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228621
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Mon, 9 Feb 2015 22:26:11 +0000 (22:26 +0000)]
Use range for loops in PlaceSafepoints (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228620
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Mon, 9 Feb 2015 22:13:27 +0000 (22:13 +0000)]
IR: Take uint64_t in DIBuilder::createExpression()
`DIExpression` deals with `uint64_t`, so it doesn't make sense that
`createExpression()` is created from `int64_t`. Switch to `uint64_t` to
unify them.
I've temporarily left in the `int64_t` version, which forwards to the
`uint64_t` version. I'll delete it once I've updated the callers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228619
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Mon, 9 Feb 2015 22:10:15 +0000 (22:10 +0000)]
Introduce more tests for PlaceSafepoints
These tests the two optimizations for backedge insertion currently implemented and the split backedge flag which is currently off by default.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228617
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Mon, 9 Feb 2015 22:07:49 +0000 (22:07 +0000)]
Revert "Raising minimum required CMake version to 2.8.12.2."
This reverts commit
add62ac537d8249fa2161405066e318ca80e199d.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228616
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Mon, 9 Feb 2015 22:05:07 +0000 (22:05 +0000)]
Raising minimum required CMake version to 2.8.12.2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228615
91177308-0d34-0410-b5e6-
96231b3b80d8
Colin LeMahieu [Mon, 9 Feb 2015 21:56:37 +0000 (21:56 +0000)]
[Hexagon] Removing more V4 predicates since V4 is the required minimum.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228614
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Mon, 9 Feb 2015 21:50:31 +0000 (21:50 +0000)]
Minor test cleanup
a) add gc attribute
b) remove unused param
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228612
91177308-0d34-0410-b5e6-
96231b3b80d8
Ramkumar Ramachandra [Mon, 9 Feb 2015 21:50:03 +0000 (21:50 +0000)]
MemDerefPrinter: Require DataLayoutPass for higher accuracy
Without a valid data layout, deferenceable(N) doesn't get parsed or
propagated. Since this is the key item we are testing, add a dependency
on the pass.
Differential Revision: http://reviews.llvm.org/D7508
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228611
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Mon, 9 Feb 2015 21:48:05 +0000 (21:48 +0000)]
Add basic tests for PlaceSafepoints
This is just adding really simple tests which should have been part of the original submission. When doing so, I discovered that I'd mistakenly removed required pieces when preparing the patch for upstream submission. I fixed two such bugs in this submission.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228610
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Mon, 9 Feb 2015 21:30:05 +0000 (21:30 +0000)]
Verifier: Const-qualify Metadata, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228609
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Mon, 9 Feb 2015 21:26:34 +0000 (21:26 +0000)]
IR: Document horrible abuse of loose DIDescriptor, NFC
I'll circle back and fix this somehow; for now I just don't want to
forget about it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228608
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Mon, 9 Feb 2015 21:23:34 +0000 (21:23 +0000)]
IR: Remove dead code in DITemplate*
These are never referenced or filled in.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228607
91177308-0d34-0410-b5e6-
96231b3b80d8
Ramkumar Ramachandra [Mon, 9 Feb 2015 21:08:03 +0000 (21:08 +0000)]
isDereferenceablePointer: look through gc.relocate calls
While a theoretical GC might change dereferenceability on collection,
there is no such known collector and no need to account for the case
with a flag yet.
Differential Revision: http://reviews.llvm.org/D7454
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228606
91177308-0d34-0410-b5e6-
96231b3b80d8
Colin LeMahieu [Mon, 9 Feb 2015 21:07:35 +0000 (21:07 +0000)]
[Hexagon] Removing v2-4 flags. V4 is the minimum supported version.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228605
91177308-0d34-0410-b5e6-
96231b3b80d8
Ben Langmuir [Mon, 9 Feb 2015 20:34:24 +0000 (20:34 +0000)]
Reduce the LockFileManager timeout, and provide unsafeRemoveLockFile
5 minutes is an eternity, so try to strike a better balance between
waiting long enough for any reasonable module build and not so long that
users kill the process because they think it's hanging.
Also give the client a way to delete the lock file after a timeout.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228603
91177308-0d34-0410-b5e6-
96231b3b80d8
Colin LeMahieu [Mon, 9 Feb 2015 20:33:46 +0000 (20:33 +0000)]
[Hexagon] Factoring classes out of store patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228602
91177308-0d34-0410-b5e6-
96231b3b80d8
Colin LeMahieu [Mon, 9 Feb 2015 20:03:42 +0000 (20:03 +0000)]
[Hexagon] Formatting v5 TD file. Removing commented defs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228598
91177308-0d34-0410-b5e6-
96231b3b80d8
Ramkumar Ramachandra [Mon, 9 Feb 2015 19:49:54 +0000 (19:49 +0000)]
MemDepPrinter: cleanup a few loops (NFC)
Make use of the newly introduced inst_range to clean up two loops. Clean
up a third one while at it.
Differential Revision: http://reviews.llvm.org/D7455
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228596
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Mon, 9 Feb 2015 19:39:00 +0000 (19:39 +0000)]
Address post-commit review for rL228587: make it explicit that the
<NW> bit of a SCEVAddRecExpr does not depend on the sign of the step
and the start value of the step.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228595
91177308-0d34-0410-b5e6-
96231b3b80d8
Colin LeMahieu [Mon, 9 Feb 2015 19:24:44 +0000 (19:24 +0000)]
[Hexagon] Cleaning up definition formatting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228593
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Mon, 9 Feb 2015 18:44:42 +0000 (18:44 +0000)]
Clarify the wording on what it means for a SCEVAddRecExpr to be <NW>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228587
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Mon, 9 Feb 2015 18:34:55 +0000 (18:34 +0000)]
Bugfix: SCEV incorrectly marks certain add recurrences as nsw
When creating a scev for sext({X,+,Y}), scev checks if the expression
is equivalent to {sext X,+,zext Y}. If it can prove that, it also
tags the original {X,+,Y} as <nsw>, which is not correct.
In the test case I run `-scalar-evolution` twice because the bug
manifests only once SCEV has run through and seen the `sext`
expressions (and then does a in-place mutation on {X,+,Y}).
Differential Revision: http://reviews.llvm.org/D7495
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228586
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 9 Feb 2015 18:16:43 +0000 (18:16 +0000)]
[Orc] Revert r228567 (GCC ICE workaround) - it doesn't seem to have helped.
As far as I can tell r228568 was the right workaround, and r228567 was
unnecessary. If reverting this causes problems on the bots I'll reinstate it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228585
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 9 Feb 2015 17:17:09 +0000 (17:17 +0000)]
fixed to test features, not CPUs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228581
91177308-0d34-0410-b5e6-
96231b3b80d8
Kit Barton [Mon, 9 Feb 2015 17:03:18 +0000 (17:03 +0000)]
This change implements the following three logical vector operations:
veqv (vector equivalence)
vnand
vorc
I increased the AddedComplexity for these instructions to 500 to ensure they are generated instead of issuing other VSX instructions.
Phabricator review: http://reviews.llvm.org/D7469
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228580
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 9 Feb 2015 16:30:58 +0000 (16:30 +0000)]
rename variable to give it some meaning; remove obvious comments; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228579
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 9 Feb 2015 16:04:52 +0000 (16:04 +0000)]
fix comment that didn't match the code; remove unnecessary braces; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228578
91177308-0d34-0410-b5e6-
96231b3b80d8
Johannes Doerfert [Mon, 9 Feb 2015 12:34:23 +0000 (12:34 +0000)]
Allow ScalarEvolution to catch more min/max cases
For the attached test case different types are used in the ICmpInst
and SelectInst that represent the min/max expressions. However, if the
ICmpInst type is smaller a comparison with the sign/zero extended
operands would have yielded the same result. This situation might
arise after the instruction combination pass was applied.
Differential Revision: http://reviews.llvm.org/D7338
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228572
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 9 Feb 2015 07:47:32 +0000 (07:47 +0000)]
[Orc] Try another workaround for the GCC 4.7.2 ICE introduced in r228557. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228568
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 9 Feb 2015 07:22:56 +0000 (07:22 +0000)]
[Orc] Tweak lambda capture lists to try to avoid an ICE on gcc-4.7.2. NFC.
Apparently gcc-4.7.2 is touchy about 'this' appearing in a lambda capture list
along with other captures. I've rewritten my captures to try to avoid the issue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228567
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Mon, 9 Feb 2015 06:38:23 +0000 (06:38 +0000)]
Fix a bug in DemoteRegToStack where a reload instruction was inserted into the
wrong basic block.
This would happen when the result of an invoke was used by a phi instruction
in the invoke's normal destination block. An instruction to reload the invoke's
value would get inserted before the critical edge was split and a new basic
block (which is the correct insertion point for the reload) was created. This
commit fixes the bug by splitting the critical edge before all the reload
instructions are inserted.
Also, hoist up the code which computes the insertion point to the only place
that need that computation.
rdar://problem/
15978721
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228566
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Mon, 9 Feb 2015 06:31:31 +0000 (06:31 +0000)]
MC: Calculate intra-section symbol differences correctly for COFF
This fixes PR22060.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228565
91177308-0d34-0410-b5e6-
96231b3b80d8