summaryrefslogtreecommitdiffstats
path: root/llvm/docs
Commit message (Collapse)AuthorAgeFilesLines
* [PM/AA] Hoist the AliasResult enum out of the AliasAnalysis class.Chandler Carruth2015-06-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | This will allow classes to implement the AA interface without deriving from the class or referencing an internal enum of some other class as their return types. Also, to a pretty fundamental extent, concepts such as 'NoAlias', 'MayAlias', and 'MustAlias' are first class concepts in LLVM and we aren't saving anything by scoping them heavily. My mild preference would have been to use a scoped enum, but that feature is essentially completely broken AFAICT. I'm extremely disappointed. For example, we cannot through any reasonable[1] means construct an enum class (or analog) which has scoped names but converts to a boolean in order to test for the possibility of aliasing. [1]: Richard Smith came up with a "solution", but it requires class templates, and lots of boilerplate setting up the enumeration multiple times. Something like Boost.PP could potentially bundle this up, but even that would be quite painful and it doesn't seem realistically worth it. The enum class solution would probably work without the need for a bool conversion. Differential Revision: http://reviews.llvm.org/D10495 llvm-svn: 240255
* Fix "the the" in comments.Eric Christopher2015-06-192-2/+2
| | | | llvm-svn: 240112
* [docs] Fix "WARNING: Title underline too short."David Majnemer2015-06-171-1/+1
| | | | llvm-svn: 239947
* Move the personality function from LandingPadInst to FunctionDavid Majnemer2015-06-172-15/+24
| | | | | | | | | | | | | | | | | | | The personality routine currently lives in the LandingPadInst. This isn't desirable because: - All LandingPadInsts in the same function must have the same personality routine. This means that each LandingPadInst beyond the first has an operand which produces no additional information. - There is ongoing work to introduce EH IR constructs other than LandingPadInst. Moving the personality routine off of any one particular Instruction and onto the parent function seems a lot better than have N different places a personality function can sneak onto an exceptional function. Differential Revision: http://reviews.llvm.org/D10429 llvm-svn: 239940
* Protection against stack-based memory corruption errors using SafeStackPeter Collingbourne2015-06-151-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds the safe stack instrumentation pass to LLVM, which separates the program stack into a safe stack, which stores return addresses, register spills, and local variables that are statically verified to be accessed in a safe way, and the unsafe stack, which stores everything else. Such separation makes it much harder for an attacker to corrupt objects on the safe stack, including function pointers stored in spilled registers and return addresses. You can find more information about the safe stack, as well as other parts of or control-flow hijack protection technique in our OSDI paper on code-pointer integrity (http://dslab.epfl.ch/pubs/cpi.pdf) and our project website (http://levee.epfl.ch). The overhead of our implementation of the safe stack is very close to zero (0.01% on the Phoronix benchmarks). This is lower than the overhead of stack cookies, which are supported by LLVM and are commonly used today, yet the security guarantees of the safe stack are strictly stronger than stack cookies. In some cases, the safe stack improves performance due to better cache locality. Our current implementation of the safe stack is stable and robust, we used it to recompile multiple projects on Linux including Chromium, and we also recompiled the entire FreeBSD user-space system and more than 100 packages. We ran unit tests on the FreeBSD system and many of the packages and observed no errors caused by the safe stack. The safe stack is also fully binary compatible with non-instrumented code and can be applied to parts of a program selectively. This patch is our implementation of the safe stack on top of LLVM. The patches make the following changes: - Add the safestack function attribute, similar to the ssp, sspstrong and sspreq attributes. - Add the SafeStack instrumentation pass that applies the safe stack to all functions that have the safestack attribute. This pass moves all unsafe local variables to the unsafe stack with a separate stack pointer, whereas all safe variables remain on the regular stack that is managed by LLVM as usual. - Invoke the pass as the last stage before code generation (at the same time the existing cookie-based stack protector pass is invoked). - Add unit tests for the safe stack. Original patch by Volodymyr Kuznetsov and others at the Dependable Systems Lab at EPFL; updates and upstreaming by myself. Differential Revision: http://reviews.llvm.org/D6094 llvm-svn: 239761
* Unbreak docs build from r239740.Sanjoy Das2015-06-151-0/+4
| | | | | | Add FaultMaps.rst to toctree. llvm-svn: 239747
* Unbreak the build from r239740.Sanjoy Das2015-06-151-1/+1
| | | | | | Do not re-use an enum name as a field name. Some bots don't like this. llvm-svn: 239746
* [CodeGen] Introduce a FAULTING_LOAD_OP pseudo-op.Sanjoy Das2015-06-151-0/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This instruction encodes a loading operation that may fault, and a label to branch to if the load page-faults. The locations of potentially faulting loads and their "handler" destinations are recorded in a FaultMap section, meant to be consumed by LLVM's clients. Nothing generates FAULTING_LOAD_OP instructions yet, but they will be used in a future change. The documentation (FaultMaps.rst) needs improvement and I will update this diff with a more expanded version shortly. Depends on D10196 Reviewers: rnk, reames, AndyAyers, ab, atrick, pgavlin Reviewed By: atrick, pgavlin Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D10197 llvm-svn: 239740
* R600 -> AMDGPU renameTom Stellard2015-06-134-11/+11
| | | | llvm-svn: 239657
* R600/SI: Add assembler support for FLAT instructionsTom Stellard2015-06-121-0/+5
| | | | | | | | - Add glc, slc, and tfe operands to flat instructions - Add missing flat instructions - Fix the encoding of flat_load_dwordx3 and flat_store_dwordx3. llvm-svn: 239637
* [TableGen] Correct the documentation for 'foreach' in the Language Intro.Craig Topper2015-06-061-1/+1
| | | | llvm-svn: 239204
* [docs] Document "LGTM" in the lexicon.Sean Silva2015-06-041-0/+4
| | | | llvm-svn: 239085
* [IR/AsmWriter] Output escape sequences if the first character isdigit()Filipe Cabecinhas2015-06-021-0/+5
| | | | | | | | | | | | | | | If the first character in a metadata attachment's name is a digit, it has to be output using an escape sequence, otherwise it's not valid text IR. Removed an over-zealous assert from LLVMContext which didn't allow this. The rule should only apply to text IR. Actual names can have any sequence of non-NUL bytes. Also added some documentation on accepted names. Bug found with AFL fuzz. llvm-svn: 238867
* [docs] fix the declarations of the llvm.nvvm.ptr.gen.to.* intrinsicsJingyue Wu2015-05-291-4/+4
| | | | | | | | | | | | | | | | | | Summary: These intrinsics should take a generic input address space and outputs a non-generic address space. Test Plan: no Reviewers: jholewinski, eliben Reviewed By: eliben Subscribers: eliben, jholewinski, llvm-commits Differential Revision: http://reviews.llvm.org/D10132 llvm-svn: 238620
* [YAMLIO] Make line-wrapping configurable and test it.Frederic Riss2015-05-291-3/+11
| | | | | | | | | | | | | | | | Summary: We would wrap flow mappings and sequences when they go over a hardcoded 70 characters limit. Make the wrapping column configurable (and default to 70 co the change should be NFC for current users). Passing 0 allows to completely suppress the wrapping which makes it easier to handle in tools like FileCheck. Reviewers: bogner Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D10109 llvm-svn: 238584
* Update documentation for llvm-profdata.Diego Novillo2015-05-281-0/+30
| | | | | | | These options have been present for a while, but I had never updated the documentation. Fixed. llvm-svn: 238511
* Add some more detailed docs about the current state of Phabricator andChandler Carruth2015-05-271-1/+11
| | | | | | reviwes.llvm.org to help reduce confusion. llvm-svn: 238295
* Add initial support for the convergent attribute.Owen Anderson2015-05-261-0/+7
| | | | llvm-svn: 238264
* [lib/Fuzzer] make the fuzzing timeout 1200 seconds by default (was: infinity)Kostya Serebryany2015-05-261-1/+1
| | | | llvm-svn: 238251
* [lib/Fuzzer] fix docsKostya Serebryany2015-05-261-3/+3
| | | | llvm-svn: 238236
* [lib/Fuzzer] mention the user-supplied mutatorsKostya Serebryany2015-05-221-0/+8
| | | | llvm-svn: 238062
* Document the CoreCLR GC StrategySwaroop Sridhar2015-05-211-0/+23
| | | | | | | Add notead about the CoreCLR GC Strategy to the Garbage Collection document. llvm-svn: 237869
* [doc] Update Lexicon with C++ unwinder acronymsNick Kledzik2015-05-201-0/+21
| | | | llvm-svn: 237840
* [lib/Fuzzer] more docsKostya Serebryany2015-05-201-2/+25
| | | | llvm-svn: 237836
* Dereferenceable, dereferenceable_or_null metadata for loadsSanjoy Das2015-05-191-1/+20
| | | | | | | | | | | | | | | | | | | | Summary: Introduce dereferenceable, dereferenceable_or_null metadata for loads with the same semantic as corresponding attributes. This patch depends on http://reviews.llvm.org/D9253 Patch by Artur Pilipenko! Reviewers: hfinkel, sanjoy, reames Reviewed By: sanjoy, reames Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D9365 llvm-svn: 237720
* Fix documentation for Set-Like ContainersArtyom Skrobov2015-05-191-10/+26
| | | | llvm-svn: 237677
* Doxygen: Enable autobrief feature and update coding standards.Matthias Braun2015-05-152-16/+17
| | | | llvm-svn: 237417
* docs: Fix up some .rst formattingJustin Bogner2015-05-141-3/+3
| | | | llvm-svn: 237409
* Add a missing piece of existing practice to the developer policy. This may ↵Nick Lewycky2015-05-141-0/+5
| | | | | | need further refinement, but I think is roughly correct. llvm-svn: 237405
* YAML: Add support for literal block scalar I/O.Alex Lorenz2015-05-141-0/+50
| | | | | | | | | | | | | This commit gives the users of the YAML Traits I/O library the ability to serialize scalars using the YAML literal block scalar notation by allowing them to implement a specialization of the `BlockScalarTraits` struct for their custom types. Reviewers: Duncan P. N. Exon Smith Differential Revision: http://reviews.llvm.org/D9613 llvm-svn: 237404
* Fixed some typos and broken links in source level debugging docs.Michael Kuperstein2015-05-142-11/+13
| | | | llvm-svn: 237357
* [lib/Fuzzer] update docs about test corpuses in gitKostya Serebryany2015-05-131-0/+24
| | | | llvm-svn: 237308
* [Statepoints][Docs] Fix a couple of out of date examples.Sanjoy Das2015-05-131-5/+5
| | | | | | Things I had missed in r237285. llvm-svn: 237290
* [Statepoints][Docs] Fix typo: change a period to a comma.Sanjoy Das2015-05-131-1/+1
| | | | llvm-svn: 237289
* [PlaceSafepoints] New attributes for patchable statepoints.Sanjoy Das2015-05-131-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch teaches the PlaceSafepoints pass about two `CallSite` function attributes: * "statepoint-id": if the string value of this attribute can be parsed as an integer, then it is propagated to the ID parameter of the statepoint created. * "statepoint-num-patch-bytes": if the string value of this attribute can be parsed as an integer, then it is propagated to the `num patch bytes` parameter of the statepoint created. This change intentionally does not assert on a malformed value for these attributes, given that they're not "official" attributes. Reviewers: reames, pgavlin Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D9735 llvm-svn: 237286
* [PlaceSafepoints] Update docs for r237214.Sanjoy Das2015-05-131-4/+4
| | | | | | | Show the two new ID and NumPatchBytes fields in the PlaceSafepoint examples in Statepoints.rst to avoid confusion. llvm-svn: 237285
* Add function entry count metadata.Diego Novillo2015-05-131-0/+23
| | | | | | | | | | | | | | | | | | | | Summary: This adds three Function methods to handle function entry counts: setEntryCount() and getEntryCount(). Entry counts are stored under the MD_prof metadata node with the name "function_entry_count". They are unsigned 64 bit values set by profilers (instrumentation and sample profiler changes coming up). Added documentation for new profile metadata and tests. Reviewers: dexonsmith, bogner Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D9628 llvm-svn: 237260
* [Statepoints] Support for "patchable" statepoints.Sanjoy Das2015-05-121-6/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This change adds two new parameters to the statepoint intrinsic, `i64 id` and `i32 num_patch_bytes`. `id` gets propagated to the ID field in the generated StackMap section. If the `num_patch_bytes` is non-zero then the statepoint is lowered to `num_patch_bytes` bytes of nops instead of a call (the spill and reload code remains unchanged). A non-zero `num_patch_bytes` is useful in situations where a language runtime requires complete control over how a call is lowered. This change brings statepoints one step closer to patchpoints. With some additional work (that is not part of this patch) it should be possible to get rid of `TargetOpcode::STATEPOINT` altogether. PlaceSafepoints generates `statepoint` wrappers with `id` set to `0xABCDEF00` (the old default value for the ID reported in the stackmap) and `num_patch_bytes` set to `0`. This can be made more sophisticated later. Reviewers: reames, pgavlin, swaroop.sridhar, AndyAyers Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D9546 llvm-svn: 237214
* [Statepoints] Split the calling convention and statepoint flags operand to ↵Pat Gavlin2015-05-121-0/+6
| | | | | | | | STATEPOINT into two separate operands. Differential Revision: http://reviews.llvm.org/D9623 llvm-svn: 237166
* [lib/Fuzzer] guess the right number of workers if -jobs=N is given but ↵Kostya Serebryany2015-05-121-6/+4
| | | | | | -workers=M is not. Update the docs. llvm-svn: 237163
* [Docs] Fix scoped noalias exampleAdam Nemet2015-05-111-1/+1
| | | | | | | | | | | | | | | | | | Summary: As far as I understand the entire point of this example is to show that if noalias is not a superset/equal to the alias.scope list on a scope domain then load could reference locations that the store is not known to not-alias i.e may alias. Reviewers: hfinkel Reviewed By: hfinkel Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D9598 llvm-svn: 236977
* Fix a docs build break introduced by rL236888.Pat Gavlin2015-05-081-1/+1
| | | | llvm-svn: 236891
* Extend the statepoint intrinsic to allow statepoints to be marked as ↵Pat Gavlin2015-05-081-9/+104
| | | | | | | | | | | | | | | | | | | | | | transitions from GC-aware code to code that is not GC-aware. This changes the shape of the statepoint intrinsic from: @llvm.experimental.gc.statepoint(anyptr target, i32 # call args, i32 unused, ...call args, i32 # deopt args, ...deopt args, ...gc args) to: @llvm.experimental.gc.statepoint(anyptr target, i32 # call args, i32 flags, ...call args, i32 # transition args, ...transition args, i32 # deopt args, ...deopt args, ...gc args) This extension offers the backend the opportunity to insert (somewhat) arbitrary code to manage the transition from GC-aware code to code that is not GC-aware and back. In order to support the injection of transition code, this extension wraps the STATEPOINT ISD node generated by the usual lowering lowering with two additional nodes: GC_TRANSITION_START and GC_TRANSITION_END. The transition arguments that were passed passed to the intrinsic (if any) are lowered and provided as operands to these nodes and may be used by the backend during code generation. Eventually, the lowering of the GC_TRANSITION_{START,END} nodes should be informed by the GC strategy in use for the function containing the intrinsic call; for now, these nodes are instead replaced with no-ops. Differential Revision: http://reviews.llvm.org/D9501 llvm-svn: 236888
* Update CMake flags, LibFuzzer comments and docs for new -fsanitize-coverage= ↵Alexey Samsonov2015-05-071-4/+5
| | | | | | flags. llvm-svn: 236797
* Masked Gather and Scatter intrinsics - updated documentation.Elena Demikhovsky2015-05-071-2/+113
| | | | llvm-svn: 236721
* [lib/Fuzzer] rename TestOneInput to LLVMFuzzerTestOneInput to make it more ↵Kostya Serebryany2015-05-061-5/+5
| | | | | | unique llvm-svn: 236652
* Document some of the options in test/lit.cfgMatthias Braun2015-05-041-0/+19
| | | | llvm-svn: 236462
* Lit: Allow overriding llvm tool paths+arguments, make -D an alias for --paramMatthias Braun2015-05-041-1/+1
| | | | | | | | | | | These changes allow usages where you want to pass an additional commandline option to all invocations of a specific llvm tool. Example: > llvm-lit -Dllc=llc -enable-misched -verify-machineinstrs Differential Revision: http://reviews.llvm.org/D9487 llvm-svn: 236461
* YAML: Add an optional 'flow' field to the mapping trait to allow flow ↵Alex Lorenz2015-05-041-0/+25
| | | | | | | | | | | | | 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 llvm-svn: 236456
* Update YamlIO documentation for the ScalarTraits class.Alex Lorenz2015-05-011-2/+2
| | | | | | | | | This patch adds the missing context parameter to the input and output methods in ScalarTraits. Differential Revision: http://reviews.llvm.org/D9173 llvm-svn: 236328
OpenPOWER on IntegriCloud