summaryrefslogtreecommitdiffstats
path: root/llvm/docs
Commit message (Collapse)AuthorAgeFilesLines
* IR: Use an explicit map for debug info type uniquingDuncan P. N. Exon Smith2016-04-171-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather than relying on the structural equivalence of DICompositeType to merge type definitions, use an explicit map on the LLVMContext that LLParser and BitcodeReader consult when constructing new nodes. Each non-forward-declaration DICompositeType with a non-empty 'identifier:' field is stored/loaded from the type map, and the first definiton will "win". This map is opt-in: clients that expect ODR types from different modules to be merged must call LLVMContext::ensureDITypeMap. - Clients that just happen to load more than one Module in the same LLVMContext won't magically merge types. - Clients (like LTO) that want to continue to merge types based on ODR identifiers should opt-in immediately. I have updated LTOCodeGenerator.cpp, the two "linking" spots in gold-plugin.cpp, and llvm-link (unless -disable-debug-info-type-map) to set this. With this in place, it will be straightforward to remove the DITypeRef concept (i.e., referencing types by their 'identifier:' string rather than pointing at them directly). llvm-svn: 266549
* IR: Use ODR to unique DICompositeType membersDuncan P. N. Exon Smith2016-04-171-2/+11
| | | | | | | | | | | | | | Merge members that are describing the same member of the same ODR type, even if other bits differ. If the file or line differ, we don't care; if anything else differs, it's an ODR violation (and we still don't really care). For DISubprogram declarations, this looks at the LinkageName and Scope. For DW_TAG_member instances of DIDerivedType, this looks at the Name and Scope. In both cases, we know that the Scope follows ODR rules if it has a non-empty identifier. llvm-svn: 266548
* LangRef: Removed some outdated text about DIDerivedTypeDuncan P. N. Exon Smith2016-04-171-5/+2
| | | | | | | This text is also incorrect (much like r266540). It looks like I missed updating some of what I moved from SourceLevelDebugging.rst in r232566. llvm-svn: 266544
* LangRef: Fix some bugs in debug info descriptionsDuncan P. N. Exon Smith2016-04-161-4/+9
| | | | | | Fix descriptions of DICompositeType and DIDerivedType. llvm-svn: 266540
* [libFuzzer] menion the git mirror in the docsKostya Serebryany2016-04-151-0/+2
| | | | llvm-svn: 266476
* Remove every uses of getGlobalContext() in LLVM (but the C API)Mehdi Amini2016-04-147-27/+25
| | | | | | | | | | | At the same time, fixes InstructionsTest::CastInst unittest: yes you can leave the IR in an invalid state and exit when you don't destroy the context (like the global one), no longer now. This is the first part of http://reviews.llvm.org/D19094 From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 266379
* Revert "Support arbitrary addrspace pointers in masked load/store intrinsics"Adam Nemet2016-04-141-10/+10
| | | | | | | | This reverts commit r266086. It breaks the LTO build of gcc in SPEC2000. llvm-svn: 266282
* Update psabi link for x86-64. Add link to linux gabi supplement.James Y Knight2016-04-121-12/+2
| | | | llvm-svn: 266137
* Add __atomic_* lowering to AtomicExpandPass.James Y Knight2016-04-121-12/+162
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (Recommit of r266002, with r266011, r266016, and not accidentally including an extra unused/uninitialized element in LibcallRoutineNames) AtomicExpandPass can now lower atomic load, atomic store, atomicrmw, and cmpxchg instructions to __atomic_* library calls, when the target doesn't support atomics of a given size. This is the first step towards moving all atomic lowering from clang into llvm. When all is done, the behavior of __sync_* builtins, __atomic_* builtins, and C11 atomics will be unified. Previously LLVM would pass everything through to the ISelLowering code. There, unsupported atomic instructions would turn into __sync_* library calls. Because of that behavior, Clang currently avoids emitting llvm IR atomic instructions when this would happen, and emits __atomic_* library functions itself, in the frontend. This change makes LLVM able to emit __atomic_* libcalls, and thus will eventually allow clang to depend on LLVM to do the right thing. It is advantageous to do the new lowering to atomic libcalls in AtomicExpandPass, before ISel time, because it's important that all atomic operations for a given size either lower to __atomic_* libcalls (which may use locks), or native instructions which won't. No mixing and matching. At the moment, this code is enabled only for SPARC, as a demonstration. The next commit will expand support to all of the other targets. Differential Revision: http://reviews.llvm.org/D18200 llvm-svn: 266115
* Support arbitrary addrspace pointers in masked load/store intrinsicsArtur Pilipenko2016-04-121-10/+10
| | | | | | | | | | | | | | This is a resubmittion of 263158 change. This patch fixes the problem which occurs when loop-vectorize tries to use @llvm.masked.load/store intrinsic for a non-default addrspace pointer. It fails with "Calling a function with a bad signature!" assertion in CallInst constructor because it tries to pass a non-default addrspace pointer to the pointer argument which has default addrspace. The fix is to add pointer type as another overloaded type to @llvm.masked.load/store intrinsics. Reviewed By: reames Differential Revision: http://reviews.llvm.org/D17270 llvm-svn: 266086
* LangRef: Update example syntax for atomic load instructionMatt Arsenault2016-04-121-1/+1
| | | | llvm-svn: 266077
* This reverts commit r266002, r266011 and r266016.Rafael Espindola2016-04-121-162/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | They broke the msan bot. Original message: Add __atomic_* lowering to AtomicExpandPass. AtomicExpandPass can now lower atomic load, atomic store, atomicrmw,and cmpxchg instructions to __atomic_* library calls, when the target doesn't support atomics of a given size. This is the first step towards moving all atomic lowering from clang into llvm. When all is done, the behavior of __sync_* builtins, __atomic_* builtins, and C11 atomics will be unified. Previously LLVM would pass everything through to the ISelLowering code. There, unsupported atomic instructions would turn into __sync_* library calls. Because of that behavior, Clang currently avoids emitting llvm IR atomic instructions when this would happen, and emits __atomic_* library functions itself, in the frontend. This change makes LLVM able to emit __atomic_* libcalls, and thus will eventually allow clang to depend on LLVM to do the right thing. It is advantageous to do the new lowering to atomic libcalls in AtomicExpandPass, before ISel time, because it's important that all atomic operations for a given size either lower to __atomic_* libcalls (which may use locks), or native instructions which won't. No mixing and matching. At the moment, this code is enabled only for SPARC, as a demonstration. The next commit will expand support to all of the other targets. Differential Revision: http://reviews.llvm.org/D18200 llvm-svn: 266062
* Add the allocsize attribute to LLVM.George Burgess IV2016-04-121-0/+9
| | | | | | | | | | | | | | | | `allocsize` is a function attribute that allows users to request that LLVM treat arbitrary functions as allocation functions. This patch makes LLVM accept the `allocsize` attribute, and makes `@llvm.objectsize` recognize said attribute. The review for this was split into two patches for ease of reviewing: D18974 and D14933. As promised on the revisions, I'm landing both patches as a single commit. Differential Revision: http://reviews.llvm.org/D14933 llvm-svn: 266032
* Add __atomic_* lowering to AtomicExpandPass.James Y Knight2016-04-111-12/+162
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | AtomicExpandPass can now lower atomic load, atomic store, atomicrmw, and cmpxchg instructions to __atomic_* library calls, when the target doesn't support atomics of a given size. This is the first step towards moving all atomic lowering from clang into llvm. When all is done, the behavior of __sync_* builtins, __atomic_* builtins, and C11 atomics will be unified. Previously LLVM would pass everything through to the ISelLowering code. There, unsupported atomic instructions would turn into __sync_* library calls. Because of that behavior, Clang currently avoids emitting llvm IR atomic instructions when this would happen, and emits __atomic_* library functions itself, in the frontend. This change makes LLVM able to emit __atomic_* libcalls, and thus will eventually allow clang to depend on LLVM to do the right thing. It is advantageous to do the new lowering to atomic libcalls in AtomicExpandPass, before ISel time, because it's important that all atomic operations for a given size either lower to __atomic_* libcalls (which may use locks), or native instructions which won't. No mixing and matching. At the moment, this code is enabled only for SPARC, as a demonstration. The next commit will expand support to all of the other targets. Differential Revision: http://reviews.llvm.org/D18200 llvm-svn: 266002
* [SSP] Remove llvm.stackprotectorcheck.Tim Shen2016-04-081-38/+0
| | | | | | | | | | This is a cleanup patch for SSP support in LLVM. There is no functional change. llvm.stackprotectorcheck is not needed, because SelectionDAG isn't actually lowering it in SelectBasicBlock; rather, it adds check code in FinishBasicBlock, ignoring the position where the intrinsic is inserted (See FindSplitPointForStackProtector()). llvm-svn: 265851
* [PPC] Added a note to release notesEhsan Amiri2016-04-071-1/+1
| | | | | | | A draft line added to release notes for PPC, to keep a record of changes. This is just a draft and will be rewritten towards the end of release. llvm-svn: 265694
* [GCC] Attribute ifunc support in llvmDmitry Polukhin2016-04-071-0/+19
| | | | | | | | | | | This patch add support for GCC attribute((ifunc("resolver"))) for targets that use ELF as object file format. In general ifunc is a special kind of function alias with type @gnu_indirect_function. Patch for Clang http://reviews.llvm.org/D15524 Differential Revision: http://reviews.llvm.org/D15525 llvm-svn: 265667
* NFC: make AtomicOrdering an enum classJF Bastien2016-04-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: In the context of http://wg21.link/lwg2445 C++ uses the concept of 'stronger' ordering but doesn't define it properly. This should be fixed in C++17 barring a small question that's still open. The code currently plays fast and loose with the AtomicOrdering enum. Using an enum class is one step towards tightening things. I later also want to tighten related enums, such as clang's AtomicOrderingKind (which should be shared with LLVM as a 'C++ ABI' enum). This change touches a few lines of code which can be improved later, I'd like to keep it as NFC for now as it's already quite complex. I have related changes for clang. As a follow-up I'll add: bool operator<(AtomicOrdering, AtomicOrdering) = delete; bool operator>(AtomicOrdering, AtomicOrdering) = delete; bool operator<=(AtomicOrdering, AtomicOrdering) = delete; bool operator>=(AtomicOrdering, AtomicOrdering) = delete; This is separate so that clang and LLVM changes don't need to be in sync. Reviewers: jyknight, reames Subscribers: jyknight, llvm-commits Differential Revision: http://reviews.llvm.org/D18775 llvm-svn: 265602
* AMDGPU: Document address space mappingTom Stellard2016-04-061-0/+23
| | | | | | | | | | | | | | | | | Summary: Address space mapping is described in lib/Target/AMDGPU/AMDGPU.h in Doxygen comments. This patch adds the description to user guide for AMDGPU back-end. Patch By: Vedran Miletić Reviewers: tstellarAMD, arsenm Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D17046 llvm-svn: 265500
* Swift Calling Convention: swiftcc for ARM.Manman Ren2016-04-051-0/+1
| | | | | | Differential Revision: http://reviews.llvm.org/D18769 llvm-svn: 265482
* Swift Calling Convention: add swiftcc.Manman Ren2016-04-052-0/+4
| | | | | | Differential Revision: http://reviews.llvm.org/D17863 llvm-svn: 265480
* Docs: dampen story time for atomicsJF Bastien2016-04-051-7/+3
| | | | | | Story time was nice a few years ago, but by now it's nice to state how things are, rather than explain the diff from ye olden atomic history. These were dark times. llvm-svn: 265369
* Document standard substitutions defined by lit.Paul Robinson2016-04-041-0/+29
| | | | | | | | Patch by Guilherme Bufolo! Differential Revision: http://reviews.llvm.org/D18752 llvm-svn: 265314
* Swift Calling Convention: add swifterror attribute.Manman Ren2016-04-011-0/+19
| | | | | | | | | | | | A ``swifterror`` attribute can be applied to a function parameter or an AllocaInst. This commit does not include any target-specific change. The target-specific optimization will come as a follow-up patch. Differential Revision: http://reviews.llvm.org/D18092 llvm-svn: 265189
* testcase gardening: update the emissionKind enum to the new syntax. (NFC)Adrian Prantl2016-04-012-3/+3
| | | | llvm-svn: 265081
* Change eliminateCallFramePseudoInstr() to return an iteratorHans Wennborg2016-03-311-0/+4
| | | | | | | | | | | | | | | | | | | | | This will become necessary in a subsequent change to make this method merge adjacent stack adjustments, i.e. it might erase the previous and/or next instruction. It also greatly simplifies the calls to this function from Prolog- EpilogInserter. Previously, that had a bunch of logic to resume iteration after the call; now it just continues with the returned iterator. Note that this changes the behaviour of PEI a little. Previously, it attempted to re-visit the new instruction created by eliminateCallFramePseudoInstr(). That code was added in r36625, but I can't see any reason for it: the new instructions will obviously not be pseudo instructions, they will not have FrameIndex operands, and we have already accounted for the stack adjustment. Differential Revision: http://reviews.llvm.org/D18627 llvm-svn: 265036
* Introduce a @llvm.experimental.guard intrinsicSanjoy Das2016-03-311-0/+44
| | | | | | | | | | | | | | | | | | | | | | | Summary: As discussed on llvm-dev[1]. This change adds the basic boilerplate code around having this intrinsic in LLVM: - Changes in Intrinsics.td, and the IR Verifier - A lowering pass to lower @llvm.experimental.guard to normal control flow - Inliner support [1]: http://lists.llvm.org/pipermail/llvm-dev/2016-February/095523.html Reviewers: reames, atrick, chandlerc, rnk, JosephTremoulet, echristo Subscribers: mcrosier, llvm-commits Differential Revision: http://reviews.llvm.org/D18527 llvm-svn: 264976
* fix typosSanjay Patel2016-03-301-2/+2
| | | | llvm-svn: 264933
* [NVPTX] Make NVVMReflect a function pass.Justin Lebar2016-03-301-1/+1
| | | | | | | | | | | | | | | Summary: Currently it's a module pass. Make it a function pass so that we can move it to PassManagerBuilder's EP_EarlyAsPossible extension point, which only accepts function passes. Reviewers: rnk Subscribers: tra, llvm-commits, jholewinski Differential Revision: http://reviews.llvm.org/D18615 llvm-svn: 264919
* [docs] Add gpucc publication and tutorial.Jingyue Wu2016-03-301-4/+16
| | | | llvm-svn: 264839
* [libFuzzer] more trophiesKostya Serebryany2016-03-291-1/+1
| | | | llvm-svn: 264804
* [libFuzzer] more docsKostya Serebryany2016-03-291-7/+41
| | | | llvm-svn: 264803
* Clarifying some of the requirements for building with Visual Studio on ↵Aaron Ballman2016-03-291-2/+4
| | | | | | Windows. Namely, we require the latest Update to be installed (for sanity purposes), and we require CMake 2.8.12.2 for building LLVM with Visual Studio. llvm-svn: 264779
* Swift Calling Convention: add swiftself attribute.Manman Ren2016-03-291-0/+5
| | | | | | Differential Revision: http://reviews.llvm.org/D17866 llvm-svn: 264754
* Added 2 notesElena Demikhovsky2016-03-291-2/+15
| | | | | | | | | 1) Skylake and KNL support for X86 2) masked intrinsics load/store/gather/scatter Differential Revision: http://reviews.llvm.org/D18353 llvm-svn: 264703
* [docs] Corrections w.r.t V2 of the coverage mapping formatVedant Kumar2016-03-281-3/+3
| | | | llvm-svn: 264679
* docs: Fix footnote after r260042.Nico Weber2016-03-281-2/+1
| | | | | | | | r260042 removed a footnote referring to autoconf, but it left around one item still referring to that footnote (libtool), and it didn't renumber the later footnote reference. llvm-svn: 264663
* docs: Try to remove weird linebreak from generated html.Nico Weber2016-03-281-2/+2
| | | | llvm-svn: 264654
* docs: Update Ninja link, also fix link syntax.Nico Weber2016-03-281-1/+1
| | | | llvm-svn: 264648
* [Kaleidoscope] Rename Error -> LogError in Chapters 2-5.Lang Hames2016-03-253-28/+28
| | | | | | | This keeps the naming consistent with Chapters 6-8, where Error was renamed to LogError in r264426 to avoid clashes with the new Error class in libSupport. llvm-svn: 264427
* [Kaleidoscope] Fix 'Error' name clashes.Lang Hames2016-03-252-16/+16
| | | | llvm-svn: 264426
* Try to fix ODR violation of ErrorInfo::IDReid Kleckner2016-03-241-0/+3
| | | | | | This implements my suggestion to Lang. llvm-svn: 264360
* Add lowering support for llvm.experimental.deoptimizeSanjoy Das2016-03-241-2/+6
| | | | | | | | | | | | | | | Summary: Only adds support for "naked" calls to llvm.experimental.deoptimize. Support for round-tripping through RewriteStatepointsForGC will come as a separate patch (should be simpler than this one). Reviewers: reames Subscribers: sanjoy, mcrosier, llvm-commits Differential Revision: http://reviews.llvm.org/D18429 llvm-svn: 264329
* [Docs] Updating CMake docs to include LLVM_OPTIMIZED_TABLEGENChris Bieneman2016-03-241-0/+6
| | | | | | This is based on feedback on llvm-commits from Sean Silvas. llvm-svn: 264318
* [docs] Clarify Error example in Programmer's Manual.Lang Hames2016-03-241-4/+6
| | | | llvm-svn: 264314
* docs: Fix a missing language in a code-blockJustin Bogner2016-03-231-1/+1
| | | | | | | This should fix the docs build. Spotted by spstarr, thanks! llvm-svn: 264209
* [CUDA] Update docs to reflect that we no longer define __NVCC__.Justin Lebar2016-03-231-4/+5
| | | | llvm-svn: 264208
* FAQ: Remove the entire Build Problems sectionJustin Bogner2016-03-231-125/+0
| | | | | | | | This is all horribly outdated, and is mostly about the autoconf build system that doesn't even exist anymore. These questions aren't frequent, and these answers aren't useful. llvm-svn: 264141
* FAQ: We require GCC 4.7 - nobody's asking about build failures with 3.3.2Justin Bogner2016-03-231-6/+0
| | | | llvm-svn: 264139
* [docs] Fix typo in ProgrammersManual.rstVedant Kumar2016-03-231-1/+1
| | | | | | Patch by Miod Vallat! llvm-svn: 264138
OpenPOWER on IntegriCloud