Latest commit f93293e May 23, 2017 @azaks azaks [LV] Report multiple reasons for not vectorizing under allowExtraAnal…
…ysis

The default behavior of -Rpass-analysis=loop-vectorizer is to report only the
first reason encountered for not vectorizing, if one is found, at which time the
vectorizer aborts its handling of the loop. This patch allows multiple reasons
for not vectorizing to be identified and reported, at the potential expense of
additional compile-time, under allowExtraAnalysis which can currently be turned
on by Clang's -fsave-optimization-record and opt's -pass-remarks-missed.

Removed from LoopVectorizationLegality::canVectorize() the redundant checking
and reporting if we CantComputeNumberOfIterations, as LAI::canAnalyzeLoop() also
does that. This redundancy is caught by a lit test once multiple reasons are
reported.

Patch initially developed by Dror Barak.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303613 91177308-0d34-0410-b5e6-96231b3b80d8
Permalink
..
Failed to load latest commit information.
CommandGuide Resubmit r297897: [PGO] Value profile for size of memory intrinsic calls Mar 16, 2017
Frontend [docs][PerformanceTips] Add text on allocas and alignment Sep 10, 2015
HistoricalNotes [typo] An LLVM. Aug 16, 2013
PDB Add documentation for the PDB Module Info stream. Nov 29, 2016
Proposals fix some typos in the doc Jan 14, 2017
TableGen Improvements to TableGen/LangIntro.rst May 2, 2017
_ocamldoc [OCaml] Use a nicer style for documentation than OCaml default. Jul 17, 2015
_static Fix some typos in the doc Aug 28, 2016
_templates [docs] Convert docs index page into Sphinx. Apr 19, 2012
_themes/llvm-theme Sphinx CSS: remove negative letter-spacing, it makes some fonts look … Sep 30, 2012
tutorial Remove redundant code block and update comment. Mar 4, 2017
AMDGPUUsage.rst Fixing a malformed RST table to get the documentation bot back to green. Apr 27, 2017
ARM-BE-bitcastfail.png [ARM64-BE] Add sphinx documentation for the ARM64 NEON implementation. May 12, 2014
ARM-BE-bitcastsuccess.png [ARM64-BE] Add sphinx documentation for the ARM64 NEON implementation. May 12, 2014
ARM-BE-ld1.png [ARM64-BE] Add sphinx documentation for the ARM64 NEON implementation. May 12, 2014
ARM-BE-ldr.png [ARM64-BE] Add sphinx documentation for the ARM64 NEON implementation. May 12, 2014
AdvancedBuilds.rst Fixing autocorrect changing cmake->make Mar 18, 2016
AliasAnalysis.rst Invariant.group and mustalias docs fixes Apr 12, 2017
Atomics.rst fix some various typos in the doc Jul 2, 2016
BigEndianNEON.rst Fix typos May 15, 2014
BitCodeFormat.rst Bitcode: Add a string table to the bitcode format. Apr 17, 2017
BlockFrequencyTerminology.rst Fix typos May 15, 2014
BranchWeightMetadata.rst Add function importing info from samplepgo profile to the module summ… Feb 28, 2017
Bugpoint.rst Correct 'teh' and other typos / repeated words. Apr 14, 2015
CMake.rst Docs: Fix pluralization in CMake docs May 20, 2017
CMakeLists.txt Revert "Revert "CMake: Move sphinx detection into AddSphinxTarget.cma… May 9, 2017
CMakePrimer.rst [docs] fix cmake code-block warning Jul 20, 2016
CodeGenerator.rst [docs] Fix typo Feb 9, 2017
CodeOfConduct.rst [Conduct] Refine what "rare cases" means wrt violations outside our s… Jul 6, 2016
CodingStandards.rst Fix some remaining documentation references to MSVC 2013 Dec 15, 2016
CommandLine.rst Update CommandLine.rst getRegisteredOptions example Nov 7, 2016
CompileCudaWithLLVM.rst [Docs] Update docs to indicate that CUDA compilation is supported on … Jan 5, 2017
CompilerWriterInfo.rst [docs] fix link to AMD manuals (PR30946) Nov 8, 2016
Coroutines.rst [coroutines] Add syntax coloring to examples in Coroutines.rst Apr 5, 2017
CoverageMappingFormat.rst fix some typos in the doc Jan 14, 2017
DebuggingJITedCode.rst docs: Fix long standing linking antipattern. Jan 11, 2013
DeveloperPolicy.rst Update Bugzilla URLs in docs Feb 17, 2017
Dummy.html Add a dummy documentation file to unbreak 'make install'. We need to … Dec 13, 2012
ExceptionHandling.rst [docs] Fixing Sphinx warnings to unclog the buildbot Jul 20, 2016
ExtendedIntegerResults.txt Revert r103213. It broke several sections of live website. May 7, 2010
ExtendingLLVM.rst [WinEH] Add llvm.eh.exceptionpointer intrinsic Sep 3, 2015
Extensions.rst Change section flag character for SHF_LINK_ORDER to "o". Apr 4, 2017
FAQ.rst fix some typos in the doc Jul 28, 2016
FaultMaps.rst Fix the docs build Feb 7, 2017
GarbageCollection.rst Tidy up example of getting the pointer size. Oct 14, 2016
GetElementPtr.rst [Docs] Fix LangRef links referred in GetElementPtr.rst May 21, 2017
GettingStarted.rst Fix git command line in the Getting Started guide. May 15, 2017
GettingStartedVS.rst [doc] Remove explicit CMake version requirement for MSVC Nov 9, 2016
GlobalISel.rst [AArch64][GlobalISel] Legalize narrow scalar ops again. Jan 23, 2017
GoldPlugin.rst Revert 'Test commit as per developer policy' Nov 30, 2016
HowToAddABuilder.rst Cosmetic change. Apr 24, 2017
HowToBuildOnARM.rst [Docs] Change ARM build info to CMake Nov 6, 2015
HowToCrossCompileLLVM.rst [docs] Fix unexpected indentation in HowToCrossCompileLLVM.rst May 10, 2016
HowToReleaseLLVM.rst Adding RELEASE_TESTERS.TXT Jul 21, 2016
HowToSetUpLLVMStyleRTTI.rst [docs][LLVM-style RTTI] Add a mention of multiple inheritance. Feb 7, 2015
HowToSubmitABug.rst Update Bugzilla URLs in docs Feb 17, 2017
HowToUseAttributes.rst Fix RST docs AttributeList heading underline Mar 21, 2017
HowToUseInstrMappings.rst [docs] Fixing Sphinx warnings to unclog the buildbot Jul 20, 2016
InAlloca.rst [docs] Fixing Sphinx warnings to unclog the buildbot Jul 20, 2016
LLVMBuild.rst Fix LLVMBuild.txt typo. NFC Apr 3, 2017
LLVMBuild.txt LLVMBuild: Remove trailing newline, which irked me. Dec 12, 2011
LangRef.rst [docs] Small style nits. May 20, 2017
Lexicon.rst [Doc] Document "Splat" in the lexicon May 12, 2017
LibFuzzer.rst [libFuzzer] update docs on -print_coverage/-dump_coverage May 9, 2017
LinkTimeOptimization.rst [docs] Typos and whitespace fixed in LTO docs. Nov 29, 2016
MCJIT-creation.png Adding a document to describe the MCJIT execution engine implementation. Aug 21, 2013
MCJIT-dyld-load.png Adding a document to describe the MCJIT execution engine implementation. Aug 21, 2013
MCJIT-engine-builder.png Adding a document to describe the MCJIT execution engine implementation. Aug 21, 2013
MCJIT-load-object.png Adding a document to describe the MCJIT execution engine implementation. Aug 21, 2013
MCJIT-load.png Adding a document to describe the MCJIT execution engine implementation. Aug 21, 2013
MCJIT-resolve-relocations.png Adding a document to describe the MCJIT execution engine implementation. Aug 21, 2013
MCJITDesignAndImplementation.rst Fix several accidental DOS line endings in source files Jan 3, 2016
MIRLangRef.rst MIParser/MIRPrinter: Compute block successors if not explicitely spec… May 5, 2017
Makefile.sphinx Bring back Makefile.sphinx Mar 23, 2016
MarkedUpDisassembly.rst [docs] Fixing Sphinx warnings to unclog the buildbot Jul 20, 2016
MemorySSA.rst Fix some typos in the doc Aug 28, 2016
MergeFunctions.rst [docs] Fixing Sphinx warnings to unclog the buildbot Jul 20, 2016
NVPTXUsage.rst Update NVVMReflect usage doc to new idiom for adding target-specific … Jan 27, 2017
OptBisect.rst Remove opt-bisect support for "cases" in favor of debug counters Mar 11, 2017
Packaging.rst docs: Fix long standing linking antipattern. Jan 11, 2013
Passes.rst Remove the ScalarReplAggregates pass Jun 15, 2016
Phabricator.rst [doc] Fix minor grammatical error in Phabricator.rst Jan 5, 2017
ProgrammersManual.rst [docs] Simplify some language for Error/cantFail in the programmer's … Apr 30, 2017
Projects.rst Rename all references to old mailing lists to new lists.llvm.org addr… Aug 5, 2015
README.txt Sync with changes from r300825 in clang. Apr 27, 2017
ReleaseNotes.rst Add a blurb to the release notes about the WeakVH -> WeakTrackingVH t… May 8, 2017
ReleaseProcess.rst [OPENMP] Make -fopenmp to turn on OpenMP support by default. Dec 10, 2015
ReportingGuide.rst fix some various typos in the doc Jul 2, 2016
ScudoHardenedAllocator.rst [docs] Documentation update for Scudo Feb 9, 2017
SegmentedStacks.rst [docs] Fixing Sphinx warnings to unclog the buildbot Jul 20, 2016
SourceLevelDebugging.rst PR32382: Fix emitting complex DWARF expressions. Apr 18, 2017
SphinxQuickstartTemplate.rst [docs] Provide pointer for building Sphinx docs. Feb 27, 2013
StackMaps.rst [StackMaps] Increase the size of the "location size" field Apr 28, 2017
Statepoints.rst Statepoint Docs: fix incorrect uses of it's Apr 19, 2017
SystemLibrary.rst remove the rest of the "written by" lines in the documentation. It is Jan 10, 2013
TableGenFundamentals.rst Recover TableGen/LangRef, make it official Apr 1, 2014
TestSuiteMakefileGuide.rst Fix the docs I broke Mar 11, 2016
TestingGuide.rst [docs] cleanup documentation on lit substitutions Feb 9, 2017
TypeMetadata.rst IR: New representation for CFI and virtual call optimization pass met… Jun 24, 2016
Vectorizers.rst [LV] Report multiple reasons for not vectorizing under allowExtraAnal… May 23, 2017
WritingAnLLVMBackend.rst fix some typos in the doc Jan 14, 2017
WritingAnLLVMPass.rst [docs] Make WritingAnLLVMPass.rst up-to-date with current state of th… Sep 27, 2016
XRay.rst [XRay][Docs] Update the XRay documentation Feb 28, 2017
XRayExample.rst [XRay][docs] Fix hyperlink to XRay doc Apr 6, 2017
YamlIO.rst fix some typos in the doc Jan 14, 2017
conf.py docs/conf.py: Suppress sphinx highlighting failure warnings Feb 10, 2017
doxygen-mainpage.dox [docs] Updated docs to work with Doxygen 1.8.11 Mar 6, 2016
doxygen.cfg.in Sync with changes from r300825 in clang. Apr 27, 2017
gcc-loops.png Update the gcc-loops benchmark Jan 20, 2013
index.rst [XRay][docs] Add XRayExample to docindex. Mar 31, 2017
linpack-pc.png Update the linpack benchmark with different array sizes. Jan 20, 2013
make.bat [docs] Stub out structure for Sphinx-based docs. Apr 19, 2012
re_format.7 Revert r103213. It broke several sections of live website. May 7, 2010
yaml2obj.rst Summary: Jul 28, 2015

README.txt

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