oota-llvm.git
9 years agoDebugInfo: Omit DW_AT_artificial on DW_TAG_formal_parameters in DW_TAG_inlined_subrou...
David Blaikie [Wed, 30 Apr 2014 22:41:33 +0000 (22:41 +0000)]
DebugInfo: Omit DW_AT_artificial on DW_TAG_formal_parameters in DW_TAG_inlined_subroutines.

They just don't need to be there - they're inherited from the abstract
definition. In theory I would like them to be inherited from the
declaration, but the DWARF standard doesn't quite say that... we can
probably do it anyway but I'm less confident about that so I'll leave it
for a separate commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207717 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoRestore condition incorrectly changed in r96289 to the older state.
Joerg Sonnenberger [Wed, 30 Apr 2014 22:40:27 +0000 (22:40 +0000)]
Restore condition incorrectly changed in r96289 to the older state.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207716 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoConvert more loops to range-based equivalents
Alexey Samsonov [Wed, 30 Apr 2014 22:17:38 +0000 (22:17 +0000)]
Convert more loops to range-based equivalents

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207714 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoPatch for function cloning to inline all blocks whose address is taken
Gerolf Hoflehner [Wed, 30 Apr 2014 22:05:02 +0000 (22:05 +0000)]
Patch for function cloning to inline all blocks whose address is taken

Not all address taken blocks get inlined. The reason is
that a blocks new address is known only when it is cloned. But e.g.
a branch instruction in a different block could need that address earlier
while it gets cloned. The solution is to collect the set of all
blocks that can potentially get inlined and compute a new block address
up front. Then clone and cleanup.

rdar://16427209

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207713 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoProvide a version of getSymbolOffset that returns false on error.
Rafael Espindola [Wed, 30 Apr 2014 21:51:13 +0000 (21:51 +0000)]
Provide a version of getSymbolOffset that returns false on error.

This simplifies ELFObjectWriter::SymbolValue a bit more. This new version
will also be used in the COFF writer to fix pr19147.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207711 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoSlightly simplify code in DwarfDebug::beginFunction
Alexey Samsonov [Wed, 30 Apr 2014 21:44:17 +0000 (21:44 +0000)]
Slightly simplify code in DwarfDebug::beginFunction

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207710 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMove logic for calculating DBG_VALUE history map into separate file/class.
Alexey Samsonov [Wed, 30 Apr 2014 21:34:11 +0000 (21:34 +0000)]
Move logic for calculating DBG_VALUE history map into separate file/class.

Summary: No functionality change.

Test Plan: llvm regression test suite.

Reviewers: dblaikie

Reviewed By: dblaikie

Subscribers: echristo, llvm-commits

Differential Revision: http://reviews.llvm.org/D3573

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207708 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMove a testcase from ELF to ARM64, incorrectly placed in r207627.
James Molloy [Wed, 30 Apr 2014 21:31:11 +0000 (21:31 +0000)]
Move a testcase from ELF to ARM64, incorrectly placed in r207627.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207706 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoEmit DW_AT_object_pointer once, on the declaration, for each function.
David Blaikie [Wed, 30 Apr 2014 21:29:41 +0000 (21:29 +0000)]
Emit DW_AT_object_pointer once, on the declaration, for each function.

This effectively reverts r164326, but adds some comments and
justification and ensures we /don't/ emit the DW_AT_object_pointer on
the (abstract and concrete) definitions. (while still preserving it on
standalone definitions involving ObjC Blocks)

This does increase the size of member function declarations from 7 to 11
bytes, unfortunately, but still seems like the Right Thing to do so that
callers that see only the declaration still have the information about
the object pointer. That said, I don't know what, if any, DWARF
consumers don't have a heuristic to guess this in the case of normal
C++ member functions - perhaps we can remove it entirely.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207705 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoDon't expect to find fpcmp and PerfectShuffle when running lit tests
Alexey Samsonov [Wed, 30 Apr 2014 21:26:35 +0000 (21:26 +0000)]
Don't expect to find fpcmp and PerfectShuffle when running lit tests

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207704 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoRemove unused field hash_state::seed.
Jay Foad [Wed, 30 Apr 2014 21:12:17 +0000 (21:12 +0000)]
Remove unused field hash_state::seed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207703 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[ARM64] Prevent bit extraction to be adjusted by following shift
Weiming Zhao [Wed, 30 Apr 2014 21:07:24 +0000 (21:07 +0000)]
[ARM64] Prevent bit extraction to be adjusted by following shift

For pattern like ((x >> C1) & Mask) << C2, DAG combiner may convert it
into (x >> (C1-C2)) & (Mask << C2), which makes pattern matching of ubfx
more difficult.
For example:
Given
  %shr = lshr i64 %x, 4
  %and = and i64 %shr, 15
  %arrayidx = getelementptr inbounds [8 x [64 x i64]]* @arr, i64 0, %i64 2, i64 %and
  %0 = load i64* %arrayidx
With current shift folding, it takes 3 instrs to compute base address:
  lsr x8, x0, #1
  and x8, x8, #0x78
  add x8, x9, x8

If using ubfx, it only needs 2 instrs:
  ubfx  x8, x0, #4, #4
  add x8, x9, x8, lsl #3

This fixes bug 19589

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207702 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix the clang-cl self-host build by defining ~DwarfDebug out of line
Reid Kleckner [Wed, 30 Apr 2014 20:34:31 +0000 (20:34 +0000)]
Fix the clang-cl self-host build by defining ~DwarfDebug out of line

DwarfDebug.h has a SmallVector member containing a unique_ptr of an
incomplete type.  MSVC doesn't have key functions, so the vtable and
dtor are emitted in AsmPrinter.cpp, where DwarfDebug's ctor is called.
AsmPrinter.cpp include DwarfUnit.h and doesn't get a complete definition
of DwarfTypeUnit.  We could fix the problem by including DwarfUnit.h in
DwarfDebug.h, but that would increase header bloat.  Instead, define
~DwarfDebug out of line.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207701 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAdd a testcase for r207627.
James Molloy [Wed, 30 Apr 2014 20:06:26 +0000 (20:06 +0000)]
Add a testcase for r207627.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207697 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoUse the new StringTableBuilder in yaml2elf
Hans Wennborg [Wed, 30 Apr 2014 19:38:09 +0000 (19:38 +0000)]
Use the new StringTableBuilder in yaml2elf

http://reviews.llvm.org/D3574

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207694 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoRevert r207571 - Add slp vectorization to LTO passes
Yi Jiang [Wed, 30 Apr 2014 19:27:24 +0000 (19:27 +0000)]
Revert r207571 - Add slp vectorization to LTO passes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207693 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[X86] Never hoist the shift value of a shift instruction.
Michael Zolotukhin [Wed, 30 Apr 2014 19:17:32 +0000 (19:17 +0000)]
[X86] Never hoist the shift value of a shift instruction.

There is no need to check if we want to hoist the immediate value of an
shift instruction. Simply return TCC_Free right away.

This change is like r206101, but for X86.

rdar://problem/16190769

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207692 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoConvert several loops over MachineFunction basic blocks to range-based loops
Alexey Samsonov [Wed, 30 Apr 2014 18:29:51 +0000 (18:29 +0000)]
Convert several loops over MachineFunction basic blocks to range-based loops

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207683 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[IPO/MergeFunctions] changes so it doesn't try to bitcast a struct return type but...
Carlo Kok [Wed, 30 Apr 2014 17:53:04 +0000 (17:53 +0000)]
[IPO/MergeFunctions] changes so it doesn't try to bitcast a struct return type but instead recreates it with insert/extract value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207679 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoIR: Conservatively verify inalloca arguments
David Majnemer [Wed, 30 Apr 2014 17:22:00 +0000 (17:22 +0000)]
IR: Conservatively verify inalloca arguments

Summary: Try to spot obvious mismatches with inalloca use.

Reviewers: rnk

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D3572

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207676 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoSimplify ELFObjectWriter::SymbolValue.
Rafael Espindola [Wed, 30 Apr 2014 16:59:35 +0000 (16:59 +0000)]
Simplify ELFObjectWriter::SymbolValue.

It now defers all offset computation to getSymbolOffset.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207674 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[mips] Add instruction alias (negu).
Matheus Almeida [Wed, 30 Apr 2014 16:53:49 +0000 (16:53 +0000)]
[mips] Add instruction alias (negu).

Summary: negu $reg is equivalent to negu $reg, $reg.

Reviewers: dsanders

Reviewed By: dsanders

Differential Revision: http://reviews.llvm.org/D3510

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207673 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[mips] Add instruction alias (sltu).
Matheus Almeida [Wed, 30 Apr 2014 16:29:56 +0000 (16:29 +0000)]
[mips] Add instruction alias (sltu).

Summary:
The pattern sltu $r1, $r2, $imm is found in handwritten assembly which
is just a shorthand version of sltui $r1, $r2, $imm.

Reviewers: dsanders

Reviewed By: dsanders

Differential Revision: http://reviews.llvm.org/D3508

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207671 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoELFObjectWriter: deduplicate suffices in strtab
Hans Wennborg [Wed, 30 Apr 2014 16:25:02 +0000 (16:25 +0000)]
ELFObjectWriter: deduplicate suffices in strtab

We already do this for shstrtab, so might as well do it for strtab. This
extracts the string table building code into a separate class. The idea
is to use it for other object formats too.

I mostly wanted to do this for the general principle, but it does save a
little bit on object file size. I tried this on a clang bootstrap and
saved 0.54% on the sum of object file sizes (1.14 MB out of 212 MB for
a release build).

Differential Revision: http://reviews.llvm.org/D3533

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207670 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoARM64: print fp immediates without using scientific notation.
Tim Northover [Wed, 30 Apr 2014 16:13:34 +0000 (16:13 +0000)]
ARM64: print fp immediates without using scientific notation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207669 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAArch64/ARM64: implement remaining TLS relocations (purely MC).
Tim Northover [Wed, 30 Apr 2014 16:13:26 +0000 (16:13 +0000)]
AArch64/ARM64: implement remaining TLS relocations (purely MC).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207668 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAArch64/ARM64: add specific diagnostic for MRS/MSR and enable tests.
Tim Northover [Wed, 30 Apr 2014 16:13:20 +0000 (16:13 +0000)]
AArch64/ARM64: add specific diagnostic for MRS/MSR and enable tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207667 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAArch64/ARM64: accept and print floating-point immediate 0 as "#0.0"
Tim Northover [Wed, 30 Apr 2014 16:13:07 +0000 (16:13 +0000)]
AArch64/ARM64: accept and print floating-point immediate 0 as "#0.0"

It's been decided that in the future, the floating-point immediate in
instructions like "fcmeq v0.2s, v1.2s, #0.0" will be canonically "0.0", which
has been implemented on AArch64 already but not ARM64.

This fixes that issue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207666 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoIR: Alloca clones should remember inalloca state
David Majnemer [Wed, 30 Apr 2014 16:12:21 +0000 (16:12 +0000)]
IR: Alloca clones should remember inalloca state

Pretty straightforward, we weren't propagating whether or not an
AllocaInst had 'inalloca' marked on it when it came time to clone it.

The inliner exposed this bug.  A reduced testcase is forthcoming.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207665 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[mips] Add instruction alias (dsll and dsrl).
Matheus Almeida [Wed, 30 Apr 2014 16:00:49 +0000 (16:00 +0000)]
[mips] Add instruction alias (dsll and dsrl).

Summary:
The pattern dsll/dsrl $rd, $rt, $rs is found in handwritten assembly which
is just a shorthand version of dsllv/dsrlv $rd, $rt, $rs.

Reviewers: dsanders

Reviewed By: dsanders

Differential Revision: http://reviews.llvm.org/D3486

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207664 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix a use of uninitialized memory in SmallVector's move-assignment operator.
Douglas Gregor [Wed, 30 Apr 2014 15:49:06 +0000 (15:49 +0000)]
Fix a use of uninitialized memory in SmallVector's move-assignment operator.

When we were moving from a larger vector to a smaller one but didn't
need to re-allocate, we would move-assign over uninitialized memory in
the target, then move-construct that same data again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207663 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoRelax the test a bit.
Rafael Espindola [Wed, 30 Apr 2014 15:32:21 +0000 (15:32 +0000)]
Relax the test a bit.

It is not relevant where the symbol and section names are stored, just their
values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207662 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoR600/SI: Use VALU instructions for copying i1 values
Tom Stellard [Wed, 30 Apr 2014 15:31:33 +0000 (15:31 +0000)]
R600/SI: Use VALU instructions for copying i1 values

We can't use SALU instructions for this since they ignore the EXEC mask
and are always executed.

This fixes several OpenCV tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207661 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoR600/SI: Teach moveToVALU how to handle some SMRD instructions
Tom Stellard [Wed, 30 Apr 2014 15:31:29 +0000 (15:31 +0000)]
R600/SI: Teach moveToVALU how to handle some SMRD instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207660 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[ARM64][fast-isel] Fast-isel doesn't know how to handle f128.
Chad Rosier [Wed, 30 Apr 2014 15:29:57 +0000 (15:29 +0000)]
[ARM64][fast-isel] Fast-isel doesn't know how to handle f128.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207659 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoRename the test, it is testing the symver directive.
Rafael Espindola [Wed, 30 Apr 2014 15:27:44 +0000 (15:27 +0000)]
Rename the test, it is testing the symver directive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207658 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[mips] Add instruction alias (sll and srl).
Matheus Almeida [Wed, 30 Apr 2014 15:23:04 +0000 (15:23 +0000)]
[mips] Add instruction alias (sll and srl).

Summary:
The pattern sll/srl $rd, $rt, $rs is found in handwritten assembly which
is just a shorthand version of sllv/srlv $rd, $rt, $rs.

Reviewers: dsanders

Reviewed By: dsanders

Differential Revision: http://reviews.llvm.org/D3483

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207657 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[mips] Fix MipsLongBranch pass to work when the offset from the branch to the
Sasa Stankovic [Wed, 30 Apr 2014 15:06:25 +0000 (15:06 +0000)]
[mips] Fix MipsLongBranch pass to work when the offset from the branch to the
target cannot be determined accurately. This is the case for NaCl where the
sandboxing instructions are added in MC layer, after the MipsLongBranch pass.
It is also the case when the code has inline assembly. Instead of calculating
offset in the MipsLongBranch pass, use %hi(sym1 - sym2) and %lo(sym1 - sym2)
expressions that are resolved during the fixup.

This patch also deletes microMIPS test file test/CodeGen/Mips/micromips-long-branch.ll
and implements microMIPS CHECKs in a much simpler way in a file
test/CodeGen/Mips/longbranch.ll, together with MIPS32 and MIPS64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207656 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[mips] Update tests with encoding information for slt, slti, sltiu and sltu.
Matheus Almeida [Wed, 30 Apr 2014 14:52:57 +0000 (14:52 +0000)]
[mips] Update tests with encoding information for slt, slti, sltiu and sltu.

Summary:
Also renamed non-portable register names (e.g. $t2) so that we don't end up
with a different encoding for what appears to be an equivalent instruction.

Reviewers: dsanders

Reviewed By: dsanders

Differential Revision: http://reviews.llvm.org/D3505

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207655 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoR600: Remove unused function AMDGPUSubtarget::getDefaultSize()
Tom Stellard [Wed, 30 Apr 2014 14:20:53 +0000 (14:20 +0000)]
R600: Remove unused function AMDGPUSubtarget::getDefaultSize()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207654 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[asan] Disable asm instrumentation on unsupported platforms.
Evgeniy Stepanov [Wed, 30 Apr 2014 14:04:31 +0000 (14:04 +0000)]
[asan] Disable asm instrumentation on unsupported platforms.

Only emit calls to compiler-rt asm routines on platforms where they are
present (currently limited to linux i386/x86_64).

Patch by Yuri Gorshenin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207651 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoARM64: enable AArch64's basic-a64-instructions test
Tim Northover [Wed, 30 Apr 2014 13:37:10 +0000 (13:37 +0000)]
ARM64: enable AArch64's basic-a64-instructions test

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207650 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoARM64: print lsr instead of lsrv for variable shifts (etc)
Tim Northover [Wed, 30 Apr 2014 13:37:07 +0000 (13:37 +0000)]
ARM64: print lsr instead of lsrv for variable shifts (etc)

The canonical syntax for shifts by a variable amount does not end with 'v', but
that syntax should be supported as an alias (presumably for legacy reasons).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207649 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoARM64: use 32-bit operations for uxtb & uxth
Tim Northover [Wed, 30 Apr 2014 13:37:02 +0000 (13:37 +0000)]
ARM64: use 32-bit operations for uxtb & uxth

Testing will be enabled shortly with basic-a64-instructions.s

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207648 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAArch64/ARM64: allow smaller granule relocations on MOVZ/MOVN
Tim Northover [Wed, 30 Apr 2014 13:36:59 +0000 (13:36 +0000)]
AArch64/ARM64: allow smaller granule relocations on MOVZ/MOVN

Testing will be enabled shortly with basic-a64-instructions.s

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207647 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAArch64/ARM64: copy support for bCC instead of b.CC across.
Tim Northover [Wed, 30 Apr 2014 13:36:56 +0000 (13:36 +0000)]
AArch64/ARM64: copy support for bCC instead of b.CC across.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207646 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAArch64/ARM64: expunge CPSR from the sources
Tim Northover [Wed, 30 Apr 2014 13:14:14 +0000 (13:14 +0000)]
AArch64/ARM64: expunge CPSR from the sources

AArch64 does not have a CPSR register in the same way that AArch32 does. Most
of its compiler-relevant roles have been taken over by the more specific NZCV
register (representing just the flags set by normal instructions).

Its system control functions still remain, but are now under the
pseudo-register referred to as "PSTATE". They're accessed via various MRS & MSR
instructions described in the reference manual.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207645 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAArch64/ARM64: use HS instead of CS & LO instead of CC.
Tim Northover [Wed, 30 Apr 2014 13:14:03 +0000 (13:14 +0000)]
AArch64/ARM64: use HS instead of CS & LO instead of CC.

On instructions using the NZCV register, a couple of conditions have dual
representations: HS/CS and LO/CC (meaning unsigned-higher-or-same/carry-set and
unsigned-lower/carry-clear). The first of these is more descriptive in most
circumstances, so we should print it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207644 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoGrammar fix.
Rafael Espindola [Wed, 30 Apr 2014 12:42:22 +0000 (12:42 +0000)]
Grammar fix.

Thanks to Saleem Abdulrasool for noticing it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207643 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[mips][msa] Fix vector insertions where the index is variable
Daniel Sanders [Wed, 30 Apr 2014 12:09:32 +0000 (12:09 +0000)]
[mips][msa] Fix vector insertions where the index is variable

Summary:
This isn't supported directly so we rotate the vector by the desired number of
elements, insert to element zero, then rotate back.

The i64 case generates rather poor code on MIPS32. There is an obvious
optimisation to be made in future (do both insert.w's inside a shared
rotate/unrotate sequence) but for now it's sufficient to select valid code
instead of aborting.

Depends on D3536

Reviewers: matheusalmeida

Reviewed By: matheusalmeida

Differential Revision: http://reviews.llvm.org/D3537

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207640 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoARM64: accept ELF-relocated load/store insts without a #.
Tim Northover [Wed, 30 Apr 2014 12:00:20 +0000 (12:00 +0000)]
ARM64: accept ELF-relocated load/store insts without a #.

E.g. we print "ldr x0, [x0, :lo12:symbol]" so we need to accept that syntax
too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207639 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoARM64: remove duplication by templating InstPrinter methods
Tim Northover [Wed, 30 Apr 2014 11:43:36 +0000 (11:43 +0000)]
ARM64: remove duplication by templating InstPrinter methods

No functional change, so no tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207638 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[mips] Add support for .cpload.
Matheus Almeida [Wed, 30 Apr 2014 11:28:42 +0000 (11:28 +0000)]
[mips] Add support for .cpload.

Summary:
This directive is used for setting up $gp in the beginning of a function.
It expands to three instructions if PIC is enabled:
lui   $gp, %hi(_gp_disp)
addui $gp, $gp, %lo(_gp_disp)
addu  $gp, $gp, $reg

_gp_disp is a special symbol that the linker sets to the distance between
the lui instruction and the context pointer (_gp).

Reviewers: dsanders

Reviewed By: dsanders

Differential Revision: http://reviews.llvm.org/D3480

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207637 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[mips] Emit all three relocation operations for each relocation entry on Mips64 big...
Matheus Almeida [Wed, 30 Apr 2014 11:21:10 +0000 (11:21 +0000)]
[mips] Emit all three relocation operations for each relocation entry on Mips64 big-endian systems.

Summary:
The N64 ABI allows up to three operations to be specified per relocation record
independently of the endianness.

Reviewers: dsanders

Reviewed By: dsanders

Differential Revision: http://reviews.llvm.org/D3529

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207636 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoARM64: use hex immediates for movz/movk instructions
Tim Northover [Wed, 30 Apr 2014 11:19:40 +0000 (11:19 +0000)]
ARM64: use hex immediates for movz/movk instructions

Since these are mostly used in "lsl #16", "lsl #32", "lsl #48" combinations to
piece together an immediate in 16-bit chunks, hex is probably the most
appropriate format.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207635 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoARM64: hexify printing various immediate operands
Tim Northover [Wed, 30 Apr 2014 11:19:28 +0000 (11:19 +0000)]
ARM64: hexify printing various immediate operands

This is mostly aimed at the NEON logical operations and MOVI/MVNI (since they
accept weird shifts which are more naturally understandable in hex notation).

Also changes BRK/HINT etc, which is probably a neutral change, but easier than
the alternative.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207634 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoARM64: print canonical syntax for add/sub (imm) instructions.
Tim Northover [Wed, 30 Apr 2014 11:19:15 +0000 (11:19 +0000)]
ARM64: print canonical syntax for add/sub (imm) instructions.

Since these instructions only accept a 12-bit immediate, possibly shifted left
by 12, the canonical syntax used by the architecture reference manual is "#N {,
lsl #12 }". We should accept an immediate that has already been shifted, (e.g.

Also, print a comment giving the full addend since it can be helpful.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207633 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[LCG] Add the really, *really* boring edge insertion case: adding an
Chandler Carruth [Wed, 30 Apr 2014 10:48:36 +0000 (10:48 +0000)]
[LCG] Add the really, *really* boring edge insertion case: adding an
edge entirely within an existing SCC. Shockingly, making the connected
component more connected is ... a total snooze fest. =]

Anyways, its wired up, and I even added a test case to make sure it
pretty much sorta works. =D

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207631 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix multiline comment warning.
Evgeniy Stepanov [Wed, 30 Apr 2014 10:29:06 +0000 (10:29 +0000)]
Fix multiline comment warning.

../unittests/Analysis/LazyCallGraphTest.cpp:45:1: warning: multi-line comment [-Wcomment]
 //        /  \
 ^

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207629 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[ARM64] Simplify if condition.
James Molloy [Wed, 30 Apr 2014 10:15:50 +0000 (10:15 +0000)]
[ARM64] Simplify if condition.

v2f32 and v4f32 were missed out of these conditions, so this is also
a bugfix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207628 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[ARM64] Fix stupid copy-pasto in ARM64MCAsmInfo.cpp - aarch64_be -> arm64_be
James Molloy [Wed, 30 Apr 2014 10:15:46 +0000 (10:15 +0000)]
[ARM64] Fix stupid copy-pasto in ARM64MCAsmInfo.cpp - aarch64_be -> arm64_be

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207627 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[ARM64] Try and make the ELF MCJIT *slightly* less broken for ARM64.
James Molloy [Wed, 30 Apr 2014 10:15:41 +0000 (10:15 +0000)]
[ARM64] Try and make the ELF MCJIT *slightly* less broken for ARM64.

A bunch of switch cases were missing, not just for ARM64 but also for
AArch64_BE. I've fixed all those, but there's zero testing as
ExecutionEngine tests are disabled when crosscompiling and I don't
have a native platform available to test on.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207626 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[ARM64] Ensure arm64_be is dealt with when emitting debug info.
James Molloy [Wed, 30 Apr 2014 10:15:35 +0000 (10:15 +0000)]
[ARM64] Ensure arm64_be is dealt with when emitting debug info.

This is a partial port of r204816 (cpirker "Elf support for MC-JIT
runtime dynamic linker") from AArch64 to ARM64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207625 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoraw_ostream::operator<<(StringRef): Avoid potential overflow in pointer arithmetic.
NAKAMURA Takumi [Wed, 30 Apr 2014 09:33:50 +0000 (09:33 +0000)]
raw_ostream::operator<<(StringRef): Avoid potential overflow in pointer arithmetic.

(OutBufCur + Size) might overflow if Size were large. For example on i686-linux,

  OutBufCur: 0xFFFDF27D
  OutBufEnd: 0xFFFDF370
  Size:      0x0002BF20 (180,000)

It caused flaky error in MC/COFF/section-name-encoding.s.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207621 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoARM64: make sure FastISel uses a GPR64 source in 64-bit extensions.
Tim Northover [Wed, 30 Apr 2014 09:32:01 +0000 (09:32 +0000)]
ARM64: make sure FastISel uses a GPR64 source in 64-bit extensions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207620 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[LCG] Actually test the *basic* edge removal bits (IE, the non-SCC
Chandler Carruth [Wed, 30 Apr 2014 07:45:27 +0000 (07:45 +0000)]
[LCG] Actually test the *basic* edge removal bits (IE, the non-SCC
bits), and discover that it's totally broken. Yay tests. Boo bug. Fix
the basic edge removal so that it works by nulling out the removed edges
rather than actually removing them. This leaves the indices valid in the
map from callee to index, and preserves some of the locality for
iterating over edges. The iterator is made bidirectional to reflect that
it now has to skip over null entries, and the skipping logic is layered
onto it.

As future work, I would like to track essentially the "load factor" of
the edge list, and when it falls below a threshold do a compaction.

An alternative I considered (and continue to consider) is storing the
callees in a doubly linked list where each element of the list is in
a set (which is essentially the classical linked-hash-table
datastructure). The problem with that approach is that either you need
to heap allocate the linked list nodes and use pointers to them, or use
a bucket hash table (with even *more* linked list pointer overhead!),
etc. It's pretty easy to get 5x overhead for values that are just
pointers. So far, I think punching holes in the vector, and periodic
compaction is likely to be much more efficient overall in the space/time
tradeoff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207619 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAdd a <tuple> include to more files that aren't getting it transitively on MSVC.
Benjamin Kramer [Wed, 30 Apr 2014 07:21:01 +0000 (07:21 +0000)]
Add a <tuple> include to more files that aren't getting it transitively on MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207617 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoUse makeArrayRef insted of calling ArrayRef<T> constructor directly. I introduced...
Craig Topper [Wed, 30 Apr 2014 07:17:30 +0000 (07:17 +0000)]
Use makeArrayRef insted of calling ArrayRef<T> constructor directly. I introduced most of these recently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207616 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoARM: support stack probe emission for Windows on ARM
Saleem Abdulrasool [Wed, 30 Apr 2014 07:05:07 +0000 (07:05 +0000)]
ARM: support stack probe emission for Windows on ARM

This introduces the stack lowering emission of the stack probe function for
Windows on ARM. The stack on Windows on ARM is a dynamically paged stack where
any page allocation which crosses a page boundary of the following guard page
will cause a page fault. This page fault must be handled by the kernel to
ensure that the page is faulted in. If this does not occur and a write access
any memory beyond that, the page fault will go unserviced, resulting in an
abnormal program termination.

The watermark for the stack probe appears to be at 4080 bytes (for
accommodating the stack guard canaries and stack alignment) when SSP is
enabled.  Otherwise, the stack probe is emitted on the page size boundary of
4096 bytes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207615 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoConstantHoisting.cpp: Add <tuple> for std::tie, since r207593 removed FileSystem...
NAKAMURA Takumi [Wed, 30 Apr 2014 06:44:50 +0000 (06:44 +0000)]
ConstantHoisting.cpp: Add <tuple> for std::tie, since r207593 removed FileSystem.h, it includes <tuple>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207614 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoARM: print COFF function header for Windows on ARM
Saleem Abdulrasool [Wed, 30 Apr 2014 06:14:25 +0000 (06:14 +0000)]
ARM: print COFF function header for Windows on ARM

Emit the COFF header when printing out the function.  This is important as the
header contains two important pieces of information: the storage class for the
symbol and the symbol type information.  This bit of information is required for
the linker to correctly identify the type of symbol that it is dealing with.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207613 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[C++11] Use 'nullptr' in tablegen output files.
Craig Topper [Wed, 30 Apr 2014 05:53:35 +0000 (05:53 +0000)]
[C++11] Use 'nullptr' in tablegen output files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207611 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoDe-virtualize or remove some methods that have no overrides nor override anything...
Craig Topper [Wed, 30 Apr 2014 05:53:27 +0000 (05:53 +0000)]
De-virtualize or remove some methods that have no overrides nor override anything. In some cases remove all together if there are no callers either.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207610 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoARM: move llvm_unreachable use
Saleem Abdulrasool [Wed, 30 Apr 2014 05:12:41 +0000 (05:12 +0000)]
ARM: move llvm_unreachable use

When building with -Werror=covered-switch-default (as on the buildbots), the
build would fail since all cases are covered by the switch.  Move the
llvm_unreachable to the end of the function as an annotation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207609 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoARM: partially handle 32-bit relocations for WoA
Saleem Abdulrasool [Wed, 30 Apr 2014 04:54:58 +0000 (04:54 +0000)]
ARM: partially handle 32-bit relocations for WoA

IMAGE_REL_ARM_MOV32T relocations require that the movw/movt pair-wise
relocation is not split up and reordered. When expanding the mov32imm
pseudo-instruction, create a bundle if the machine operand is referencing an
address.  This helps ensure that the relocatable address load is not reordered
by subsequent passes.

Unfortunately, this only partially handles the case as the Constant Island Pass
occurs after the instructions are unbundled and does not properly handle
bundles.  That is a more fundamental issue with the pass itself and beyond the
scope of this change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207608 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoSimplify getSymbolOffset.
Rafael Espindola [Wed, 30 Apr 2014 03:06:06 +0000 (03:06 +0000)]
Simplify getSymbolOffset.

We can now use EvaluateAsValue to make it non recursive and remove some code
duplication.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207604 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[ADT] Provide some helpful static_asserts for using operations of the
Chandler Carruth [Wed, 30 Apr 2014 00:49:32 +0000 (00:49 +0000)]
[ADT] Provide some helpful static_asserts for using operations of the
wrong iterator category. These aren't comprehensive, but they have
caught the common cases for me and produce much nicer errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207601 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[DWARF parser] Cleanup code in DWARFDebugLine.
Alexey Samsonov [Wed, 30 Apr 2014 00:09:19 +0000 (00:09 +0000)]
[DWARF parser] Cleanup code in DWARFDebugLine.

Streamline parsing and dumping line tables:
Prefer composition to multiple inheritance in DWARFDebugLine::ParsingState.
Get rid of the weird concept of "DumpingState" structure.

was:
  DWARFDebugLine::DumpingState state(OS);
  DWARFDebugLine::parseStatementTable(..., state);
now:
  DWARFDebugLine::LineTable LineTable;
  LineTable.parse(...);
  LineTable.dump(OS);

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207599 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoImplement X86 code generation for musttail
Reid Kleckner [Tue, 29 Apr 2014 23:55:41 +0000 (23:55 +0000)]
Implement X86 code generation for musttail

Currently, musttail codegen is relying on sibcall optimization, and
reporting a fatal error if fails.  Sibcall optimization fails when stack
arguments need to be modified, which is insufficient for musttail.

The logic for moving arguments in memory safely is already implemented
for GuaranteedTailCallOpt.  This change merely arranges for musttail
calls to use it.

No functional change for GuaranteedTailCallOpt.

Reviewers: espindola

Differential Revision: http://reviews.llvm.org/D3493

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207598 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix the build with MSVC 2013 by explicitly requesting llvm::make_unique
Reid Kleckner [Tue, 29 Apr 2014 23:54:52 +0000 (23:54 +0000)]
Fix the build with MSVC 2013 by explicitly requesting llvm::make_unique

MSVC 2013 provides std::make_unique, which it finds with ADL when one of
the parameters is std::unique_ptr, leading to an ambiguous overload.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207597 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAnother missing include for MSVC.
Benjamin Kramer [Tue, 29 Apr 2014 23:46:48 +0000 (23:46 +0000)]
Another missing include for MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207596 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix some 80 cols violations committed in r207539
David Blaikie [Tue, 29 Apr 2014 23:43:06 +0000 (23:43 +0000)]
Fix some 80 cols violations committed in r207539

Caught by Eric Christopher in post-commit review.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207595 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoTry to fix the msvc build.
Benjamin Kramer [Tue, 29 Apr 2014 23:37:02 +0000 (23:37 +0000)]
Try to fix the msvc build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207594 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoraw_ostream: Forward declare OpenFlags and include FileSystem.h only where necessary.
Benjamin Kramer [Tue, 29 Apr 2014 23:26:49 +0000 (23:26 +0000)]
raw_ostream: Forward declare OpenFlags and include FileSystem.h only where necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207593 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoR600: Remove duplicate setting of SELECT expansion.
Tom Stellard [Tue, 29 Apr 2014 23:12:55 +0000 (23:12 +0000)]
R600: Remove duplicate setting of SELECT expansion.

It's already set in AMDGPUISelLowering for all GPUs

Patch By: Jan Vesely

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207592 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoR600/SI: Custom lower SI_IF and SI_ELSE to avoid machine verifier errors
Tom Stellard [Tue, 29 Apr 2014 23:12:53 +0000 (23:12 +0000)]
R600/SI: Custom lower SI_IF and SI_ELSE to avoid machine verifier errors

SI_IF and SI_ELSE are terminators which also produce a value.  For
these instructions ISel always inserts a COPY to move their value
to another basic block.  This COPY ends up between SI_(IF|ELSE)
and the S_BRANCH* instruction at the end of the block.

This breaks MachineBasicBlock::getFirstTerminator() and also the
machine verifier which assumes that terminators are grouped together at
the end of blocks.

To solve this we coalesce the copy away right after ISel to make sure
there are no instructions in between terminators at the end of blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207591 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoR600/SI: Only select SALU instructions in the entry or exit block
Tom Stellard [Tue, 29 Apr 2014 23:12:48 +0000 (23:12 +0000)]
R600/SI: Only select SALU instructions in the entry or exit block

SALU instructions ignore control flow, so it is not always safe to use
them within branches.  This is a partial solution to this problem
until we can come up with something better.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207590 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoR600: optimize the UDIVREM 64 algorithm
Tom Stellard [Tue, 29 Apr 2014 23:12:46 +0000 (23:12 +0000)]
R600: optimize the UDIVREM 64 algorithm

This is a squash of several optimization commits:
 - calculate DIV_Lo and DIV_Hi separately
 - use BFE_U32 if we are operating on 32bit values
 - use precomputed constants instead of shifting in UDVIREM
 - skip the first 32 iterations of udivrem

v2: Check whether BFE is supported before using it

Patch by: Jan Vesely

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207589 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoR600: Implement iterative algorithm for udivrem
Tom Stellard [Tue, 29 Apr 2014 23:12:45 +0000 (23:12 +0000)]
R600: Implement iterative algorithm for udivrem

Initial implementation, rather slow

Patch by: Jan Vesely

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207588 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoR600: Change UDIV/UREM to UDIVREM when legalizing types
Tom Stellard [Tue, 29 Apr 2014 23:12:43 +0000 (23:12 +0000)]
R600: Change UDIV/UREM to UDIVREM when legalizing types

When legalizing ops, with UDIV/UREM set to expand, they automatically
expand to UDIVREM (if legal or custom).
We need to do this manually for legalize types.

v2:
  SI should be set to Expand because the type is legal, and it is
    automatically lowered to UDIVREM if UDIVREM is Legal/Custom
  R600 should set to UDIV/UREM to Custom because it needs to lower them
    during type legalization

Patch by: Jan Vesely

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207587 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoR600: remove unused variable
Tom Stellard [Tue, 29 Apr 2014 23:12:38 +0000 (23:12 +0000)]
R600: remove unused variable

Patch by: Jan Vesely

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207586 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoTidy up.
Jim Grosbach [Tue, 29 Apr 2014 22:41:58 +0000 (22:41 +0000)]
Tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207585 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoSpelling.
Jim Grosbach [Tue, 29 Apr 2014 22:41:55 +0000 (22:41 +0000)]
Spelling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207584 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoTidy up whitespace.
Jim Grosbach [Tue, 29 Apr 2014 22:41:50 +0000 (22:41 +0000)]
Tidy up whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207583 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAlso handle ConstantAggregateZero when optimizing vpermilvar*.
Rafael Espindola [Tue, 29 Apr 2014 22:20:40 +0000 (22:20 +0000)]
Also handle ConstantAggregateZero when optimizing vpermilvar*.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207582 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix MSVC build broken by r207580
David Blaikie [Tue, 29 Apr 2014 22:04:55 +0000 (22:04 +0000)]
Fix MSVC build broken by r207580

Seems MSVC wants to be able to codegen inline-definitions of virtual
functions even in TUs that don't define the key function - and it's well
within its rights to do so.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207581 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoPR19553: Memory leak in RuntimeDyldELF::createObjectImageFromFile
David Blaikie [Tue, 29 Apr 2014 21:52:46 +0000 (21:52 +0000)]
PR19553: Memory leak in RuntimeDyldELF::createObjectImageFromFile

This starts in MCJIT::getSymbolAddress where the
unique_ptr<object::Binary> is release()d and (after a cast) passed to a
single caller, MCJIT::addObjectFile.

addObjectFile calls RuntimeDyld::loadObject.
RuntimeDld::loadObject calls RuntimeDyldELF::createObjectFromFile

And the pointer is never owned at this point. I say this point, because
the alternative codepath, RuntimeDyldMachO::createObjectFile certainly
does take ownership, so this seemed like a good hint that this was a/the
right place to take ownership.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207580 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[DWARF parser] Cleanup code in DWARFDebugLine.
Alexey Samsonov [Tue, 29 Apr 2014 21:28:13 +0000 (21:28 +0000)]
[DWARF parser] Cleanup code in DWARFDebugLine.

Move several function definitions into .cpp, unify constructors
and clear() methods (fixing a couple of latent bugs from copy-paste),
turn static function parsePrologue() into Prologue::parse().

More work needed here to untangle weird multiple inheritance
in table parsing and dumping.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207579 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoRemove tabs.
Rafael Espindola [Tue, 29 Apr 2014 21:02:37 +0000 (21:02 +0000)]
Remove tabs.

Sorry, new machine and I forgot to change the editor setting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207578 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoTwo fixes to the vpermilvar optimization.
Rafael Espindola [Tue, 29 Apr 2014 20:41:54 +0000 (20:41 +0000)]
Two fixes to the vpermilvar optimization.

The instcomine logic to handle vpermilvar's pd and 256 variants was incorrect.
The _256 variants have indexes into the individual 128 bit lanes and in all
cases it also has to mask out unused bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207577 91177308-0d34-0410-b5e6-96231b3b80d8