summaryrefslogtreecommitdiffstats
path: root/llvm/docs
Commit message (Collapse)AuthorAgeFilesLines
* Fix formatting of constrained FP intrinsic documentationAndrew Kaylor2017-04-201-0/+2
| | | | llvm-svn: 300865
* Statepoint Docs: fix incorrect uses of it'sSanjoy Das2017-04-191-4/+6
| | | | llvm-svn: 300797
* Refresh the statepoint docs a bitPhilip Reames2017-04-191-59/+92
| | | | | | The documentation had gotten a bit stale. The revised one are by no means perfect, but I tried to remove the obvious incorrect or misleading statements. llvm-svn: 300782
* PR32382: Fix emitting complex DWARF expressions.Adrian Prantl2017-04-182-9/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The DWARF specification knows 3 kinds of non-empty simple location descriptions: 1. Register location descriptions - describe a variable in a register - consist of only a DW_OP_reg 2. Memory location descriptions - describe the address of a variable 3. Implicit location descriptions - describe the value of a variable - end with DW_OP_stack_value & friends The existing DwarfExpression code is pretty much ignorant of these restrictions. This used to not matter because we only emitted very short expressions that we happened to get right by accident. This patch makes DwarfExpression aware of the rules defined by the DWARF standard and now chooses the right kind of location description for each expression being emitted. This would have been an NFC commit (for the existing testsuite) if not for the way that clang describes captured block variables. Based on how the previous code in LLVM emitted locations, DW_OP_deref operations that should have come at the end of the expression are put at its beginning. Fixing this means changing the semantics of DIExpression, so this patch bumps the version number of DIExpression and implements a bitcode upgrade. There are two major changes in this patch: I had to fix the semantics of dbg.declare for describing function arguments. After this patch a dbg.declare always takes the *address* of a variable as the first argument, even if the argument is not an alloca. When lowering a DBG_VALUE, the decision of whether to emit a register location description or a memory location description depends on the MachineLocation — register machine locations may get promoted to memory locations based on their DIExpression. (Future) optimization passes that want to salvage implicit debug location for variables may do so by appending a DW_OP_stack_value. For example: DBG_VALUE, [RBP-8] --> DW_OP_fbreg -8 DBG_VALUE, RAX --> DW_OP_reg0 +0 DBG_VALUE, RAX, DIExpression(DW_OP_deref) --> DW_OP_reg0 +0 All testcases that were modified were regenerated from clang. I also added source-based testcases for each of these to the debuginfo-tests repository over the last week to make sure that no synchronized bugs slip in. The debuginfo-tests compile from source and run the debugger. https://bugs.llvm.org/show_bug.cgi?id=32382 <rdar://problem/31205000> Differential Revision: https://reviews.llvm.org/D31439 llvm-svn: 300522
* Bitcode: Add a string table to the bitcode format.Peter Collingbourne2017-04-171-4/+38
| | | | | | | | | | | | | | | | | | | | | | | Add a top-level STRTAB block containing a string table blob, and start storing strings for module codes FUNCTION, GLOBALVAR, ALIAS, IFUNC and COMDAT in the string table. This change allows us to share names between globals and comdats as well as between modules, and improves the efficiency of loading bitcode files by no longer using a bit encoding for symbol names. Once we start writing the irsymtab to the bitcode file we will also be able to share strings between it and the module. On my machine, link time for Chromium for Linux with ThinLTO decreases by about 7% for no-op incremental builds or about 1% for full builds. Total bitcode file size decreases by about 3%. As discussed on llvm-dev: http://lists.llvm.org/pipermail/llvm-dev/2017-April/111732.html Differential Revision: https://reviews.llvm.org/D31838 llvm-svn: 300464
* [libFuzzer] more trophiesKostya Serebryany2017-04-141-0/+2
| | | | llvm-svn: 300366
* MIRLangRef: Add a section on simplifying .mir testsMatthias Braun2017-04-131-0/+47
| | | | | | Differential Revision: http://reviews.llvm.org/D32058 llvm-svn: 300282
* MIRLangRef: Simplify/update documentationMatthias Braun2017-04-131-15/+16
| | | | | | | | | | | - Refer to options by `-option` instead of `option` - Use `-mtriple=` instead of `-march` in the example (-march will still target the default operating system which is usually not what you want in a test) - Rephrase sentence because output does not go to stdout by default (you need -o - for that as should be expected). llvm-svn: 300268
* Remove more lies from the LangRef.George Burgess IV2017-04-131-3/+1
| | | | | | Same change as in r300168, but for invoke instead of call. llvm-svn: 300172
* Update the LangRef to reflect reality.George Burgess IV2017-04-131-3/+1
| | | | | | | | | | | | At the very least, we have CallInst::setIsNoInline() for adding the noinline attribute to callsites, and I'm told alwaysinline seems to work. Thought of adding "not all attributes are guaranteed to work here". If someone thinks that would be better (or has a better way of phrasing that, etc.), happy to add it. llvm-svn: 300168
* [InstCombine] fix wrong undef handling when converting select to shuffleSanjay Patel2017-04-121-3/+4
| | | | | | | | | | | | | As discussed in: https://bugs.llvm.org/show_bug.cgi?id=32486 ...the canonicalization of vector select to shufflevector does not hold up when undef elements are present in the condition vector. Try to make the undef handling clear in the code and the LangRef. Differential Revision: https://reviews.llvm.org/D31980 llvm-svn: 300092
* [LangRef] fix documentationPiotr Padlewski2017-04-121-0/+1
| | | | llvm-svn: 300050
* Invariant.group and mustalias docs fixesPiotr Padlewski2017-04-122-1/+11
| | | | | | | | | | | | | | | Summary: Alias analysis would like to know that invariant.group.barrier returns pointer that mustalias, but this can't imply that we can replace one pointer with another Reviewers: dberlin, sanjoy Subscribers: llvm-commits, chandlerc, hfinkel, nlewycky, amharc Differential Revision: https://reviews.llvm.org/D31758 llvm-svn: 300033
* Minor updates to floating point intrinsic documentationAndrew Kaylor2017-04-111-24/+21
| | | | llvm-svn: 299991
* Allow DataLayout to specify addrspace for allocas.Matt Arsenault2017-04-101-2/+5
| | | | | | | | | | | | | | | | | | | | | | | LLVM makes several assumptions about address space 0. However, alloca is presently constrained to always return this address space. There's no real way to avoid using alloca, so without this there is no way to opt out of these assumptions. The problematic assumptions include: - That the pointer size used for the stack is the same size as the code size pointer, which is also the maximum sized pointer. - That 0 is an invalid, non-dereferencable pointer value. These are problems for AMDGPU because alloca is used to implement the private address space, which uses a 32-bit index as the pointer value. Other pointers are 64-bit and behave more like LLVM's notion of generic address space. By changing the address space used for allocas, we can change our generic pointer type to be LLVM's generic pointer type which does have similar properties. llvm-svn: 299888
* [XRay][docs] Fix hyperlink to XRay docDean Michael Berris2017-04-061-3/+2
| | | | llvm-svn: 299624
* [coroutines] Add syntax coloring to examples in Coroutines.rstGor Nishanov2017-04-051-19/+19
| | | | | | | | Subscribers: EricWF Differential Revision: https://reviews.llvm.org/D31699 llvm-svn: 299517
* Change section flag character for SHF_LINK_ORDER to "o".Evgeniy Stepanov2017-04-041-3/+3
| | | | | | | | GAS uses "m" as a compatibility alias for "M" (SHF_MERGE). "o" is free, except on ia64, where it already means SHF_LINK_ORDER. llvm-svn: 299479
* Update stale doxygen links in ProgrammersManual.rstTim Northover2017-04-031-17/+17
| | | | | | Patch by Wei-Ren Chen. llvm-svn: 299395
* Fix LLVMBuild.txt typo. NFCJoel Jones2017-04-031-1/+1
| | | | llvm-svn: 299373
* Bitcode: Remove reader support for MODULE_CODE_PURGEVALS.Peter Collingbourne2017-04-031-10/+0
| | | | | | | | | | Support for writing this module code was removed in r73220, which was well before the LLVM 3.0 release, so we do not need to be able to understand it for backwards compatibility. Differential Revision: https://reviews.llvm.org/D31563 llvm-svn: 299370
* [XRay][docs] Add XRayExample to docindex.Dean Michael Berris2017-03-311-0/+1
| | | | llvm-svn: 299172
* [XRay][docs] Examples for how to use XRayDean Michael Berris2017-03-302-0/+277
| | | | | | | | | | | | | | | Summary: This document is an attempt at showing how XRay could be used to debug latency issues with LLVM tools, and how to use the llvm-xray tool to analyse XRay traces. Reviewers: echristo, mehdi_amini, davide Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D31493 llvm-svn: 299133
* LangRef: Don't refer to a 'generic' address space.Matt Arsenault2017-03-301-2/+2
| | | | | | Consistently call this the default address space. llvm-svn: 299131
* Fix GettingStarted.rst statement.Rafael Espindola2017-03-291-1/+1
| | | | | | Patch by Wei-Ren Chen! llvm-svn: 298995
* [IR] Add AllowContract to FastMathFlagsAdam Nemet2017-03-281-0/+4
| | | | | | | | | | | | -ffp-contract=fast does not currently work with LTO because it's passed as a TargetOption to the backend rather than in the IR. This adds it to FastMathFlags. This is toward fixing PR25721 Differential Revision: https://reviews.llvm.org/D31164 llvm-svn: 298939
* Document how to fetch monorepo SVN revision notesReid Kleckner2017-03-241-6/+18
| | | | llvm-svn: 298733
* Document the status quo of DIExpression semantics in LangRef.rstAdrian Prantl2017-03-221-7/+20
| | | | llvm-svn: 298528
* Let llvm.objectsize be conservative with null pointersGeorge Burgess IV2017-03-211-7/+12
| | | | | | | | | | | This adds a parameter to @llvm.objectsize that makes it return conservative values if it's given null. This fixes PR23277. Differential Revision: https://reviews.llvm.org/D28494 llvm-svn: 298430
* Fix RST docs AttributeList heading underlineReid Kleckner2017-03-211-1/+1
| | | | llvm-svn: 298398
* Rename AttributeSet to AttributeListReid Kleckner2017-03-211-17/+16
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: This class is a list of AttributeSetNodes corresponding the function prototype of a call or function declaration. This class used to be called ParamAttrListPtr, then AttrListPtr, then AttributeSet. It is typically accessed by parameter and return value index, so "AttributeList" seems like a more intuitive name. Rename AttributeSetImpl to AttributeListImpl to follow suit. It's useful to rename this class so that we can rename AttributeSetNode to AttributeSet later. AttributeSet is the set of attributes that apply to a single function, argument, or return value. Reviewers: sanjoy, javed.absar, chandlerc, pete Reviewed By: pete Subscribers: pete, jholewinski, arsenm, dschuff, mehdi_amini, jfb, nhaehnle, sbc100, void, llvm-commits Differential Revision: https://reviews.llvm.org/D31102 llvm-svn: 298393
* Mention that the Sphinx docs build wants version 1.5 or laterJonathan Roelofs2017-03-201-1/+2
| | | | | | | `misc.highlighting_failure` support was added to `suppress_warnings` in that version, and the warnings-as-errors docs build relies on it. llvm-svn: 298277
* Fix docs-llvm-html build.Evgeniy Stepanov2017-03-171-1/+2
| | | | llvm-svn: 298163
* Add !associated metadata.Evgeniy Stepanov2017-03-171-0/+25
| | | | | | | | | | | | | | | | This is an ELF-specific thing that adds SHF_LINK_ORDER to the global's section pointing to the metadata argument's section. The effect of that is a reverse dependency between sections for the linker GC. !associated does not change the behavior of global-dce. The global may also need to be added to llvm.compiler.used. Since SHF_LINK_ORDER is per-section, !associated effectively enables fdata-sections for the affected globals, the same as comdats do. Differential Revision: https://reviews.llvm.org/D29104 llvm-svn: 298157
* Resubmit r297897: [PGO] Value profile for size of memory intrinsic callsRong Xu2017-03-161-0/+4
| | | | | | | R297897 inadvertently enabled annotation for memop profiling. This new patch fixed it. llvm-svn: 297996
* Revert "[PGO] Value profile for size of memory intrinsic calls"Eric Liu2017-03-161-4/+0
| | | | | | This commit reverts r297897 and r297909. llvm-svn: 297951
* [PGO] Value profile for size of memory intrinsic callsRong Xu2017-03-151-0/+4
| | | | | | | | | This patch adds the value profile support to profile the size parameter of memory intrinsic calls: memcpy, memcmp, and memmov. Differential Revision: http://reviews.llvm.org/D28965 llvm-svn: 297897
* Fix some indenting and line-wrapping issues identified in ProgrammersManual. ↵Daniel Berlin2017-03-131-26/+28
| | | | | | Make description of debugCounters a little clearer llvm-svn: 297656
* Add documentation on debug counters to Programmers Manual.Daniel Berlin2017-03-121-0/+63
| | | | | | | | | | Reviewers: mehdi_amini Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D30842 llvm-svn: 297575
* Remove opt-bisect support for "cases" in favor of debug countersDaniel Berlin2017-03-111-9/+2
| | | | | | | | | | | | | | | | | | Summary: Ths "cases" support was not quite finished, is unused, and is really just debug counters. (well, almost, debug counters are slightly more powerful, in that they can skip things at the start, too). Note, opt-bisect itself could also be implemented as a wrapper around debug counters, but not sure it's worth it ATM. I'll shove it on a todo list if we think it is. Reviewers: MatzeB, chandlerc Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D30856 llvm-svn: 297542
* [FileCheck] Added --enable-var-scope option to enable scope for regex variables.Artem Belevich2017-03-091-0/+19
| | | | | | | | | | | | | If `--enable-var-scope` is in effect, variables with names that start with `$` are considered to be global. All other variables are local. All local variables get undefined at the beginning of each CHECK-LABEL block. Global variables are not affected by CHECK-LABEL. This makes it easier to ensure that individual tests are not affected by variables set in preceding tests. Differential Revision: https://reviews.llvm.org/D30749 llvm-svn: 297396
* [InstSimplify] vector div/rem with any zero element in divisor is undefSanjay Patel2017-03-091-7/+14
| | | | | | | | | | | This was suggested as a DAG simplification in the review for rL297026 : http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20170306/435253.html ...but let's start with IR since we have actual docs for IR (LangRef). Differential Revision: https://reviews.llvm.org/D30665 llvm-svn: 297390
* [DebugInfo] Emit address space with DW_AT_address_class attribute for ↵Konstantin Zhuravlyov2017-03-081-10/+14
| | | | | | | | pointer and reference types Differential Revision: https://reviews.llvm.org/D29670 llvm-svn: 297320
* [DebugInfo] Make legal and emit DW_OP_swap and DW_OP_xderefKonstantin Zhuravlyov2017-03-081-0/+5
| | | | | | Differential Revision: https://reviews.llvm.org/D29672 llvm-svn: 297247
* [coroutines] Add handling for unwind coro.endsGor Nishanov2017-03-071-18/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The purpose of coro.end intrinsic is to allow frontends to mark the cleanup and other code that is only relevant during the initial invocation of the coroutine and should not be present in resume and destroy parts. In landing pads coro.end is replaced with an appropriate instruction to unwind to caller. The handling of coro.end differs depending on whether the target is using landingpad or WinEH exception model. For landingpad based exception model, it is expected that frontend uses the `coro.end`_ intrinsic as follows: ``` ehcleanup: %InResumePart = call i1 @llvm.coro.end(i8* null, i1 true) br i1 %InResumePart, label %eh.resume, label %cleanup.cont cleanup.cont: ; rest of the cleanup eh.resume: %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val29 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val29 ``` The `CoroSpit` pass replaces `coro.end` with ``True`` in the resume functions, thus leading to immediate unwind to the caller, whereas in start function it is replaced with ``False``, thus allowing to proceed to the rest of the cleanup code that is only needed during initial invocation of the coroutine. For Windows Exception handling model, a frontend should attach a funclet bundle referring to an enclosing cleanuppad as follows: ``` ehcleanup: %tok = cleanuppad within none [] %unused = call i1 @llvm.coro.end(i8* null, i1 true) [ "funclet"(token %tok) ] cleanupret from %tok unwind label %RestOfTheCleanup ``` The `CoroSplit` pass, if the funclet bundle is present, will insert ``cleanupret from %tok unwind to caller`` before the `coro.end`_ intrinsic and will remove the rest of the block. Reviewers: majnemer Reviewed By: majnemer Subscribers: llvm-commits, mehdi_amini Differential Revision: https://reviews.llvm.org/D25543 llvm-svn: 297223
* [X86][AVX512] Adding new LLVM TableGen backend which generates the EVEX2VEX ↵Ayman Musa2017-03-071-0/+6
| | | | | | | | | | | | compressing tables. X86EvexToVex machine instruction pass compresses EVEX encoded instructions by replacing them with their identical VEX encoded instructions when possible. It uses manually supported 2 large tables that map the EVEX instructions to their VEX ideticals. This TableGen backend replaces the tables by automatically generating them. Differential Revision: https://reviews.llvm.org/D30451 llvm-svn: 297127
* Revert commit r296967, no typoSylvestre Ledru2017-03-051-1/+1
| | | | llvm-svn: 296984
* Fix a typo. Patch by fcrick on github ↵Sylvestre Ledru2017-03-041-1/+1
| | | | | | https://github.com/llvm-mirror/llvm/pull/23 llvm-svn: 296969
* Remove redundant code block and update comment.Sylvestre Ledru2017-03-041-13/+1
| | | | | | By patch zoren here: https://github.com/llvm-mirror/llvm/pull/20 llvm-svn: 296968
* Fix a typo. Thanks to huangml. Reported here: ↵Sylvestre Ledru2017-03-041-1/+1
| | | | | | https://github.com/llvm-mirror/llvm/pull/6 llvm-svn: 296967
OpenPOWER on IntegriCloud