oota-llvm.git
9 years agoR600/SI: Fix VOP3b encoding on VI
Matt Arsenault [Sat, 14 Feb 2015 03:02:23 +0000 (03:02 +0000)]
R600/SI: Fix VOP3b encoding on VI

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

9 years agoR600/SI: Fix phys reg copies in SIFoldOperands
Matt Arsenault [Sat, 14 Feb 2015 02:55:57 +0000 (02:55 +0000)]
R600/SI: Fix phys reg copies in SIFoldOperands

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

9 years agoR600/SI: Fix copies from SGPR to VCC
Matt Arsenault [Sat, 14 Feb 2015 02:55:56 +0000 (02:55 +0000)]
R600/SI: Fix copies from SGPR to VCC

This shows up without optimizations when vcc is required
to be used.

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

9 years agoR600/SI: Add hack to copy from a VGPR to VCC
Matt Arsenault [Sat, 14 Feb 2015 02:55:54 +0000 (02:55 +0000)]
R600/SI: Add hack to copy from a VGPR to VCC

This hopefully should be fixed when VReg_1 is removed.

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

9 years agoPowerPC: Canonicalize access to function attributes, NFC
Duncan P. N. Exon Smith [Sat, 14 Feb 2015 02:54:07 +0000 (02:54 +0000)]
PowerPC: Canonicalize access to function attributes, NFC

Canonicalize access to function attributes to use the simpler API.

getAttributes().getAttribute(AttributeSet::FunctionIndex, Kind)
  => getFnAttribute(Kind)

getAttributes().hasAttribute(AttributeSet::FunctionIndex, Kind)
  => hasFnAttribute(Kind)

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

9 years agoR600/SI: Fix size of VReg_1
Matt Arsenault [Sat, 14 Feb 2015 02:51:44 +0000 (02:51 +0000)]
R600/SI: Fix size of VReg_1

This is really a 32-bit register, if we try to check the size of it,
we want 32-bits.

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

9 years agoR600: Canonicalize access to function attributes, NFC
Duncan P. N. Exon Smith [Sat, 14 Feb 2015 02:45:45 +0000 (02:45 +0000)]
R600: Canonicalize access to function attributes, NFC

Canonicalize access to function attributes to use the simpler API.

getAttributes().getAttribute(AttributeSet::FunctionIndex, Kind)
  => getFnAttribute(Kind)

getAttributes().hasAttribute(AttributeSet::FunctionIndex, Kind)
  => hasFnAttribute(Kind)

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

9 years agoMips: Canonicalize access to function attributes, NFC
Duncan P. N. Exon Smith [Sat, 14 Feb 2015 02:37:48 +0000 (02:37 +0000)]
Mips: Canonicalize access to function attributes, NFC

Canonicalize access to function attributes to use the simpler API.

getAttributes().getAttribute(AttributeSet::FunctionIndex, Kind)
  => getFnAttribute(Kind)

getAttributes().hasAttribute(AttributeSet::FunctionIndex, Kind)
  => hasFnAttribute(Kind)

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

9 years agoARM: Canonicalize access to function attributes, NFC
Duncan P. N. Exon Smith [Sat, 14 Feb 2015 02:24:44 +0000 (02:24 +0000)]
ARM: Canonicalize access to function attributes, NFC

Canonicalize access to function attributes to use the simpler API.

getAttributes().getAttribute(AttributeSet::FunctionIndex, Kind)
  => getFnAttribute(Kind)

getAttributes().hasAttribute(AttributeSet::FunctionIndex, Kind)
  => hasFnAttribute(Kind)

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

9 years agoAArch64: Canonicalize access to function attributes, NFC
Duncan P. N. Exon Smith [Sat, 14 Feb 2015 02:09:06 +0000 (02:09 +0000)]
AArch64: Canonicalize access to function attributes, NFC

Canonicalize access to function attributes to use the simpler API.

getAttributes().getAttribute(AttributeSet::FunctionIndex, Kind)
  => getFnAttribute(Kind)

getAttributes().hasAttribute(AttributeSet::FunctionIndex, Kind)
  => hasFnAttribute(Kind)

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

9 years agollvm-cov: Actually use the command line arguments when reporting
Justin Bogner [Sat, 14 Feb 2015 02:05:05 +0000 (02:05 +0000)]
llvm-cov: Actually use the command line arguments when reporting

This code didn't really make sense as is. If a filename is passed in,
the user obviously wants the coverage *for that file*, not *for
everything*.

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

9 years agollvm-cov: Simplify coverage reports, fixing PR22575 in the process
Justin Bogner [Sat, 14 Feb 2015 02:01:24 +0000 (02:01 +0000)]
llvm-cov: Simplify coverage reports, fixing PR22575 in the process

PR22575 occurred because we were unsafely storing references into a
std::vector. If the vector moved because it grew, we'd be left
iterating through garbage memory. This avoids the issue by simplifying
the logic to gather coverage information as we go, rather than storing
it and iterating over it.

I'm relying on the existing tests showing that this is semantically
NFC, since it's difficult to hit the issue this fixes without
relatively large covered programs.

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

9 years agoX86: Canonicalize access to function attributes, NFC
Duncan P. N. Exon Smith [Sat, 14 Feb 2015 01:59:52 +0000 (01:59 +0000)]
X86: Canonicalize access to function attributes, NFC

Canonicalize access to function attributes to use the simpler API.

getAttributes().getAttribute(AttributeSet::FunctionIndex, Kind)
  => getFnAttribute(Kind)

getAttributes().hasAttribute(AttributeSet::FunctionIndex, Kind)
  => hasFnAttribute(Kind)

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

9 years agollvm-go: Set $GCCGO instead of putting a gccgo executable on $PATH.
Peter Collingbourne [Sat, 14 Feb 2015 01:45:57 +0000 (01:45 +0000)]
llvm-go: Set $GCCGO instead of putting a gccgo executable on $PATH.

Now that llgo ships its own go command we can rely on it having support for $GCCGO.

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

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

9 years agollvm-go: Add flag for specifying path to go command.
Peter Collingbourne [Sat, 14 Feb 2015 01:45:56 +0000 (01:45 +0000)]
llvm-go: Add flag for specifying path to go command.

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

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

9 years agoCodeGen: Canonicalize access to function attributes, NFC
Duncan P. N. Exon Smith [Sat, 14 Feb 2015 01:44:41 +0000 (01:44 +0000)]
CodeGen: Canonicalize access to function attributes, NFC

Canonicalize access to function attributes to use the simpler API.

getAttributes().getAttribute(AttributeSet::FunctionIndex, Kind)
  => getFnAttribute(Kind)

getAttributes().hasAttribute(AttributeSet::FunctionIndex, Kind)
  => hasFnAttribute(Kind)

Also, add `Function::getFnStackAlignment()`, and canonicalize:

getAttributes().getStackAlignment(AttributeSet::FunctionIndex)
  => getFnStackAlignment()

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

9 years ago[X86] Factor out the CMOV pseudo definitions. NFCI.
Ahmed Bougacha [Sat, 14 Feb 2015 01:36:53 +0000 (01:36 +0000)]
[X86] Factor out the CMOV pseudo definitions. NFCI.

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

9 years agoRevert "On ELF, put PIC jump tables in a non executable section."
Matthias Braun [Sat, 14 Feb 2015 01:16:54 +0000 (01:16 +0000)]
Revert "On ELF, put PIC jump tables in a non executable section."

This reverts commit r228939.

The commit broke something in the output of exception handling tables on
darwin x86-64.

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

9 years agoTransforms: Canonicalize access to function attributes, NFC
Duncan P. N. Exon Smith [Sat, 14 Feb 2015 01:11:29 +0000 (01:11 +0000)]
Transforms: Canonicalize access to function attributes, NFC

Canonicalize access to function attributes to use the simpler API.

getAttributes().getAttribute(AttributeSet::FunctionIndex, Kind)
  => getFnAttribute(Kind)

getAttributes().hasAttribute(AttributeSet::FunctionIndex, Kind)
  => hasFnAttribute(Kind)

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

9 years ago[modules] Split off a separate module for DebugInfo/PDB/DIA so that its headers
Richard Smith [Sat, 14 Feb 2015 00:47:20 +0000 (00:47 +0000)]
[modules] Split off a separate module for DebugInfo/PDB/DIA so that its headers
don't get included on systems where the DIA SDK is unavailable.

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

9 years agoRevert r229185, "Raising minimum required Visual Studio version to 2013."
NAKAMURA Takumi [Sat, 14 Feb 2015 00:45:32 +0000 (00:45 +0000)]
Revert r229185, "Raising minimum required Visual Studio version to 2013."

All builders are not ready yet.

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

9 years agoUnify the two EH personality classification routines I wrote
Reid Kleckner [Sat, 14 Feb 2015 00:21:02 +0000 (00:21 +0000)]
Unify the two EH personality classification routines I wrote

We only need one.

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

9 years agoAnalysis: Canonicalize access to function attributes, NFC
Duncan P. N. Exon Smith [Sat, 14 Feb 2015 00:12:15 +0000 (00:12 +0000)]
Analysis: Canonicalize access to function attributes, NFC

Canonicalize access to function attributes to use the simpler API.

getAttributes().getAttribute(AttributeSet::FunctionIndex, Kind)
  => getFnAttribute(Kind)

getAttributes().hasAttribute(AttributeSet::FunctionIndex, Kind)
  => hasFnAttribute(Kind)

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

9 years agoUse the template method to grab the target specific subtarget.
Eric Christopher [Sat, 14 Feb 2015 00:09:46 +0000 (00:09 +0000)]
Use the template method to grab the target specific subtarget.

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

9 years ago[InstCombine] When canonicalizing gep indices, prefer zext when possible
Philip Reames [Sat, 14 Feb 2015 00:05:36 +0000 (00:05 +0000)]
[InstCombine] When canonicalizing gep indices, prefer zext when possible

If we know that the sign bit of a value being sign extended is zero, we can use a zero extension instead.  This is motivated by the fact that zero extensions are generally cheaper on x86 (and most other architectures?).  We already apply a similar transform in DAGCombine, this just extends that to the IR level.

This comes up when we eagerly canonicalize gep indices to the width of a machine register (i64 on x86_64). To do so, we insert sign extensions (sext) to promote smaller types.

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

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

9 years agoRaising minimum required Visual Studio version to 2013.
Chris Bieneman [Fri, 13 Feb 2015 23:24:14 +0000 (23:24 +0000)]
Raising minimum required Visual Studio version to 2013.

This is based on the discussions on: [LLVMdev] [RFC] Raising LLVM minimum required MSVC version to 2013 for trunk

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

9 years ago[dsymutil] Add DIE selection algorithm.
Frederic Riss [Fri, 13 Feb 2015 23:18:34 +0000 (23:18 +0000)]
[dsymutil] Add DIE selection algorithm.

With this commit, llvm-dsymutil learns how to choose which DIEs
it will link in the final output and which ones it won't. This
is based on the 'valid relocation' information that has been
built in the previous commits.

The test only tests that we choose the right 'root DIEs'. The
selection algorithm (and especially the part that walk the
dependencies of a root DIE) lacks a bit test coverage. This
will be much easier to cover when we output actual Dwarf and
thus can use llvm-dwarfdump to verify the structure of the
emitted DIE trees. I'll add more tests then.

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

9 years ago[dsymutil] Downcase a function name.
Frederic Riss [Fri, 13 Feb 2015 23:18:31 +0000 (23:18 +0000)]
[dsymutil] Downcase a function name.

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

9 years ago[dsymutil] Add a few generic helper methods.
Frederic Riss [Fri, 13 Feb 2015 23:18:29 +0000 (23:18 +0000)]
[dsymutil] Add a few generic helper methods.

To be used in subsequent commits (separated to keep only core logic
in the follow-ups).

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

9 years ago[dsymutil] constify trivial function.
Frederic Riss [Fri, 13 Feb 2015 23:18:27 +0000 (23:18 +0000)]
[dsymutil] constify trivial function.

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

9 years agoDWARFUnit: Add a couple of helpers to access the DIE array.
Frederic Riss [Fri, 13 Feb 2015 23:18:24 +0000 (23:18 +0000)]
DWARFUnit: Add a couple of helpers to access the DIE array.

To be used in dsymutil (or any other client that wants to take
advantage of the fact that DIEs are stored in a vector).

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

9 years ago[dsymutil] Find relocations that correspond to debug map entries.
Frederic Riss [Fri, 13 Feb 2015 23:18:22 +0000 (23:18 +0000)]
[dsymutil] Find relocations that correspond to debug map entries.

These 'valid relocations' in the debug_info section will be how
dsymutil identifies the DIEs it needs to keep in the linked debug
information.

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

9 years ago[dsymutil] Add DebugMapObject::lookupObjectAddress()
Frederic Riss [Fri, 13 Feb 2015 23:18:16 +0000 (23:18 +0000)]
[dsymutil] Add DebugMapObject::lookupObjectAddress()

It turns out the debug map will be interogated both by name and
by object file address. Add the latter capability.

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

9 years agoFixing broken bots.
Chris Bieneman [Fri, 13 Feb 2015 23:10:31 +0000 (23:10 +0000)]
Fixing broken bots.

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

9 years agoMinor tweak to MDA
Philip Reames [Fri, 13 Feb 2015 23:08:37 +0000 (23:08 +0000)]
Minor tweak to MDA

Two minor tweaks I noticed when reading through the code:
- No need to recompute begin() on every iteration.  We're not modifying the instructions in this loop.
- We can ignore PHINodes and Dbg intrinsics.  The current code does this anyways, but it will spend slightly more time doing so and will count towards the limit of instructions in the block.  It seems really silly to give up due the presence of PHIs...

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

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

9 years agoNFC. Moving the RegisteredOptionCategories global into the CommandLineParser class.
Chris Bieneman [Fri, 13 Feb 2015 22:54:32 +0000 (22:54 +0000)]
NFC. Moving the RegisteredOptionCategories global into the CommandLineParser class.

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

9 years agoNFC. clang-format wants to change this from two lines to one.
Chris Bieneman [Fri, 13 Feb 2015 22:54:29 +0000 (22:54 +0000)]
NFC. clang-format wants to change this from two lines to one.

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

9 years agoNFC. More code cleanup making LookupOption a member of the CommandLineParser.
Chris Bieneman [Fri, 13 Feb 2015 22:54:27 +0000 (22:54 +0000)]
NFC. More code cleanup making LookupOption a member of the CommandLineParser.

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

9 years agoThe base pointer save offset can be computed at initialization time,
Eric Christopher [Fri, 13 Feb 2015 22:48:53 +0000 (22:48 +0000)]
The base pointer save offset can be computed at initialization time,
do so and fix up the calls.

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

9 years agoMove the target machine variable so that it's initialized early
Eric Christopher [Fri, 13 Feb 2015 22:48:51 +0000 (22:48 +0000)]
Move the target machine variable so that it's initialized early
enough we can use it to initialize frame lowering.

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

9 years agoStash the TargetMachine on the subtarget so we can access it later.
Eric Christopher [Fri, 13 Feb 2015 22:23:04 +0000 (22:23 +0000)]
Stash the TargetMachine on the subtarget so we can access it later.
Clean up a subtarget function that has it passed in while we're at it.

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

9 years agoPPC LinkageSize can be computed at initialization time, do so.
Eric Christopher [Fri, 13 Feb 2015 22:22:57 +0000 (22:22 +0000)]
PPC LinkageSize can be computed at initialization time, do so.

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

9 years agoTriple: Make setEnvironment not override the object format
Reid Kleckner [Fri, 13 Feb 2015 22:05:50 +0000 (22:05 +0000)]
Triple: Make setEnvironment not override the object format

Discovered by Halide users who had C++ code like this:
  Triple.setArch(Triple::x86);
  Triple.setOS(Triple::Windows);
  Triple.setObjectFormat(Triple::ELF);
  Triple.setEnvironment(Triple::MSVC);

This would produce the stringified triple of x86-windows-msvc, instead
of the x86-windows-msvc-elf string needed to run MCJIT.

With this change, they retain the -elf suffix.

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

9 years ago[SSE/AVX] Use multiclasses to reduce the mass of scalar math patterns; NFCI
Sanjay Patel [Fri, 13 Feb 2015 21:52:42 +0000 (21:52 +0000)]
[SSE/AVX] Use multiclasses to reduce the mass of scalar math patterns; NFCI

This takes the preposterous number of patterns in this section
that were last added to in r219033 down to just plain obnoxious.

With a little more work, we might get this down to just comical.

I've added more test cases to the existing file that checks these
patterns, but it seems that some of these patterns simply don't
exist with today's shuffle lowering.

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

9 years agoFix R600 test deadlock on Windows by giving FileCheck an argument
Reid Kleckner [Fri, 13 Feb 2015 21:27:28 +0000 (21:27 +0000)]
Fix R600 test deadlock on Windows by giving FileCheck an argument

llc would hang trying to write output to a full pipe that FileCheck
wasn't reading. FileCheck wasn't reading from stdin because it needs a
file as a positional argument.

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

9 years ago[PM] Fix a compile error I introduced in r229094 and didn't notice
Chandler Carruth [Fri, 13 Feb 2015 21:10:58 +0000 (21:10 +0000)]
[PM] Fix a compile error I introduced in r229094 and didn't notice
because I didn't have binutils set up properly to build the gold plugin.

Fixes PR22581 which was filed because this broke the build for folks
relying on the plugin. Very sorry! =]

I've gotten the plugin stuff building now as well so it shouldn't keep
happening.

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

9 years agofix typos; NFC
Sanjay Patel [Fri, 13 Feb 2015 21:07:22 +0000 (21:07 +0000)]
fix typos; NFC

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

9 years ago[modules] Mark include/llvm/Support/Dwarf.def as being a textually-included header.
Richard Smith [Fri, 13 Feb 2015 21:06:45 +0000 (21:06 +0000)]
[modules] Mark include/llvm/Support/Dwarf.def as being a textually-included header.

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

9 years agoClean up some inappropriate choices of type in the bitcode reader. None of
Richard Smith [Fri, 13 Feb 2015 21:05:11 +0000 (21:05 +0000)]
Clean up some inappropriate choices of type in the bitcode reader. None of
these are expected to fix any 64->32 bit real truncation issues.

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

9 years agoR600/SI: Refactor SOP1 classes
Tom Stellard [Fri, 13 Feb 2015 21:02:37 +0000 (21:02 +0000)]
R600/SI: Refactor SOP1 classes

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

9 years agoR600/SI: Lowercase register names
Tom Stellard [Fri, 13 Feb 2015 21:02:36 +0000 (21:02 +0000)]
R600/SI: Lowercase register names

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

9 years agoR600/SI: Remove some unused TableGen classes
Tom Stellard [Fri, 13 Feb 2015 21:02:33 +0000 (21:02 +0000)]
R600/SI: Remove some unused TableGen classes

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

9 years agoReapply r229142 with some enable_if magic to avoid memcpying between differing types.
Benjamin Kramer [Fri, 13 Feb 2015 20:45:14 +0000 (20:45 +0000)]
Reapply r229142 with some enable_if magic to avoid memcpying between differing types.

Original commit message:
SmallVector: Resolve a long-standing fixme by using the existing unitialized_copy dispatch.

This makes append() use memcpy for trivially copyable types.

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

9 years agoRevert r229142. It breaks the world for unknown reasons.
Benjamin Kramer [Fri, 13 Feb 2015 19:45:28 +0000 (19:45 +0000)]
Revert r229142. It breaks the world for unknown reasons.

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

9 years agoIncrease the CPU time timeout for testing from 10 to 20 minutes, to
Dimitry Andric [Fri, 13 Feb 2015 19:45:19 +0000 (19:45 +0000)]
Increase the CPU time timeout for testing from 10 to 20 minutes, to
compensate for slow machines, and the growing number of tests.

Prodded by: Hans Wennborg

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

9 years agoSmallVector: Resolve a long-standing fixme by using the existing unitialized_copy...
Benjamin Kramer [Fri, 13 Feb 2015 19:20:39 +0000 (19:20 +0000)]
SmallVector: Resolve a long-standing fixme by using the existing unitialized_copy dispatch.

This makes append() use memcpy for trivially copyable types.

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

9 years ago[mips] Refactor and simplify MipsSEDAGToDAGISel::selectIntAddrLSL2MM(). NFC.
Vasileios Kalintiris [Fri, 13 Feb 2015 19:14:22 +0000 (19:14 +0000)]
[mips] Refactor and simplify MipsSEDAGToDAGISel::selectIntAddrLSL2MM(). NFC.

Reviewers: dsanders

Subscribers: llvm-commits

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

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

9 years ago[mips] Use isa<> instead of dyn_cast<> with unused value. NFC.
Vasileios Kalintiris [Fri, 13 Feb 2015 19:12:16 +0000 (19:12 +0000)]
[mips] Use isa<> instead of dyn_cast<> with unused value. NFC.

Reviewers: dsanders

Subscribers: llvm-commits

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

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

9 years agoR600/SI: Remove handling of fpimm
Matt Arsenault [Fri, 13 Feb 2015 19:05:07 +0000 (19:05 +0000)]
R600/SI: Remove handling of fpimm

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

9 years agoR600/SI: Allow f64 inline immediates in i64 operands
Matt Arsenault [Fri, 13 Feb 2015 19:05:03 +0000 (19:05 +0000)]
R600/SI: Allow f64 inline immediates in i64 operands

This requires considering the size of the operand when
checking immediate legality.

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

9 years agoR600/SI: Minor test scheduling fixes
Matt Arsenault [Fri, 13 Feb 2015 19:04:56 +0000 (19:04 +0000)]
R600/SI: Minor test scheduling fixes

This prevents these from failing in a later commit.

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

9 years agoFix -Wunused-variable warning.
Zachary Turner [Fri, 13 Feb 2015 18:11:49 +0000 (18:11 +0000)]
Fix -Wunused-variable warning.

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

9 years agollvm-pdbdump: Improve printing of functions and signatures.
Zachary Turner [Fri, 13 Feb 2015 17:57:09 +0000 (17:57 +0000)]
llvm-pdbdump: Improve printing of functions and signatures.

This correctly prints the function pointers, and also prints
function signatures for symbols as opposed to just types.  So
actual functions in your program will now be printed with full
name and signature, as opposed to just name as before.

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

9 years ago[mips][microMIPS] Delay slot filler: Replace the microMIPS JR with the JRC
Jozef Kolek [Fri, 13 Feb 2015 17:51:27 +0000 (17:51 +0000)]
[mips][microMIPS] Delay slot filler: Replace the microMIPS JR with the JRC

This patch adds functionality in MIPS delay slot filler such as if delay slot
filler have to put NOP instruction into the delay slot of microMIPS JR
instruction, then instead of emitting NOP this instruction is replaced by
compact jump instruction JRC.

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

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

9 years ago[InstCombine] Fix regression introduced at r227197.
Andrea Di Biagio [Fri, 13 Feb 2015 16:33:34 +0000 (16:33 +0000)]
[InstCombine] Fix regression introduced at r227197.

This patch fixes a problem I accidentally introduced in an instruction combine
on select instructions added at r227197. That revision taught the instruction
combiner how to fold a cttz/ctlz followed by a icmp plus select into a single
cttz/ctlz with flag 'is_zero_undef' cleared.

However, the new rule added at r227197 would have produced wrong results in the
case where a cttz/ctlz with flag 'is_zero_undef' cleared was follwed by a
zero-extend or truncate. In that case, the folded instruction would have
been inserted in a wrong location thus leaving the CFG in an inconsistent
state.

This patch fixes the problem and add two reproducible test cases to
existing test 'InstCombine/select-cmp-cttz-ctlz.ll'.

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

9 years agoHelp: Document how to build and install with CMake.
Tom Stellard [Fri, 13 Feb 2015 16:15:32 +0000 (16:15 +0000)]
Help: Document how to build and install with CMake.

Resolves PR21569.

Patch by: Stephen Kelly

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

9 years agoHelp: Document the minimum CMake version required.
Tom Stellard [Fri, 13 Feb 2015 16:15:29 +0000 (16:15 +0000)]
Help: Document the minimum CMake version required.

Patch by: Stephen Kelly

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

9 years agoAdd run line that was missing in r228999.
Akira Hatanaka [Fri, 13 Feb 2015 16:00:03 +0000 (16:00 +0000)]
Add run line that was missing in r228999.

Also, change the run lines to use -allow-empty.

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

9 years ago[CodeGenPrepare] Removed duplicate logic. SimplifyCFG already knows how to speculate...
Andrea Di Biagio [Fri, 13 Feb 2015 14:15:48 +0000 (14:15 +0000)]
[CodeGenPrepare] Removed duplicate logic. SimplifyCFG already knows how to speculate calls to cttz/ctlz.

SimplifyCFG now knows how to speculate calls to intrinsic cttz/ctlz that are
'cheap' for the target. Therefore, some of the logic in CodeGenPrepare
that was originally added at revision 224899 can now be removed.

This patch is basically a no functional change. It removes the duplicated
logic in CodeGenPrepare and converts all the existing target specific tests
for cttz/ctlz into SimplifyCFG tests.

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

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

9 years ago[PBQP] Conservativelly allocatable nodes can be spilled and give a better solution
Arnaud A. de Grandmaison [Fri, 13 Feb 2015 12:04:42 +0000 (12:04 +0000)]
[PBQP] Conservativelly allocatable nodes can be spilled and give a better solution

Although such nodes are allocatable, the cost of spilling may be less than
allocating to register, so spilling the node may provide a better solution.
The assert does not account for this case, so remove it for now.

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

9 years ago[SimplifyCFG] Add test for r229099
James Molloy [Fri, 13 Feb 2015 11:08:40 +0000 (11:08 +0000)]
[SimplifyCFG] Add test for r229099

Add extra test that was accidentally not staged.

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

9 years ago[SimplifyCFG] Be more aggressive
James Molloy [Fri, 13 Feb 2015 10:48:30 +0000 (10:48 +0000)]
[SimplifyCFG] Be more aggressive

Up the phi node folding threshold from a cheap "1" to a meagre "2".

Update tests for extra added selects and slight code churn.

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

9 years ago[mips] Improve support for the .set at/noat assembler directives.
Toma Tabacu [Fri, 13 Feb 2015 10:30:57 +0000 (10:30 +0000)]
[mips] Improve support for the .set at/noat assembler directives.

Summary:
Made the following changes:
  Added calls to emitDirectiveSetNoAt() and emitDirectiveSetAt().
  Added special emit function for .set at=$reg, emitDirectiveSetAtWithArg(unsigned RegNo).
  Improved parsing error checks for .set at.
  Refactored parser code for .set at.
  Improved testing of both directives.
  Improved code readability and comments.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

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

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

9 years ago[PM] Update the examples to reflect the removal of the
Chandler Carruth [Fri, 13 Feb 2015 10:21:05 +0000 (10:21 +0000)]
[PM] Update the examples to reflect the removal of the
llvm/PassManager.h wrapper header and its using declarations. These now
directly use the legacy namespace.

I had updated the #include lines in my large commit but forgot that the
examples weren't being built and didn't update the code to use the
correct namespace. Sorry for the noise here.

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

9 years ago[PM] Remove the old 'PassManager.h' header file at the top level of
Chandler Carruth [Fri, 13 Feb 2015 10:01:29 +0000 (10:01 +0000)]
[PM] Remove the old 'PassManager.h' header file at the top level of
LLVM's include tree and the use of using declarations to hide the
'legacy' namespace for the old pass manager.

This undoes the primary modules-hostile change I made to keep
out-of-tree targets building. I sent an email inquiring about whether
this would be reasonable to do at this phase and people seemed fine with
it, so making it a reality. This should allow us to start bootstrapping
with modules to a certain extent along with making it easier to mix and
match headers in general.

The updates to any code for users of LLVM are very mechanical. Switch
from including "llvm/PassManager.h" to "llvm/IR/LegacyPassManager.h".
Qualify the types which now produce compile errors with "legacy::". The
most common ones are "PassManager", "PassManagerBase", and
"FunctionPassManager".

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

9 years agoRe-sort the #include lines in bindings and examples which I managed to
Chandler Carruth [Fri, 13 Feb 2015 09:14:30 +0000 (09:14 +0000)]
Re-sort the #include lines in bindings and examples which I managed to
miss previously.

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

9 years agoRe-sort #include lines using my handy dandy ./utils/sort_includes.py
Chandler Carruth [Fri, 13 Feb 2015 09:09:03 +0000 (09:09 +0000)]
Re-sort #include lines using my handy dandy ./utils/sort_includes.py
script. This is in preparation for changes to lots of include lines.

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

9 years agoFix the windows build *again*. Grrr, MSVC.
Zachary Turner [Fri, 13 Feb 2015 07:55:29 +0000 (07:55 +0000)]
Fix the windows build *again*.  Grrr, MSVC.

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

9 years agoRevert a series of commits starting at r228886 which is triggering some
Chandler Carruth [Fri, 13 Feb 2015 07:52:39 +0000 (07:52 +0000)]
Revert a series of commits starting at r228886 which is triggering some
regressions for LLDB on Linux. Rafael indicated on lldb-dev that we
should just go ahead and revert these but that he wasn't at a computer.
The patches backed out are as follows:

r228980: Add support for having multiple sections with the name and ...
r228889: Invert the section relocation map.
r228888: Use the existing SymbolTableIndex intsead of doing a lookup.
r228886: Create the Section -> Rel Section map when it is first needed.

These patches look pretty nice to me, so hoping its not too hard to get
them re-instated. =D

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

9 years agoFix non-windows builds unhappy about a missing header.
Zachary Turner [Fri, 13 Feb 2015 07:45:49 +0000 (07:45 +0000)]
Fix non-windows builds unhappy about a missing header.

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

9 years ago[X86] Add support for parsing and printing the mnemonic aliases for the XOP VPCOM...
Craig Topper [Fri, 13 Feb 2015 07:42:25 +0000 (07:42 +0000)]
[X86] Add support for parsing and printing the mnemonic aliases for the XOP VPCOM instructions.

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

9 years ago[X86] Fix XOP vpcom intrinsic autoupgrade to map 'true' and 'false' to the correct...
Craig Topper [Fri, 13 Feb 2015 07:42:15 +0000 (07:42 +0000)]
[X86] Fix XOP vpcom intrinsic autoupgrade to map 'true' and 'false' to the correct immediates. Seems they were swapped.

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

9 years agollvm-pdbdump: Add more comprehensive dumping of symbol types.
Zachary Turner [Fri, 13 Feb 2015 07:40:03 +0000 (07:40 +0000)]
llvm-pdbdump: Add more comprehensive dumping of symbol types.

In particular this patch adds the ability to dump complete
function signature information including argument types as
correctly formatted strings.  A side effect of this is that
almost all symbol and meta types are now formatted.

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

9 years agoInstCombine: cleanup redundant dyn_cast<> (NFC)
Mehdi Amini [Fri, 13 Feb 2015 07:38:04 +0000 (07:38 +0000)]
InstCombine: cleanup redundant dyn_cast<> (NFC)

From: Mehdi Amini <mehdi.amini@apple.com>

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

9 years agoFix a typo in a comment. NFC
Craig Topper [Fri, 13 Feb 2015 06:07:29 +0000 (06:07 +0000)]
Fix a typo in a comment. NFC

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

9 years agoFix probable typo in test.
Craig Topper [Fri, 13 Feb 2015 06:07:27 +0000 (06:07 +0000)]
Fix probable typo in test.

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

9 years ago[X86] Remove int_x86_sse2_psll_dq_bs and int_x86_sse2_psrl_dq_bs intrinsics. The...
Craig Topper [Fri, 13 Feb 2015 06:07:24 +0000 (06:07 +0000)]
[X86] Remove int_x86_sse2_psll_dq_bs and int_x86_sse2_psrl_dq_bs intrinsics. The builtins aren't used by clang.

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

9 years ago[X86] Remove references to builtin names that have been removed from clang. Hope...
Craig Topper [Fri, 13 Feb 2015 06:07:14 +0000 (06:07 +0000)]
[X86] Remove references to builtin names that have been removed from clang. Hope to remove the intrinsics themselves soon.

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

9 years ago[unroll] Concede defeat and disable the unroll analyzer for now.
Chandler Carruth [Fri, 13 Feb 2015 05:31:46 +0000 (05:31 +0000)]
[unroll] Concede defeat and disable the unroll analyzer for now.

The issues with the new unroll analyzer are more fundamental than code
cleanup, algorithm, or data structure changes. I've sent an email to the
original commit thread with details and a proposal for how to redesign
things. I'm disabling this for now so that we don't spend time
debugging issues with it in its current state.

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

9 years ago[InstCombine] Fix a bug when combining `icmp` from `ptrtoint`
Michael Liao [Fri, 13 Feb 2015 04:51:26 +0000 (04:51 +0000)]
[InstCombine] Fix a bug when combining `icmp` from `ptrtoint`

- First, there's a crash when we try to combine that pointers into `icmp`
  directly by creating a `bitcast`, which is invalid if that two pointers are
  from different address spaces.

- It's not always appropriate to cast one pointer to another if they are from
  different address spaces as that is not no-op cast. Instead, we only combine
  `icmp` from `ptrtoint` if that two pointers are of the same address space.

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

9 years ago[unroll] Merge the simplification and DCE estimation methods on the
Chandler Carruth [Fri, 13 Feb 2015 04:39:05 +0000 (04:39 +0000)]
[unroll] Merge the simplification and DCE estimation methods on the
UnrollAnalyzer.

Now they share a single worklist and have less implicit state between
them. There was no real benefit to separating these two things out.

I'm going to subsequently refactor things to share even more code.

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

9 years ago[unroll] Remove pointless dyn_cast<>s to Instruction - the users of an
Chandler Carruth [Fri, 13 Feb 2015 04:33:21 +0000 (04:33 +0000)]
[unroll] Remove pointless dyn_cast<>s to Instruction - the users of an
instruction must by definition be instructions.

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

9 years ago[unroll] Don't check the loop set for whether an instruction is
Chandler Carruth [Fri, 13 Feb 2015 04:30:44 +0000 (04:30 +0000)]
[unroll] Don't check the loop set for whether an instruction is
contained in it each time we try to add it to the worklist, just check
this when pulling it off the worklist. That way we do it at most once
per instruction with the cost of the worklist set we would need to pay
anyways.

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

9 years ago[unroll] Change the other worklist in the unroll analyzer to be a set
Chandler Carruth [Fri, 13 Feb 2015 04:27:50 +0000 (04:27 +0000)]
[unroll] Change the other worklist in the unroll analyzer to be a set
vector.

In addition to dramatically reducing the work required for contrived
example loops, this also has to correct some serious latent bugs in the
cost computation. Previously, we might add an instruction onto the
worklist once for every load which it used and was simplified. Then we
would visit it many times and accumulate "savings" each time.

I mean, fortunately this couldn't matter for things like calls with 100s
of operands, but even for binary operators this code seems like it must
be double counting the savings.

I just noticed this by inspection and due to the runtime problems it can
introduce, I don't have any test cases for cases where the cost produced
by this routine is unacceptable.

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

9 years ago[unroll] Replace a boolean, for loop, condition, and break with
Chandler Carruth [Fri, 13 Feb 2015 04:18:14 +0000 (04:18 +0000)]
[unroll] Replace a boolean, for loop, condition, and break with
std::all_of and a lambda. Much cleaner, no functionality
changed.

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

9 years ago[unroll] Directly query for dead instructions.
Chandler Carruth [Fri, 13 Feb 2015 04:14:05 +0000 (04:14 +0000)]
[unroll] Directly query for dead instructions.

In the unroll analyzer, it is checking each user to see if that user
will become dead. However, it first checked if that user was missing
from the simplified values map, and then if was also missing from the
dead instructions set. We add everything from the simplified values map
to the dead instructions set, so the first step is completely subsumed
by the second. Moreover, the first step requires *inserting* something
into the simplified value map which isn't what we want at all.

This also replaces a dyn_cast with a cast as an instruction cannot be
used by a non-instruction.

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

9 years ago[unroll] Replace a linear time check for no uses with a constant time
Chandler Carruth [Fri, 13 Feb 2015 04:06:08 +0000 (04:06 +0000)]
[unroll] Replace a linear time check for no uses with a constant time
check.

Also hoist this into the enqueue process as it is faster even than
testing the worklist set, we should just directly filter these out much
like we filter out constants and such.

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

9 years ago[unroll] Rather than an operand set, use a setvector for the worklist.
Chandler Carruth [Fri, 13 Feb 2015 03:57:40 +0000 (03:57 +0000)]
[unroll] Rather than an operand set, use a setvector for the worklist.

We don't just want to handle duplicate operands within an instruction,
but also duplicates across operands of different instructions. I should
have gone straight to this, but I had convinced myself that it wasn't
going to be necessary briefly. I've come to my senses after chatting
more with Nick, and am now happier here.

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

9 years ago[unroll] Extract the code to enqueue operansd for the worklist in the
Chandler Carruth [Fri, 13 Feb 2015 03:49:41 +0000 (03:49 +0000)]
[unroll] Extract the code to enqueue operansd for the worklist in the
unroll analysis into a lambda and call it. That's much simpler than
duplicating all the code.

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

9 years ago[unroll] Use a small set to de-duplicate operands prior to putting them
Chandler Carruth [Fri, 13 Feb 2015 03:48:38 +0000 (03:48 +0000)]
[unroll] Use a small set to de-duplicate operands prior to putting them
into the worklist. This avoids allocating lots of worklist memory for
them when there are large numbers of repeated operands.

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