diff options
| author | Eric Fiselier <eric@efcs.ca> | 2018-01-30 00:32:25 +0000 |
|---|---|---|
| committer | Eric Fiselier <eric@efcs.ca> | 2018-01-30 00:32:25 +0000 |
| commit | 96f8c5c420df383e61fe61bf67fc73a3ef8aab75 (patch) | |
| tree | b4d0bce5e948fa587b1f39de691fdeddfac53f01 /clang/test/CodeGenCoroutines/coro-gro-nrvo.cpp | |
| parent | 83f056604c5cc2066cace35575ff04e387b36bf5 (diff) | |
| download | bcm5719-llvm-96f8c5c420df383e61fe61bf67fc73a3ef8aab75.tar.gz bcm5719-llvm-96f8c5c420df383e61fe61bf67fc73a3ef8aab75.zip | |
Revert "[coroutines] Fix application of NRVO to Coroutine "Gro" or return object."
This reverts commit r323712. It's causing some test failures on certain machines.
Not sure why, will investigate.
llvm-svn: 323717
Diffstat (limited to 'clang/test/CodeGenCoroutines/coro-gro-nrvo.cpp')
| -rw-r--r-- | clang/test/CodeGenCoroutines/coro-gro-nrvo.cpp | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/clang/test/CodeGenCoroutines/coro-gro-nrvo.cpp b/clang/test/CodeGenCoroutines/coro-gro-nrvo.cpp deleted file mode 100644 index 13964b2b50a..00000000000 --- a/clang/test/CodeGenCoroutines/coro-gro-nrvo.cpp +++ /dev/null @@ -1,80 +0,0 @@ -// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fcoroutines-ts -std=c++14 -emit-llvm %s -o - -disable-llvm-passes | FileCheck %s - -#include "Inputs/coroutine.h" - -using namespace std::experimental; - -namespace std { - -struct nothrow_t {}; -constexpr nothrow_t nothrow = {}; - -} // end namespace std - -// Required when get_return_object_on_allocation_failure() is defined by -// the promise. -void* operator new(__SIZE_TYPE__ __sz, const std::nothrow_t&) noexcept; -void operator delete(void* __p, const std::nothrow_t&) noexcept; - - -template <class RetObject> -struct promise_type { - RetObject get_return_object(); - suspend_always initial_suspend(); - suspend_never final_suspend(); - void return_void(); - static void unhandled_exception(); -}; - -struct coro { - using promise_type = promise_type<coro>; - coro(coro const&); - struct Impl; - Impl *impl; -}; - -// Verify that the NRVO is applied to the Gro object. -// CHECK-LABEL: define void @_Z1fi(%struct.coro* noalias sret %agg.result, i32) -coro f(int) { -// CHECK: coro.init: -// CHECK: store i1 false, i1* %gro.active -// CHECK-NEXT: call void @{{.*get_return_objectEv}}(%struct.coro* sret %agg.result -// CHECK-NEXT: store i1 true, i1* %gro.active - co_return; -} - - -template <class RetObject> -struct promise_type_with_on_alloc_failure { - static RetObject get_return_object_on_allocation_failure(); - RetObject get_return_object(); - suspend_always initial_suspend(); - suspend_never final_suspend(); - void return_void(); - static void unhandled_exception(); -}; - -struct coro_two { - using promise_type = promise_type_with_on_alloc_failure<coro_two>; - coro_two(coro_two const&); - struct Impl; - Impl *impl; -}; - -// Verify that the NRVO is applied to the Gro object. -// CHECK-LABEL: define void @_Z1hi(%struct.coro_two* noalias sret %agg.result, i32) - coro_two h(int) { - -// CHECK: coro.ret.on.failure: -// CHECK-NEXT: call void @{{.*get_return_object_on_allocation_failureEv}}(%struct.coro_two* sret %agg.result -// CHECK-NEXT: br label %[[RetLabel:.*]] - -// CHECK: coro.init: -// CHECK: store i1 false, i1* %gro.active -// CHECK-NEXT: call void @{{.*get_return_objectEv}}(%struct.coro_two* sret %agg.result -// CHECK-NEXT: store i1 true, i1* %gro.active - -// CHECK: [[RetLabel]]: -// CHECK-NEXT: ret void - co_return; -} |

