summaryrefslogtreecommitdiffstats
path: root/llvm/docs
Commit message (Collapse)AuthorAgeFilesLines
...
* Nuke the old JIT.Rafael Espindola2014-08-071-2/+1
| | | | | | | | | I am sure we will be finding bits and pieces of dead code for years to come, but this is a good start. Thanks to Lang Hames for making MCJIT a good replacement! llvm-svn: 215111
* Update Tablegen documents given that binary literals are now sizedPete Cooper2014-08-072-3/+10
| | | | llvm-svn: 215088
* Fix typos in comments and docJF Bastien2014-08-051-1/+1
| | | | | | Committing http://reviews.llvm.org/D4798 for Robin Morisset (morisset@google.com) llvm-svn: 214934
* Remove the TargetMachine forwards for TargetSubtargetInfo basedEric Christopher2014-08-041-1/+1
| | | | | | information and update all callers. No functional change. llvm-svn: 214781
* Correct the emission kind constants committed in r214771David Blaikie2014-08-041-1/+1
| | | | llvm-svn: 214772
* Document the "emission kind" field of the DICompileUnit in LLVM's Source ↵David Blaikie2014-08-041-0/+3
| | | | | | Level Debugging metadata. llvm-svn: 214771
* Update links to the gcc and java documentation that 404'd.Benjamin Kramer2014-08-041-2/+2
| | | | llvm-svn: 214700
* [lit] Add --show-xfail flag to LIT.Eric Fiselier2014-08-021-0/+4
| | | | | | | | | | | | | | | | | | Summary: This patch add a --show-xfail flag. If this flag is specified then each xfail test will be printed to output. When it is not given xfail tests are ignored. Ignoring xfail tests is the current behavior. This flag is meant to mirror the --show-unsupported flag that was recently added. Reviewers: ddunbar, EricWF Reviewed By: EricWF Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D4750 llvm-svn: 214609
* Debug info: Infrastructure to support debug locations for fragmentedAdrian Prantl2014-08-011-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | variables (for example, by-value struct arguments passed in registers, or large integer values split across several smaller registers). On the IR level, this adds a new type of complex address operation OpPiece to DIVariable that describes size and offset of a variable fragment. On the DWARF emitter level, all pieces describing the same variable are collected, sorted and emitted as DWARF expressions using the DW_OP_piece and DW_OP_bit_piece operators. http://reviews.llvm.org/D3373 rdar://problem/15928306 What this patch doesn't do / Future work: - This patch only adds the backend machinery to make this work, patches that change SROA and SelectionDAG's type legalizer to actually create such debug info will follow. (http://reviews.llvm.org/D2680) - Making the DIVariable complex expressions into an argument of dbg.value will reduce the memory footprint of the debug metadata. - The sorting/uniquing of pieces should be moved into DebugLocEntry, to facilitate the merging of multi-piece entries. llvm-svn: 214576
* docs: Strongly recommend setting rpath when using a local GCC toolchainReid Kleckner2014-08-011-4/+17
| | | | | | | | | | | | Users keep emailing us about the difficulties of getting LD_LIBRARY_PATH into their environment, which should be completely unecessary. Try to strengthen the rpath recommentation by putting in an example cmake invocation. Speaking of which, we might want to make CMake the recommended build system in GettingStarted.html. llvm-svn: 214565
* Add documentation for lit's --show-unsupported flagEric Fiselier2014-07-311-0/+4
| | | | llvm-svn: 214431
* Clarify in PowerPC release notes that 32-bit PIC support is incomplete.Bill Schmidt2014-07-311-1/+2
| | | | | | | | | As requested, changing this wording slightly. Thanks, Bill llvm-svn: 214430
* Wrong heading level for PowerPC changes in release notesBill Schmidt2014-07-311-1/+1
| | | | | | | | | Oops. Used the wrong heading level by mistake. Thanks, Bill llvm-svn: 214405
* Release Notes: Overriding PPC64 and PPC64LE ABI defaults is not yet supported.Bill Schmidt2014-07-311-3/+2
| | | | | | | | | | I wrongly included a description of a patch that came in after 3.5 branched and has not been backported. Thanks, Bill llvm-svn: 214404
* Add PowerPC release notes for 3.5.Bill Schmidt2014-07-311-0/+30
| | | | | | | | | | Here's my take on 3.5 changes for PowerPC. Others please feel free to add, edit, delete as desired. Thanks, Bill llvm-svn: 214403
* Fix some grammatical errors.Richard Smith2014-07-311-12/+12
| | | | llvm-svn: 214383
* Use "weak alias" instead of "alias weak"Rafael Espindola2014-07-301-1/+1
| | | | | | | | | | | | | | | | | | | | | Before this patch we had @a = weak global ... but @b = alias weak ... The patch changes aliases to look more like global variables. Looking at some really old code suggests that the reason was that the old bison based parser had a reduction for alias linkages and another one for global variable linkages. Putting the alias first avoided the reduce/reduce conflict. The days of the old .ll parser are long gone. The new one parses just "linkage" and a later check is responsible for deciding if a linkage is valid in a given context. llvm-svn: 214355
* docs: update the command guide documentation for llvm-profdata.Alex Lorenz2014-07-301-12/+85
| | | | | | Differential Revision: http://reviews.llvm.org/D4726 llvm-svn: 214331
* LangRef: add a note about the mangling-suppressing \01 prefixHans Wennborg2014-07-301-1/+2
| | | | | | | | | Someone asked about this on IRC the other day, and I couldn't find the magic prefix documented anywhere. Differential Revision: http://reviews.llvm.org/D4728 llvm-svn: 214329
* Correct vector type definition in LangRef.Manuel Jacob2014-07-301-2/+2
| | | | | | | According to VectorType::isValidElementType, any integer, floating point or pointer type is a valid vector element type. llvm-svn: 214302
* Update LLVM version: 3.5 => 3.6Hans Wennborg2014-07-281-2/+2
| | | | | | | | | | | | | We branched 3.5, it's now time to work on 3.6. This is Sylvestre's patch from [1] plus regenerated configure file by me, and minus the release notes reset, which Sean pointed out [2] should happen later. 1. http://reviews.llvm.org/D4660 2. http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20140721/111137.html llvm-svn: 214131
* Document the new LLVM CMake interface for building against LLVMDan Liew2014-07-281-45/+106
| | | | | | libraries. With many contributions from Brad King. llvm-svn: 214077
* Fixed sphinx warning.Dan Liew2014-07-281-1/+1
| | | | llvm-svn: 214076
* Add @llvm.assume, lowering, and some basic propertiesHal Finkel2014-07-251-0/+40
| | | | | | | | | | | | | | | | | This is the first commit in a series that add an @llvm.assume intrinsic which can be used to provide the optimizer with a condition it may assume to be true (when the control flow would hit the intrinsic call). Some basic properties are added here: - llvm.invariant(true) is dead. - llvm.invariant(false) is unreachable (this directly corresponds to the documented behavior of MSVC's __assume(0)), so is llvm.invariant(undef). The intrinsic is tagged as writing arbitrarily, in order to maintain control dependencies. BasicAA has been updated, however, to return NoModRef for any particular location-based query so that we don't unnecessarily block code motion. llvm-svn: 213973
* Simplify and improve scoped-noalias metadata semanticsHal Finkel2014-07-251-33/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the process of fixing the noalias parameter -> metadata conversion process that will take place during inlining (which will be committed soon, but not turned on by default), I have come to realize that the semantics provided by yesterday's commit are not really what we want. Here's why: void foo(noalias a, noalias b, noalias c, bool x) { *q = x ? a : b; *c = *q; } Generically, we know that *c does not alias with *a and with *b (so there is an 'and' in what we know we're not), and we know that *q might be derived from *a or from *b (so there is an 'or' in what we know that we are). So we do not want the semantics currently, where any noalias scope matching any alias.scope causes a NoAlias return. What we want to know is that the noalias scopes form a superset of the alias.scope list (meaning that all the things we know we're not is a superset of all of things the other instruction might be). Making that change, however, introduces a composibility problem. If we inline once, adding the noalias metadata, and then inline again adding more, and we append new scopes onto the noalias and alias.scope lists each time. But, this means that we could change what was a NoAlias result previously into a MayAlias result because we appended an additional scope onto one of the alias.scope lists. So, instead of giving scopes the ability to have parents (which I had borrowed from the TBAA implementation, but seems increasingly unlikely to be useful in practice), I've given them domains. The subset/superset condition now applies within each domain independently, and we only need it to hold in one domain. Each time we inline, we add the new scopes in a new scope domain, and everything now composes nicely. In addition, this simplifies the implementation. llvm-svn: 213948
* Add scoped-noalias metadataHal Finkel2014-07-241-0/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds scoped noalias metadata. The primary motivations for this feature are: 1. To preserve noalias function attribute information when inlining 2. To provide the ability to model block-scope C99 restrict pointers Neither of these two abilities are added here, only the necessary infrastructure. In fact, there should be no change to existing functionality, only the addition of new features. The logic that converts noalias function parameters into this metadata during inlining will come in a follow-up commit. What is added here is the ability to generally specify noalias memory-access sets. Regarding the metadata, alias-analysis scopes are defined similar to TBAA nodes: !scope0 = metadata !{ metadata !"scope of foo()" } !scope1 = metadata !{ metadata !"scope 1", metadata !scope0 } !scope2 = metadata !{ metadata !"scope 2", metadata !scope0 } !scope3 = metadata !{ metadata !"scope 2.1", metadata !scope2 } !scope4 = metadata !{ metadata !"scope 2.2", metadata !scope2 } Loads and stores can be tagged with an alias-analysis scope, and also, with a noalias tag for a specific scope: ... = load %ptr1, !alias.scope !{ !scope1 } ... = load %ptr2, !alias.scope !{ !scope1, !scope2 }, !noalias !{ !scope1 } When evaluating an aliasing query, if one of the instructions is associated with an alias.scope id that is identical to the noalias scope associated with the other instruction, or is a descendant (in the scope hierarchy) of the noalias scope associated with the other instruction, then the two memory accesses are assumed not to alias. Note that is the first element of the scope metadata is a string, then it can be combined accross functions and translation units. The string can be replaced by a self-reference to create globally unqiue scope identifiers. [Note: This overview is slightly stylized, since the metadata nodes really need to just be numbers (!0 instead of !scope0), and the scope lists are also global unnamed metadata.] Existing noalias metadata in a callee is "cloned" for use by the inlined code. This is necessary because the aliasing scopes are unique to each call site (because of possible control dependencies on the aliasing properties). For example, consider a function: foo(noalias a, noalias b) { *a = *b; } that gets inlined into bar() { ... if (...) foo(a1, b1); ... if (...) foo(a2, b2); } -- now just because we know that a1 does not alias with b1 at the first call site, and a2 does not alias with b2 at the second call site, we cannot let inlining these functons have the metadata imply that a1 does not alias with b2. llvm-svn: 213864
* Document what backwards compatibility we provide for bitcode.Rafael Espindola2014-07-231-0/+23
| | | | llvm-svn: 213813
* In unroll pragma syntax and loop hint metadata, change "enable" forms to a ↵Mark Heffernan2014-07-231-20/+20
| | | | | | new form using the string "full". llvm-svn: 213772
* Added release notes for MIPS.Daniel Sanders2014-07-231-1/+69
| | | | llvm-svn: 213749
* Revert "Treat warnings in Sphinx as errors. The reasons for doing this are..."Dan Liew2014-07-221-1/+1
| | | | | | | | This reverts commit r213661. Reverting at the request of Sean Silva. llvm-svn: 213675
* Make use of the align parameter attribute for all pointer argumentsHal Finkel2014-07-221-0/+7
| | | | | | | | | | | | | | | | | | | | We previously supported the align attribute on all (pointer) parameters, but we only used it for byval parameters. However, it is completely consistent at the IR level to treat 'align n' on all pointer parameters as an alignment assumption on the pointer, and now we wll. Specifically, this causes computeKnownBits to use the align attribute on all pointer parameters, not just byval parameters. I've also added an explicit parameter attribute test for this to test/Bitcode/attributes.ll. And I've updated the LangRef to document the align parameter attribute (as it turns out, it was not documented at all previously, although the byval documentation mentioned that it could be used). There are (at least) two benefits to doing this: - It allows enhancing alignment based on the pointer alignment after inlining callees. - It allows simplification of pointer arithmetic. llvm-svn: 213670
* Added LLVM_ENABLE_RTTI and LLVM_ENABLE_EH options that allow RTTI and EHDan Liew2014-07-221-0/+8
| | | | | | | | to globally be controlled. Individual targets (e.g. ExceptionDemo) can still override this by using LLVM_REQUIRE_RTTI and LLVM_REQUIRE_EH if they need to be compiled with RTTI or exception handling respectively. llvm-svn: 213663
* Treat warnings in Sphinx as errors. The reasons for doing this are...Dan Liew2014-07-221-1/+1
| | | | | | | | | | - When CMake builds the documentation with sphinx-build it treats warnings as errors. We should be consistent with what we do in CMake. - Having warnings treated as errors will hopefully encourage developers to write documentation correctly. llvm-svn: 213661
* Fix Sphinx warning.Dan Liew2014-07-221-1/+1
| | | | llvm-svn: 213660
* Rename metadata llvm.loop.vectorize.unroll to llvm.loop.vectorize.interleave.Mark Heffernan2014-07-212-20/+34
| | | | llvm-svn: 213588
* Revert "[C++11] Add predecessors(BasicBlock *) / successors(BasicBlock *) ↵Duncan P. N. Exon Smith2014-07-211-2/+3
| | | | | | | | | iterator ranges." This reverts commit r213474 (and r213475), which causes a miscompile on a stage2 LTO build. I'll reply on the list in a moment. llvm-svn: 213562
* Fix Sphinx warnings.Dan Liew2014-07-212-5/+2
| | | | llvm-svn: 213559
* docs: Update relaease documents to include the patch number in the RELEASE tagsTom Stellard2014-07-211-17/+17
| | | | | | | This will make it easier to update the release scripts to support bug-fix releases. llvm-svn: 213544
* [C++11] Add predecessors(BasicBlock *) / successors(BasicBlock *) iterator ↵Manuel Jacob2014-07-201-3/+2
| | | | | | | | | | | | | | | | | | ranges. Summary: This patch introduces two new iterator ranges and updates existing code to use it. No functional change intended. Test Plan: All tests (make check-all) still pass. Reviewers: dblaikie Reviewed By: dblaikie Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D4481 llvm-svn: 213474
* Add loop unrolling metadata descriptions to docs/LangRef.rst.Mark Heffernan2014-07-181-54/+97
| | | | llvm-svn: 213397
* Add a dereferenceable attributeHal Finkel2014-07-181-0/+11
| | | | | | | | | This attribute indicates that the parameter or return pointer is dereferenceable. Practically speaking, loads from such a pointer within the associated byte range are safe to speculatively execute. Such pointer parameters are common in source languages (C++ references, for example). llvm-svn: 213385
* Remove rules against std::function from the programmer's manualReid Kleckner2014-07-171-12/+8
| | | | | | Clarify that llvm::function_ref is like StringRef for callables. llvm-svn: 213326
* Drop the udis86 wrapper from llvm::sysAlp Toker2014-07-171-7/+0
| | | | | | | | This optional dependency on the udis86 library was added some time back to aid JIT development, but doesn't make much sense to link into LLVM binaries these days. llvm-svn: 213300
* [TableGen] Allow shift operators to take bits<n>Adam Nemet2014-07-171-0/+6
| | | | | | | | | | | | | | | Convert the operand to int if possible, i.e. if the value is properly initialized. (I suppose there is further room for improvement here to also peform the shift if the uninitialized bits are shifted out.) With this little change we can now compute the scaling factor for compressed displacement with pure tablegen code in the X86 backend. This is useful because both the X86-disassembler-specific part of tablegen and the assembler need this and TD is the natural sharing place. The patch also adds the missing documentation for the shift and add operator. llvm-svn: 213277
* CodeGen: extend f16 conversions to permit types > float.Tim Northover2014-07-171-10/+10
| | | | | | | | | | | | | | | | | | | This makes the two intrinsics @llvm.convert.from.f16 and @llvm.convert.to.f16 accept types other than simple "float". This is only strictly needed for the truncate operation, since otherwise double rounding occurs and there's no way to represent the strict IEEE conversion. However, for symmetry we allow larger types in the extend too. During legalization, we can expand an "fp16_to_double" operation into two extends for convenience, but abort when the truncate isn't legal. A new libcall is probably needed here. Even after this commit, various target tweaks are needed to actually use the extended intrinsics. I've put these into separate commits for clarity, so there are no actual tests of f64 conversion here. llvm-svn: 213248
* Fix a typo in the inalloca descriptionHal Finkel2014-07-161-1/+1
| | | | llvm-svn: 213200
* ADT: Add MapVector::remove_ifDuncan P. N. Exon Smith2014-07-151-2/+4
| | | | | | | Add a `MapVector::remove_if()` that erases items in bulk in linear time, as opposed to quadratic time for repeated calls to `MapVector::erase()`. llvm-svn: 213090
* ADT: Fix MapVector::erase()Duncan P. N. Exon Smith2014-07-151-1/+1
| | | | | | | | | | | | Actually update the changed indexes in the map portion of `MapVector` when erasing from the middle. Add a unit test that checks for this. Note that `MapVector::erase()` is a linear time operation (it was and still is). I'll commit a new method in a moment called `MapVector::remove_if()` that deletes multiple entries in linear time, which should be slightly less painful. llvm-svn: 213084
* Document the maximum LLVM IR alignment, which is 1 << 29 or 0.5 GiBReid Kleckner2014-07-151-6/+8
| | | | | | | Add verifier checks. We already check these in the assembly parser, but a frontend producing IR in memory wouldn't hit those checks. llvm-svn: 213027
* fixed linkSanjay Patel2014-07-141-1/+1
| | | | llvm-svn: 212977
OpenPOWER on IntegriCloud