1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 03:23:01 +02:00
llvm-mirror/include/llvm/IR
Gor Nishanov d04999a10d Part 4c: Coroutine Devirtualization: Devirtualize coro.resume and coro.destroy.
Summary:
This is the 4c patch of the coroutine series. CoroElide pass now checks if PostSplit coro.begin
is referenced by coro.subfn.addr intrinsics. If so replace coro.subfn.addrs with an appropriate coroutine
subfunction associated with that coro.begin.

Documentation and overview is here: http://llvm.org/docs/Coroutines.html.

Upstreaming sequence (rough plan)
1.Add documentation. (https://reviews.llvm.org/D22603)
2.Add coroutine intrinsics. (https://reviews.llvm.org/D22659)
3.Add empty coroutine passes. (https://reviews.llvm.org/D22847)
4.Add coroutine devirtualization + tests.
ab) Lower coro.resume and coro.destroy (https://reviews.llvm.org/D22998)
c) Do devirtualization <= we are here
5.Add CGSCC restart trigger + tests.
6.Add coroutine heap elision + tests.
7.Add the rest of the logic (split into more patches)

Reviewers: majnemer

Subscribers: mehdi_amini, llvm-commits

Differential Revision: https://reviews.llvm.org/D23229

llvm-svn: 277908
2016-08-06 02:16:35 +00:00
..
Argument.h Swift Calling Convention: add swifterror attribute. 2016-04-01 21:41:15 +00:00
AssemblyAnnotationWriter.h
Attributes.h Expose AttributeSetNode, use it to provide aggregate getter for attribute in the C API. 2016-07-21 04:25:06 +00:00
Attributes.td Add writeonly IR attribute 2016-07-04 08:01:29 +00:00
AutoUpgrade.h Objective-C Class Properties: Autoupgrade "Class Properties" module flag. 2016-05-25 23:14:48 +00:00
BasicBlock.h Revert "[SimplifyCFG] Extend TryToSimplifyUncondBranchFromEmptyBlock for empty block including lifetime intrinsics" 2016-05-02 19:43:22 +00:00
CallingConv.h AMDGPU/SI: Add amdgpu_kernel calling convention. Part 1. 2016-05-06 09:07:29 +00:00
CallSite.h [coroutines] Part 4[ab]: Coroutine Devirtualization: Lower coro.resume and coro.destroy. 2016-08-04 20:30:07 +00:00
CFG.h [ADT] NFC: Generalize GraphTraits requirement of "NodeType *" in interfaces to "NodeRef", and migrate SCCIterator.h to use NodeRef 2016-08-01 22:32:20 +00:00
CMakeLists.txt
Comdat.h [NFC] Remove some dead code: 2016-05-11 16:38:40 +00:00
Constant.h Simplify handleOperandChangeImpl() removing last argument (NFC) 2016-02-10 22:47:15 +00:00
ConstantFolder.h
ConstantRange.h [ConstantRange] Add an getEquivalentICmp helper 2016-05-19 03:53:06 +00:00
Constants.h [IR] Require ArrayRef of 'uint32_t' instead of 'int' for the mask argument for one of the signatures of CreateShuffleVector. This better emphasises that you can't use it for the -1 as undef behavior. 2016-06-12 00:41:19 +00:00
DataLayout.h [IR] Introduce a non-integral pointer type 2016-07-28 23:43:38 +00:00
DebugInfo.h DebugInfo: Remove MDString-based type references 2016-04-23 21:08:00 +00:00
DebugInfoFlags.def [CodeView] Implement support for bitfields in LLVM 2016-06-30 03:00:20 +00:00
DebugInfoMetadata.h [codeview] Add DISubprogram::ThisAdjustment 2016-07-01 02:41:21 +00:00
DebugLoc.h
DerivedTypes.h don't repeat names in documentation comments; NFC 2016-02-25 15:55:28 +00:00
DiagnosticInfo.h [OptDiag,LV] Add hotness attribute to applied-optimization remarks 2016-07-21 01:07:13 +00:00
DiagnosticPrinter.h
DIBuilder.h [codeview] Add DISubprogram::ThisAdjustment 2016-07-01 02:41:21 +00:00
Dominators.h Allow BasicBlockEdge to be used in DenseMap 2016-07-11 04:37:53 +00:00
Function.h CodeGen: add new "intrinsic" MachineOperand kind. 2016-07-29 20:32:59 +00:00
GetElementPtrTypeIterator.h [opaque pointer types] [NFC] gep_type_{begin,end} now take source element type and address space. 2016-01-22 01:33:43 +00:00
GlobalAlias.h [GlobalDCE, Misc] Don't remove functions referenced by ifuncs 2016-05-04 00:20:48 +00:00
GlobalIFunc.h Remove some unneeded headers and replace some headers with forward class declarations (NFC) 2016-04-16 07:51:28 +00:00
GlobalIndirectSymbol.h [GlobalDCE, Misc] Don't remove functions referenced by ifuncs 2016-05-04 00:20:48 +00:00
GlobalObject.h IR: New representation for CFI and virtual call optimization pass metadata. 2016-06-24 21:21:32 +00:00
GlobalValue.h IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
GlobalVariable.h IR: Call dropAllReferences from GlobalVariable's destructor. 2016-06-08 00:13:39 +00:00
GVMaterializer.h [ThinLTO] Remove post-pass metadata linking support 2016-03-29 18:24:19 +00:00
InlineAsm.h [inlineasm] Propagate operand constraints to the backend 2016-07-18 13:17:31 +00:00
InstIterator.h
InstrTypes.h Style: drop some unnecessary ';' [NFC] 2016-07-19 09:01:46 +00:00
Instruction.def
Instruction.h [AliasAnalysis] Give back AA results for fence instructions 2016-07-15 17:19:24 +00:00
Instructions.h fix documentation comments; NFC 2016-08-05 19:09:25 +00:00
InstVisitor.h
IntrinsicInst.h [NFC] Remove some dead code: 2016-05-11 16:38:40 +00:00
Intrinsics.h Remangle intrinsics names when types are renamed 2016-06-24 15:10:29 +00:00
Intrinsics.td Part 4c: Coroutine Devirtualization: Devirtualize coro.resume and coro.destroy. 2016-08-06 02:16:35 +00:00
IntrinsicsAArch64.td IR: Set TargetPrefix for some X86 and AArch64 intrinsics where it was missing 2016-07-01 22:07:11 +00:00
IntrinsicsAMDGPU.td AMDGPU : Add intrinsics for compare with the full wavefront result 2016-07-28 16:42:13 +00:00
IntrinsicsARM.td [ARM] Add support for mrrc/mrrc2 intrinsics. 2016-06-17 00:52:41 +00:00
IntrinsicsBPF.td
IntrinsicsHexagon.td [Hexagon] Handle operand type differences for A2_tfrpi 2016-05-05 15:29:47 +00:00
IntrinsicsMips.td Split IntrReadArgMem into IntrReadMem and IntrArgMemOnly 2016-04-21 17:48:02 +00:00
IntrinsicsNVVM.td IR: Set a TargetPrefix for nvvm intrinsics 2016-07-08 17:25:18 +00:00
IntrinsicsPowerPC.td Split IntrReadArgMem into IntrReadMem and IntrArgMemOnly 2016-04-21 17:48:02 +00:00
IntrinsicsSystemZ.td [SystemZ] Utilize Test Data Class instructions. 2016-07-10 14:41:22 +00:00
IntrinsicsWebAssembly.td [WebAssembly] Rename memory_size intrinsic to current_memory 2016-05-02 17:25:22 +00:00
IntrinsicsX86.td [X86][AVX] Added support for lowering to VBROADCASTF128/VBROADCASTI128 (reapplied) 2016-07-22 13:58:44 +00:00
IntrinsicsXCore.td
IRBuilder.h IR: Provide an IRBuilder Inserter that calls a callback after insertion 2016-08-04 23:41:01 +00:00
IRPrintingPasses.h [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
LegacyPassManager.h
LegacyPassManagers.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
LegacyPassNameParser.h
LLVMContext.h [OptRemark,LDist] RFC: Add hotness attribute 2016-07-15 17:23:20 +00:00
Mangler.h Remove some unneeded headers and replace some headers with forward class declarations (NFC) 2016-04-16 07:51:28 +00:00
MDBuilder.h
Metadata.def BitcodeReader: Avoid referencing unresolved nodes from distinct ones 2016-04-23 04:15:56 +00:00
Metadata.h BitcodeReader: Avoid referencing unresolved nodes from distinct ones 2016-04-23 04:15:56 +00:00
Module.h IR: Introduce Module::global_objects(). 2016-06-22 20:29:42 +00:00
ModuleSlotTracker.h IR: Avoid mallocs in constructor of ModuleSlotTracker 2016-04-20 19:05:59 +00:00
ModuleSummaryIndex.h [ThinLTO] Perform profile-guided indirect call promotion 2016-07-17 14:47:01 +00:00
NoFolder.h
OperandTraits.h
Operator.h [EarlyCSE] Take the intersection of flags on instructions 2016-04-22 06:37:45 +00:00
OptBisect.h Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
PassManager.h [PM] Change the name of the repeating utility to something less 2016-08-04 03:52:53 +00:00
PassManagerInternal.h Update outdated comments in the new PM internals (NFC) 2016-08-05 19:51:00 +00:00
PatternMatch.h Add optimization for 'icmp slt (or A, B), A' and some related idioms based on knowledge of the sign bit for A and B. 2016-04-21 00:53:14 +00:00
PredIteratorCache.h
ProfileSummary.h Apply clang-tidy's misc-move-constructor-init throughout LLVM. 2016-05-27 14:27:24 +00:00
Statepoint.h Minor comment cleanup [NFC] 2016-04-21 16:15:19 +00:00
SymbolTableListTraits.h [GCC] Attribute ifunc support in llvm 2016-04-07 12:32:19 +00:00
TrackingMDRef.h Remove some unneeded headers and replace some headers with forward class declarations (NFC) 2016-04-16 07:51:28 +00:00
Type.h fix documentation comments; NFC 2016-06-02 20:37:52 +00:00
TypeBuilder.h
TypeFinder.h Make more headers self-contained. 2016-01-27 18:03:37 +00:00
Use.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
UseListOrder.h Add missing includes. 2016-06-28 12:17:05 +00:00
User.h Remove some unneeded headers and replace some headers with forward class declarations (NFC) 2016-04-16 07:51:28 +00:00
Value.def [GCC] Attribute ifunc support in llvm 2016-04-07 12:32:19 +00:00
Value.h Remove Value::isPointerDereferenceable; NFCI 2016-06-02 00:52:48 +00:00
ValueHandle.h
ValueMap.h Linker: Avoid constructing ValueMap::MDMapT 2016-04-19 16:57:24 +00:00
ValueSymbolTable.h Remove some unneeded headers and replace some headers with forward class declarations (NFC) 2016-04-16 07:51:28 +00:00
Verifier.h [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00