summaryrefslogtreecommitdiffstats
path: root/llvm/docs
Commit message (Collapse)AuthorAgeFilesLines
* Remove the preverify pass from the documentation now that it has been removedYunzhong Gao2015-01-301-7/+0
| | | | | | since r199487. llvm-svn: 227608
* Remove gc.root's performCustomLoweringPhilip Reames2015-01-281-63/+12
| | | | | | | | | | | | | | This is a refactoring to restructure the single user of performCustomLowering as a specific lowering pass and remove the custom lowering hook entirely. Before this change, the LowerIntrinsics pass (note to self: rename!) was essentially acting as a pass manager, but without being structured in terms of passes. Instead, it proxied calls to a set of GCStrategies internally. This adds a lot of conceptual complexity (i.e. GCStrategies are stateful!) for very little benefit. Since there's been interest in keeping the ShadowStackGC working, I extracting it's custom lowering pass into a dedicated pass and just added that to the pass order. It will only run for functions which opt-in to that gc. I wasn't able to find an easy way to preserve the runtime registration of custom lowering functionality. Given that no user of this exists that I'm aware of, I made the choice to just remove that. If someone really cares, we can look at restoring it via dynamic pass registration in the future. Note that despite the large diff, none of the lowering code actual changes. I added the framing needed to make it a pass and rename the class, but that's it. Differential Revision: http://reviews.llvm.org/D7218 llvm-svn: 227351
* [docs] Use slightly more proper .rst markupSean Silva2015-01-281-3/+3
| | | | | | | | | | | Again, I'd like to emphasize to everyone that this sort of markup change is *not* what you should be concerned about when writing docs. Focus on *content*. I applaud Chandler for focusing on the fantastic content of this new section! llvm-svn: 227305
* [docs] [cleanup] No need for a comment around C++11 overrideSean Silva2015-01-281-6/+6
| | | | llvm-svn: 227304
* Introduce a section to the programmers manual about type hierarchies,Chandler Carruth2015-01-281-0/+70
| | | | | | | | | | | | | | | | | | | polymorphism, and virtual dispatch. This is essentially trying to explain the emerging design techniques being used in LLVM these days somewhere more accessible than the comments on a particular piece of infrastructure. It covers the "concepts-based polymorphism" that caused some confusion during initial reviews of the new pass manager as well as the tagged-dispatch mechanism used pervasively in LLVM and Clang. Perhaps most notably, I've tried to provide some criteria to help developers choose between these options when designing new pieces of infrastructure. Differential Revision: http://reviews.llvm.org/D7191 llvm-svn: 227292
* [docs] Add link to the MIPS 64-bit ELF object file specificationSimon Atanasyan2015-01-251-0/+2
| | | | llvm-svn: 227050
* Fixup debug information references.Charlie Turner2015-01-243-11/+13
| | | | llvm-svn: 227020
* Update references to lines of code count.Charlie Turner2015-01-242-2/+2
| | | | | | | | The number of lines of code in Kaleidoscope has risen from the previously reported 700 to 986 according to the cloc tool. This tools was run on the toy.cpp file from Chapter 8. llvm-svn: 227019
* Intrinsics: introduce llvm_any_ty aka ValueType AnyRamkumar Ramachandra2015-01-221-7/+1
| | | | | | | | | | | | | | | Specifically, gc.result benefits from this greatly. Instead of: gc.result.int.* gc.result.float.* gc.result.ptr.* ... We now have a gc.result.* that can specialize to literally any type. Differential Revision: http://reviews.llvm.org/D7020 llvm-svn: 226857
* Explicitly describe '///' versus '//' comment delimiters.Paul Robinson2015-01-221-2/+4
| | | | llvm-svn: 226750
* [PM] Split the LoopInfo object apart from the legacy pass, creatingChandler Carruth2015-01-171-2/+2
| | | | | | | | | | a LoopInfoWrapperPass to wire the object up to the legacy pass manager. This switches all the clients of LoopInfo over and paves the way to port LoopInfo to the new pass manager. No functionality change is intended with this iteration. llvm-svn: 226373
* ProgrammersManual.rst: fix a typoHans Wennborg2015-01-171-1/+1
| | | | llvm-svn: 226367
* [PowerPC] Adjust PatchPoints for ppc64leHal Finkel2015-01-161-5/+6
| | | | | | | | | | Bill Schmidt pointed out that some adjustments would be needed to properly support powerpc64le (using the ELF V2 ABI). For one thing, R11 is not available as a scratch register, so we need to use R12. R12 is also available under ELF V1, so to maintain consistency, I flipped the order to make R12 the first scratch register in the array under both ABIs. llvm-svn: 226247
* ReleaseNotes.rst: bump version to 3.7Hans Wennborg2015-01-141-161/+8
| | | | | | The 3.6 notes are now in the 3.6 branch. llvm-svn: 226007
* Trunk is now 3.7.0svnHans Wennborg2015-01-141-2/+2
| | | | llvm-svn: 226004
* fix typosSanjay Patel2015-01-141-2/+2
| | | | llvm-svn: 225991
* SelectionDAG: add a -filter-view-dags option to llcMehdi Amini2015-01-141-1/+5
| | | | | | | | | This option takes the name of the basic block you want to visualize with -view-*-dags Differential Revision: http://reviews.llvm.org/D6948 llvm-svn: 225953
* Revert "r225811 - Revert "r225808 - [PowerPC] Add StackMap/PatchPoint support""Hal Finkel2015-01-141-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This re-applies r225808, fixed to avoid problems with SDAG dependencies along with the preceding fix to ScheduleDAGSDNodes::RegDefIter::InitNodeNumDefs. These problems caused the original regression tests to assert/segfault on many (but not all) systems. Original commit message: This commit does two things: 1. Refactors PPCFastISel to use more of the common infrastructure for call lowering (this lets us take advantage of this common code for lowering some common intrinsics, stackmap/patchpoint among them). 2. Adds support for stackmap/patchpoint lowering. For the most part, this is very similar to the support in the AArch64 target, with the obvious differences (different registers, NOP instructions, etc.). The test cases are adapted from the AArch64 test cases. One difference of note is that the patchpoint call sequence takes 24 bytes, so you can't use less than that (on AArch64 you can go down to 16). Also, as noted in the docs, we take the patchpoint address to be the actual code address (assuming the call is local in the TOC-sharing sense), which should yield higher performance than generating the full cross-DSO indirect-call sequence and is likely just as useful for JITed code (if not, we'll change it). StackMaps and Patchpoints are still marked as experimental, and so this support is doubly experimental. So go ahead and experiment! llvm-svn: 225909
* AsmParser/Bitcode: Add support for MDLocationDuncan P. N. Exon Smith2015-01-131-0/+17
| | | | | | | | | | | | This adds assembly and bitcode support for `MDLocation`. The assembly side is rather big, since this is the first `MDNode` subclass (that isn't `MDTuple`). Part of PR21433. (If you're wondering where the mountains of testcase updates are, we don't need them until I update `DILocation` and `DebugLoc` to actually use this class.) llvm-svn: 225830
* Add link to Go bindings documentation.Peter Collingbourne2015-01-131-0/+2
| | | | llvm-svn: 225815
* Revert "r225808 - [PowerPC] Add StackMap/PatchPoint support"Hal Finkel2015-01-131-6/+0
| | | | | | | Reverting this while I investiage buildbot failures (segfaulting in GetCostForDef at ScheduleDAGRRList.cpp:314). llvm-svn: 225811
* [PowerPC] Add StackMap/PatchPoint supportHal Finkel2015-01-131-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | This commit does two things: 1. Refactors PPCFastISel to use more of the common infrastructure for call lowering (this lets us take advantage of this common code for lowering some common intrinsics, stackmap/patchpoint among them). 2. Adds support for stackmap/patchpoint lowering. For the most part, this is very similar to the support in the AArch64 target, with the obvious differences (different registers, NOP instructions, etc.). The test cases are adapted from the AArch64 test cases. One difference of note is that the patchpoint call sequence takes 24 bytes, so you can't use less than that (on AArch64 you can go down to 16). Also, as noted in the docs, we take the patchpoint address to be the actual code address (assuming the call is local in the TOC-sharing sense), which should yield higher performance than generating the full cross-DSO indirect-call sequence and is likely just as useful for JITed code (if not, we'll change it). StackMaps and Patchpoints are still marked as experimental, and so this support is doubly experimental. So go ahead and experiment! llvm-svn: 225808
* Added a Mips lld milestone to the release notes for the 3.6 release.Daniel Sanders2015-01-131-4/+5
| | | | llvm-svn: 225797
* Update release notes wrt OCaml bindings.Peter Zotov2015-01-131-0/+26
| | | | llvm-svn: 225779
* Rename llvm.recoverframeallocation to llvm.framerecoverReid Kleckner2015-01-131-6/+6
| | | | | | | | This name is less descriptive, but it sort of puts things in the 'llvm.frame...' namespace, relating it to frameallocate and frameaddress. It also avoids using "allocate" and "allocation" together. llvm-svn: 225752
* Phabricator calls it "subscriber" not "cc"Paul Robinson2015-01-131-1/+2
| | | | llvm-svn: 225747
* Add the llvm.frameallocate and llvm.recoverframeallocation intrinsicsReid Kleckner2015-01-131-0/+50
| | | | | | | | | | | | | | | | | | | | | These intrinsics allow multiple functions to share a single stack allocation from one function's call frame. The function with the allocation may only perform one allocation, and it must be in the entry block. Functions accessing the allocation call llvm.recoverframeallocation with the function whose frame they are accessing and a frame pointer from an active call frame of that function. These intrinsics are very difficult to inline correctly, so the intention is that they be introduced rarely, or at least very late during EH preparation. Reviewers: echristo, andrew.w.kaylor Differential Revision: http://reviews.llvm.org/D6493 llvm-svn: 225746
* First crack at PowerPC 3.6 release notesBill Schmidt2015-01-121-1/+19
| | | | llvm-svn: 225695
* Fix silly mistake in release notes for Mips.Daniel Sanders2015-01-111-1/+1
| | | | llvm-svn: 225608
* Added release notes for the Mips target.Daniel Sanders2015-01-111-1/+68
| | | | llvm-svn: 225607
* ReleaseNotes.rst: these are for 3.6Hans Wennborg2015-01-091-1/+1
| | | | llvm-svn: 225482
* LangRef: Add usage points for distinct MDNodesDuncan P. N. Exon Smith2015-01-081-0/+4
| | | | | | Omission pointed out by Sean Silva! llvm-svn: 225479
* IR: Add 'distinct' MDNodes to bitcode and assemblyDuncan P. N. Exon Smith2015-01-081-0/+6
| | | | | | | | | | | | | | | | | | Propagate whether `MDNode`s are 'distinct' through the other types of IR (assembly and bitcode). This adds the `distinct` keyword to assembly. Currently, no one actually calls `MDNode::getDistinct()`, so these nodes only get created for: - self-references, which are never uniqued, and - nodes whose operands are replaced that hit a uniquing collision. The concept of distinct nodes is still not quite first-class, since distinct-ness doesn't yet survive across `MapMetadata()`. Part of PR22111. llvm-svn: 225474
* The Kaleidoscope tutorial should be using "mcjit" for the library,Eric Christopher2015-01-085-5/+5
| | | | | | "jit" doesn't exist anymore. llvm-svn: 225462
* [LangRef] PR22118: Hyphen is allowed in IR identifiers.Sean Silva2015-01-071-1/+1
| | | | | | | | E.g. %-foo and %fo-o. Thanks to eagle-eyed reporter Tomas Brukner. llvm-svn: 225400
* Change the .ll syntax for comdats and add a syntactic sugar.Rafael Espindola2015-01-061-6/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to make comdats always explicit in the IR, we decided to make the syntax a bit more compact for the case of a GlobalObject in a comdat with the same name. Just dropping the $name causes problems for @foo = globabl i32 0, comdat $bar = comdat ... and declare void @foo() comdat $bar = comdat ... So the syntax is changed to @g1 = globabl i32 0, comdat($c1) @g2 = globabl i32 0, comdat and declare void @foo() comdat($c1) declare void @foo() comdat llvm-svn: 225302
* [LangRef] Correct a typoHal Finkel2015-01-051-2/+2
| | | | llvm-svn: 225148
* Reformat statepoint documentation and fix a couple of typosPhilip Reames2015-01-021-87/+287
| | | | | | Patch by Ramkumar Ramachandra <artagnon@gmail.com>. llvm-svn: 225084
* Fixed 2 minor typos in the documentation.Elena Demikhovsky2014-12-291-2/+2
| | | | llvm-svn: 224917
* Documentation for Masked Load and Store intrinsics.Elena Demikhovsky2014-12-251-0/+87
| | | | llvm-svn: 224832
* IR: Make metadata typeless in assemblyDuncan P. N. Exon Smith2014-12-151-62/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that `Metadata` is typeless, reflect that in the assembly. These are the matching assembly changes for the metadata/value split in r223802. - Only use the `metadata` type when referencing metadata from a call intrinsic -- i.e., only when it's used as a `Value`. - Stop pretending that `ValueAsMetadata` is wrapped in an `MDNode` when referencing it from call intrinsics. So, assembly like this: define @foo(i32 %v) { call void @llvm.foo(metadata !{i32 %v}, metadata !0) call void @llvm.foo(metadata !{i32 7}, metadata !0) call void @llvm.foo(metadata !1, metadata !0) call void @llvm.foo(metadata !3, metadata !0) call void @llvm.foo(metadata !{metadata !3}, metadata !0) ret void, !bar !2 } !0 = metadata !{metadata !2} !1 = metadata !{i32* @global} !2 = metadata !{metadata !3} !3 = metadata !{} turns into this: define @foo(i32 %v) { call void @llvm.foo(metadata i32 %v, metadata !0) call void @llvm.foo(metadata i32 7, metadata !0) call void @llvm.foo(metadata i32* @global, metadata !0) call void @llvm.foo(metadata !3, metadata !0) call void @llvm.foo(metadata !{!3}, metadata !0) ret void, !bar !2 } !0 = !{!2} !1 = !{i32* @global} !2 = !{!3} !3 = !{} I wrote an upgrade script that handled almost all of the tests in llvm and many of the tests in cfe (even handling many `CHECK` lines). I've attached it (or will attach it in a moment if you're speedy) to PR21532 to help everyone update their out-of-tree testcases. This is part of PR21532. llvm-svn: 224257
* Require python 2.7.Rafael Espindola2014-12-123-4/+4
| | | | | | | | | | | | | We were already requiring 2.5, which meant that people on old linux distros had to upgrade anyway. Requiring python 2.6 will make supporting 3.X easier as we can use the 3.X exception syntax. According to the discussion on llvmdev, there is not much value is requiring just 2.6, we may as well just require 2.7. llvm-svn: 224129
* Added documentation for MergeFunctions pass:Stepan Dyatkovskiy2014-12-103-9/+822
| | | | | | Pass looks for equivalent functions that are mergable and folds them. llvm-svn: 223931
* Add argument variable support to the debug info tutorialEric Christopher2014-12-091-9/+43
| | | | | | | and rearrange the prologue source location hack to immediately after it. llvm-svn: 223725
* Clean up the rst for the debug info tutorialEric Christopher2014-12-081-52/+52
| | | | llvm-svn: 223682
* InstrProf: An intrinsic and lowering for instrumentation based profilingJustin Bogner2014-12-081-0/+44
| | | | | | | | | | | | | | | | | | | | | Introduce the ``llvm.instrprof_increment`` intrinsic and the ``-instrprof`` pass. These provide the infrastructure for writing counters for profiling, as in clang's ``-fprofile-instr-generate``. The implementation of the instrprof pass is ported directly out of the CodeGenPGO classes in clang, and with the followup in clang that rips that code out to use these new intrinsics this ends up being NFC. Doing the instrumentation this way opens some doors in terms of improving the counter performance. For example, this will make it simple to experiment with alternate lowering strategies, and allows us to try handling profiling specially in some optimizations if we want to. Finally, this drastically simplifies the frontend and puts all of the lowering logic in one place. llvm-svn: 223672
* Add Chapter 8 to the Kaleidoscope tutorial. This chapter addsEric Christopher2014-12-082-262/+687
| | | | | | | | | a description of how to add debug information using DWARF and DIBuilder to the language. Thanks to David Blaikie for his assistance with this tutorial. llvm-svn: 223671
* Add a section to Statepoint docs mentioning shared bugzilla search and ↵Philip Reames2014-12-041-0/+4
| | | | | | standard mailing lists llvm-svn: 223374
* Minor typo and link fixes for Statepoint documentationPhilip Reames2014-12-041-5/+3
| | | | llvm-svn: 223327
* Fix grammar-o.Nico Weber2014-12-031-1/+1
| | | | llvm-svn: 223265
OpenPOWER on IntegriCloud