diff options
| author | Roman Divacky <rdivacky@FreeBSD.org> | 2010-04-02 08:54:30 +0000 |
|---|---|---|
| committer | Roman Divacky <rdivacky@FreeBSD.org> | 2010-04-02 08:54:30 +0000 |
| commit | 104bd8179fb5f6551c65c94ebcd0a4918b060189 (patch) | |
| tree | cf5763d092b81cecc168fa28032247ee495d06e2 /docs | |
| parent | 2f12f10af369d468b14617276446166383d692ed (diff) | |
Notes
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/CodeGenerator.html | 6 | ||||
| -rw-r--r-- | docs/ProgrammersManual.html | 44 | ||||
| -rw-r--r-- | docs/ReleaseNotes.html | 78 | ||||
| -rw-r--r-- | docs/SourceLevelDebugging.html | 29 | ||||
| -rw-r--r-- | docs/TableGenFundamentals.html | 5 | ||||
| -rw-r--r-- | docs/tutorial/OCamlLangImpl6.html | 4 | ||||
| -rw-r--r-- | docs/tutorial/OCamlLangImpl7.html | 4 |
7 files changed, 117 insertions, 53 deletions
diff --git a/docs/CodeGenerator.html b/docs/CodeGenerator.html index c8a0cd59721b9..582e252ea18c5 100644 --- a/docs/CodeGenerator.html +++ b/docs/CodeGenerator.html @@ -1090,8 +1090,8 @@ def FADDS : AForm_2<59, 21, <p>The portion of the instruction definition in bold indicates the pattern used to match the instruction. The DAG operators (like <tt>fmul</tt>/<tt>fadd</tt>) are defined in - the <tt>lib/Target/TargetSelectionDAG.td</tt> file. "<tt>F4RC</tt>" is the - register class of the input and result values.</p> + the <tt>include/llvm/Target/TargetSelectionDAG.td</tt> file. " + <tt>F4RC</tt>" is the register class of the input and result values.</p> <p>The TableGen DAG instruction selector generator reads the instruction patterns in the <tt>.td</tt> file and automatically builds parts of the @@ -2162,7 +2162,7 @@ MOVSX32rm16 -> movsx, 32-bit register, 16-bit memory <a href="mailto:sabre@nondot.org">Chris Lattner</a><br> <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br> - Last modified: $Date: 2010-03-11 01:22:57 +0100 (Thu, 11 Mar 2010) $ + Last modified: $Date: 2010-03-25 01:03:04 +0100 (Thu, 25 Mar 2010) $ </address> </body> diff --git a/docs/ProgrammersManual.html b/docs/ProgrammersManual.html index ace44e7d181e3..23cfbf60664eb 100644 --- a/docs/ProgrammersManual.html +++ b/docs/ProgrammersManual.html @@ -1211,14 +1211,14 @@ and erasing, but does not support iteration.</p> <div class="doc_text"> -<p>SmallPtrSet has all the advantages of SmallSet (and a SmallSet of pointers is -transparently implemented with a SmallPtrSet), but also supports iterators. If +<p>SmallPtrSet has all the advantages of <tt>SmallSet</tt> (and a <tt>SmallSet</tt> of pointers is +transparently implemented with a <tt>SmallPtrSet</tt>), but also supports iterators. If more than 'N' insertions are performed, a single quadratically probed hash table is allocated and grows as needed, providing extremely efficient access (constant time insertion/deleting/queries with low constant factors) and is very stingy with malloc traffic.</p> -<p>Note that, unlike std::set, the iterators of SmallPtrSet are invalidated +<p>Note that, unlike <tt>std::set</tt>, the iterators of <tt>SmallPtrSet</tt> are invalidated whenever an insertion occurs. Also, the values visited by the iterators are not visited in sorted order.</p> @@ -1843,6 +1843,21 @@ void printNextInstruction(Instruction* inst) { </pre> </div> +<p>Unfortunately, these implicit conversions come at a cost; they prevent +these iterators from conforming to standard iterator conventions, and thus +from being usable with standard algorithms and containers. For example, they +prevent the following code, where <tt>B</tt> is a <tt>BasicBlock</tt>, +from compiling:</p> + +<div class="doc_code"> +<pre> + llvm::SmallVector<llvm::Instruction *, 16>(B->begin(), B->end()); +</pre> +</div> + +<p>Because of this, these implicit conversions may be removed some day, +and <tt>operator*</tt> changed to return a pointer instead of a reference.</p> + </div> <!--_______________________________________________________________________--> @@ -1962,7 +1977,11 @@ for (Value::use_iterator i = F->use_begin(), e = F->use_end(); i != e; ++i </pre> </div> -<p>Alternately, it's common to have an instance of the <a +<p>Note that dereferencing a <tt>Value::use_iterator</tt> is not a very cheap +operation. Instead of performing <tt>*i</tt> above several times, consider +doing it only once in the loop body and reusing its result.</p> + +<p>Alternatively, it's common to have an instance of the <a href="/doxygen/classllvm_1_1User.html">User Class</a> and need to know what <tt>Value</tt>s are used by it. The list of all <tt>Value</tt>s used by a <tt>User</tt> is known as a <i>use-def</i> chain. Instances of class @@ -1981,10 +2000,13 @@ for (User::op_iterator i = pi->op_begin(), e = pi->op_end(); i != e; ++i) </pre> </div> -<!-- - def-use chains ("finding all users of"): Value::use_begin/use_end - use-def chains ("finding all values used"): User::op_begin/op_end [op=operand] ---> +<p>Declaring objects as <tt>const</tt> is an important tool of enforcing +mutation free algorithms (such as analyses, etc.). For this purpose above +iterators come in constant flavors as <tt>Value::const_use_iterator</tt> +and <tt>Value::const_op_iterator</tt>. They automatically arise when +calling <tt>use/op_begin()</tt> on <tt>const Value*</tt>s or +<tt>const User*</tt>s respectively. Upon dereferencing, they return +<tt>const Use*</tt>s. Otherwise the above patterns remain unchanged.</p> </div> @@ -3058,7 +3080,7 @@ the <tt>lib/VMCore</tt> directory.</p> <dt><tt><a name="FunctionType">FunctionType</a></tt></dt> <dd>Subclass of DerivedTypes for function types. <ul> - <li><tt>bool isVarArg() const</tt>: Returns true if its a vararg + <li><tt>bool isVarArg() const</tt>: Returns true if it's a vararg function</li> <li><tt> const Type * getReturnType() const</tt>: Returns the return type of the function.</li> @@ -3276,7 +3298,7 @@ simplifies the representation and makes it easier to manipulate.</p> <ul> <li><tt>Value::use_iterator</tt> - Typedef for iterator over the use-list<br> - <tt>Value::use_const_iterator</tt> - Typedef for const_iterator over + <tt>Value::const_use_iterator</tt> - Typedef for const_iterator over the use-list<br> <tt>unsigned use_size()</tt> - Returns the number of users of the value.<br> @@ -3921,7 +3943,7 @@ arguments. An argument has a pointer to the parent Function.</p> <a href="mailto:dhurjati@cs.uiuc.edu">Dinakar Dhurjati</a> and <a href="mailto:sabre@nondot.org">Chris Lattner</a><br> <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br> - Last modified: $Date: 2010-02-26 00:51:27 +0100 (Fri, 26 Feb 2010) $ + Last modified: $Date: 2010-04-02 02:08:26 +0200 (Fri, 02 Apr 2010) $ </address> </body> diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index 53a018aefbc7d..8470e8356bcea 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -127,8 +127,21 @@ development. Here we include updates on these subprojects. <p>In the LLVM 2.7 time-frame, the Clang team has made many improvements:</p> <ul> -<li>...</li> -include a link to cxx_compatibility.html +<li>FIXME: C++! Include a link to cxx_compatibility.html</li> + +<li>FIXME: Static Analyzer improvements?</li> + +<li>CIndex API and Python bindings: Clang now includes a C API as part of the +CIndex library. Although we make make some changes to the API in the future, it +is intended to be stable and has been designed for use by external projects. See +the Clang +doxygen <a href="http://clang.llvm.org/doxygen/group__CINDEX.html">CIndex</a> +documentation for more details. The CIndex API also includings an preliminary +set of Python bindings.</li> + +<li>ARM Support: Clang now has ABI support for both the Darwin and Linux ARM +ABIs. Coupled with many improvements to the LLVM ARM backend, Clang is now +suitable for use as a a beta quality ARM compiler.</li> </ul> </div> @@ -162,13 +175,23 @@ implementation of the CLI) using LLVM for static and just-in-time compilation.</p> <p> -VMKit version ?? builds with LLVM 2.7 and you can find it on its -<a href="http://vmkit.llvm.org/releases/">web page</a>. The release includes -bug fixes, cleanup and new features. The major changes are:</p> +With the release of LLVM 2.7, VMKit has shifted to a great framework for writing +virtual machines. VMKit now offers precise and efficient garbage collection with +multi-threading support, thanks to the MMTk memory management toolkit, as well +as just in time and ahead of time compilation with LLVM. The major changes in +VMKit 0.27 are:</p> <ul> -<li>...</li> +<li>Garbage collection: VMKit now uses the MMTk toolkit for garbage collectors. + The first collector to be ported is the MarkSweep collector, which is precise, + and drastically improves the performance of VMKit.</li> +<li>Line number information in the JVM: by using the debug metadata of LLVM, the + JVM now supports precise line number information, useful when printing a stack + trace.</li> +<li>Interface calls in the JVM: we implemented a variant of the Interface Method + Table technique for interface calls in the JVM. +</li> </ul> </div> @@ -391,6 +414,27 @@ code.--> </div> +<!--=========================================================================--> +<div class="doc_subsection"> +<a name="tce">TTA-based Codesign Environment (TCE)</a> +</div> + +<div class="doc_text"> +<p> +<a href="http://tce.cs.tut.fi/">TCE</a> is a toolset for designing +application-specific processors (ASP) based on the Transport triggered +architecture (TTA). The toolset provides a complete co-design flow from C/C++ +programs down to synthesizable VHDL and parallel program binaries. Processor +customization points include the register files, function units, supported +operations, and the interconnection network.</p> + +<p>TCE uses llvm-gcc/Clang and LLVM for C/C++ language support, target +independent optimizations and also for parts of code generation. It generates +new LLVM-based code generators "on the fly" for the designed TTA processors and +loads them in to the compiler backend as runtime libraries to avoid per-target +recompilation of larger parts of the compiler chain.</p> + +</div> <!-- *********************************************************************** --> <div class="doc_section"> @@ -439,7 +483,7 @@ New llvm/Support/Regex.h API. FileCheck now does regex's Many subtle pointer invalidation bugs in Callgraph have been fixed and it now uses asserting value handles. MC Disassembler (with blog post), MCInstPrinter. Many X86 backend and AsmPrinter simplifications Various tools like llc and opt now read either .ll or .bc files as input. -Malloc and free instructions got removed. +Malloc and free instructions got removed, along with LowerAllocations pass. compiler-rt support for ARM. completely llvm-gcc NEON support. Can transcode from GAS to intel syntax with "llvm-mc foo.s -output-asm-variant=1" @@ -456,8 +500,12 @@ x86 sibcall optimization New LSR with full strength reduction mode The most awesome sext / zext optimization pass. ? +The ARM backend now has good support for ARMv4 backend (tested on StrongARM + hardware), previously only supported ARMv4T and newer. + +Defaults to RTTI off, packagers should build with make REQUIRE_RTTI=1. CondProp pass removed (functionality merged into jump threading). AndersAA got removed (from 2.7 or mainline?) PredSimplify, LoopVR, GVNPRE got removed. @@ -978,20 +1026,6 @@ ignored</a>.</li> </ul> </div> -<!-- ======================================================================= --> -<div class="doc_subsection"> - <a name="ocaml-bindings">Known problems with the O'Caml bindings</a> -</div> - -<div class="doc_text"> - -<p>The <tt>Llvm.Linkage</tt> module is broken, and has incorrect values. Only -<tt>Llvm.Linkage.External</tt>, <tt>Llvm.Linkage.Available_externally</tt>, and -<tt>Llvm.Linkage.Link_once</tt> will be correct. If you need any of the other linkage -modes, you'll have to write an external C library in order to expose the -functionality. This has been fixed in the trunk.</p> -</div> - <!-- *********************************************************************** --> <div class="doc_section"> <a name="additionalinfo">Additional Information</a> @@ -1024,7 +1058,7 @@ lists</a>.</p> src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a> <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br> - Last modified: $Date: 2010-03-19 04:18:05 +0100 (Fri, 19 Mar 2010) $ + Last modified: $Date: 2010-04-01 03:53:24 +0200 (Thu, 01 Apr 2010) $ </address> </body> diff --git a/docs/SourceLevelDebugging.html b/docs/SourceLevelDebugging.html index 7fffece2e0e47..021d7ada158c2 100644 --- a/docs/SourceLevelDebugging.html +++ b/docs/SourceLevelDebugging.html @@ -289,26 +289,25 @@ height="369"> 0x1000.)</p> <p>The fields of debug descriptors used internally by LLVM - are restricted to only the simple data types <tt>int</tt>, <tt>uint</tt>, - <tt>bool</tt>, <tt>float</tt>, <tt>double</tt>, <tt>mdstring</tt> and - <tt>mdnode</tt>. </p> + are restricted to only the simple data types <tt>i32</tt>, <tt>i1</tt>, + <tt>float</tt>, <tt>double</tt>, <tt>mdstring</tt> and <tt>mdnode</tt>. </p> <div class="doc_code"> <pre> !1 = metadata !{ - uint, ;; A tag + i32, ;; A tag ... } </pre> </div> <p><a name="LLVMDebugVersion">The first field of a descriptor is always an - <tt>uint</tt> containing a tag value identifying the content of the + <tt>i32</tt> containing a tag value identifying the content of the descriptor. The remaining fields are specific to the descriptor. The values of tags are loosely bound to the tag values of DWARF information entries. However, that does not restrict the use of the information supplied to DWARF targets. To facilitate versioning of debug information, the tag is augmented - with the current debug version (LLVMDebugVersion = 8 << 16 or 0x80000 or + with the current debug version (LLVMDebugVersion = 8 << 16 or 0x80000 or 524288.)</a></p> <p>The details of the various descriptors follow.</p> @@ -829,8 +828,8 @@ DW_TAG_return_variable = 258 rules.</p> <p>In order to handle this, the LLVM debug format uses the metadata attached to - llvm instructions to encode line nuber and scoping information. Consider the - following C fragment, for example:</p> + llvm instructions to encode line number and scoping information. Consider + the following C fragment, for example:</p> <div class="doc_code"> <pre> @@ -1069,6 +1068,18 @@ int main(int argc, char *argv[]) { </pre> </div> +<p>llvm::Instruction provides easy access to metadata attached with an +instruction. One can extract line number information encoded in LLVM IR +using <tt>Instruction::getMetadata()</tt> and +<tt>DILocation::getLineNumber()</tt>. +<pre> + if (MDNode *N = I->getMetadata("dbg")) { // Here I is an LLVM instruction + DILocation Loc(N); // DILocation is in DebugInfo.h + unsigned Line = Loc.getLineNumber(); + StringRef File = Loc.getFilename(); + StringRef Dir = Loc.getDirectory(); + } +</pre> </div> <!-- ======================================================================= --> @@ -1762,7 +1773,7 @@ enum Trees { <a href="mailto:sabre@nondot.org">Chris Lattner</a><br> <a href="http://llvm.org">LLVM Compiler Infrastructure</a><br> - Last modified: $Date: 2010-03-17 16:01:50 +0100 (Wed, 17 Mar 2010) $ + Last modified: $Date: 2010-03-31 09:50:17 +0200 (Wed, 31 Mar 2010) $ </address> </body> diff --git a/docs/TableGenFundamentals.html b/docs/TableGenFundamentals.html index 701d11fde62b9..54e8c26878a35 100644 --- a/docs/TableGenFundamentals.html +++ b/docs/TableGenFundamentals.html @@ -768,9 +768,6 @@ patterns:</p> <dd>an implicitly defined physical register. This tells the dag instruction selection emitter the input pattern's extra definitions matches implicit physical register definitions.</dd> -<dt><tt>(parallel (a), (b))</tt></dt> - <dd>a list of dags specifying parallel operations which map to the same - instruction.</dd> </div> @@ -797,7 +794,7 @@ This should highlight the APIs in <tt>TableGen/Record.h</tt>.</p> <a href="mailto:sabre@nondot.org">Chris Lattner</a><br> <a href="http://llvm.org">LLVM Compiler Infrastructure</a><br> - Last modified: $Date: 2010-02-28 00:47:46 +0100 (Sun, 28 Feb 2010) $ + Last modified: $Date: 2010-03-27 03:53:27 +0100 (Sat, 27 Mar 2010) $ </address> </body> diff --git a/docs/tutorial/OCamlLangImpl6.html b/docs/tutorial/OCamlLangImpl6.html index de706981b5dd1..c10d5bbb65c15 100644 --- a/docs/tutorial/OCamlLangImpl6.html +++ b/docs/tutorial/OCamlLangImpl6.html @@ -821,7 +821,7 @@ ocaml_lib ~extern:true "llvm_executionengine";; ocaml_lib ~extern:true "llvm_target";; ocaml_lib ~extern:true "llvm_scalar_opts";; -flag ["link"; "ocaml"; "g++"] (S[A"-cc"; A"g++"]);; +flag ["link"; "ocaml"; "g++"] (S[A"-cc"; A"g++"; A"-cclib"; A"-rdynamic"]);; dep ["link"; "ocaml"; "use_bindings"] ["bindings.o"];; </pre> </dd> @@ -1568,7 +1568,7 @@ SSA construction</a> <a href="mailto:sabre@nondot.org">Chris Lattner</a><br> <a href="mailto:idadesub@users.sourceforge.net">Erick Tryzelaar</a><br> <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br> - Last modified: $Date: 2010-03-08 20:32:18 +0100 (Mon, 08 Mar 2010) $ + Last modified: $Date: 2010-03-22 00:15:13 +0100 (Mon, 22 Mar 2010) $ </address> </body> </html> diff --git a/docs/tutorial/OCamlLangImpl7.html b/docs/tutorial/OCamlLangImpl7.html index d4b7c9b709fb2..c360f2acda3e9 100644 --- a/docs/tutorial/OCamlLangImpl7.html +++ b/docs/tutorial/OCamlLangImpl7.html @@ -999,7 +999,7 @@ ocaml_lib ~extern:true "llvm_executionengine";; ocaml_lib ~extern:true "llvm_target";; ocaml_lib ~extern:true "llvm_scalar_opts";; -flag ["link"; "ocaml"; "g++"] (S[A"-cc"; A"g++"]);; +flag ["link"; "ocaml"; "g++"] (S[A"-cc"; A"g++"; A"-cclib"; A"-rdynamic"]);; dep ["link"; "ocaml"; "use_bindings"] ["bindings.o"];; </pre> </dd> @@ -1901,7 +1901,7 @@ extern double printd(double X) { <a href="mailto:sabre@nondot.org">Chris Lattner</a><br> <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br> <a href="mailto:idadesub@users.sourceforge.net">Erick Tryzelaar</a><br> - Last modified: $Date: 2010-03-08 20:32:18 +0100 (Mon, 08 Mar 2010) $ + Last modified: $Date: 2010-03-22 00:15:13 +0100 (Mon, 22 Mar 2010) $ </address> </body> </html> |
