Commit Graph

81782 Commits

Author SHA1 Message Date
Andrew Trick
56264ae675 SparseSet: Add support for key-derived indexes and arbitrary key types.
This nicely handles the most common case of virtual register sets, but
also handles anticipated cases where we will map pointers to IDs.

The goal is not to develop a completely generic SparseSet
template. Instead we want to handle the expected uses within llvm
without any template antics in the client code. I'm adding a bit of
template nastiness here, and some assumption about expected usage in
order to make the client code very clean.

The expected common uses cases I'm designing for:
- integer keys that need to be reindexed, and may map to additional
  data
- densely numbered objects where we want pointer keys because no
  number->object map exists.

llvm-svn: 155227
2012-04-20 20:05:28 +00:00
Andrew Trick
2e8365f6d2 misched: initialize BB
llvm-svn: 155226
2012-04-20 20:05:21 +00:00
Andrew Trick
02ad1b6e5c Allow converting MachineBasicBlock::iterator to const_iterator.
llvm-svn: 155225
2012-04-20 20:05:19 +00:00
Michael J. Spencer
21f40bf4cb [docs] Update version number. I suggest that at some point we make the
build system generate this file with the proper version.

llvm-svn: 155221
2012-04-20 19:28:40 +00:00
Joel Jones
0d5305ec9a Fix broken internal link.
llvm-svn: 155213
2012-04-20 18:20:24 +00:00
Benjamin Kramer
31a4be57fd Kick off 3.2 cycle for LLVM trunk.
llvm-svn: 155211
2012-04-20 18:15:07 +00:00
Jim Grosbach
e33d0c7063 ARM: Update NEON assembly two-operand aliases.
Use the new TwoOperandAliasConstraint to handle lots of the two-operand aliases
for NEON instructions. There's still more to go, but this is a good chunk of
them.

llvm-svn: 155210
2012-04-20 18:12:54 +00:00
Joel Jones
03e6455a80 Add debugging hints for when bugpoint does not suffice, specifically for instcombine and TargetLowering
llvm-svn: 155209
2012-04-20 18:11:07 +00:00
Daniel Dunbar
d3c822f52e [docs] Update Makefile for images removal.
- Also, drop the lines.gif background from doxygen, this URL was wrong on the
   llvm.org server anyway.

llvm-svn: 155208
2012-04-20 17:27:12 +00:00
Benjamin Kramer
9845469d5a LLVM docs no longer contain images, don't try to install them.
llvm-svn: 155206
2012-04-20 17:14:26 +00:00
Jim Grosbach
b477f2e986 Add documentation comment.
llvm-svn: 155203
2012-04-20 16:29:46 +00:00
Joel Jones
dcf04118b2 Correct spelling, q.v. http://en.wikipedia.org/wiki/Bourne_shell
llvm-svn: 155202
2012-04-20 16:08:56 +00:00
Daniel Dunbar
669dd9e6f5 [docs] Remove spurious or unused images.
llvm-svn: 155199
2012-04-20 15:06:20 +00:00
Manuel Klimek
dc83827995 Removes json-bench from the test dependencies.
llvm-svn: 155197
2012-04-20 13:45:49 +00:00
Gabor Greif
f1b29d4778 effectively back out my last change (r155190)
llvm-svn: 155195
2012-04-20 11:41:38 +00:00
Gabor Greif
42a6b79fea fix obviously bogus (IMO) operand index of the load in asserts
(load only has one operand) and smuggle in some whitespace changes too

NB: I am obviously testing the water here, and believe that the unguarded
    cast is still wrong, but why is the getZExtValue of the load's operand
    tested against zero here? Any review is appreciated.
llvm-svn: 155190
2012-04-20 08:58:49 +00:00
Craig Topper
90d95a9142 Convert more uses of XXXRegisterClass to &XXXRegClass. No functional change since they are equivalent.
llvm-svn: 155188
2012-04-20 07:30:17 +00:00
Craig Topper
a0bf6c3af3 Convert some uses of XXXRegisterClass to &XXXRegClass. No functional change since they are equivalent.
llvm-svn: 155186
2012-04-20 06:31:50 +00:00
Jakob Stoklund Olesen
3d22f26e88 Revert r155136 "Defer some shl transforms to DAGCombine."
While the patch was perfect and defect free, it exposed a really nasty
bug in X86 SelectionDAG that caused an llc crash when compiling lencod.

I'll put the patch back in after fixing the SelectionDAG problem.

llvm-svn: 155181
2012-04-20 00:38:45 +00:00
Jim Grosbach
c935649d5c ARM some VFP tblgen'erated two-operand aliases.
llvm-svn: 155178
2012-04-20 00:15:00 +00:00
Jim Grosbach
4a63ad2ce9 Tidy up. Formatting.
llvm-svn: 155177
2012-04-20 00:14:57 +00:00
Jim Grosbach
38a7540e4f ARM let TableGen handle a few two-operand aliases.
No need for these explicit aliases anymore. Nuke 'em.

llvm-svn: 155173
2012-04-19 23:59:26 +00:00
Jim Grosbach
0cd0534390 TableGen support for auto-generating assembly two-operand aliases.
Assembly matchers for instructions with a two-operand form. ARM is full
of these, for example:
  add {Rd}, Rn, Rm  // Rd is optional and is the same as Rn if omitted.

The property TwoOperandAliasConstraint on the instruction definition controls
when, and if, an alias will be formed. No explicit InstAlias definitions
are required.

rdar://11255754

llvm-svn: 155172
2012-04-19 23:59:23 +00:00
Bill Wendling
fd7c52fe58 Put this expensive check below the less expensive ones.
llvm-svn: 155166
2012-04-19 23:31:07 +00:00
Bob Wilson
ce811552ae When cross compiling, install a host version of llvm-config. <rdar://11187889>
Now that llvm-config is a binary instead of a script the version installed
during a cross compiled build cannot be run from the host.  When cross
compiling, install a separate llvm-config-host that will run on the host.

llvm-svn: 155164
2012-04-19 23:19:55 +00:00
Dan Gohman
f4472e9a1f Avoid a bug in the path count computation, preventing an infinite
loop repeatedlt making the same change. This is for rdar://11256239.

llvm-svn: 155160
2012-04-19 21:50:46 +00:00
Joel Jones
7e8e679676 Test for the the problem with xors being changed into ands
when the set bits aren't the same for both args of the xor.
This transformation is in the function TargetLowering::SimplifyDemandedBits
in the file lib/CodeGen/SelectionDAG/TargetLowering.cpp.

I have tested this test using a previous version of llc which the defect and 
the a version of llc which does not. I got the expected fail and pass, 
respectively.

This test goes with rdar://11195364 and the check in with the fix: svn r154955

llvm-svn: 155156
2012-04-19 20:54:44 +00:00
Daniel Dunbar
edaa8a2cd7 [docs] Update HTML pages to refer to CSS in a way that works locally and with Sphinx.
llvm-svn: 155153
2012-04-19 20:20:34 +00:00
Daniel Dunbar
c4b3717b98 [docs] Remove index.html, I am flipping the switch on llvm.org.
llvm-svn: 155151
2012-04-19 20:06:39 +00:00
Michael J. Spencer
e6c28a171e Remove llvm-ld and llvm-stub (which is only used by llvm-ld).
llvm-ld is no longer useful and causes confusion and so it is being removed.

* Does not work very well on Windows because it must call a gcc like driver to
  assemble and link.
* Has lots of hard coded paths which are wrong on many systems.
* Does not understand most of ld's options.
* Can be partially replaced by llvm-link | opt | {llc | as, llc -filetype=obj} |
  ld, or fully replaced by Clang.

I know of no production use of llvm-ld, and hacking use should be
replaced by Clang's driver.

llvm-svn: 155147
2012-04-19 19:27:54 +00:00
Jim Grosbach
e8c60733b9 Use a SmallVector instead of std::vector for ResOperands.
There's almost always a small number of instruction operands, so
use a SmallVector and save on heap allocations.

llvm-svn: 155143
2012-04-19 17:52:34 +00:00
Jim Grosbach
d335490731 Update some internal naming conventions to modern style.
llvm-svn: 155142
2012-04-19 17:52:32 +00:00
Jakob Stoklund Olesen
1507d20c57 Defer some shl transforms to DAGCombine.
The shl instruction is used to represent multiplication by a constant
power of two as well as bitwise left shifts. Some InstCombine
transformations would turn an shl instruction into a bit mask operation,
making it difficult for later analysis passes to recognize the
constsnt multiplication.

Disable those shl transformations, deferring them to DAGCombine time.
An 'shl X, C' instruction is now treated mostly the same was as 'mul X, C'.

These transformations are deferred:

  (X >>? C) << C   --> X & (-1 << C)  (When X >> C has multiple uses)
  (X >>? C1) << C2 --> X << (C2-C1) & (-1 << C2)   (When C2 > C1)
  (X >>? C1) << C2 --> X >>? (C1-C2) & (-1 << C2)  (When C1 > C2)

The corresponding exact transformations are preserved, just like
div-exact + mul:

  (X >>?,exact C) << C   --> X
  (X >>?,exact C1) << C2 --> X << (C2-C1)
  (X >>?,exact C1) << C2 --> X >>?,exact (C1-C2)

The disabled transformations could also prevent the instruction selector
from recognizing rotate patterns in hash functions and cryptographic
primitives. I have a test case for that, but it is too fragile.

llvm-svn: 155136
2012-04-19 16:46:26 +00:00
Daniel Dunbar
e5dee93704 [docs] Add back old index.html until I get llvm.org work done to support Sphinx docs.
llvm-svn: 155134
2012-04-19 16:37:30 +00:00
Daniel Dunbar
7facd81967 [docs] Convert docs index page into Sphinx.
- Work in progress, this is mostly important because it lets us incrementally migrate the remaining documentation.
 - Lots of styling, editing, and integration work yet to come…
 - PR12589

llvm-svn: 155133
2012-04-19 16:31:37 +00:00
Daniel Dunbar
5a90abbbfc [docs] Stub out structure for Sphinx-based docs.
- Work in progress, this is just the basic structure.

llvm-svn: 155132
2012-04-19 16:31:19 +00:00
Daniel Dunbar
31c4fe4454 llvm-lit: Inject the lit module path at the beginning of sys.path, just in case
the user has another lit somewhere.

llvm-svn: 155131
2012-04-19 16:31:08 +00:00
Gabor Greif
fbd5c515a0 zap tabs
llvm-svn: 155128
2012-04-19 15:16:31 +00:00
Craig Topper
626573d98d Make fast isel use &XXXRegClass instead of XXXRegisterClass. Not a functional change since XXXRegisterClass is just a constant alias of &XXXRegClass, but should probably go away.
llvm-svn: 155104
2012-04-19 06:52:06 +00:00
Andrew Trick
93005d8a61 Allow targets to select the default scheduler by name.
llvm-svn: 155090
2012-04-19 01:34:10 +00:00
Andrew Trick
543261418e whitespace
llvm-svn: 155089
2012-04-19 01:34:06 +00:00
Jakob Stoklund Olesen
3377b8ac85 Extract the broken part of XFAILed test into its own file.
llvm-svn: 155081
2012-04-19 00:20:38 +00:00
Jim Grosbach
013a59646b Fix typo.
llvm-svn: 155075
2012-04-18 23:46:25 +00:00
Kevin Enderby
7d41dd85c3 Fixed the llvm-mv X86 disassembler so the 'C' API gets jumps properly
symbolicated.  These have and operand type of TYPE_RELv which was not handled
as isBranch in translateImmediate() in X86Disassembler.cpp.  rdar://11268426 

llvm-svn: 155074
2012-04-18 23:12:11 +00:00
Dan Gohman
a99c119e05 Don't crash on code where the user put __attribute__((constructor)) on
a function with arguments. This fixes rdar://11265785.

llvm-svn: 155073
2012-04-18 22:24:33 +00:00
Bill Wendling
d32f118a5e Add a flag to rebranch if we need to.
llvm-svn: 155049
2012-04-18 21:38:12 +00:00
Chandler Carruth
090e90a242 This reverts a long string of commits to the Hexagon backend. These
commits have had several major issues pointed out in review, and those
issues are not being addressed in a timely fashion. Furthermore, this
was all committed leading up to the v3.1 branch, and we don't need piles
of code with outstanding issues in the branch.

It is possible that not all of these commits were necessary to revert to
get us back to a green state, but I'm going to let the Hexagon
maintainer sort that out. They can recommit, in order, after addressing
the feedback.

Reverted commits, with some notes:

Primary commit r154616: HexagonPacketizer
  - There are lots of review comments here. This is the primary reason
    for reverting. In particular, it introduced large amount of warnings
    due to a bad construct in tablegen.
  - Follow-up commits that should be folded back into this when
    reposting:
    - r154622: CMake fixes
    - r154660: Fix numerous build warnings in release builds.
  - Please don't resubmit this until the three commits above are
    included, and the issues in review addressed.

Primary commit r154695: Pass to replace transfer/copy ...
  - Reverted to minimize merge conflicts. I'm not aware of specific
    issues with this patch.

Primary commit r154703: New Value Jump.
  - Primarily reverted due to merge conflicts.
  - Follow-up commits that should be folded back into this when
    reposting:
    - r154703: Remove iostream usage
    - r154758: Fix CMake builds
    - r154759: Fix build warnings in release builds
  - Please incorporate these fixes and and review feedback before
    resubmitting.

Primary commit r154829: Hexagon V5 (floating point) support.
  - Primarily reverted due to merge conflicts.
  - Follow-up commits that should be folded back into this when
    reposting:
    - r154841: Remove unused variable (fixing build warnings)

There are also accompanying Clang commits that will be reverted for
consistency.

llvm-svn: 155047
2012-04-18 21:31:19 +00:00
Pete Cooper
d839376c4b LiveIntervalUpdate validators weren't recorded after the calls to std::for_each. Turns out std::for_each doesn't update the variable passed in for the functor but instead copy constructs a new one.
llvm-svn: 155041
2012-04-18 20:29:17 +00:00
Jim Grosbach
392e7c7735 Document that StringMap iteration order is non-deterministic.
llvm-svn: 155040
2012-04-18 20:28:55 +00:00
Jim Grosbach
f77ed6f9c3 Revert "Replace some uses of std:map<std::string,...> with StringMap."
StringMap iterators are not deterministic, and that's more important
here than speed or memory.

llvm-svn: 155039
2012-04-18 20:24:49 +00:00