summaryrefslogtreecommitdiffstats
path: root/llvm/docs
Commit message (Collapse)AuthorAgeFilesLines
...
* [Docs] Fix a couple of typos in the Error/Expected docs.Lang Hames2016-09-021-4/+4
| | | | llvm-svn: 280460
* Make the coding standards a bit more clear that we prefer the fancy newChandler Carruth2016-09-011-4/+5
| | | | | | | | | | | auto-brief format for doxygen comments. Most notable is switching to that in the example doxygen comment. I've also tweaked the wording but am happy to tweak it further if others have suggestions here. Mostly doing this to capture something I and others have been writing consistently and repeatedly in code reviews. llvm-svn: 280419
* [CMake] Revive LLVM_*_DIRS variablesChris Bieneman2016-09-011-4/+4
| | | | | | | | This is a partial revert of r280013. Brad King pointed out these variable names are matching CMake conventions, so we should preserve them. I've also added a direct mapping of the LLVM_*_DIR variables which we need to make projects support building in and out of tree. llvm-svn: 280380
* [LangRef] Clarify !invariant.load semantics.Geoff Berry2016-08-311-6/+4
| | | | | | Based on discussion on llvm-dev. llvm-svn: 280262
* Changing a code block to text because Sphinx does not like it on the builder ↵Aaron Ballman2016-08-311-2/+2
| | | | | | (http://lab.llvm.org:8011/builders/llvm-sphinx-docs/builds/12517/steps/docs-llvm-html/logs/stdio) llvm-svn: 280247
* Changing a code block to text because Sphinx does not like it on the builder ↵Aaron Ballman2016-08-311-1/+1
| | | | | | (http://lab.llvm.org:8011/builders/llvm-sphinx-docs/builds/12516/steps/docs-llvm-html/logs/stdio) llvm-svn: 280238
* docs: mention that clobbering output regs in inline asm is illegal.Peter Zotov2016-08-301-0/+3
| | | | | | | | | I've found this out the hard way; LLVM will not normally catch this error (unless -verify-machineinstrs is passed), and under certain very specific circumstances (such as register scavenger running under pressure) this would result in an opaque crash in codegen. llvm-svn: 280071
* [CMake] Make LLVMConfig.cmake variable names match in-tree namesChris Bieneman2016-08-291-4/+4
| | | | | | | | | | | | With the runtimes build we're trying to use LLVMConfig.cmake as a way of providing LLVM_* variables that are needed to behave as if the project is building in tree. To make this work we need to rename two variables by dropping the "S" from the end. This makes the variables match the in-tree names. This renames: LLVM_INCLUDE_DIRS -> LLVM_INCLUDE_DIR LLVM_LIBRARY_DIRS -> LLVM_LIBRARY_DIR The versions ending in S are not used in-tree anywhere. This also cleans up LLVM_LIBRARY_DIR being set to the same value with and without the "S". llvm-svn: 280013
* [Coroutines] Part 9: Add cleanup subfunction.Gor Nishanov2016-08-291-29/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: [Coroutines] Part 9: Add cleanup subfunction. This patch completes coroutine heap allocation elision. Now, the heap elision example from docs\Coroutines.rst compiles and produces expected result (see test/Transform/Coroutines/ex3.ll) Intrinsic Changes: * coro.free gets a token parameter tying it to coro.id to allow reliably discovering all coro.frees associated with a particular coroutine. * coro.id gets an extra parameter that points back to a coroutine function. This allows to check whether a coro.id describes the enclosing function or it belongs to a different function that was later inlined. CoroSplit now creates three subfunctions: # f$resume - resume logic # f$destroy - cleanup logic, followed by a deallocation code # f$cleanup - just the cleanup code CoroElide pass during devirtualization replaces coro.destroy with either f$destroy or f$cleanup depending whether heap elision is performed or not. Other fixes, improvements: * Fixed buglet in Shape::buildFrame that was not creating coro.save properly if coroutine has more than one suspend point. * Switched to using variable width suspend index field (no longer limited to 32 bit index field can be as little as i1 or as large as i<whatever-size_t-is>) Reviewers: majnemer Subscribers: llvm-commits, mehdi_amini Differential Revision: https://reviews.llvm.org/D23844 llvm-svn: 279971
* Fix some typos in the docSylvestre Ledru2016-08-287-7/+7
| | | | llvm-svn: 279943
* Adding document describing the use of the -opt-bisect-limit option.Andrew Kaylor2016-08-262-0/+201
| | | | llvm-svn: 279881
* [libFizzer] rename -print_new_cov_pcs=1 into -print_pcs=1 and make it more ↵Kostya Serebryany2016-08-251-0/+2
| | | | | | useful: print PCs only after the initial corpus has been read and symbolize them llvm-svn: 279787
* [libFuzzer] fix link in docsKostya Serebryany2016-08-231-1/+1
| | | | llvm-svn: 279589
* [libFuzzer] docs on value profileKostya Serebryany2016-08-231-0/+28
| | | | llvm-svn: 279587
* Update coding standards for include style.Zachary Turner2016-08-231-1/+11
| | | | | | | Reviewed By: lattner Differential Revision: https://reviews.llvm.org/D23591 llvm-svn: 279560
* [CMake] [OCaml] Add -DLLVM_ENABLE_OCAMLDOC switchPeter Zotov2016-08-231-1/+1
| | | | | | Patch by Michael Gorny. llvm-svn: 279544
* Fix link quotes on AArch64's CompilerWriterInfo section.Jacques Pienaar2016-08-181-2/+2
| | | | | | | | | | Reviewers: t.p.northover Subscribers: t.p.northover, aemerson, rengolin Differential Revision: https://reviews.llvm.org/D23697 llvm-svn: 279169
* [lanai] Add ISA document to CompilerWritersInfoJacques Pienaar2016-08-181-0/+6
| | | | | | | | | | | | Summary: Add Lanai ISA document to CompilerWritersInfo. Reviewers: eliben Subscribers: aemerson, llvm-commits Differential Revision: https://reviews.llvm.org/D23693 llvm-svn: 279149
* [Docs] More MemorySSA doc updates!George Burgess IV2016-08-181-5/+5
| | | | | | Thanks again to Michael Kuperstein for the feedback. llvm-svn: 279032
* [Docs] Update MemorySSA doc to address more feedback.George Burgess IV2016-08-171-34/+38
| | | | | | | | | Primarily, this clarifies wording in a few places, and adds "\ "s to make the formatting of things like "``Foo`` s" better. Thanks to Michael Kuperstein for the comments. llvm-svn: 279007
* wordsmith the "new targets" section a bit.Chris Lattner2016-08-171-10/+10
| | | | llvm-svn: 278994
* [docs] Adding "new target" rules to dev policyRenato Golin2016-08-171-0/+83
| | | | | | | | Making explicit our current policy to accept new targets as experimental and later official. Every new target should follow these rules to be added, and kept relevant in the upstream tree. llvm-svn: 278971
* Clarify the statement on using #if 0 ... #endif in CodingStandards.Andrey Bokhanko2016-08-171-2/+4
| | | | | | | | | The statement on using #if 0 ... #endif is not very clear (for people like me :-)). This patch clarifies it a bit to avoid confusion. Differential Revision: https://reviews.llvm.org/D23404 llvm-svn: 278932
* [Docs] Fix post-review comments on MemorySSA's docs.George Burgess IV2016-08-171-8/+10
| | | | | | Thanks to Sean Silva for bringing these up. :) llvm-svn: 278885
* [Docs] Add initial MemorySSA documentation.George Burgess IV2016-08-173-0/+368
| | | | | | | | Patch partially by Danny. Differential Revision: https://reviews.llvm.org/D23535 llvm-svn: 278875
* Revert "Revert "Invariant start/end intrinsics overloaded for address space""Mehdi Amini2016-08-131-2/+4
| | | | | | This reverts commit 32fc6488e48eafc0ca1bac1bd9cbf0008224d530. llvm-svn: 278609
* Revert "Invariant start/end intrinsics overloaded for address space"Mehdi Amini2016-08-131-4/+2
| | | | | | This reverts commit r276447. llvm-svn: 278608
* [libFuzzer] mention one more trophie in LLVMKostya Serebryany2016-08-131-1/+1
| | | | llvm-svn: 278582
* [libFuzzer] fix typo in docsKostya Serebryany2016-08-121-1/+1
| | | | llvm-svn: 278563
* [Coroutines]: Part6b: Add coro.id intrinsic.Gor Nishanov2016-08-121-73/+98
| | | | | | | | | | | | | | | Summary: 1. Make coroutine representation more robust against optimization that may duplicate instruction by introducing coro.id intrinsics that returns a token that will get fed into coro.alloc and coro.begin. Due to coro.id returning a token, it won't get duplicated and can be used as reliable indicator of coroutine identify when a particular coroutine call gets inlined. 2. Move last three arguments of coro.begin into coro.id as they will be shared if coro.begin will get duplicated. 3. doc + test + code updated to support the new intrinsic. Reviewers: mehdi_amini, majnemer Subscribers: mehdi_amini, llvm-commits Differential Revision: https://reviews.llvm.org/D23412 llvm-svn: 278481
* [LangRef] Fix formatting (no semantic change)Sanjoy Das2016-08-101-5/+4
| | | | llvm-svn: 278294
* [Coroutines] Part 6: Elide dynamic allocation of a coroutine frame when possibleGor Nishanov2016-08-101-31/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: A particular coroutine usage pattern, where a coroutine is created, manipulated and destroyed by the same calling function, is common for coroutines implementing RAII idiom and is suitable for allocation elision optimization which avoid dynamic allocation by storing the coroutine frame as a static `alloca` in its caller. coro.free and coro.alloc intrinsics are used to indicate which code needs to be suppressed when dynamic allocation elision happens: ``` entry: %elide = call i8* @llvm.coro.alloc() %need.dyn.alloc = icmp ne i8* %elide, null br i1 %need.dyn.alloc, label %coro.begin, label %dyn.alloc dyn.alloc: %alloc = call i8* @CustomAlloc(i32 4) br label %coro.begin coro.begin: %phi = phi i8* [ %elide, %entry ], [ %alloc, %dyn.alloc ] %hdl = call i8* @llvm.coro.begin(i8* %phi, i32 0, i8* null, i8* bitcast ([2 x void (%f.frame*)*]* @f.resumers to i8*)) ``` and ``` %mem = call i8* @llvm.coro.free(i8* %hdl) %need.dyn.free = icmp ne i8* %mem, null br i1 %need.dyn.free, label %dyn.free, label %if.end dyn.free: call void @CustomFree(i8* %mem) br label %if.end if.end: ... ``` If heap allocation elision is performed, we replace coro.alloc with a static alloca on the caller frame and coro.free with null constant. Also, we need to make sure that if there are any tail calls referencing the coroutine frame, we need to remote tail call attribute, since now coroutine frame lives on the stack. Documentation and overview is here: http://llvm.org/docs/Coroutines.html. Upstreaming sequence (rough plan) 1.Add documentation. (https://reviews.llvm.org/D22603) 2.Add coroutine intrinsics. (https://reviews.llvm.org/D22659) 3.Add empty coroutine passes. (https://reviews.llvm.org/D22847) 4.Add coroutine devirtualization + tests. ab) Lower coro.resume and coro.destroy (https://reviews.llvm.org/D22998) c) Do devirtualization (https://reviews.llvm.org/D23229) 5.Add CGSCC restart trigger + tests. (https://reviews.llvm.org/D23234) 6.Add coroutine heap elision + tests. <= we are here 7.Add the rest of the logic (split into more patches) Reviewers: mehdi_amini, majnemer Subscribers: mehdi_amini, llvm-commits Differential Revision: https://reviews.llvm.org/D23245 llvm-svn: 278242
* [scudo] Documentation update for Scudo, from https://reviews.llvm.org/D23332Kostya Serebryany2016-08-091-24/+51
| | | | llvm-svn: 278180
* Revert "[X86] Support the "ms-hotpatch" attribute."Charles Davis2016-08-081-19/+1
| | | | | | | | This reverts commit r278048. Something changed between the last time I built this--it takes awhile on my ridiculously slow and ancient computer--and now that broke this. llvm-svn: 278053
* [X86] Support the "ms-hotpatch" attribute.Charles Davis2016-08-081-1/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Based on two patches by Michael Mueller. This is a target attribute that causes a function marked with it to be emitted as "hotpatchable". This particular mechanism was originally devised by Microsoft for patching their binaries (which they are constantly updating to stay ahead of crackers, script kiddies, and other ne'er-do-wells on the Internet), but is now commonly abused by Windows programs to hook API functions. This mechanism is target-specific. For x86, a two-byte no-op instruction is emitted at the function's entry point; the entry point must be immediately preceded by 64 (32-bit) or 128 (64-bit) bytes of padding. This padding is where the patch code is written. The two byte no-op is then overwritten with a short jump into this code. The no-op is usually a `movl %edi, %edi` instruction; this is used as a magic value indicating that this is a hotpatchable function. Reviewers: majnemer, sanjoy, rnk Subscribers: dberris, llvm-commits Differential Revision: https://reviews.llvm.org/D19908 llvm-svn: 278048
* [BuildingAJIT] Fix a couple of typos in the Chapter 3 draft.Lang Hames2016-08-081-6/+6
| | | | llvm-svn: 278033
* testing commit accessGor Nishanov2016-08-051-1/+1
| | | | llvm-svn: 277816
* [llvm-cov] Add some documentation for the -tab-size optionVedant Kumar2016-08-041-0/+5
| | | | | | Also, un-hide the cl::opt. llvm-svn: 277741
* [sanitizer] Implement a __asan_default_options() equivalent for ScudoKostya Serebryany2016-08-021-3/+26
| | | | | | | | | | | | | | Summary: Currently, the Scudo Hardened Allocator only gets its flags via the SCUDO_OPTIONS environment variable. With this patch, we offer the opportunity for programs to define their own options via __scudo_default_options() which behaves like __asan_default_options() (weak symbol). A relevant test has been added as well, and the documentation updated accordingly. I also used this patch as an opportunity to rename a few variables to comply with the LLVM naming scheme, and replaced a use of Report with dieWithMessage for consistency (and to avoid a callback). Reviewers: llvm-commits, kcc Differential Revision: https://reviews.llvm.org/D23018 llvm-svn: 277536
* [ExecutionEngine][MCJIT][Orc] Replace RuntimeDyld::SymbolInfo with JITSymbol.Lang Hames2016-08-013-32/+32
| | | | | | | | | | | | | | | | This patch replaces RuntimeDyld::SymbolInfo with JITSymbol: A symbol class that is capable of lazy materialization (i.e. the symbol definition needn't be emitted until the address is requested). This can be used to support common and weak symbols in the JIT (though this is not implemented in this patch). For consistency, RuntimeDyld::SymbolResolver is renamed to JITSymbolResolver. For space efficiency a new class, JITEvaluatedSymbol, is introduced that behaves like the old RuntimeDyld::SymbolInfo - i.e. it is just a pair of an address and symbol flags. Instances of JITEvaluatedSymbol can be used in symbol-tables to avoid paying the space cost of the materializer. llvm-svn: 277386
* [IR] Introduce a non-integral pointer typeSanjoy Das2016-07-281-0/+24
| | | | | | | | | | | | | | | Summary: This change adds a `ni` specifier in the `datalayout` string to denote pointers in some given address spaces as "non-integral", and adds some typing rules around these special pointers. Reviewers: majnemer, chandlerc, atrick, dberlin, eli.friedman, tstellarAMD, arsenm Subscribers: arsenm, mcrosier, llvm-commits Differential Revision: https://reviews.llvm.org/D22488 llvm-svn: 277085
* [coroutines] Part 3 of N: Adding Boilerplate for Coroutine PassesDavid Majnemer2016-07-281-2/+2
| | | | | | | | | | | | | This adds boilerplate code for all coroutine passes, the passes are no-ops for now. Also, a small test has been added to verify that passes execute in the expected order or not at all if coroutine support is disabled. Patch by Gor Nishanov! Differential Revision: https://reviews.llvm.org/D22847 llvm-svn: 277033
* [docs] Add sub-mod example by Chris to GitHub proposalRenato Golin2016-07-281-0/+5
| | | | llvm-svn: 277032
* fix some typos in the docSylvestre Ledru2016-07-283-3/+3
| | | | llvm-svn: 276968
* [mips] Update the link to the MIPS documentation in CompilerWriterInfo.rst.Daniel Sanders2016-07-271-1/+1
| | | | llvm-svn: 276850
* Fix Coroutines doc exampleMehdi Amini2016-07-271-1/+1
| | | | | | SSA was broken. llvm-svn: 276843
* [coroutines] Part 2 of N: Adding Coroutine IntrinsicsDavid Majnemer2016-07-271-26/+22
| | | | | | | | | | | This is the second patch in the coroutine series. It adds coroutine intrinsics and updates intrinsic cost in TargetTransformInfoImpl.h. Patch by Gor Nishanov! Differential Revision: https://reviews.llvm.org/D22659 llvm-svn: 276839
* [docs] Fix a sphinx error in llvm-cov.rstVedant Kumar2016-07-261-0/+4
| | | | | | | | | | Failing bot: http://lab.llvm.org:8011/builders/llvm-sphinx-docs/builds/12025 Fix tested with `ninja docs-llvm-html`. llvm-svn: 276820
* Retry: [llvm-cov] Add support for exporting coverage data to JSONVedant Kumar2016-07-261-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | This enables users to export coverage information as portable JSON for use by analysis tools and storage in document based databases. The export sub-command is invoked just like the others: llvm-cov export -instr-profile path/to/foo.profdata path/to/foo.binary The resulting JSON contains a list of files and functions. Every file object contains a list of segments, expansions, and a summary of the file's region, function, and line coverage. Every function object contains the function's name and regions. There is also a total summary for the entire object file. Changes since the initial commit (r276813): - Fixed the regexes in the tests to handle Windows filepaths. Patch by Eddie Hurtig! Differential Revision: https://reviews.llvm.org/D22651 llvm-svn: 276818
* docs: Add reference to type metadata to langref.Peter Collingbourne2016-07-261-0/+4
| | | | llvm-svn: 276817
OpenPOWER on IntegriCloud