summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
diff options
context:
space:
mode:
authorGor Nishanov <GorNishanov@gmail.com>2017-05-23 01:13:17 +0000
committerGor Nishanov <GorNishanov@gmail.com>2017-05-23 01:13:17 +0000
commitaa6e9a99b46eb97fd37bd5b5f693b81bc9b13630 (patch)
tree50beb2d6b12c01099fa76c61a464dca1ce424f84 /llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
parentfb9476ee6c111755d1ac8ba435dd4bb5bc7b82a1 (diff)
downloadbcm5719-llvm-aa6e9a99b46eb97fd37bd5b5f693b81bc9b13630.tar.gz
bcm5719-llvm-aa6e9a99b46eb97fd37bd5b5f693b81bc9b13630.zip
[coroutines] Add support for allocation elision
Summary: We wrap allocation code so that backend can elide it if necessary. llvm.coro.alloc intrinsic returns true, when allocation is needed and false otherwise. ``` %NeedAlloc = call i1 @llvm.coro.alloc(token %2) br i1 %NeedAlloc, label %AllocBB, label %InitBB AllocBB: %5 = call i64 @llvm.coro.size.i64() %call = call i8* @_Znwm(i64 %5) ; operator new br label %InitBB InitBB: %Phi = phi i8* [ null, %0 ], [ %call, %4 ] call i8* @llvm.coro.begin(token %2, i8* %Phi) ``` Reviewers: majnemer, EricWF Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D31584 llvm-svn: 303596
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud