1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/docs
Elena Demikhovsky 966bb89b1a Adding a width of the GEP index to the Data Layout.
Making a width of GEP Index, which is used for address calculation, to be one of the pointer properties in the Data Layout.
p[address space]:size:memory_size:alignment:pref_alignment:index_size_in_bits.
The index size parameter is optional, if not specified, it is equal to the pointer size.

Till now, the InstCombiner normalized GEPs and extended the Index operand to the pointer width.
It works fine if you can convert pointer to integer for address calculation and all registered targets do this.
But some ISAs have very restricted instruction set for the pointer calculation. During discussions were desided to retrieve information for GEP index from the Data Layout.
http://lists.llvm.org/pipermail/llvm-dev/2018-January/120416.html

I added an interface to the Data Layout and I changed the InstCombiner and some other passes to take the Index width into account.
This change does not affect any in-tree target. I added tests to cover data layouts with explicitly specified index size.

Differential Revision: https://reviews.llvm.org/D42123

llvm-svn: 325102
2018-02-14 06:58:08 +00:00
..
_ocamldoc
_static
_templates
_themes/llvm-theme
CommandGuide Re-land [dsymutil] Upstream update feature 2018-02-08 10:48:54 +00:00
Frontend
HistoricalNotes
PDB Update MSF File Documentation. 2018-01-12 21:42:39 +00:00
Proposals remove unreferenced footnotes 2018-01-05 00:24:55 +00:00
TableGen
tutorial [docs] Add out-of-date warnings to the BuildingAJIT tutorial text. 2018-02-06 21:25:20 +00:00
AdvancedBuilds.rst [NFC] Remove apostrophe to use 'it' in the possessive form. 2018-01-26 18:43:57 +00:00
AliasAnalysis.rst
AMDGPUUsage.rst [AMDGPU] Change constant addr space to 4 2018-02-13 18:00:25 +00:00
ARM-BE-bitcastfail.png
ARM-BE-bitcastsuccess.png
ARM-BE-ld1.png
ARM-BE-ldr.png
Atomics.rst
Benchmarking.rst
BigEndianNEON.rst
BitCodeFormat.rst [NFC] fix trivial typos in documents 2018-01-16 13:19:48 +00:00
BlockFrequencyTerminology.rst
BranchWeightMetadata.rst
Bugpoint.rst [docs] Mention opt -metarenamer in the bugpoint docs 2017-11-15 18:05:19 +00:00
CFIVerify.rst Introduce the llvm-cfi-verify tool (resubmission of D37937). 2017-09-20 20:38:14 +00:00
CMake.rst Fix up and document controlling ccache via CMake options. 2018-01-24 18:15:08 +00:00
CMakeLists.txt [dsymutil][doc] Improve wording in manpage and rename file. 2017-11-02 18:44:54 +00:00
CMakePrimer.rst
CodeGenerator.rst [MC] Fix -stack-size-section on ARM 2018-01-17 09:01:29 +00:00
CodeOfConduct.rst
CodingStandards.rst Coding Standards: Document library layering requirements & header isolation. 2018-02-01 21:03:35 +00:00
CommandLine.rst Remove references to response file argument in CommandLine.rst 2017-09-20 22:41:34 +00:00
CompileCudaWithLLVM.rst
CompilerWriterInfo.rst
conf.py The trunk version is now 7.0.0svn 2018-01-03 14:52:54 +00:00
Contributing.rst [Docs] Add Contributing page. 2018-01-04 17:12:21 +00:00
Coroutines.rst
CoverageMappingFormat.rst [Coverage] Use gap regions to select better line exec counts 2017-09-18 23:37:28 +00:00
DebuggingJITedCode.rst
DeveloperPolicy.rst Fixed broken links in docs. 2017-09-22 21:10:37 +00:00
Docker.rst
doxygen-mainpage.dox
doxygen.cfg.in [NFC] fix trivial typos in comments and documents 2018-01-26 08:15:29 +00:00
ExceptionHandling.rst [Doc] Guideline on adding exception handling support for a target 2018-01-24 09:53:01 +00:00
ExtendedIntegerResults.txt
ExtendingLLVM.rst
Extensions.rst docs: wordsmith some of the linker option extension 2018-01-31 00:16:23 +00:00
FAQ.rst
FaultMaps.rst
FuzzingLLVM.rst [llvm-opt-fuzzer] Introduce llvm-opt-fuzzer for fuzzing optimization passes 2017-11-10 12:19:08 +00:00
GarbageCollection.rst
gcc-loops.png
GetElementPtr.rst [docs] Update code block for compatibility with Sphinx 1.5.1 2017-11-06 11:47:24 +00:00
GettingStarted.rst [NFC] fix trivial typos in comments and documents 2018-01-29 05:17:03 +00:00
GettingStartedVS.rst [MC] Fix regression tests on Windows when git “core.autocrlf” is set to true. 2017-11-17 21:59:43 +00:00
GlobalISel.rst [globalisel] Add very brief docs summarizing the ISel part of the LLVMDev tutorial. 2017-10-23 17:18:44 +00:00
GoldPlugin.rst
HowToAddABuilder.rst
HowToBuildOnARM.rst
HowToCrossCompileBuiltinsOnArm.rst [docs][ARM] Add HowTo for cross compiling and testing compiler-rt builtins 2017-11-07 09:40:05 +00:00
HowToCrossCompileLLVM.rst
HowToReleaseLLVM.rst docs: Fix formatting in HowToReleaseLLVM 2017-09-19 03:27:26 +00:00
HowToSetUpLLVMStyleRTTI.rst
HowToSubmitABug.rst [docs] Fix mention of GCC frontend 2018-01-15 17:11:22 +00:00
HowToUseAttributes.rst
HowToUseInstrMappings.rst
InAlloca.rst
index.rst [Docs] Add Contributing page. 2018-01-04 17:12:21 +00:00
LangRef.rst Adding a width of the GEP index to the Data Layout. 2018-02-14 06:58:08 +00:00
Lexicon.rst
LibFuzzer.rst [libFuzzer] add a flag -malloc_limit_mb 2017-12-01 22:12:04 +00:00
LinkTimeOptimization.rst
linpack-pc.png
LLVMBuild.rst
LLVMBuild.txt
make.bat
Makefile.sphinx
MarkedUpDisassembly.rst
MCJIT-creation.png
MCJIT-dyld-load.png
MCJIT-engine-builder.png
MCJIT-load-object.png
MCJIT-load.png
MCJIT-resolve-relocations.png
MCJITDesignAndImplementation.rst
MemorySSA.rst [NFC] fix trivial typos in comments and documents 2018-01-26 08:15:29 +00:00
MergeFunctions.rst
MIRLangRef.rst [MIR] Update MIRLangRef with documentation on bundled instructions 2018-01-10 17:53:16 +00:00
NVPTXUsage.rst [CodeGen] Unify MBB reference format in both MIR and debug output 2017-12-04 17:18:51 +00:00
OptBisect.rst
Packaging.rst
Passes.rst Another try to commit 323321 (aggressive instruction combine). 2018-01-25 12:06:32 +00:00
Phabricator.rst [docs] Tweak update to Phabricator docs about setting repository for diffs uploaded via web 2018-01-12 15:44:35 +00:00
ProgrammersManual.rst [docs] Use dbgs() instead of errs() for DEBUG() 2017-12-25 14:16:07 +00:00
Projects.rst
re_format.7
README.txt
ReleaseNotes.rst Add release note on change to memcpy/memmove/memset builtin signatures 2018-02-05 19:39:38 +00:00
ReleaseProcess.rst [docs] Make ReleaseProcess.rst 80 column. NFCI 2018-01-18 14:57:55 +00:00
ReportingGuide.rst
ScudoHardenedAllocator.rst [docs] Update Scudo documentation 2018-01-04 18:31:22 +00:00
SegmentedStacks.rst
SourceLevelDebugging.rst [docs] Update code block for compatibility with Sphinx 1.5.1 2017-11-06 11:47:24 +00:00
SphinxQuickstartTemplate.rst
StackMaps.rst
Statepoints.rst
SystemLibrary.rst
TableGenFundamentals.rst
TestingGuide.rst Revert "lit.py: Add new %{shared_output(LABEL)} substitution" 2017-10-14 04:01:27 +00:00
TestSuiteMakefileGuide.rst
TypeMetadata.rst Fixed broken links in docs. 2017-09-22 21:10:37 +00:00
Vectorizers.rst docs: Remove reference to a deprecated flag 2018-01-23 20:22:37 +00:00
WritingAnLLVMBackend.rst [Docs] Fix typo in scheduler model documentation. enumemation->enumeration 2017-12-10 09:14:35 +00:00
WritingAnLLVMPass.rst Fixed dead links in WritingAnLLVMPass.rst 2017-11-06 09:51:39 +00:00
XRay.rst [XRay][compiler-rt] Reduce XRay log spam 2017-12-13 06:37:13 +00:00
XRayExample.rst [XRay][compiler-rt] Reduce XRay log spam 2017-12-13 06:37:13 +00:00
XRayFDRFormat.rst
yaml2obj.rst
YamlIO.rst [YAML] Add support for non-printable characters 2017-12-18 17:38:03 +00:00

LLVM Documentation
==================

LLVM's documentation is written in reStructuredText, a lightweight
plaintext markup language (file extension `.rst`). While the
reStructuredText documentation should be quite readable in source form, it
is mostly meant to be processed by the Sphinx documentation generation
system to create HTML pages which are hosted on <http://llvm.org/docs/> and
updated after every commit. Manpage output is also supported, see below.

If you instead would like to generate and view the HTML locally, install
Sphinx <http://sphinx-doc.org/> and then do:

    cd <build-dir>
    cmake -DLLVM_ENABLE_SPHINX=true -DSPHINX_OUTPUT_HTML=true <src-dir>
    make -j3 docs-llvm-html
    $BROWSER <build-dir>/docs//html/index.html

The mapping between reStructuredText files and generated documentation is
`docs/Foo.rst` <-> `<build-dir>/docs//html/Foo.html` <-> `http://llvm.org/docs/Foo.html`.

If you are interested in writing new documentation, you will want to read
`SphinxQuickstartTemplate.rst` which will get you writing documentation
very fast and includes examples of the most important reStructuredText
markup syntax.

Manpage Output
===============

Building the manpages is similar to building the HTML documentation. The
primary difference is to use the `man` makefile target, instead of the
default (which is `html`). Sphinx then produces the man pages in the
directory `<build-dir>/docs/man/`.

    cd <build-dir>
    cmake -DLLVM_ENABLE_SPHINX=true -DSPHINX_OUTPUT_MAN=true <src-dir>
    make -j3 docs-llvm-man
    man -l >build-dir>/docs/man/FileCheck.1

The correspondence between .rst files and man pages is
`docs/CommandGuide/Foo.rst` <-> `<build-dir>/docs//man/Foo.1`.
These .rst files are also included during HTML generation so they are also
viewable online (as noted above) at e.g.
`http://llvm.org/docs/CommandGuide/Foo.html`.

Checking links
==============

The reachability of external links in the documentation can be checked by
running:

    cd docs/
    make -f Makefile.sphinx linkcheck

Doxygen page Output
==============

Install doxygen <http://www.stack.nl/~dimitri/doxygen/download.html> and dot2tex <https://dot2tex.readthedocs.io/en/latest>.

    cd <build-dir>
    cmake -DLLVM_ENABLE_DOXYGEN=On <llvm-top-src-dir>
    make doxygen-llvm # for LLVM docs
    make doxygen-clang # for clang docs

It will generate html in
    
    <build-dir>/docs/doxygen/html # for LLVM docs
    <build-dir>/tools/clang/docs/doxygen/html # for clang docs