summaryrefslogtreecommitdiffstats
path: root/llvm/docs
Commit message (Collapse)AuthorAgeFilesLines
* Reorganize the C API headers to improve build times.Eric Christopher2015-12-181-0/+6
| | | | | | | | | Type specific declarations have been moved to Type.h and error handling routines have been moved to ErrorHandling.h. Both are included in Core.h so nothing should change for projects directly including the headers, but transitive dependencies may be affected. llvm-svn: 255965
* Polish atomic pointersJF Bastien2015-12-171-23/+20
| | | | | | | | | | | | | | | | | | | | | | Summary: I didn't realize that we already allowed atomic load/store of pointers, it was added in 2012 by r162146. This patch updates the documentation and tightens the verifier by using DataLayout to make sure that the stored size is byte-sized and power-of-two. DataLayout is also used for integers, and while I'm here I updated the corresponding code for cmpxchg and rmw. See the following discussion for context and upcoming changes to add floating-point and vector atomics: https://groups.google.com/forum/#!topic/llvm-dev/Nh0P_E3CRoo/discussion Reviewers: reames Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D15512 llvm-svn: 255931
* Drop function that are deprecated since 2010.Rafael Espindola2015-12-171-0/+3
| | | | | | These functions were deprecated in r97608. llvm-svn: 255927
* [docs] Motivate ninja in GettingStarted.rstVedant Kumar2015-12-171-1/+1
| | | | llvm-svn: 255924
* Change linkInModule to take a std::unique_ptr.Rafael Espindola2015-12-161-0/+11
| | | | | | | Passing in a std::unique_ptr should help find errors when the module is used after being linked into another module. llvm-svn: 255842
* Add InaccessibleMemOnly and inaccessibleMemOrArgMemOnly attributesVaivaswatha Nagaraj2015-12-161-0/+8
| | | | | | | | | | | | | | | | | | Summary: This patch introduces two new function attributes InaccessibleMemOnly: This attribute indicates that the function may only access memory that is not accessible by the program/IR being compiled. This is a weaker form of ReadNone. inaccessibleMemOrArgMemOnly: This attribute indicates that the function may only access memory that is either not accessible by the program/IR being compiled, or is pointed to by its pointer arguments. This is a weaker form of ArgMemOnly Test cases have been updated. This revision uses this (https://github.com/llvm-mirror/llvm/commit/d001932f3a8aa1ebd1555162fdce365f011bc292) as reference. Reviewers: jmolloy, hfinkel Subscribers: reames, joker.eph, llvm-commits Differential Revision: http://reviews.llvm.org/D15499 llvm-svn: 255778
* [IR] Add support for floating pointer atomic loads and storesPhilip Reames2015-12-161-12/+13
| | | | | | | | | | | | | | | | This patch allows atomic loads and stores of floating point to be specified in the IR and adds an adapter to allow them to be lowered via existing backend support for bitcast-to-equivalent-integer idiom. Previously, the only way to specify a atomic float operation was to bitcast the pointer to a i32, load the value as an i32, then bitcast to a float. At it's most basic, this patch simply moves this expansion step to the point we start lowering to the backend. This patch does not add canonicalization rules to convert the bitcast idioms to the appropriate atomic loads. I plan to do that in the future, but for now, let's simply add the support. I'd like to get instruction selection working through at least one backend (x86-64) without the bitcast conversion before canonicalizing into this form. Similarly, I haven't yet added the target hooks to opt out of the lowering step I added to AtomicExpand. I figured it would more sense to add those once at least one backend (x86) was ready to actually opt out. As you can see from the included tests, the generated code quality is not great. I plan on submitting some patches to fix this, but help from others along that line would be very welcome. I'm not super familiar with the backend and my ramp up time may be material. Differential Revision: http://reviews.llvm.org/D15471 llvm-svn: 255737
* [WinEH] Use operand bundles to describe call sitesDavid Majnemer2015-12-151-0/+9
| | | | | | | | | | | | | | | | | SimplifyCFG allows tail merging with code which terminates in unreachable which, in turn, makes it possible for an invoke to end up in a funclet which it was not originally part of. Using operand bundles on invokes allows us to determine whether or not an invoke was part of a funclet in the source program. Furthermore, it allows us to unambiguously answer questions about the legality of inlining into call sites which the personality may have trouble with. Differential Revision: http://reviews.llvm.org/D15517 llvm-svn: 255674
* LLVM tutorial: fix broken links/anchorsAlex Denisov2015-12-1517-52/+52
| | | | llvm-svn: 255671
* [Docs] Fix Unexpected indentation errors.Akira Hatanaka2015-12-151-0/+2
| | | | llvm-svn: 255665
* [llvm-profdata] Add support for weighted merge of profile data (2nd try)Nathan Slingerland2015-12-151-1/+40
| | | | | | | | | | | | | | | | | | | | Summary: This change adds support for specifying a weight when merging profile data with the llvm-profdata tool. Weights are specified by using the --weighted-input=<weight>,<filename> option. Input files not specified with this option (normal positional list after options) are given a default weight of 1. 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: davidxl, dnovillo, bogner, silvas Subscribers: silvas, davidxl, llvm-commits Differential Revision: http://reviews.llvm.org/D15306 llvm-svn: 255659
* add fast-math-flags to 'call' instructions (PR21290)Sanjay Patel2015-12-141-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds optional fast-math-flags (the same that apply to fmul/fadd/fsub/fdiv/frem/fcmp) to call instructions in IR. Follow-up patches would use these flags in LibCallSimplifier, add support to clang, and extend FMF to the DAG for calls. Motivating example: %y = fmul fast float %x, %x %z = tail call float @sqrtf(float %y) We'd like to be able to optimize sqrt(x*x) into fabs(x). We do this today using a function-wide attribute for unsafe-math, but we really want to trigger on the instructions themselves: %z = tail call fast float @sqrtf(float %y) because in an LTO build it's possible that calls with fast semantics have been inlined into a function with non-fast semantics. The code changes and tests are based on the recent commits that added "notail": http://reviews.llvm.org/rL252368 and added FMF to fcmp: http://reviews.llvm.org/rL241901 Differential Revision: http://reviews.llvm.org/D14707 llvm-svn: 255555
* docs: Correct wording in LangRef relating to available_externally linkage.Peter Collingbourne2015-12-141-8/+9
| | | | | | Differential Revision: http://reviews.llvm.org/D15343 llvm-svn: 255534
* [IR] Remove terminatepadDavid Majnemer2015-12-142-73/+12
| | | | | | | | | | | | | It turns out that terminatepad gives little benefit over a cleanuppad which calls the termination function. This is not sufficient to implement fully generic filters but MSVC doesn't support them which makes terminatepad a little over-designed. Depends on D15478. Differential Revision: http://reviews.llvm.org/D15479 llvm-svn: 255522
* [Docs] Fix underlines that were too short or too long.Akira Hatanaka2015-12-141-3/+3
| | | | llvm-svn: 255480
* Try to appease sphinxDavid Majnemer2015-12-121-0/+1
| | | | llvm-svn: 255429
* [IR] Reformulate LLVM's EH funclet IRDavid Majnemer2015-12-122-288/+225
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While we have successfully implemented a funclet-oriented EH scheme on top of LLVM IR, our scheme has some notable deficiencies: - catchendpad and cleanupendpad are necessary in the current design but they are difficult to explain to others, even to seasoned LLVM experts. - catchendpad and cleanupendpad are optimization barriers. They cannot be split and force all potentially throwing call-sites to be invokes. This has a noticable effect on the quality of our code generation. - catchpad, while similar in some aspects to invoke, is fairly awkward. It is unsplittable, starts a funclet, and has control flow to other funclets. - The nesting relationship between funclets is currently a property of control flow edges. Because of this, we are forced to carefully analyze the flow graph to see if there might potentially exist illegal nesting among funclets. While we have logic to clone funclets when they are illegally nested, it would be nicer if we had a representation which forbade them upfront. Let's clean this up a bit by doing the following: - Instead, make catchpad more like cleanuppad and landingpad: no control flow, just a bunch of simple operands; catchpad would be splittable. - Introduce catchswitch, a control flow instruction designed to model the constraints of funclet oriented EH. - Make funclet scoping explicit by having funclet instructions consume the token produced by the funclet which contains them. - Remove catchendpad and cleanupendpad. Their presence can be inferred implicitly using coloring information. N.B. The state numbering code for the CLR has been updated but the veracity of it's output cannot be spoken for. An expert should take a look to make sure the results are reasonable. Reviewers: rnk, JosephTremoulet, andrew.w.kaylor Differential Revision: http://reviews.llvm.org/D15139 llvm-svn: 255422
* Revert r248483, r242546, r242545, and r242409 - absdiff intrinsicsHal Finkel2015-12-111-62/+0
| | | | | | | | | | | | | | | | | | | | After much discussion, ending here: http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20151123/315620.html it has been decided that, instead of having the vectorizer directly generate special absdiff and horizontal-add intrinsics, we'll recognize the relevant reduction patterns during CodeGen. Accordingly, these intrinsics are not needed (the operations they represent can be pattern matched, as is already done in some backends). Thus, we're backing these out in favor of the current development work. r248483 - Codegen: Fix llvm.*absdiff semantic. r242546 - [ARM] Use [SU]ABSDIFF nodes instead of intrinsics for VABD/VABA r242545 - [AArch64] Use [SU]ABSDIFF nodes instead of intrinsics for ABD/ABA r242409 - [Codegen] Add intrinsics 'absdiff' and corresponding SDNodes for absolute difference operation llvm-svn: 255387
* Fix a spurious if.Eric Christopher2015-12-111-1/+1
| | | | llvm-svn: 255321
* s/need/needsEric Christopher2015-12-101-2/+2
| | | | llvm-svn: 255306
* Attempt to fix the ReST compilation to html of the C API docs.Eric Christopher2015-12-101-14/+14
| | | | llvm-svn: 255304
* More non-ascii quote characters.Eric Christopher2015-12-101-2/+2
| | | | llvm-svn: 255303
* Clarify some of the wording on adding a new subcomponent to theEric Christopher2015-12-101-2/+2
| | | | | | C API. llvm-svn: 255302
* Fix non-ascii quotes.Eric Christopher2015-12-101-4/+4
| | | | llvm-svn: 255301
* Add C API guidelines to the developer policy to match discussionsEric Christopher2015-12-101-0/+27
| | | | | | on the llvm mailing lists. llvm-svn: 255300
* Macro debug info support in LLVM IRAmjad Aboud2015-12-101-4/+30
| | | | | | | | Introduced DIMacro and DIMacroFile debug info metadata in the LLVM IR to support macros. Differential Revision: http://reviews.llvm.org/D14687 llvm-svn: 255245
* [OPENMP] Make -fopenmp to turn on OpenMP support by default.Alexey Bataev2015-12-102-3/+16
| | | | | | | Patch turns on OpenMP support in clang by default after fixing OpenMP buildbots. Differential Revision: http://reviews.llvm.org/D13802 llvm-svn: 255222
* Update doc for C++ TLS calling convention.Manman Ren2015-12-071-5/+15
| | | | llvm-svn: 254953
* [libFuzzer] one more trophieKostya Serebryany2015-12-051-0/+2
| | | | llvm-svn: 254825
* Fix incorrect quote. NFCPete Cooper2015-12-041-1/+1
| | | | llvm-svn: 254775
* [CXX TLS calling convention] Add CXX TLS calling convention.Manman Ren2015-12-042-0/+11
| | | | | | | | | | | | | | | | | | | | | 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 llvm-svn: 254737
* ARM/AArch64: update reference documentation.Tim Northover2015-12-041-2/+4
| | | | | | There's a more comprehensive ACLE and a real v8 ARM ARM now. llvm-svn: 254720
* Revert "[llvm-profdata] Add support for weighted merge of profile data"Nathan Slingerland2015-12-041-5/+1
| | | | | | | | This reverts commit b7250858d96b8ce567681214273ac0e62713c661. Reverting in order to investigate Windows test failure. llvm-svn: 254687
* [llvm-profdata] Add support for weighted merge of profile dataNathan Slingerland2015-12-041-1/+5
| | | | | | | | | | | | | | | | | | 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 llvm-svn: 254669
* Fix "WARNING: Title underline too short." introduced by r254404.Yury Gribov2015-12-011-1/+1
| | | | | | Patch by Max Ostapenko. llvm-svn: 254413
* Introduce new @llvm.get.dynamic.area.offset.i{32, 64} intrinsics.Yury Gribov2015-12-011-0/+42
| | | | | | | | | | | | | | | 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 llvm-svn: 254404
* Have 'optnone' respect the -fast-isel=false option.Paul Robinson2015-11-301-3/+3
| | | | | | | | This is primarily useful for debugging optnone v. ISel issues. Differential Revision: http://reviews.llvm.org/D14792 llvm-svn: 254335
* [libFuzzer] clean up the docs, add one more link Kostya Serebryany2015-11-261-3/+12
| | | | llvm-svn: 254115
* [libFuzzer] add a flag -exact_artifact_pathKostya Serebryany2015-11-251-0/+1
| | | | llvm-svn: 254100
* Doxygen: Use mathjax to create formulas.Matthias Braun2015-11-251-1/+1
| | | | | | | | | | | 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 llvm-svn: 254048
* Fix sphinx-build error when building documentation.Xinliang David Li2015-11-241-16/+10
| | | | | | | Consolidate the description of -binary/-text option description to avoid duplicate ID error by sphinux-build. llvm-svn: 254018
* [PGO] Add --text option for llvm-profdata show|merge commandsXinliang David Li2015-11-231-1/+18
| | | | | | | | | | | | | | 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 llvm-svn: 253913
* [docs] Minor fixes to the operand bundle sectionSanjoy Das2015-11-211-5/+6
| | | | llvm-svn: 253771
* Pointers in Masked Load, Store, Gather, Scatter intrinsicsElena Demikhovsky2015-11-191-12/+22
| | | | | | | | | | 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 llvm-svn: 253544
* [doc] fix a wrong linkJingyue Wu2015-11-181-1/+1
| | | | llvm-svn: 253509
* [PGO] Value profiling supportBetul Buyukkurt2015-11-181-0/+49
| | | | | | | | | 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. llvm-svn: 253484
* Teach the inliner to track deoptimization stateSanjoy Das2015-11-181-0/+40
| | | | | | | | | | | | | | | | 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 llvm-svn: 253438
* [doc] simplify the doc on compiling CUDAJingyue Wu2015-11-181-26/+3
| | | | | | CUDA support doesn't reply on temporary patches any more. Thanks Artem! llvm-svn: 253427
* [Documentation] Add guidelines for grouping tests together.Davide Italiano2015-11-171-0/+4
| | | | | | | | This was considered a good practice but it was not documented. Now it is. Differential Revision: http://reviews.llvm.org/D14733 llvm-svn: 253281
* [Docs] Fix typoAlex Denisov2015-11-152-2/+2
| | | | llvm-svn: 253167
OpenPOWER on IntegriCloud