aboutsummaryrefslogtreecommitdiff
path: root/llvm/docs
AgeCommit message (Collapse)AuthorFilesLines
2016-09-13[Docs] Fix a broken link in the Kaleidoscope tutorial.Davide Italiano1-1/+1
Patch by: Alfred Perlstein <alfred@FreeBSD.org> llvm-svn: 281297
2016-09-10It should also be legal to pass a swifterror parameter to a call as a swifterrorArnold Schwaighofer1-4/+5
argument. rdar://28233388 llvm-svn: 281147
2016-09-09[libFuzzer] remove use_traces=1 since use_value_profile seems to be strictly ↵Kostya Serebryany1-17/+1
better llvm-svn: 281007
2016-09-08[libFuzzer] add missing docsKostya Serebryany1-0/+3
llvm-svn: 280996
2016-09-08Remove restriction that 'sret' must be on the first parameterReid Kleckner1-4/+3
On Windows, it is often applied to the second parameter, and the x86 backend is prepared to deal with sret appearing on any parameter. Other backends assume it only appears on parameter zero, but those are target-specific requirements, and not an IR-level rule. llvm-svn: 280951
2016-09-07[CUDA] Rework "optimizations" and "publication" section in ↵Justin Lebar1-52/+45
CompileCudaWithLLVM.rst. llvm-svn: 280869
2016-09-07[CUDA] Clarify that -l and -L only need to be passed when linking, in ↵Justin Lebar1-0/+5
CompileCudaWithLLVM.rst. llvm-svn: 280868
2016-09-07[CUDA] Further reformat "invoking clang" section of CompileCudaWithLLVM.rst.Justin Lebar1-16/+16
llvm-svn: 280867
2016-09-07[CUDA] Fix typo in link in CompileCudaWithLLVM.Justin Lebar1-1/+1
llvm-svn: 280859
2016-09-07[CUDA] Move AXPY example into gist.Justin Lebar1-86/+59
No need to have a long inline code snippet in this doc. Also move "flags that control numerical code" underneath the "invoking clang" section, and reformat things a bit. llvm-svn: 280857
2016-09-07[CUDA] Simplify build/install instructions in CompileCudaWithLLVM.rst.Justin Lebar1-43/+25
llvm-svn: 280850
2016-09-07[CUDA] Call it "CUDA", not "CUDA C/C++" in our docs.Justin Lebar1-4/+4
CUDA is an extension to C++ -- there is no such thing as "CUDA C". But also, the language is much more commonly called "CUDA" than "CUDA C++". llvm-svn: 280849
2016-09-07[CUDA] Expand upon --cuda-gpu-arch flag in CompileCudaWithLLVM doc.Justin Lebar1-0/+7
llvm-svn: 280848
2016-09-02Fixed a typo (LLVM/Support/CFG.h -> LLVM/IR/CFG.h)Andrey Bokhanko1-1/+1
llvm-svn: 280481
2016-09-02[Docs] Fix another typo in the Error/Expected docs.Lang Hames1-2/+2
llvm-svn: 280461
2016-09-02[Docs] Fix a couple of typos in the Error/Expected docs.Lang Hames1-4/+4
llvm-svn: 280460
2016-09-01Make the coding standards a bit more clear that we prefer the fancy newChandler Carruth1-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
2016-09-01[CMake] Revive LLVM_*_DIRS variablesChris Bieneman1-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
2016-08-31[LangRef] Clarify !invariant.load semantics.Geoff Berry1-6/+4
Based on discussion on llvm-dev. llvm-svn: 280262
2016-08-31Changing a code block to text because Sphinx does not like it on the builder ↵Aaron Ballman1-2/+2
(http://lab.llvm.org:8011/builders/llvm-sphinx-docs/builds/12517/steps/docs-llvm-html/logs/stdio) llvm-svn: 280247
2016-08-31Changing a code block to text because Sphinx does not like it on the builder ↵Aaron Ballman1-1/+1
(http://lab.llvm.org:8011/builders/llvm-sphinx-docs/builds/12516/steps/docs-llvm-html/logs/stdio) llvm-svn: 280238
2016-08-30docs: mention that clobbering output regs in inline asm is illegal.Peter Zotov1-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
2016-08-29[CMake] Make LLVMConfig.cmake variable names match in-tree namesChris Bieneman1-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
2016-08-29[Coroutines] Part 9: Add cleanup subfunction.Gor Nishanov1-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
2016-08-28Fix some typos in the docSylvestre Ledru7-7/+7
llvm-svn: 279943
2016-08-26Adding document describing the use of the -opt-bisect-limit option.Andrew Kaylor2-0/+201
llvm-svn: 279881
2016-08-25[libFizzer] rename -print_new_cov_pcs=1 into -print_pcs=1 and make it more ↵Kostya Serebryany1-0/+2
useful: print PCs only after the initial corpus has been read and symbolize them llvm-svn: 279787
2016-08-23[libFuzzer] fix link in docsKostya Serebryany1-1/+1
llvm-svn: 279589
2016-08-23[libFuzzer] docs on value profileKostya Serebryany1-0/+28
llvm-svn: 279587
2016-08-23Update coding standards for include style.Zachary Turner1-1/+11
Reviewed By: lattner Differential Revision: https://reviews.llvm.org/D23591 llvm-svn: 279560
2016-08-23[CMake] [OCaml] Add -DLLVM_ENABLE_OCAMLDOC switchPeter Zotov1-1/+1
Patch by Michael Gorny. llvm-svn: 279544
2016-08-18Fix link quotes on AArch64's CompilerWriterInfo section.Jacques Pienaar1-2/+2
Reviewers: t.p.northover Subscribers: t.p.northover, aemerson, rengolin Differential Revision: https://reviews.llvm.org/D23697 llvm-svn: 279169
2016-08-18[lanai] Add ISA document to CompilerWritersInfoJacques Pienaar1-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
2016-08-18[Docs] More MemorySSA doc updates!George Burgess IV1-5/+5
Thanks again to Michael Kuperstein for the feedback. llvm-svn: 279032
2016-08-17[Docs] Update MemorySSA doc to address more feedback.George Burgess IV1-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
2016-08-17wordsmith the "new targets" section a bit.Chris Lattner1-10/+10
llvm-svn: 278994
2016-08-17[docs] Adding "new target" rules to dev policyRenato Golin1-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
2016-08-17Clarify the statement on using #if 0 ... #endif in CodingStandards.Andrey Bokhanko1-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
2016-08-17[Docs] Fix post-review comments on MemorySSA's docs.George Burgess IV1-8/+10
Thanks to Sean Silva for bringing these up. :) llvm-svn: 278885
2016-08-17[Docs] Add initial MemorySSA documentation.George Burgess IV3-0/+368
Patch partially by Danny. Differential Revision: https://reviews.llvm.org/D23535 llvm-svn: 278875
2016-08-13Revert "Revert "Invariant start/end intrinsics overloaded for address space""Mehdi Amini1-2/+4
This reverts commit 32fc6488e48eafc0ca1bac1bd9cbf0008224d530. llvm-svn: 278609
2016-08-13Revert "Invariant start/end intrinsics overloaded for address space"Mehdi Amini1-4/+2
This reverts commit r276447. llvm-svn: 278608
2016-08-13[libFuzzer] mention one more trophie in LLVMKostya Serebryany1-1/+1
llvm-svn: 278582
2016-08-12[libFuzzer] fix typo in docsKostya Serebryany1-1/+1
llvm-svn: 278563
2016-08-12[Coroutines]: Part6b: Add coro.id intrinsic.Gor Nishanov1-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
2016-08-10[LangRef] Fix formatting (no semantic change)Sanjoy Das1-5/+4
llvm-svn: 278294
2016-08-10[Coroutines] Part 6: Elide dynamic allocation of a coroutine frame when possibleGor Nishanov1-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
2016-08-09[scudo] Documentation update for Scudo, from https://reviews.llvm.org/D23332Kostya Serebryany1-24/+51
llvm-svn: 278180
2016-08-08Revert "[X86] Support the "ms-hotpatch" attribute."Charles Davis1-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
2016-08-08[X86] Support the "ms-hotpatch" attribute.Charles Davis1-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