Saleem Abdulrasool [Wed, 21 May 2014 05:15:01 +0000 (05:15 +0000)]
MC: mark COFF .drectve section as REMOVE
The .drectve section should be marked as IMAGE_SCN_LNK_REMOVE. This matches what
the MSVC toolchain does and accurately reflects that this section should not be
emitted into the final binary. This section is merely information for the
linker, comprising of additional linker directives.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209273
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Wed, 21 May 2014 02:46:14 +0000 (02:46 +0000)]
[modules] Add module maps for LLVM. These are not quite ready for prime-time
yet, but only a few more Clang patches need to land. (I have 'ninja check'
passing locally.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209269
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Wed, 21 May 2014 01:25:24 +0000 (01:25 +0000)]
ARM: correct bundle generation for MOV32T relocations
Although the previous code would construct a bundle and add the correct elements
to it, it would not finalise the bundle. This resulted in the InternalRead
markers not being added to the MachineOperands nor, more importantly, the
externally visible defs to the bundle itself. So, although the bundle was not
exposing the def, the generated code would be correct because there was no
optimisations being performed. When optimisations were enabled, the post
register allocator would kick in, and the hazard recognizer would reorder
operations around the load which would define the value being operated upon.
Rather than manually constructing the bundle, simply construct and finalise the
bundle via the finaliseBundle call after both MIs have been emitted. This
improves the code generation with optimisations where IMAGE_REL_ARM_MOV32T
relocations are emitted.
The changes to the other tests are the result of the bundle generation
preventing the scheduler from hoisting the moves across the loads. The net
effect of the generated code is equivalent, but, is much more identical to what
is actually being lowered.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209267
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 21 May 2014 00:20:01 +0000 (00:20 +0000)]
This command line option is only used in one place. Move it there and
rename it to something more descriptive.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209263
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 21 May 2014 00:02:50 +0000 (00:02 +0000)]
Add a comment here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209262
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 20 May 2014 23:59:54 +0000 (23:59 +0000)]
Move this test to the backend from the frontend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209259
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 20 May 2014 23:59:50 +0000 (23:59 +0000)]
Move the verbose asm option to be part of the options struct and
set appropriately.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209258
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Tue, 20 May 2014 23:04:47 +0000 (23:04 +0000)]
Update MachOObjectFile::getSymbolAddress so it returns UnknownAddressOrSize
for undefined symbols, so it matches what COFFObjectFile::getSymbolAddress
does. This allows llvm-nm to print spaces instead of 0’s for the value
of undefined symbols in Mach-O files.
To make this change other uses of MachOObjectFile::getSymbolAddress
are updated to handle when the Value is returned as UnknownAddressOrSize.
Which is needed to keep two of the ExecutionEngine tests working for example.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209253
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Tue, 20 May 2014 22:40:31 +0000 (22:40 +0000)]
Fix test added in r209242: llc shouldn't create files in source tree
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209252
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 20 May 2014 22:33:09 +0000 (22:33 +0000)]
Revert "DebugInfo: Assume all subprogram DIEs have been created before any abstract subprograms are constructed."
This reverts commit r209178.
This seems to be asserting in an LTO build on some internal Apple
buildbots. No upstream reproduction (and I don't have an LLVM-aware gold
built right now to reproduce it personally) but it's a small patch & the
failure's semi-plausible so I'm going to revert first while I try to
reproduce this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209251
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Tue, 20 May 2014 21:47:07 +0000 (21:47 +0000)]
[ARM64] PR19792: Fix cycle in DAG after performPostLD1Combine
Povray and dealII currently assert with "Overran sorted position" in
AssignTopologicalOrder. The problem is that performPostLD1Combine can
introduce cycles.
Consider:
(insert_vector_elt (INSERT_SUBREG undef,
(load (add %vreg0, Constant<8>), undef), <= A
TargetConstant<2>),
(load %vreg0, undef), <= B
Constant<1>)
This is turned into a LD1LANEpost node. However the address in A is not a
valid user of the post-incremented address of B in LD1LANEpost.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209242
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 20 May 2014 21:40:13 +0000 (21:40 +0000)]
Unbreak the sanitizer buildbots after r209226 due to SROA issue described in reviews.llvm.org/D3714
Undecided whether this should include a test case - SROA produces bad
dbg.value metadata describing a value for a reference that is actually
the value of the thing the reference refers to. For now, loosening the
assert lets this not assert, but it's still bogus/wrong output...
If someone wants to tell me to add a test, I'm willing/able, just
undecided. Hopefully we'll get SROA fixed soon & we can tighten up this
assertion again.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209240
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 20 May 2014 21:25:34 +0000 (21:25 +0000)]
Move the function and data section flags into the options struct and
make the functions to set them non-static.
Move and rename the llvm specific backend options to avoid conflicting
with the clang option.
Paired with a backend commit to update.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209238
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Tue, 20 May 2014 21:10:15 +0000 (21:10 +0000)]
Revert r209235 as it broke two tests:
Failing Tests (2):
LLVM :: ExecutionEngine/MCJIT/stubs-sm-pic.ll
LLVM :: ExecutionEngine/MCJIT/stubs.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209236
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Tue, 20 May 2014 20:32:18 +0000 (20:32 +0000)]
Update MachOObjectFile::getSymbolAddress so it returns UnknownAddressOrSize
for undefined symbols. Allowing llvm-nm to print spaces instead of 0’s for
the value of undefined symbols in Mach-O files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209235
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 20 May 2014 19:25:04 +0000 (19:25 +0000)]
[LSR] Canonicalize reg1 + ... + regN into reg1 + ... + 1*regN.
This commit introduces a canonical representation for the formulae.
Basically, as soon as a formula has more that one base register, the scaled
register field is used for one of them. The register put into the scaled
register is preferably a loop variant.
The commit refactors how the formulae are built in order to produce such
representation.
This yields a more accurate, but still perfectible, cost model.
<rdar://problem/
16731508>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209230
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Tue, 20 May 2014 19:00:58 +0000 (19:00 +0000)]
GlobalValue: Automatically reset visibility when setting local linkage
r208264 started asserting in `setLinkage()` and `setVisibility()` that
visibility and linkage are compatible. There are a few places in clang
where visibility is set first, and then linkage later, so the assert
fires. In `setLinkage()`, it's clear what the visibility *should* be,
so rather than updating all the call sites just automatically fix the
visibility.
The testcase for this is for *clang*, so it'll follow separately in cfe.
PR19760
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209227
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 20 May 2014 18:36:35 +0000 (18:36 +0000)]
Fix test breakage introduced in r209223.
Oops, broke the broken enum constants again.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209226
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Tue, 20 May 2014 18:34:54 +0000 (18:34 +0000)]
Rewrite calculateDbgValueHistory to make it (hopefully) more transparent.
This change preserves the original algorithm of generating history
for user variables, but makes it more clear.
High-level description of algorithm:
Scan all the machine basic blocks and machine instructions in the order
they are emitted to the object file. Do the following:
1) If we see a DBG_VALUE instruction, add it to the history of the
corresponding user variable. Keep track of all user variables, whose
locations are described by a register.
2) If we see a regular instruction, look at all the registers it clobbers,
and terminate the location range for all variables described by these registers.
3) At the end of the basic block, terminate location ranges for all
user variables described by some register.
Although this change shouldn't be user-visible (the contents of .debug_loc section
should be the same), it changes some internal assumptions about the set
of instructions used to track the variable locations. Watching the bots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209225
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 20 May 2014 18:21:51 +0000 (18:21 +0000)]
PR19767: DebugInfo emission of pointer constants.
In refactoring DwarfUnit::isUnsignedDIType I restricted it to only work
on values with signedness (unsigned or signed), asserting on anything
else (which did uncover some bugs). But it turns out that we do need to
emit constants of signless data, such as pointer constants - only null
pointer constants are known to need this so far, but it's conceivable
that there might be non-null pointer constants at some point (hardcoded
address offsets for device drivers?).
This patch just uses 'unsigned' for signless data such as pointer
constants. Arguably we could use signless representations
(DW_FORM_dataN) instead, allowing a trinary result from isUnsignedDIType
(signed, unsigned, signless), but this seems reasonable for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209223
91177308-0d34-0410-b5e6-
96231b3b80d8
Renato Golin [Tue, 20 May 2014 17:40:03 +0000 (17:40 +0000)]
Avoids DCE on write_register
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209222
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Tue, 20 May 2014 17:20:34 +0000 (17:20 +0000)]
[PowerPC] PR19796: Also match ISD::TargetConstant in isIntS16Immediate
The SplitIndexingFromLoad changes exposed a latent isel bug in the PowerPC64
backend. We matched an immediate offset with STWX8 even though it only
supports register offset.
The culprit is the complex-pattern predicate, SelectAddrIdx, which decides
that if the offset is not ISD::Constant it must be a register.
Many thanks to Bill Schmidt for testing this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209219
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 20 May 2014 17:11:11 +0000 (17:11 +0000)]
Clean up language and grammar.
Based on a patch by jfcaron3@gmail.com!
PR19806
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209216
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Tue, 20 May 2014 14:46:24 +0000 (14:46 +0000)]
Temporarily revert: r209129 - [mips][mips64r6] Sorted *_ENC, *_DESC classes and tests
After discussion with Zoran, we have decided to temporarily revert this commit.
It's causing some difficult to resolve conflicts and we are under time pressure
to deliver an initial MIPS64r6 compiler.
We will re-apply an equivalent patch once the time pressure has passed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209211
91177308-0d34-0410-b5e6-
96231b3b80d8
Bradley Smith [Tue, 20 May 2014 13:33:41 +0000 (13:33 +0000)]
[ARM64] Port basic-a64-diagnostics.s over to ARM64
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209207
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Tue, 20 May 2014 11:52:46 +0000 (11:52 +0000)]
TableGen: permit non-leaf ComplexPattern uses
This allows the results of a ComplexPattern check to be distributed to separate
named Operands, instead of the current system where all results must apply (and
match perfectly) with a single Operand.
For example, if "some_addrmode" is a ComplexPattern producing two results, you
can write:
def : Pat<(load (some_addrmode GPR64:$base, imm:$offset)),
(INST GPR64:$base, imm:$offset)>;
This should allow neater instruction definitions in TableGen that don't put all
possible aspects of addressing into a single operand, but are still usable with
relatively simple C++ CodeGen idioms.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209206
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Tue, 20 May 2014 10:23:04 +0000 (10:23 +0000)]
Add parentheses to suppress the gcc warning '-Wparentheses'.
No functional changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209203
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 20 May 2014 09:42:31 +0000 (09:42 +0000)]
Legalizer: Make bswap promotion safe for vectors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209202
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Tue, 20 May 2014 09:27:49 +0000 (09:27 +0000)]
[Mips] Add more relocation types and MIPS specific e_flags constants.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209201
91177308-0d34-0410-b5e6-
96231b3b80d8
Christian Pirker [Tue, 20 May 2014 09:24:37 +0000 (09:24 +0000)]
ARMEB: Additional test files for ARM fixups
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209200
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Tue, 20 May 2014 09:17:16 +0000 (09:17 +0000)]
TableGen: convert InstAlias's Emit bit to an int.
When multiple aliases overlap, the correct string to print can often be
determined purely by considering the InstAlias declarations in some particular
order. This allows the user to specify that order manually when desired,
without resorting to hacking around with the default lexicographical order on
Record instantiation, which is error-prone and ugly.
I was also mistaken about "add w2, w3, w4" being the same as "add w2, w3, w4,
uxtw". That's only true if Rn is the stack pointer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209199
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Volkov [Tue, 20 May 2014 08:55:50 +0000 (08:55 +0000)]
[X86] Tune LEA usage for Silvermont
According to Intel Software Optimization Manual on Silvermont in some cases LEA
is better to be replaced with ADD instructions:
"The rule of thumb for ADDs and LEAs is that it is justified to use LEA
with a valid index and/or displacement for non-destructive destination purposes
(especially useful for stack offset cases), or to use a SCALE.
Otherwise, ADD(s) are preferable."
Differential Revision: http://reviews.llvm.org/D3826
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209198
91177308-0d34-0410-b5e6-
96231b3b80d8
Zinovy Nis [Tue, 20 May 2014 08:26:20 +0000 (08:26 +0000)]
[LV][REFACTOR] One more tiny fix for printing debug locations in loop vectorizer. Now consistent with the remarks emitter.
Differential Revision: http://reviews.llvm.org/D3821
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209197
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Tue, 20 May 2014 05:18:06 +0000 (05:18 +0000)]
llvm-readobj: use range-based for loop
Convert an additional site to a range based for loop. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209194
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 20 May 2014 05:13:21 +0000 (05:13 +0000)]
Teach isKnownNonNull that a nonnull return is not null. Add a test for this case as well as the case of a nonnull attribute (already handled but not tested).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209193
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 20 May 2014 03:23:24 +0000 (03:23 +0000)]
DebugInfo: Emit function definitions within their namespace scope.
This workaround (presumably for ancient GDB) doesn't appear to be
required (GDB 7.5 seems to tolerate function definition DIEs in
namespace scope just fine).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209189
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 20 May 2014 02:40:34 +0000 (02:40 +0000)]
Follow up to 209187, updating a test to use FileCheck. Needed to ignore an extra DW_TAG_class_type
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209188
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 20 May 2014 02:19:15 +0000 (02:19 +0000)]
Update test/DebugInfo/2010-04-06-NestedFnDbgInfo.ll to use FileCheck.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209187
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 20 May 2014 01:23:40 +0000 (01:23 +0000)]
Add 'nonnull', a new parameter and return attribute which indicates that the pointer is not null. Instcombine will elide comparisons between these and null. Patch by Luqman Aden!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209185
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Mon, 19 May 2014 23:41:25 +0000 (23:41 +0000)]
LTO: Add a testcase for linking modules with incompatible Debug Info
Versions.
rdar://problem/
16926122
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209183
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Mon, 19 May 2014 23:26:51 +0000 (23:26 +0000)]
OK, NAKAMURA Takumi beat me to this change. So backing out my addition of
llvm-size to the list so it only has one. Sorry for the noise.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209181
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Mon, 19 May 2014 23:22:58 +0000 (23:22 +0000)]
David Blaikie pointed out that the test added in r209158 fails in the
check-llvm target under CMake. And the test/CMakeFiles.txt needs to
have llvm-size added to the list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209179
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 19 May 2014 23:16:19 +0000 (23:16 +0000)]
DebugInfo: Assume all subprogram DIEs have been created before any abstract subprograms are constructed.
Since we visit the whole list of subprograms for each CU at module
start, this is clearly true - don't test for the case, just assert it.
A few old test cases seemed to have incomplete subprogram lists, but any
attempt to reproduce them shows full subprogram lists that even include
entities that have been completely inlined and the out of line
definition removed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209178
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 19 May 2014 23:12:43 +0000 (23:12 +0000)]
[CMake] Add llvm-size to check-llvm, to fix build since r209158.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209177
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 19 May 2014 22:59:51 +0000 (22:59 +0000)]
[ARM64] Adds Cortex-A53 scheduling support for vector load/store post.
Patch by Dave Estes<cestes@codeaurora.org>!
PR19761 http://reviews.llvm.org/D3829
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209176
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 19 May 2014 22:55:35 +0000 (22:55 +0000)]
Remove unused method declaration
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209174
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Mon, 19 May 2014 22:53:29 +0000 (22:53 +0000)]
Add documentation for llvm-dwarfdump tool
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209173
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 19 May 2014 22:07:16 +0000 (22:07 +0000)]
DebugInfo: Don't include DW_AT_inline on each abstract definition multiple times.
When I refactored this in r208636 I accidentally caused this to be added
multiple times to each abstract subprogram (not accounting for the
deduplicating effect of the InlinedSubprogramDIEs set).
This got better in r208798 when the abstract definitions got the
attribute added to them at construction time, but still had the
redundant copies introduced in r208636.
This commit removes those excess DW_AT_inlines and relies solely on the
insertion in r208798.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209166
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 19 May 2014 21:54:31 +0000 (21:54 +0000)]
DebugInfo: Fix missing inlined_subroutines caused by r208748.
The check in DwarfDebug::constructScopeDIE was meant to consider inlined
subroutines as any non-top-level scope that was a subprogram. Instead of
checking "not top level scope" it was checking if the /subprogram's/
scope was non-top-level.
Fix this and beef up a test case to demonstrate some of the missing
inlined_subroutines are no longer missing.
In the course of fixing this I also found that r208748 (with this fix)
found one /extra/ inlined_subroutine in concrete_out_of_line.ll due to
two inlined_subroutines having the same inlinedAt location. The previous
implementation was collapsing these into a single inlined subroutine.
I'm not sure what the original code was that created this .ll file so
I'm not sure if this actually happens in practice today. Since we
deliberately include column information to disambiguate two calls on the
same line, that may've addressed this bug in the frontend, but it's good
to know that workaround isn't necessary for this particular case
anymore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209165
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 19 May 2014 21:18:47 +0000 (21:18 +0000)]
Fix typos.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209164
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 19 May 2014 21:13:41 +0000 (21:13 +0000)]
cmake: Remove -D NDEBUG from CFLAGS as well as CXXFLAGS
This silences ~7 warnings on .c files in the LLVM build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209163
91177308-0d34-0410-b5e6-
96231b3b80d8
Juergen Ributzka [Mon, 19 May 2014 21:00:53 +0000 (21:00 +0000)]
[ConstantHoisting][X86] Change the cost model to never hoist constants for types larger than i128.
Currently the X86 backend doesn't support types larger than i128 very well. For
example an i192 multiply will assert in codegen when the 2nd argument is a constant and the constant got hoisted.
This fix changes the cost model to never hoist constants for types larger than
i128. Once the codegen issues have been resolved, the cost model can be updated
to allow also larger types.
This is related to <rdar://problem/
16954938>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209162
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Mon, 19 May 2014 20:38:59 +0000 (20:38 +0000)]
[X86] Add ISel patterns to improve the selection of TZCNT and LZCNT.
Instructions TZCNT (requires BMI1) and LZCNT (requires LZCNT), always
provide the operand size as output if the input operand is zero.
We can take advantage of this knowledge during instruction selection
stage in order to simplify a few corner case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209159
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Mon, 19 May 2014 20:36:02 +0000 (20:36 +0000)]
Implement MachOObjectFile::isSectionData() and MachOObjectFile::isSectionBSS
so that llvm-size will total up all the sections in the Berkeley format. This
allows for rough categorizations for Mach-O sections. And allows the total of
llvm-size’s Berkeley and System V formats to be the same.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209158
91177308-0d34-0410-b5e6-
96231b3b80d8
Filipe Cabecinhas [Mon, 19 May 2014 19:45:57 +0000 (19:45 +0000)]
Added more insertps optimizations
Summary:
When inserting an element that's coming from a vector load or a broadcast
of a vector (or scalar) load, combine the load into the insertps
instruction.
Added PerformINSERTPSCombine for the case where we need to fix the load
(load of a vector + insertps with a non-zero CountS).
Added patterns for the broadcasts.
Also added tests for SSE4.1, AVX, and AVX2.
Reviewers: delena, nadav, craig.topper
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D3581
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209156
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 19 May 2014 19:38:48 +0000 (19:38 +0000)]
Fix testers by removing dubious testcase for r209154.
It turns out that not all the world is x86-64. Who knew?
I'll get to work on a more appropriate test case for this patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209155
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 19 May 2014 19:21:25 +0000 (19:21 +0000)]
[RuntimeDyld] Fix x86-64 MachO GOT relocation handling.
For GOT relocations the addend should modify the offset to the
GOT entry, not the value of the entry itself. Teach RuntimeDyldMachO
to do The Right Thing here.
Fixes <rdar://problem/
16961886>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209154
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Mon, 19 May 2014 18:45:32 +0000 (18:45 +0000)]
Kill symbolization functionality in llvm-dwarfdump. We have llvm-symbolizer for that.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209152
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Mon, 19 May 2014 18:25:54 +0000 (18:25 +0000)]
Check the alwaysinline attribute on the call as well as on the caller.
Differential Revision: http://reviews.llvm.org/D3815
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209150
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 19 May 2014 17:52:48 +0000 (17:52 +0000)]
Use range for
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209147
91177308-0d34-0410-b5e6-
96231b3b80d8
Jyotsna Verma [Mon, 19 May 2014 16:22:11 +0000 (16:22 +0000)]
reverting r209132
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209139
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Mon, 19 May 2014 16:13:28 +0000 (16:13 +0000)]
MemoryBuffer: Use GetNativeSystemInfo()
Removes old 4096 byte workaround. This functionality has been available since
Windows XP.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209137
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 19 May 2014 16:04:10 +0000 (16:04 +0000)]
Revert "Patch for function cloning to inline all blocks whose address is taken"
as it was causing build failures in ruby.
This reverts commit r207713.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209135
91177308-0d34-0410-b5e6-
96231b3b80d8
Bradley Smith [Mon, 19 May 2014 15:58:15 +0000 (15:58 +0000)]
[ARM64] Split tbz/tbnz into W/X register variant
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209134
91177308-0d34-0410-b5e6-
96231b3b80d8
Jyotsna Verma [Mon, 19 May 2014 15:32:07 +0000 (15:32 +0000)]
Hexagon: Add encoding bits to the mpy instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209132
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Mon, 19 May 2014 14:57:46 +0000 (14:57 +0000)]
[mips][mips64r6] Sorted *_ENC, *_DESC classes and tests
Differential Revision: http://reviews.llvm.org/D3808
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209129
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 19 May 2014 14:29:04 +0000 (14:29 +0000)]
Resolving MSVC warnings about switch statements with a default label, but no case labels. No functional changes intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209126
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 19 May 2014 13:48:08 +0000 (13:48 +0000)]
Flip on vectorization of bswap intrinsics.
The cost model conservatively assumes that it will always get scalarized and
that's about as good as we can get with the generic TTI; reasoning whether a
shuffle with an efficient lowering is available is hard. We can override that
conservative estimate for some targets in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209125
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 19 May 2014 13:12:38 +0000 (13:12 +0000)]
SDAG: Legalize vector BSWAP into a shuffle if the shuffle is legal but the bswap not.
- On ARM/ARM64 we get a vrev because the shuffle matching code is really smart. We still unroll anything that's not v4i32 though.
- On X86 we get a pshufb with SSSE3. Required more cleverness in isShuffleMaskLegal.
- On PPC we get a vperm for v8i16 and v4i32. v2i64 is unrolled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209123
91177308-0d34-0410-b5e6-
96231b3b80d8
Dinesh Dwivedi [Mon, 19 May 2014 07:08:32 +0000 (07:08 +0000)]
Added inst-combine for 'MIN(MIN(A, 97), 23)' and 'MAX(MAX(A, 23), 97)'
This removes TODO added in r208849 [http://reviews.llvm.org/D3629]
MIN(MIN(A, 97), 23) -> MIN(A, 23)
MAX(MAX(A, 23), 97) -> MAX(A, 97)
Differential Revision: http://reviews.llvm.org/D3785
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209110
91177308-0d34-0410-b5e6-
96231b3b80d8
Filipe Cabecinhas [Mon, 19 May 2014 04:47:12 +0000 (04:47 +0000)]
Change the blend tests to AVX, not AVX2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209107
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 19 May 2014 04:43:26 +0000 (04:43 +0000)]
Reformat blank lines.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209106
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 19 May 2014 04:43:03 +0000 (04:43 +0000)]
Whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209105
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 18 May 2014 21:55:38 +0000 (21:55 +0000)]
Remove last uses of OwningPtr from llvm. As far as I can tell these method versions are not used by lldb, lld, or clang.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209103
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 18 May 2014 21:01:46 +0000 (21:01 +0000)]
Use std::unique_ptr instead of OwningPtr in the MemoryBuffer unittests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209102
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Sun, 18 May 2014 16:39:11 +0000 (16:39 +0000)]
ARM: make libcall setup more table driven
Rather than create a series of function calls to setup the library calls, create
a table with the information and just use the table to drive the configuration
of the library calls. This makes it easier to both inspect the list as well as
to modify it. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209089
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 18 May 2014 15:14:13 +0000 (15:14 +0000)]
Options: Use erase_if to remove Args from the list.
While there make getOption return a const reference so we don't have to put it
on the stack when calling methods on it. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209088
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Sun, 18 May 2014 04:12:52 +0000 (04:12 +0000)]
ARM: improve WoA ABI conformance for frame register
Windows on ARM uses R11 for the frame pointer even though the environment is a
pure Thumb-2, thumb-only environment. Replicate this behaviour to improve
Windows ABI compatibility. This register is used for fast stack walking, and
thus is part of the Windows ABI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209085
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Sun, 18 May 2014 03:18:09 +0000 (03:18 +0000)]
ARM: consolidate frame pointer register knowledge
Use the ARMBaseRegisterInfo to query the frame register. The base register info
is aware of the frame register that is used for the frame pointer. Use that to
determine the frame register rather than duplicating the knowledge. Although,
the code path is slightly different in that it may return SP, that can only
occur if the frame pointer has been omitted in the machine function, which is
supposed to contain the desired value in that case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209084
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Sat, 17 May 2014 21:50:17 +0000 (21:50 +0000)]
Target: remove old constructors for CallLoweringInfo
This is mostly a mechanical change changing all the call sites to the newer
chained-function construction pattern. This removes the horrible 15-parameter
constructor for the CallLoweringInfo in favour of setting properties of the call
via chained functions. No functional change beyond the removal of the old
constructors are intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209082
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Sat, 17 May 2014 21:50:06 +0000 (21:50 +0000)]
Target: add support to build CallLoweringInfo
Rather than introducing an auxiliary CallLoweringInfoBuilder, add the methods to
do chained function construction directly to CallLoweringInfo. This reduces the
monstrous 15-parameter constructor into a series of simpler (for some definition
of simpler) functions that control particular aspects of the call. The old
interfaces can be completely removed once callers are moved to the new chained
constructor pattern.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209081
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Sat, 17 May 2014 21:50:01 +0000 (21:50 +0000)]
Target: change member from reference to pointer
This is a preliminary step to help ease the construction of CallLoweringInfo.
Changing the construction to a chained function pattern requires that the
parameter be nullable. However, rather than copying the vector, save a pointer
rather than the reference to permit a late binding of the arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209080
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Sat, 17 May 2014 21:49:54 +0000 (21:49 +0000)]
ARM: whitespace
Remove some whitespace. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209079
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sat, 17 May 2014 21:29:57 +0000 (21:29 +0000)]
Use create methods since msvc doesn't handle delegating constructors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209076
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sat, 17 May 2014 21:00:22 +0000 (21:00 +0000)]
Handle ConstantAggregateZero when upgrading global_ctors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209075
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sat, 17 May 2014 19:57:46 +0000 (19:57 +0000)]
Reduce abuse of default values in the GlobalAlias constructor.
This is in preparation for adding an optional offset.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209073
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sat, 17 May 2014 14:39:21 +0000 (14:39 +0000)]
Revert r209049 and r209065, "Add support for combining GEPs across PHI nodes"
It broke clang selfhosting even after r209065.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209067
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sat, 17 May 2014 07:36:36 +0000 (07:36 +0000)]
MachO: Add comments describing section flags/attrs
When pruning superfluous MachO structure definitions, I chose to keep
the most generically useful which is why Support's definitions won over
the ones in MC.
However, the MC copy had some useful comments describing some of the
field values.
Bring these back to the copy in Support. While doing this, fill in some
of the underdocumented definitions as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209066
91177308-0d34-0410-b5e6-
96231b3b80d8
Louis Gerbarg [Sat, 17 May 2014 06:51:36 +0000 (06:51 +0000)]
Fix for sanitizer crash introduced in r209049
This patch fixes 3 issues introduced by r209049 that only showed up in on
the sanitizer buildbots. One was a typo in a compare. The other is a check to
confirm that the single differing value in the two incoming GEPs is the same
type. The final issue was the the IRBuilder under some circumstances would
build PHIs in the middle of the block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209065
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Sat, 17 May 2014 05:18:40 +0000 (05:18 +0000)]
Target: Replace getSection().empty() with hasSection()
No functional change, just a small cleanup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209064
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Sat, 17 May 2014 04:32:38 +0000 (04:32 +0000)]
test: fix copy-paste mistake
Accidental over-quoting of the match string.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209058
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Sat, 17 May 2014 04:28:08 +0000 (04:28 +0000)]
ARM: use the proper target object format for WoA
WoA uses COFF, not ELF. ARMISelLowering::createTLOF would previously return ELF
for any non-MachO platform. This was a missed site when the original change for
target format support for Windows on ARM was done.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209057
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Sat, 17 May 2014 03:29:20 +0000 (03:29 +0000)]
[x86] Fix a bad predicate I spotted by inspection -- pshufhw and pshuflw
were added in SSE2, no SSSE3. Found this while auditing all uses of
SSSE3 in the X86 target. I don't actually expect this to make
a significant difference on anything and I don't have any detailed test
cases but I updated the existing test cases that already covered some of
this code path.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209056
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Sat, 17 May 2014 00:07:48 +0000 (00:07 +0000)]
[DWARF parser] Teach DIContext to fetch short (non-linkage) function names for a given address.
Change --functions option in llvm-symbolizer tool to accept
values "none", "short" or "linkage". Update the tests and docs
accordingly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209050
91177308-0d34-0410-b5e6-
96231b3b80d8
Louis Gerbarg [Fri, 16 May 2014 23:47:24 +0000 (23:47 +0000)]
Add support for combining GEPs across PHI nodes
Currently LLVM will generally merge GEPs. This allows backends to use more
complex addressing modes. In some cases this is not happening because there
is PHI inbetween the two GEPs:
GEP1--\
|-->PHI1-->GEP3
GEP2--/
This patch checks to see if GEP1 and GEP2 are similiar enough that they can be
cloned (GEP12) in GEP3's BB, allowing GEP->GEP merging (GEP123):
GEP1--\ --\ --\
|-->PHI1-->GEP3 ==> |-->PHI2->GEP12->GEP3 == > |-->PHI2->GEP123
GEP2--/ --/ --/
This also breaks certain use chains that are preventing GEP->GEP merges that the
the existing instcombine would merge otherwise.
Tests included.
rdar://
15547484
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209049
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Fri, 16 May 2014 23:28:17 +0000 (23:28 +0000)]
Use a sized enum for MachineOperandType. No functionality change
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209048
91177308-0d34-0410-b5e6-
96231b3b80d8
Filipe Cabecinhas [Fri, 16 May 2014 22:47:58 +0000 (22:47 +0000)]
Added tests for the cost of lowering VSELECT instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209045
91177308-0d34-0410-b5e6-
96231b3b80d8
Filipe Cabecinhas [Fri, 16 May 2014 22:47:54 +0000 (22:47 +0000)]
Implemented special cases for PerformVSELECTCombine.
vselects with constant masks, after legalization, will get turned into
specialized shuffle_vectors so they can be matched to blend+imm
instructions.
Fixed some tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209044
91177308-0d34-0410-b5e6-
96231b3b80d8
Filipe Cabecinhas [Fri, 16 May 2014 22:47:49 +0000 (22:47 +0000)]
Lower vselects into X86ISD::BLENDI when appropriate.
LowerVSELECT will, if possible, generate a X86ISD::BLENDI DAG node if the
condition is constant and we can emit that instruction, given the
subtarget.
This is not enough for all cases. An additional SELECTCombine optimization
will be committed.
Fixed tests that were expecting variable blends but where a blend+imm can
be generated.
Added test where we can't emit blend+immediate.
Added avx2 blend+imm tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209043
91177308-0d34-0410-b5e6-
96231b3b80d8
Filipe Cabecinhas [Fri, 16 May 2014 22:47:43 +0000 (22:47 +0000)]
Implemented LowerVSELECT to custom lower some instructions.
No functionality change intended. The types that previously were set to
lower as Expand or Legal are doing the same thing with this lowering
function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209042
91177308-0d34-0410-b5e6-
96231b3b80d8