Commit Graph

4262 Commits

Author SHA1 Message Date
Jia Liu b1cb18468b rplace Alpha with ARM in docs/WritingAnLLVMBackend.html, patch by chenwj
llvm-svn: 151811
2012-03-01 15:14:19 +00:00
Nick Lewycky efe5e2ea9f Where the alloca'd space actually lives in ram is undefined, and attempting to
pin it down is undefined behaviour.

llvm-svn: 151710
2012-02-29 08:26:44 +00:00
Craig Topper 8e76068c6e Update tblgen command guide. Remove unused tblgen InstrEnumEmitter files.
llvm-svn: 151513
2012-02-27 02:31:09 +00:00
Chad Rosier ce50eec7c6 Remove more GCC FE build stuff.
llvm-svn: 151507
2012-02-26 22:26:37 +00:00
Chad Rosier 579b40db6a Installing the GCC front end is no longer supported.
llvm-svn: 151506
2012-02-26 22:17:05 +00:00
Chad Rosier 2270b005bb Cleanup the LLVM Getting Started page.
llvm-svn: 151505
2012-02-26 22:12:59 +00:00
Chad Rosier 690a2b0902 Add href to clang in overview.
llvm-svn: 151503
2012-02-26 21:34:02 +00:00
Chad Rosier 233f147691 Remove references to llvm-gcc from overview and tutorial.
llvm-svn: 151502
2012-02-26 21:31:25 +00:00
Nadav Rotem 78bda89412 Add a random .LL file generator to stress-test different llvm components.
llvm-svn: 151479
2012-02-26 08:35:53 +00:00
Jim Grosbach dfd306ea3c Release not for ARM integrated assembler support.
llvm-svn: 151308
2012-02-23 23:52:06 +00:00
Chad Rosier 563f620932 Typo.
llvm-svn: 151302
2012-02-23 23:21:22 +00:00
Chad Rosier 6e220d5ad0 The LLVM Getting Started documentation is out of date. It would be nice if
someone could update this, but for now at least reference the Clang Getting
Started document, which is much more current.

llvm-svn: 151285
2012-02-23 21:23:24 +00:00
Chris Lattner c4360f8492 libclc is now dual licensed, Tobias and Peter own their respective subprojects.
llvm-svn: 151186
2012-02-22 19:17:20 +00:00
David Greene fb927af24f Add Foreach Loop
Add some data structures to represent for loops.  These will be
referenced during object processing to do any needed iteration and
instantiation.

Add foreach keyword support to the lexer.

Add a mode to indicate that we're parsing a foreach loop.  This allows
the value parser to early-out when processing the foreach value list.

Add a routine to parse foreach iteration declarations.  This is
separate from ParseDeclaration because the type of the named value
(the iterator) doesn't match the type of the initializer value (the
value list).  It also needs to add two values to the foreach record:
the iterator and the value list.

Add parsing support for foreach.

Add the code to process foreach loops and create defs based
on iterator values.

Allow foreach loops to be matched at the top level.

When parsing an IDValue check if it is a foreach loop iterator for one
of the active loops.  If so, return a VarInit for it.

Add Emacs keyword support for foreach.

Add VIM keyword support for foreach.

Add tests to check foreach operation.

Add TableGen documentation for foreach.

Support foreach with multiple objects.

Support non-braced foreach body with one object.

Do not require types for the foreach declaration.  Assume the iterator
type from the iteration list element type.

llvm-svn: 151164
2012-02-22 16:09:41 +00:00
Jakob Stoklund Olesen 3a0f01f734 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.

llvm-svn: 151110
2012-02-22 00:56:08 +00:00
Chad Rosier 991aa50e44 Fix documentation.
llvm-svn: 150860
2012-02-18 01:38:41 +00:00
Jakob Stoklund Olesen 0cdf264491 Note x86 regmask operands in release notes.
llvm-svn: 150712
2012-02-16 18:22:39 +00:00
Bill Wendling 0891de0332 Add blurb about module flags and reformat a bit.
llvm-svn: 150677
2012-02-16 10:23:43 +00:00
Bill Wendling 7346277b6b 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

llvm-svn: 150646
2012-02-16 01:10:50 +00:00
Daniel Dunbar 06b6812b5f utils: Kill NewNightlyTest.pl, which has been replaced by LNT (as far as I know).
llvm-svn: 150610
2012-02-15 19:24:11 +00:00
Bill Wendling 911fdf47cd Document the new module flags.
llvm-svn: 150301
2012-02-11 11:59:36 +00:00
Pete Cooper 13e082d8ba Added description of invariant.load metadata to LangRef. It was added to the compiler in r144100
llvm-svn: 150257
2012-02-10 18:13:54 +00:00
Jia Liu 5b6562f58c update --enable-targets list
llvm-svn: 150229
2012-02-10 04:58:24 +00:00
Devang Patel af8f33726b Now subprogram descriptors are not collected by llvm.dbg.sp NamedMDNode. Update document to reflect this change.
llvm-svn: 150187
2012-02-09 17:34:01 +00:00
Chris Lattner 8776bc13f5 fix broken link
llvm-svn: 150105
2012-02-08 22:20:00 +00:00
Chris Lattner 13f118f47b 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.

llvm-svn: 150065
2012-02-08 07:58:38 +00:00
Chris Lattner 042e3720c3 add an explicit section on static constructors.
llvm-svn: 150037
2012-02-08 01:44:00 +00:00
Bill Wendling b377fc3bfa Rephrase to add clarity.
llvm-svn: 149972
2012-02-07 08:42:29 +00:00
Bill Wendling 9228b3e37c Document the 'unwind' removal.
llvm-svn: 149914
2012-02-06 21:59:44 +00:00
Bill Wendling 3f6a3a277c [unwind removal] Remove any mention of the 'unwind' instruction. What was that
instruction anyway?!

llvm-svn: 149913
2012-02-06 21:57:33 +00:00
Devang Patel c0449635b3 Update docs describing objective-c property encoding. This includes support for properties that are not backed by an ivar.
llvm-svn: 149879
2012-02-06 18:18:25 +00:00
Bill Wendling 46f28e0e27 Mention that the 'unwind' instruction is now deprecated.
llvm-svn: 149876
2012-02-06 17:58:34 +00:00
Eli Bendersky 3ea96a701e Fix typo and broken link
llvm-svn: 149820
2012-02-05 11:17:49 +00:00
Eli Bendersky cf65eff7a5 Add missing paren
llvm-svn: 149817
2012-02-05 09:21:25 +00:00
Hal Finkel c34e51132c 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).

llvm-svn: 149468
2012-02-01 03:51:43 +00:00
Dan Gohman fcbd65d27b basic-aa does support AliasAnalysis chaining now.
llvm-svn: 149293
2012-01-30 23:05:41 +00:00
Talin 2a7df51ea2 DenseMap::find_as() and unit tests.
llvm-svn: 149229
2012-01-30 06:55:43 +00:00
Jim Grosbach 65e2465550 Tidy up. s/Low Level Virtual Machine/LLVM/.
LLVM isn't an acronym anymore.

llvm-svn: 148985
2012-01-25 22:00:23 +00:00
Nick Lewycky 75499f5d04 Fix broken link.
llvm-svn: 148692
2012-01-23 08:47:21 +00:00
Kostya Serebryany a5054ad2f3 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.

llvm-svn: 148553
2012-01-20 17:56:17 +00:00
Chad Rosier 89e0d22cc6 Fix typo.
llvm-svn: 148497
2012-01-19 21:50:08 +00:00
Jakob Stoklund Olesen 374ed322f2 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.

llvm-svn: 148250
2012-01-16 19:22:00 +00:00
Joe Abbey 36cd89e7bd Adding a Hexagon cell for segmented stacks, as they have been implemented for X86 and not Sparc...
Committed as obvious

llvm-svn: 148237
2012-01-16 13:16:05 +00:00
Duncan Sands df9d781510 Try to clarify a little how exception handling works.
llvm-svn: 148136
2012-01-13 19:59:16 +00:00
Bill Wendling 49c4dfb534 Revert accidental commit.
llvm-svn: 148065
2012-01-12 23:06:28 +00:00
Bill Wendling ee5eaebc58 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.

llvm-svn: 148064
2012-01-12 23:05:03 +00:00
Eli Bendersky bbf8c9a939 Fix dead link
llvm-svn: 147721
2012-01-07 04:11:27 +00:00
Eli Bendersky 88676cff61 test commit (verifyiing commit access)
llvm-svn: 147600
2012-01-05 08:18:41 +00:00
Jakob Stoklund Olesen d19d3cab09 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.

llvm-svn: 147577
2012-01-05 00:26:49 +00:00
Eric Christopher 2007dc8892 Fix typo.
llvm-svn: 147456
2012-01-03 18:38:37 +00:00