Commit Graph

5678 Commits

Author SHA1 Message Date
Alex Lorenz
c41c3a4c3b YAML: Add an optional 'flow' field to the mapping trait to allow flow mapping output.
This patch adds an optional 'flow' field to the MappingTrait
class so that yaml IO will be able to output flow mappings.

Reviewers: Justin Bogner

Differential Revision: http://reviews.llvm.org/D9450


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236456 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-04 20:11:40 +00:00
Alex Lorenz
0b74b0823f Update YamlIO documentation for the ScalarTraits class.
This patch adds the missing context parameter to the
input and output methods in ScalarTraits.

Differential Revision: http://reviews.llvm.org/D9173


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236328 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-01 18:20:23 +00:00
Reid Kleckner
1ed169d8a1 Add a note about permitting default member initializers
Use them in WinEHPrepare so that we can spot any toolchain bugs that
come up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236244 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-30 18:17:12 +00:00
Jonathan Roelofs
b241283669 Clean up docs references to './configure' in preparation for deprecating in-source builds
http://reviews.llvm.org/D8787


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236144 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-29 20:06:41 +00:00
Duncan P. N. Exon Smith
e56023a059 IR: Give 'DI' prefix to debug info metadata
Finish off PR23080 by renaming the debug info IR constructs from `MD*`
to `DI*`.  The last of the `DIDescriptor` classes were deleted in
r235356, and the last of the related typedefs removed in r235413, so
this has all baked for about a week.

Note: If you have out-of-tree code (like a frontend), I recommend that
you get everything compiling and tests passing with the *previous*
commit before updating to this one.  It'll be easier to keep track of
what code is using the `DIDescriptor` hierarchy and what you've already
updated, and I think you're extremely unlikely to insert bugs.  YMMV of
course.

Back to *this* commit: I did this using the rename-md-di-nodes.sh
upgrade script I've attached to PR23080 (both code and testcases) and
filtered through clang-format-diff.py.  I edited the tests for
test/Assembler/invalid-generic-debug-node-*.ll by hand since the columns
were off-by-three.  It should work on your out-of-tree testcases (and
code, if you've followed the advice in the previous paragraph).

Some of the tests are in badly named files now (e.g.,
test/Assembler/invalid-mdcompositetype-missing-tag.ll should be
'dicompositetype'); I'll come back and move the files in a follow-up
commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236120 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-29 16:38:44 +00:00
Alexey Samsonov
5d3a9d6339 [docs] Fix the link to SanitizerCoverage docs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235934 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-27 22:50:06 +00:00
Philip Reames
94bd029c3d [PerformanceTips] Italics are *word*, not _word_
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235827 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-26 22:25:29 +00:00
Philip Reames
fb3da5cce1 [PerformanceTips] Provide context on the impact of assume(x)
Sean Silva suggested I add something here a while back.  Sorry it's taken so long to get back to this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235826 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-26 22:23:12 +00:00
Philip Reames
77456809c4 Add two new items to PerformanceTips
1) Turns out we're not great at recognizing redundant checks when one is a != and the other is an ==.  This is a bug, but it's one that matters to frontend authors.

2) Frontends shouldn't use intrinsics unless strictly neccessary.  This has been pretty widely proven by this point and is good to document.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235825 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-26 22:15:18 +00:00
Bob Wilson
0aa62dd53a Minor edits to the llvm-cov documentation.
This just changes a few places to use a slightly more formal style.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235389 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-21 16:32:02 +00:00
Duncan P. N. Exon Smith
603fc8c265 docs: Update Kaleidoscope for recent DI changes
This has been bit-rotting, so fix it up.  I'll have to edit this again
once the MD* classes have been renamed to DI* -- I'll try to remember to
do that with the commit that renames them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235244 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-18 00:01:35 +00:00
Sean Silva
586a785efc [LangRef] Remove redundant and inconsistent condition.
Just above, 'op2' is stated to be unsigned, so 'negative' doesn't make
sense (and is handled by "larger than" anyway). The descriptions for
lshr and ashr don't say 'negative or' either.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235230 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-17 21:58:55 +00:00
Sanjoy Das
5ff5907996 [IR] Introduce a dereferenceable_or_null(N) attribute.
Summary:
If a pointer is marked as dereferenceable_or_null(N), LLVM assumes it
is either `null` or `dereferenceable(N)` or both.  This change only
introduces the attribute and adds a token test case for the `llvm-as`
/ `llvm-dis`.  It does not hook up other parts of the optimizer to
actually exploit the attribute -- those changes will come later.

For pointers in address space 0, `dereferenceable(N)` is now exactly
equivalent to `dereferenceable_or_null(N)` && `nonnull`.  For other
address spaces, `dereferenceable(N)` is potentially weaker than
`dereferenceable_or_null(N)` && `nonnull` (since we could have a null
`dereferenceable(N)` pointer).

The motivating case for this change is Java (and other managed
languages), where pointers are either `null` or dereferenceable up to
some usually known-at-compile-time constant offset.

Reviewers: rafael, hfinkel

Reviewed By: hfinkel

Subscribers: nicholas, llvm-commits

Differential Revision: http://reviews.llvm.org/D8650

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235132 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-16 20:29:50 +00:00
Charlie Turner
d3557eb1f8 Editorial changes in the programmers manual.
VMCore was renamed to IR back in 2013. The relevant "core"
implementations were moved into the lib/IR directory at the same time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235116 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-16 17:01:23 +00:00
Duncan P. N. Exon Smith
88e419d66e DebugInfo: Remove 'inlinedAt:' field from MDLocalVariable
Remove 'inlinedAt:' from MDLocalVariable.  Besides saving some memory
(variables with it seem to be single largest `Metadata` contributer to
memory usage right now in -g -flto builds), this stops optimization and
backend passes from having to change local variables.

The 'inlinedAt:' field was used by the backend in two ways:

 1. To tell the backend whether and into what a variable was inlined.
 2. To create a unique id for each inlined variable.

Instead, rely on the 'inlinedAt:' field of the intrinsic's `!dbg`
attachment, and change the DWARF backend to use a typedef called
`InlinedVariable` which is `std::pair<MDLocalVariable*, MDLocation*>`.
This `DebugLoc` is already passed reliably through the backend (as
verified by r234021).

This commit removes the check from r234021, but I added a new check
(that will survive) in r235048, and changed the `DIBuilder` API in
r235041 to require a `!dbg` attachment whose 'scope:` is in the same
`MDSubprogram` as the variable's.

If this breaks your out-of-tree testcases, perhaps the script I used
(mdlocalvariable-drop-inlinedat.sh) will help; I'll attach it to PR22778
in a moment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235050 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-15 22:29:27 +00:00
Ed Maste
ffc045ab80 Correct 'teh' and other typos / repeated words.
Patch by Eitan Adler.

Differential Revision:	http://reviews.llvm.org/D8514


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234939 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-14 20:52:58 +00:00
David Blaikie
79ccb55981 [docs] Update outdated ExtendingLLVM.rst
Summary:
The document is still incomplete in some degrees, but updated to reflect the
latest changes. Anyway we can detail it if any one think it is not enough. For
the sake of it, some useful examples are listed below:

Refer to r113618 "Add X86 MMX type to bitcode and Type" for how to add a new
type.

> One notable change from then is only one thing that ``lib/VMCore`` is renamed
to ``lib/IR``.

Refer to r194760 "Add addrspacecast instruction" for how to add a new
instruction.

Patch by Chilledheart (rwindz0@gmail.com).

Reviewed By: echristo

Differential Revision: http://reviews.llvm.org/D8897

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234757 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-13 16:04:17 +00:00
Kostya Serebryany
f3a664fc2e [lib/Fuzzer] Section: How good is my fuzzer?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234571 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-10 06:32:29 +00:00
Kostya Serebryany
3e35db6c50 [lib/Fuzzer] explain compatibility with AFL
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234570 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-10 05:44:43 +00:00
Kostya Serebryany
e32bb4cb81 [lib/Fuzzer] show how to find Heartbleed with LibFuzzer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234391 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-08 06:16:11 +00:00
Tom Stellard
a787066317 R600/SI: Initial support for assembler and inline assembly
This is currently considered experimental, but most of the more
commonly used instructions should work.

So far only SI has been extensively tested, CI and VI probably work too,
but may be buggy.  The current set of tests cases do not give complete
coverage, but I think it is sufficient for an experimental assembler.

See the documentation in R600Usage for more information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234381 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-08 01:09:26 +00:00
Rafael Espindola
6ba6e554c7 Use a comma after the unique keyword.
H.J. Lu noted that all .section options are separated by a comma.

This patch changes the syntax of unique to require one.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234174 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-06 16:34:41 +00:00
Rafael Espindola
903f4a2051 Implement unique sections with an unique ID.
This allows the compiler/assembly programmer to switch back to a
section. This in turn fixes the bootstrap failure on powerpc (tested
on gcc110) without changing the ppc codegen at all.

I will try to cleanup the various getELFSection overloads in a  followup patch.
Just using a default argument now would lead to ambiguities.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234099 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-04 18:02:01 +00:00
David Majnemer
f89ce9a09d [WinEH] Sink UnwindHelp completely out of IR
We don't need to represent UnwindHelp in IR.  Instead, we can use the
knowledge that we are emitting the parent function to decide if we
should create the UnwindHelp stack object.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234061 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-03 22:32:26 +00:00
Reid Kleckner
df4fd4fc4e [WinEH] Make llvm.eh.actions use frameescape indices for catch params
This makes it possible to use the same representation of llvm.eh.actions
in outlined handlers as we use in the parent function because i32's are
just constants that can be copied freely between functions.

I had to add a sentinel alloca to the list of child allocas so that we
don't try to sink the catch object into the handler. Normally, one would
use nullptr for this kind of thing, but TinyPtrVector doesn't support
null elements. More than that, it's elements have to have a suitable
alignment. Therefore, I settled on this for my sentinel:

  AllocaInst *getCatchObjectSentinel() {
    return static_cast<AllocaInst *>(nullptr) + 1;
  }

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233947 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-02 21:13:31 +00:00
Eli Bendersky
5e66a2ab59 Fix typo and reword in LangRef
Patch by Douglas Katzman

Differential Revision: http://reviews.llvm.org/D8785



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233920 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-02 15:20:04 +00:00
Kostya Serebryany
01055ec7e3 [fuzzer] document the -tokens flag. Also change the diagnostic output
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233842 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-01 21:33:20 +00:00
Sean Silva
06c06df4de [docs] Fix typo.
Based on a patch by Stanislav Manilov!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233771 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-31 22:48:45 +00:00
David Majnemer
64386621ec [WinEH] Generate .xdata for catch handlers
This lets us catch exceptions in simple cases.

N.B. Things that do not work include (but are not limited to):
- Throwing from within a catch handler.
- Catching an object with a named catch parameter.
- 'CatchHigh' is fictitious, we aren't sure of its purpose.
- We aren't entirely efficient with regards to the number of EH states
  that we generate.
- IP-to-State tables are sensitive to the order of emission.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233767 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-31 22:35:44 +00:00
Kostya Serebryany
58bc60892e [fuzzer] more documentation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233763 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-31 21:39:38 +00:00
Scott Douglass
9444646b43 [docs] add cross-reference
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233699 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-31 15:07:53 +00:00
Kostya Serebryany
3506457311 Move lib/Fuzzer docs from a README.txt to a proper .rst file.
Summary:
Move lib/Fuzzer docs from a README.txt to a proper .rst file.
This change does not add any content, just formatting.

Test Plan: n/a

Reviewers: samsonov

Reviewed By: samsonov

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D8710

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233638 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-30 23:05:30 +00:00
Paul Robinson
769b935ebc Explain how to abandon a review.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233600 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-30 21:27:28 +00:00
Rafael Espindola
94755c9c94 Fix Sphinx warning " Title underline too short.".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233551 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-30 15:16:30 +00:00
David Majnemer
db573736fd WinEH: Create a parent frame alloca for HandlerType xdata tables
We don't have any logic to emit those tables yet, so the SDAG lowering
of this intrinsic is just a stub.  We can see the intrinsic in the
prepared IR, though.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233354 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-27 04:17:07 +00:00
Sanjoy Das
784545fba0 [ADT][CMake][AutoConf] Fail-fast iterators for DenseMap
Summary:
This patch is an attempt at making `DenseMapIterator`s "fail-fast".
Fail-fast iterators that have been invalidated due to insertion into
the host `DenseMap` deterministically trip an assert (in debug mode)
on access, instead of non-deterministically hitting memory corruption
issues.

Enabling fail-fast iterators breaks the LLVM C++ ABI, so they are
predicated on `LLVM_ENABLE_ABI_BREAKING_CHECKS`.
`LLVM_ENABLE_ABI_BREAKING_CHECKS` by default flips with
`LLVM_ENABLE_ASSERTS`, but can be clamped to ON or OFF using the CMake /
autoconf build system.

Reviewers: chandlerc, dexonsmith, rnk, zturner

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D8351

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233310 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-26 19:25:01 +00:00
Reid Kleckner
a8b46e7055 WinEH: Create an unwind help alloca for __CxxFrameHandler3 xdata tables
We don't have any logic to emit those tables yet, so the sdag lowering
of this intrinsic is just a stub. We can see the intrinsic in the
prepared IR, though.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233209 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-25 20:10:36 +00:00
Justin Bogner
6e2749c772 docs: Update llvm-cov docs for the -use-color flag
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232742 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-19 18:22:46 +00:00
Mehdi Amini
f80447fa55 Update 3.7 Release Note mentionning the non-optionality of the DataLayout
From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232677 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-18 22:01:44 +00:00
Duncan P. N. Exon Smith
89064930a0 docs: Update LangRef and SourceLevelDebugging
Cleanup some bitrot in SourceLevelDebugging.rst.

  - Pull the still-relevant details about individual descriptors into
    LangRef.rst.  Cut a lot of it to avoid over-describing the fields,
    as the C++ classes and assembly format are mostly self-describing
    now.  If there's anything specific that I shouldn't have cut, let me
    know and I'll add it back.
  - Rewrite the remaining sections to refer to the new debug info
    hierarchy in LangRef.rst.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232566 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-17 23:41:05 +00:00
Sean Silva
b04877cae9 [docs] Fix some malformed links.
Patch by Stanislav Manilov!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232546 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-17 21:02:37 +00:00
Adam Nemet
5a6068638e [docs] Fix copy-and-paste bug in def-use example
This appeared when the example was converted to use range-based loop in
r207755.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232509 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-17 17:51:58 +00:00
Renato Golin
dca78825b7 Adding commit msg guidelines to dev policy
After much bike shed discussions, we seem to agree to a few loose
but relevant guidelines on how to prepare a commit message. It also
points the attribution section to the new commit messages section
to deduplicate information.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232334 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-15 21:15:48 +00:00
Mehdi Amini
18233dc596 Update LangRef now that a DataLayout is mandatory.
Reviewers: rafael, echristo

Reviewed By: rafael

Subscribers: rafael, llvm-commits

Differential Revision: http://reviews.llvm.org/D8230

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232283 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-14 22:04:06 +00:00
Chris Bieneman
67dcb7d7ca A few minor updates based on feedback from Justin and a few things I thought were missing.
* Moved autotools configure & build example out of "Getting Started Quickly (A Summary)" and into BuildingLLVMWithAutoTools.
* Removed the annotations that CMake is the recommended process and Autotools is alternate.
* Added brief documentation about build targets under "Getting Started Quickly..."
* Added Overview text to BuildingLLVMWithAutotools
* Fixed up a broken link.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232278 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-14 21:20:32 +00:00
David Blaikie
5a70dd1d82 [opaque pointer type] Add textual IR support for explicit type parameter to gep operator
Similar to gep (r230786) and load (r230794) changes.

Similar migration script can be used to update test cases, which
successfully migrated all of LLVM and Polly, but about 4 test cases
needed manually changes in Clang.

(this script will read the contents of stdin and massage it into stdout
- wrap it in the 'apply.sh' script shown in previous commits + xargs to
apply it over a large set of test cases)

import fileinput
import sys
import re

rep = re.compile(r"(getelementptr(?:\s+inbounds)?\s*\()((<\d*\s+x\s+)?([^@]*?)(|\s*addrspace\(\d+\))\s*\*(?(3)>)\s*)(?=$|%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|zeroinitializer|<|\[\[[a-zA-Z]|\{\{)", re.MULTILINE | re.DOTALL)

def conv(match):
  line = match.group(1)
  line += match.group(4)
  line += ", "
  line += match.group(2)
  return line

line = sys.stdin.read()
off = 0
for match in re.finditer(rep, line):
  sys.stdout.write(line[off:match.start()])
  sys.stdout.write(conv(match))
  off = match.end()
sys.stdout.write(line[off:])

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232184 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-13 18:20:45 +00:00
Chris Bieneman
1bba7511b2 Updating GettingStarted documentation to reference CMake as the preferred way to build LLVM.
Reviewers: chandlerc, samsonov, echristo

Reviewed By: samsonov

Subscribers: emaste, joker.eph, llvm-commits

Differential Revision: http://reviews.llvm.org/D8046

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232135 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-13 01:58:14 +00:00
Logan Chien
f7a833adfd [docs] Update the doxygen configuration file.
Update the doxygen configuration file and Makefile build rules
to provide better output (simply use the default stylesheet and template
from the Doxygen distribution.)

This CL has upgrade doxygen.cfg.in to Doxygen 1.8.6.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232064 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-12 17:26:27 +00:00
Logan Chien
4c841fd7f4 [autoconf] Refine doxygen document options.
This CL adds --enable-doxygen-search to enable doxygen search engine
and --enable-doxygen-qt-help to enable the Qt help file generation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232062 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-12 17:25:01 +00:00
Justin Bogner
db9db0b2a1 docs: Fix a typo in my previous commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232009 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-12 04:43:01 +00:00
Justin Bogner
88a84e3804 docs: Document the llvm-cov show and report commands
Add a basic synopsis of how to work with instrprof based coverage
using the llvm-cov tools.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232007 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-12 04:18:21 +00:00
Reid Kleckner
b2d414391a Make llvm.eh.actions an intrinsic and add docs for it
These docs *don't* match the way WinEHPrepare uses them yet, and
verifier support isn't implemented either. The implementation will come
after the documentation text is reviewed and agreed upon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232003 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-12 01:45:37 +00:00
Justin Bogner
13775e54b6 docs: Try to fix a couple of internal links in the llvm-profdata manual
These links seem broken on llvm.org/docs. Change them to use the
sphinx-recommended style to see if that helps.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232001 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-12 01:38:50 +00:00
Dan Liew
bd07f437a0 Fix too short title underline reported by build-bot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231921 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-11 13:34:49 +00:00
Chandler Carruth
bc026689ab Inspired by r231891, use gender neutral pronouns in the places I've
found in LLVM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231893 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-11 00:15:44 +00:00
Kevin Qin
994b4c784f Introduce runtime unrolling disable matadata and use it to mark the scalar loop from vectorization.
Runtime unrolling is an expensive optimization which can bring benefit
only if the loop is hot and iteration number is relatively large enough.
For some loops, we know they are not worth to be runtime unrolled.
The scalar loop from vectorization is one of the cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231631 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-09 06:14:18 +00:00
Benjamin Kramer
a52da9a180 CodingStyle: Allow delegating ctors
Delegating constructors seem to work fine with all supported compilers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231473 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-06 13:46:50 +00:00
Paul Robinson
a0c307d623 All FileCheck directives allow patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231418 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-05 23:04:26 +00:00
Reid Kleckner
9f7c861416 Replace llvm.frameallocate with llvm.frameescape
Turns out it's pretty straightforward and simplifies the implementation.

Reviewers: andrew.w.kaylor

Differential Revision: http://reviews.llvm.org/D8051

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231386 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-05 18:26:34 +00:00
Duncan P. N. Exon Smith
cc2c1c9bf6 FileCheck: Document CHECK-SAME, follow-up to r230612
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231379 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-05 17:00:05 +00:00
Philip Reames
599a7dc9ae Add a few more performance tips
These came from my own experience and may not apply equally to all use cases.  Any alternate perspective anyone has should be used to refine these.  

As always, grammar and spelling adjustments are more than welcome.  Please just directly commit a fix if you see something problematic.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231352 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-05 05:55:55 +00:00
Philip Reames
315492ba12 Add a link to the new PerformanceTips docs from the 3.7 release notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231349 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-05 05:11:05 +00:00
Aaron Ballman
5451090e4c Initializer lists are supported in MSVC 2013. Since that's our minimum required version, we can move that to the list of acceptable C++11 features.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231313 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-04 23:17:31 +00:00
David Blaikie
0effae854a Update LangRef for explicit type changes to 'load' instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231296 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-04 22:06:14 +00:00
David Blaikie
af9251f66b Update LangRef for getelementptr explicit type changes
Here's a rough/first draft - it at least hits the actual textual IR
examples and some of the phrasing. It's probably worth a full pass over,
but I'm not sure how much these docs should reflect the strange
intermediate state we're in anyway.

Totally open to lots of review/feedback/suggestions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231294 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-04 22:02:58 +00:00
Reid Kleckner
258b7710d5 Document the LLVM "thunk" attribute added back in r226708
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231181 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-04 00:08:56 +00:00
David Majnemer
9ab9224d65 LangRef: Clarify select's semantics with vector arguments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231158 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-03 22:45:47 +00:00
Reid Kleckner
9c28314a68 Make llvm.eh.begincatch use an outparam
Ultimately, __CxxFrameHandler3 needs us to put a stack offset in a
table, and it will take responsibility for copying the exception object
into that slot. Modelling the exception object as an SSA value returned
by begincatch isn't going to work in general, so make it use an output
parameter.

Reviewers: andrew.w.kaylor

Differential Revision: http://reviews.llvm.org/D7920

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231086 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-03 17:41:09 +00:00
Duncan P. N. Exon Smith
b056aa798d DebugInfo: Move new hierarchy into place
Move the specialized metadata nodes for the new debug info hierarchy
into place, finishing off PR22464.  I've done bootstraps (and all that)
and I'm confident this commit is NFC as far as DWARF output is
concerned.  Let me know if I'm wrong :).

The code changes are fairly mechanical:

  - Bumped the "Debug Info Version".
  - `DIBuilder` now creates the appropriate subclass of `MDNode`.
  - Subclasses of DIDescriptor now expect to hold their "MD"
    counterparts (e.g., `DIBasicType` expects `MDBasicType`).
  - Deleted a ton of dead code in `AsmWriter.cpp` and `DebugInfo.cpp`
    for printing comments.
  - Big update to LangRef to describe the nodes in the new hierarchy.
    Feel free to make it better.

Testcase changes are enormous.  There's an accompanying clang commit on
its way.

If you have out-of-tree debug info testcases, I just broke your build.

  - `upgrade-specialized-nodes.sh` is attached to PR22564.  I used it to
    update all the IR testcases.
  - Unfortunately I failed to find way to script the updates to CHECK
    lines, so I updated all of these by hand.  This was fairly painful,
    since the old CHECKs are difficult to reason about.  That's one of
    the benefits of the new hierarchy.

This work isn't quite finished, BTW.  The `DIDescriptor` subclasses are
almost empty wrappers, but not quite: they still have loose casting
checks (see the `RETURN_FROM_RAW()` macro).  Once they're completely
gutted, I'll rename the "MD" classes to "DI" and kill the wrappers.  I
also expect to make a few schema changes now that it's easier to reason
about everything.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231082 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-03 17:24:31 +00:00
Philip Reames
131d7fbdbd [PerformanceTips] Document various items folks have suggested
This could stand to be expanded - patches welcome! - but let's at least write them down so they don't get forgotten.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230995 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-02 19:19:04 +00:00
Peter Zotov
fc21e4b4a8 [OCaml] Generate documentation again with autoconf buildsystem.
Patch by Evangelos Foutras:

r220899 started using ocamlfind to build the OCaml bindings but
docs/Makefile still contains references to the OCAMLDOC macro which
is no longer being defined. The result is that OCaml documentation
isn't generated/installed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230850 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-28 13:48:23 +00:00
Philip Reames
b16dac58b5 [new docs] Performance Tips for Frontend Authors
As mentioned on llvm-dev, this is a new documentation page intended to collect tips for frontend authors on how to generate IR that LLVM is able to optimize well. These types of things come up repeated in review threads and it would be good to have a place to save them.

I added a small handful to start us off, but I mostly want to get the framework in place. Once the docs are here, we can add to them incrementally.  If you know of something appropriate for this page, please add it!

Differential Revision: http://reviews.llvm.org/D7890



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230807 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-27 23:14:50 +00:00
Benjamin Kramer
56f3b7f2fd Refer users looking for the release notes to 3.6.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230781 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-27 19:06:26 +00:00
Reid Kleckner
50a130cff5 Delete LLVM_DELETED_FUNCTION from coding standards
It didn't seem worth leaving behind a guideline to use '= delete' to
make a class uncopyable. That's a well known C++ design pattern.

Reported on the mailing list and in PR22724.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230776 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-27 18:34:16 +00:00
Nico Weber
176a288a88 Try to fix a docs link.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230672 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-26 19:48:43 +00:00
Philip Reames
fda8a1817d [GC docs] Add example IR, assembly, and stackmaps to Statepoint documentation
When I originally committed the statepoint docs, I left placeholders for example IR fragments.  I'm finally getting around to filling those in.  

I also added IR fragments to illustrate the usage of the PlaceSafepoints pass while I was at it.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230601 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-26 01:18:21 +00:00
Philip Reames
14f8f06ea5 [GC docs] More minor word tweaks to make the GC bits clearer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230581 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-25 23:52:06 +00:00
Philip Reames
64025c5dea [GC Docs] Update LangRef to link to Statepoint docs
Add a brief section linking to the experimental statepoint intrinsics analogous to the one we have linking to patchpoint.  

While I'm here, cleanup some wording about what the gc "name" attribute actually means.  It's not the name of a *collector* it's the name of the *strategy* which may be compatible with multiple collectors.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230576 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-25 23:45:20 +00:00
Philip Reames
651713e05e [GC docs] Fill in description of the statepoint-example GC strategy
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230572 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-25 23:22:43 +00:00
Philip Reames
63694290ce [GC Docs] Minor wording clarification
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230570 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-25 23:07:34 +00:00
Chris Lattner
4454339f09 fix a typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230510 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-25 17:28:41 +00:00
Philip Reames
3f2a3f9ac3 [GC] Document the recently added PlaceSafepoints and RewriteGCForStatepoints passes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230420 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-25 01:23:59 +00:00
Philip Reames
b4ecacfe06 Fix consistently wrong sphinx markup
I'd been using '' where I should have been using ``.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230407 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-25 00:22:07 +00:00
Philip Reames
b0991ba014 Update the GC docs to explicitly mention both gcroot and gc.statepoint
Also, fix confusing bit of the gcroot documentation that bit me personally.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230405 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-25 00:18:04 +00:00
Philip Reames
a230eee39a [GC] Sync documentation with code naming
Fixing an issue pointed out by Sean Silva.  Thanks!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230403 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-24 23:57:26 +00:00
Philip Reames
1e91e94aac More GC documentation cleanup
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230402 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-24 23:51:37 +00:00
Philip Reames
aa94c06fa5 More GC doc cleanup
Mostly minor wording changes for readability.  Nothing major to see here.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230397 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-24 23:34:24 +00:00
Peter Collingbourne
0bf03cb473 LowerBitSets: Introduce global layout builder.
The builder is based on a layout algorithm that tries to keep members of
small bit sets together. The new layout compresses Chromium's bit sets to
around 15% of their original size.

Differential Revision: http://reviews.llvm.org/D7796

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230394 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-24 23:17:02 +00:00
Philip Reames
7a1721e7c3 Improve the getting started instructions in the GC docs
This is still gcroot vs gc.statepoint agnostic.  I'm just trying to clarify the general documentation at this point.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230393 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-24 23:12:27 +00:00
Hans Wennborg
2f7ccecf4e ReleaseNotes: add notes about VS2014 Update 4 requirement
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230363 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-24 20:36:40 +00:00
Arch D. Robison
16310941b4 Fix typo: qual -> equal
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230361 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-24 20:11:49 +00:00
Philip Reames
989ffa936e Starting to cleanup the garbage collection documentation
In this change:
- Put the getting started section first
- Create a dedicated section to document the built in collector strategies
- Move discuss of ShadowStack into new section
- Add placeholders for erlang, ocaml, and statepoint-example collectors

There will be many more changes following.  I plan on full integrating the documentation for gc.statepoint and gc.root.  I want to make it much clearer on how to get started and what users should expect in terms of effort.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230359 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-24 19:44:46 +00:00
Nico Weber
766caabcf1 Try to fix reST markup for an external link.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230200 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-23 03:31:29 +00:00
Justin Bogner
ad821f0482 docs: Mention that assertions must be enabled to use the -stats flag
Patch by Rob Stewart. Thanks!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230144 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-21 20:53:36 +00:00
Peter Collingbourne
5a81e14385 Introduce bitset metadata format and bitset lowering pass.
This patch introduces a new mechanism that allows IR modules to co-operatively
build pointer sets corresponding to addresses within a given set of
globals. One particular use case for this is to allow a C++ program to
efficiently verify (at each call site) that a vtable pointer is in the set
of valid vtable pointers for the class or its derived classes. One way of
doing this is for a toolchain component to build, for each class, a bit set
that maps to the memory region allocated for the vtables, such that each 1
bit in the bit set maps to a valid vtable for that class, and lay out the
vtables next to each other, to minimize the total size of the bit sets.

The patch introduces a metadata format for representing pointer sets, an
'@llvm.bitset.test' intrinsic and an LTO lowering pass that lays out the globals
and builds the bitsets, and documents the new feature.

Differential Revision: http://reviews.llvm.org/D7288

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230054 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-20 20:30:47 +00:00
Eric Christopher
0f842f925d Fix grammar in documentation.
Patch by Ralph Campbell!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229884 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-19 18:46:25 +00:00
Benjamin Kramer
1114203a73 Document that defaulted & deleted methods and explicit conversions are allowed now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229369 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-16 10:28:41 +00:00
Benjamin Kramer
5d6f0738e3 Remove LLVM_HAS_VARIADIC_TEMPLATES and all the faux variadic workarounds guarded by it.
We no longer support compilers without variadic template support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229324 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-15 19:34:28 +00:00
Benjamin Kramer
cd2a5f28b1 Update the docs to require at least MSVC 2013.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229323 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-15 19:34:17 +00:00
Tom Stellard
3229c883b9 Help: Document how to build and install with CMake.
Resolves PR21569.

Patch by: Stephen Kelly

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229122 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-13 16:15:32 +00:00