5876 Commits

Author SHA1 Message Date
Pete Cooper
b6cc95afa7 Fix incorrect quote. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254775 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-04 21:59:04 +00:00
Manman Ren
cd2103de5a [CXX TLS calling convention] Add CXX TLS calling convention.
This commit adds a new target-independent calling convention for C++ TLS
access functions. It aims to minimize overhead in the caller by perserving as
many registers as possible.

The target-specific implementation for X86-64 is defined as following:
  Arguments are passed as for the default C calling convention
  The same applies for the return value(s)
  The callee preserves all GPRs - except RAX and RDI

The access function makes C-style TLS function calls in the entry and exit
block, C-style TLS functions save a lot more registers than normal calls.
The added calling convention ties into the existing implementation of the
C-style TLS functions, so we can't simply use existing calling conventions
such as preserve_mostcc.

rdar://9001553


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254737 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-04 17:40:13 +00:00
Tim Northover
e67b3e8721 ARM/AArch64: update reference documentation.
There's a more comprehensive ACLE and a real v8 ARM ARM now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254720 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-04 16:10:48 +00:00
Nathan Slingerland
8061fe5c67 Revert "[llvm-profdata] Add support for weighted merge of profile data"
This reverts commit b7250858d96b8ce567681214273ac0e62713c661.

Reverting in order to investigate Windows test failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254687 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-04 02:13:58 +00:00
Nathan Slingerland
b7250858d9 [llvm-profdata] Add support for weighted merge of profile data
This change adds support for an optional weight when merging profile data with the llvm-profdata tool.
Weights are specified by adding an option ':<weight>' suffix to the input file names.

Adding support for arbitrary weighting of input profile data allows for relative importance to be placed on the
input data from multiple training runs.

Both sampled and instrumented profiles are supported.

Reviewers: dnovillo, bogner, davidxl

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254669 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-04 00:00:20 +00:00
Yury Gribov
f0052c5d2a Fix "WARNING: Title underline too short." introduced by r254404.
Patch by Max Ostapenko. 


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254413 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-01 13:24:48 +00:00
Yury Gribov
2fdb3b844f Introduce new @llvm.get.dynamic.area.offset.i{32, 64} intrinsics.
The @llvm.get.dynamic.area.offset.* intrinsic family is used to get the offset
from native stack pointer to the address of the most recent dynamic alloca on
the caller's stack. These intrinsics are intendend for use in combination with
@llvm.stacksave and @llvm.restore to get a pointer to the most recent dynamic
alloca. This is useful, for example, for AddressSanitizer's stack unpoisoning
routines.

Patch by Max Ostapenko.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254404 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-01 11:40:55 +00:00
Paul Robinson
ae5d4bfbbe Have 'optnone' respect the -fast-isel=false option.
This is primarily useful for debugging optnone v. ISel issues.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254335 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-30 21:56:16 +00:00
Kostya Serebryany
20bbb64e84 [libFuzzer] clean up the docs, add one more link
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254115 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-26 00:12:57 +00:00
Kostya Serebryany
e8d7ae6209 [libFuzzer] add a flag -exact_artifact_path
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254100 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-25 21:40:46 +00:00
Matthias Braun
5f364c15da Doxygen: Use mathjax to create formulas.
The main motivation is to not require a latex installation when building
the documentation. I would also expect a better image quality and the
ability to copy&paste from formulas with a javascript based solution for
displaying the math.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254048 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-25 00:50:47 +00:00
Xinliang David Li
0aa5b4b94e Fix sphinx-build error when building documentation.
Consolidate the description of -binary/-text option description
to avoid duplicate ID error by sphinux-build.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@254018 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-24 20:48:25 +00:00
Xinliang David Li
55f78334c1 [PGO] Add --text option for llvm-profdata show|merge commands
The new option is similar to the SampleProfile dump option.

- dump raw/indexed format into text profile format
- merge the profile and output into text profile format.

Note that Value Profiling data text format is not yet designed. 
That functionality will be added later.

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253913 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-23 20:47:38 +00:00
Sanjoy Das
0977d4d4df [docs] Minor fixes to the operand bundle section
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253771 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-21 09:12:07 +00:00
Elena Demikhovsky
43be5f580c Pointers in Masked Load, Store, Gather, Scatter intrinsics
The masked intrinsics support all integer and floating point data types. I added the pointer type to this list.
Added tests for CodeGen and for Loop Vectorizer.
Updated the Language Reference.

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253544 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-19 07:17:16 +00:00
Jingyue Wu
c4bfc2d61d [doc] fix a wrong link
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253509 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-18 22:01:44 +00:00
Betul Buyukkurt
a5be9e3cfb [PGO] Value profiling support
This change introduces an instrumentation intrinsic instruction for
value profiling purposes, the lowering of the instrumentation intrinsic
and raw reader updates. The raw profile data files for llvm-profdata
testing are updated.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253484 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-18 18:14:55 +00:00
Sanjoy Das
aca8112442 Teach the inliner to track deoptimization state
Summary:
This change teaches LLVM's inliner to track and suitably adjust
deoptimization state (tracked via deoptimization operand bundles) as it
inlines through call sites.  The operation is described in more detail
in the LangRef changes.

Reviewers: reames, majnemer, chandlerc, dexonsmith

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253438 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-18 06:23:38 +00:00
Jingyue Wu
446c5db587 [doc] simplify the doc on compiling CUDA
CUDA support doesn't reply on temporary patches any more. Thanks Artem!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253427 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-18 01:59:05 +00:00
Davide Italiano
15d19608b0 [Documentation] Add guidelines for grouping tests together.
This was considered a good practice but it was not documented. Now it is.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253281 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-17 02:17:35 +00:00
Alex Denisov
fd671c136f [Docs] Fix typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253167 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-15 14:13:24 +00:00
Akira Hatanaka
6dc74bec88 [Docs] Fix warning "Title underline too short."
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253082 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-13 21:09:57 +00:00
Artyom Skrobov
b2446842b9 Fixing a typo in docs/CodeGenerator.rst
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253045 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-13 15:14:04 +00:00
Kostya Serebryany
1adc6064bc [libFuzzer] more trophies
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253006 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-13 02:44:16 +00:00
James Molloy
fdd6e1b2e5 [SDAG] Introduce a new BITREVERSE node along with a corresponding LLVM intrinsic
Several backends have instructions to reverse the order of bits in an integer. Conceptually matching such patterns is similar to @llvm.bswap, and it was mentioned in http://reviews.llvm.org/D14234 that it would be best if these patterns were matched in InstCombine instead of reimplemented in every different target.

This patch introduces an intrinsic @llvm.bitreverse.i* that operates similarly to @llvm.bswap. For plumbing purposes there is also a new ISD node ISD::BITREVERSE, with simple expansion and promotion support.

The intention is that InstCombine's BSWAP detection logic will be extended to support BITREVERSE too, and @llvm.bitreverse intrinsics emitted (if the backend supports lowering it efficiently).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252878 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-12 12:29:09 +00:00
Hemant Kulkarni
fab9983f75 Fix docs build break for revision r252798
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252812 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-11 22:14:58 +00:00
David Majnemer
83fc12aeed [IR] Add support for empty tokens
When working with tokens, it is often the case that one has instructions
which consume a token and produce a new token.  Currently, we have no
mechanism to represent an initial token state.

Instead, we can create a notional "empty token" by inventing a new
constant which captures the semantics we would like.  This new constant
is called ConstantTokenNone and is written textually as "token none".

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252811 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-11 21:57:16 +00:00
Sanjoy Das
b4b58babf8 Introduce deoptimization operand bundles
Summary:
This change introduces the notion of "deoptimization" operand bundles.
LLVM can recognize and optimize these in more precise ways than it can a
generic "unknown" operand bundles.

The current form of this special recognition / optimization is an enum
entry in LLVMContext, a LangRef blurb and a verifier rule.  Over time we
will teach LLVM to do more aggressive optimization around deoptimization
operand bundles, exploiting known facts about kinds of state
deoptimization operand bundles are allowed to track.

Reviewers: reames, majnemer, chandlerc, dexonsmith

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252806 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-11 21:38:02 +00:00
Hemant Kulkarni
a07496f56a [Symbolizer]: Add -pretty-print option
Differential Revision: http://reviews.llvm.org/D13671



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252798 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-11 20:41:43 +00:00
Colin LeMahieu
55b72798ae Reverting r252760
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252770 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-11 18:11:06 +00:00
Hemant Kulkarni
5776ed04ce [Symbolizer]: Add -pretty-print option
Differential Revision: http://reviews.llvm.org/D13671


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252760 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-11 17:47:54 +00:00
Kostya Serebryany
ce3db55679 [libFuzzer] better links
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252705 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-11 05:25:24 +00:00
Kostya Serebryany
fb427c439d [libFuzzer] more trophies
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252704 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-11 05:20:55 +00:00
Jingyue Wu
69662675f9 [doc] Compile CUDA with LLVM
Summary:
This patch adds documentation on compiling CUDA with LLVM as requested by many
engineers and researchers. It includes not only user guides but also some
internals (mostly optimizations) so that early adopters can start hacking and
contributing.

Quite a few researchers who contacted us haven't used LLVM before, which is
unsurprising as it hasn't been long since LLVM picked up CUDA. So I added a
short summary to help these folks get started with LLVM.

I expect this document to evolve substantially down the road. The user guides
will be much simplified after the Clang integration is done. However, the
internals should continue growing to include for example performance debugging
and key areas to improve.

Reviewers: chandlerc, meheff, broune, tra

Subscribers: silvas, jingyue, llvm-commits, eliben

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252660 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-10 22:35:47 +00:00
Chris Bieneman
5d89904858 Deprecate Autoconf
As per the very positive feedback from llvm-dev (http://lists.llvm.org/pipermail/llvm-dev/2015-November/092150.html), this commit officially deprecates the LLVM autoconf-based build system.

Anyone still using it should switch to CMake.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252520 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-09 21:54:55 +00:00
Renato Golin
f60aec48e9 [EABI] Add LLVM support for -meabi flag
"GCC requires the freestanding environment provide memcpy, memmove, memset
and memcmp": https://gcc.gnu.org/onlinedocs/gcc-5.2.0/gcc/Standards.html

Hence in GNUEABI targets LLVM should not convert 'memops' to their equivalent
'__aeabi_memops'. This convertion violates GCC contract.

The -meabi flag controls whether or not LLVM will modify 'memops' in GNUEABI
targets.

Without -meabi: use the triple default EABI.
With -meabi=default: use the triple default EABI.
With -meabi=gnu: use 'memops'.
With -meabi=4 or -meabi=5: use '__aeabi_memops'.
With -meabi set to an unknown value: same as -meabi=default.

Patch by Vinicius Tinti.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252462 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-09 12:40:30 +00:00
Akira Hatanaka
c35973bfb0 Add 'notail' marker for call instructions.
This marker prevents optimization passes from adding 'tail' or
'musttail' markers to a call. Is is used to prevent tail call
optimization from being performed on the call.

rdar://problem/22667622

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252368 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-06 23:55:38 +00:00
Renato Golin
abe916ea5c [Docs] Change ARM build info to CMake
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252329 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-06 18:39:34 +00:00
James Molloy
d001932f3a Add a new attribute: norecurse
This attribute allows the compiler to assume that the function never recurses into itself, either directly or indirectly (transitively). This can be used among other things to demote global variables to locals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252282 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-06 10:32:53 +00:00
Peter Collingbourne
d04e60e166 docs: Document function-attached metadata and IR changes from r252219.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252268 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-06 02:41:02 +00:00
Matthias Braun
ec61a6aad8 CommandGuide/lit.rst: Document the new commandline option -a
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252257 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-06 01:13:40 +00:00
Peter Collingbourne
2c641c0a8f Update tutorial for debug info IR change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252226 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-05 22:55:44 +00:00
Saleem Abdulrasool
e368f9477a docs: document x mangling in LangRef
Windows has two different mangling specifiers.  `x` is used on x86 for the `_`
UserLabelPrefix.  Others use `w` for the no UserLabelPrefix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251260 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-25 20:39:35 +00:00
Kostya Serebryany
242325ad98 [libFuzzer] add -merge flag to merge corpora
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251168 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-24 01:16:40 +00:00
Jonathan Roelofs
3bf3c784c8 Fix another reference to in-source builds
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251127 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-23 17:42:51 +00:00
Sanjoy Das
61da47f19b [LangRef] Fix the doc for operand bundles
I accidentally messed this up after a merge conflict in a previous
commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251089 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-23 01:28:05 +00:00
Sanjoy Das
f1c277c270 [OperandBundles] Make function attributes conservatively correct
Summary:
This makes attribute accessors on `CallInst` and `InvokeInst` do the
(conservatively) right thing.  This essentially involves, in some
cases, *not* falling back querying the attributes on the called
`llvm::Function` when operand bundles are present.

Attributes locally present on the `CallInst` or `InvokeInst` will still
override operand bundle semantics.  The LangRef has been amended to
reflect this.  Note: this change does not do anything prevent
`-function-attrs` from inferring `CallSite` local attributes after
inspecting the called function -- that will be done as a separate
change.

I've used `-adce` and `-early-cse` to test these changes.  There is
nothing special about these passes (and they did not require any
changes) except that they seemed be the easiest way to write the tests.

This change does not add deal with `argmemonly`.  That's a later change
because alias analysis requires a related fix before `argmemonly` can be
tested.

Reviewers: reames, chandlerc

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250973 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-22 03:12:22 +00:00
David Majnemer
e7b7bf7e75 Attempt to fix formatting for operand bundles
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250968 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-22 01:46:38 +00:00
David Blaikie
bf71837ab0 Update LangRef for changes to the alias textual IR format to support typeless pointer work
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250967 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-22 01:17:29 +00:00
Chris Bieneman
1552d17aad [CMake] Adding LLVM_CREATE_XCODE_TOOLCHAIN to the CMake documentation page.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@250451 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-15 20:12:08 +00:00