Commit Graph

4248 Commits

Author SHA1 Message Date
Jakob Stoklund Olesen
62588622d4 Add a Briggs and Torczon sparse set implementation.
For objects that can be identified by small unsigned keys, SparseSet
provides constant time clear() and fast deterministic iteration. Insert,
erase, and find operations are typically faster than hash tables.

SparseSet is useful for keeping information about physical registers,
virtual registers, or numbered basic blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151110 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-22 00:56:08 +00:00
Chad Rosier
5bfd969208 Fix documentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150860 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-18 01:38:41 +00:00
Jakob Stoklund Olesen
2624661011 Note x86 regmask operands in release notes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150712 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16 18:22:39 +00:00
Bill Wendling
190ec9b9c1 Add blurb about module flags and reformat a bit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150677 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16 10:23:43 +00:00
Bill Wendling
f7b367ce45 Give a description of the Objective-C garbage collection module flags.
The rule governing the flags is this:

  no-gc + no-gc   = no-gc
  no-gc +    gc   = no-gc
  no-gc + gc-only = error
     gc +    gc   = gc
     gc + gc-only = gc-only
gc-only + gc-only = gc-only


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150646 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-16 01:10:50 +00:00
Daniel Dunbar
5b1065629b utils: Kill NewNightlyTest.pl, which has been replaced by LNT (as far as I know).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150610 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15 19:24:11 +00:00
Bill Wendling
b9d75a94dd Document the new module flags.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150301 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-11 11:59:36 +00:00
Pete Cooper
f95acc6d02 Added description of invariant.load metadata to LangRef. It was added to the compiler in r144100
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150257 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-10 18:13:54 +00:00
Jia Liu
060047f03b update --enable-targets list
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150229 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-10 04:58:24 +00:00
Devang Patel
cd37fd51fc Now subprogram descriptors are not collected by llvm.dbg.sp NamedMDNode. Update document to reflect this change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150187 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-09 17:34:01 +00:00
Chris Lattner
4526195eca fix broken link
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150105 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-08 22:20:00 +00:00
Chris Lattner
4871701437 No actual functional change here, just some clarifications:
Clarify that contributors are agreeing to license their code under the 
license corresponding to the subproject that they are contributing to,
as requested by a potential contributor.

Also, as a drive-by, update the llvm-gcc/GPL section to mention dragonegg
and say that GPL code is all in its own repo's.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150065 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-08 07:58:38 +00:00
Chris Lattner
9b6e59d903 add an explicit section on static constructors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150037 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-08 01:44:00 +00:00
Bill Wendling
e26cdbe1c7 Rephrase to add clarity.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149972 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-07 08:42:29 +00:00
Bill Wendling
06d7e1b52b Document the 'unwind' removal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149914 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-06 21:59:44 +00:00
Bill Wendling
7b9e539268 [unwind removal] Remove any mention of the 'unwind' instruction. What was that
instruction anyway?!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149913 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-06 21:57:33 +00:00
Devang Patel
ba98b6bdd1 Update docs describing objective-c property encoding. This includes support for properties that are not backed by an ivar.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149879 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-06 18:18:25 +00:00
Bill Wendling
5a65864f92 Mention that the 'unwind' instruction is now deprecated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149876 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-06 17:58:34 +00:00
Eli Bendersky
3d6b64a1eb Fix typo and broken link
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149820 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-05 11:17:49 +00:00
Eli Bendersky
371d7b0610 Add missing paren
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149817 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-05 09:21:25 +00:00
Hal Finkel
de5e5ec304 Add a basic-block autovectorization pass.
This is the initial checkin of the basic-block autovectorization pass along with some supporting vectorization infrastructure.
Special thanks to everyone who helped review this code over the last several months (especially Tobias Grosser).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149468 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-01 03:51:43 +00:00
Dan Gohman
e1d82220c4 basic-aa does support AliasAnalysis chaining now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149293 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-30 23:05:41 +00:00
Talin
babd5980d8 DenseMap::find_as() and unit tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149229 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-30 06:55:43 +00:00
Jim Grosbach
c48d4dc8a9 Tidy up. s/Low Level Virtual Machine/LLVM/.
LLVM isn't an acronym anymore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148985 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-25 22:00:23 +00:00
Nick Lewycky
300a263d93 Fix broken link.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148692 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-23 08:47:21 +00:00
Kostya Serebryany
164b86b439 Extend Attributes to 64 bits
Problem: LLVM needs more function attributes than currently available (32 bits).
One such proposed attribute is "address_safety", which shows that a function is being checked for address safety (by AddressSanitizer, SAFECode, etc).

Solution:
- extend the Attributes from 32 bits to 64-bits
- wrap the object into a class so that unsigned is never erroneously used instead
- change "unsigned" to "Attributes" throughout the code, including one place in clang.
- the class has no "operator uint64 ()", but it has "uint64_t Raw() " to support packing/unpacking.
- the class has "safe operator bool()" to support the common idiom:  if (Attributes attr = getAttrs()) useAttrs(attr);
- The CTOR from uint64_t is marked explicit, so I had to add a few explicit CTOR calls
- Add the new attribute "address_safety". Doing it in the same commit to check that attributes beyond first 32 bits actually work.
- Some of the functions from the Attribute namespace are worth moving inside the class, but I'd prefer to have it as a separate commit.

Tested:
"make check" on Linux (32-bit and 64-bit) and Mac (10.6)
built/run spec CPU 2006 on Linux with clang -O2.


This change will break clang build in lib/CodeGen/CGCall.cpp.
The following patch will fix it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148553 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20 17:56:17 +00:00
Chad Rosier
f46fbade8a Fix typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148497 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-19 21:50:08 +00:00
Jakob Stoklund Olesen
7739cad69d Add a new kind of MachineOperand: MO_RegisterMask.
Register masks will be used as a compact representation of large clobber
lists.  Currently, an x86 call instruction has some 40 operands
representing call-clobbered registers.  That's more than 1kB of useless
operands per call site.

A register mask operand references a bit mask of call-preserved
registers, everything else is clobbered.  The bit mask will typically
come from TargetRegisterInfo::getCallPreservedMask().

By abandoning ImplicitDefs for call-clobbered registers, it also becomes
possible to share call instruction descriptions between calling
conventions, and we can get rid of the WINCALL* instructions.

This patch introduces the new operand kind.  Future patches will add
RegMask support to target-independent passes before finally the fixed
clobber lists can be removed from call instruction descriptions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148250 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-16 19:22:00 +00:00
Joe Abbey
a0c1fc3bd3 Adding a Hexagon cell for segmented stacks, as they have been implemented for X86 and not Sparc...
Committed as obvious


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148237 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-16 13:16:05 +00:00
Duncan Sands
8d6796b796 Try to clarify a little how exception handling works.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148136 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13 19:59:16 +00:00
Bill Wendling
bf5b13d07e Revert accidental commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148065 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-12 23:06:28 +00:00
Bill Wendling
86b1a7d614 Fix the code that was WRONG.
The registers are placed into the saved registers list in the reverse order,
which is why the original loop was written to loop backwards.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148064 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-12 23:05:03 +00:00
Eli Bendersky
0ff100dec0 Fix dead link
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147721 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-07 04:11:27 +00:00
Eli Bendersky
30c90c973a test commit (verifyiing commit access)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147600 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-05 08:18:41 +00:00
Jakob Stoklund Olesen
d9e5c764bf Freeze reserved registers before starting register allocation.
The register allocators don't currently support adding reserved
registers while they are running.  Extend the MRI API to keep track of
the set of reserved registers when register allocation started.

Target hooks like hasFP() and needsStackRealignment() can look at this
set to avoid reserving more registers during register allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147577 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-05 00:26:49 +00:00
Eric Christopher
5e33d21d7f Fix typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147456 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-03 18:38:37 +00:00
Duncan Sands
cf6bd5a7c3 Correct spelling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147435 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-02 16:55:01 +00:00
NAKAMURA Takumi
45ba16588d Happy new year 2012!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147395 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-01 08:16:56 +00:00
Nadav Rotem
859c645310 Update the LangRef documentation: the codegen does support this instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147274 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-25 21:32:35 +00:00
Nadav Rotem
7559766c63 Add a few lines to the release notes:
1. pointer-vector
2. type legalizer changes and vector-select
3. X86 ISA changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146964 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-20 08:02:50 +00:00
Dan Gohman
eb4c70b9c4 Add a line to ReleaseNotes for half float.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146939 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-20 01:10:56 +00:00
Jakob Stoklund Olesen
9897c622e0 Remove a register class that can just as well be synthesized.
Add the new TableGen register class synthesizer feature to the release
notes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146875 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-19 16:53:40 +00:00
Dan Gohman
ce16339930 The powers that be have decided that LLVM IR should now support 16-bit
"half precision" floating-point with a first-class type.

This patch adds basic IR support (but not codegen support).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146786 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17 00:04:22 +00:00
Eric Christopher
adfc1ef14a Fix spacing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146782 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-16 23:42:35 +00:00
Eric Christopher
402e12a2f3 Update documentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146781 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-16 23:42:33 +00:00
Devang Patel
473f95febe Clarify and fix subprogram description.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146743 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-16 17:50:04 +00:00
Jakob Stoklund Olesen
f5bb45f895 Note ARM constant island alignment in the release notes.
The command line option should be removed, but not until the feature has
gotten a lot of testing. The ARMConstantIslandPass tends to have subtle
bugs that only show up after a while.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146739 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-16 16:07:41 +00:00
Evan Cheng
28681863af Add a blurb about MachineInstr bundling support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146603 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-14 22:57:45 +00:00
Evan Cheng
2e9c7244b9 Add high level description of MachineInstr bundles.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146589 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-14 21:32:14 +00:00
Duncan Sands
20536b5bca Vectors are not aggregate types (see isAggregateType).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146561 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-14 15:44:20 +00:00