Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
clang/test/CodeGenCoroutines/coro-alloc-exp-namespace.cpp
Show First 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | extern "C" void f0(global_new_delete_tag) { | ||||
// CHECK: %[[PHI:.+]] = phi i8* [ null, %{{.+}} ], [ %call, %[[AllocBB]] ] | // CHECK: %[[PHI:.+]] = phi i8* [ null, %{{.+}} ], [ %call, %[[AllocBB]] ] | ||||
// CHECK: %[[FRAME:.+]] = call i8* @llvm.coro.begin(token %[[ID]], i8* %[[PHI]]) | // CHECK: %[[FRAME:.+]] = call i8* @llvm.coro.begin(token %[[ID]], i8* %[[PHI]]) | ||||
// CHECK: %[[MEM:.+]] = call i8* @llvm.coro.free(token %[[ID]], i8* %[[FRAME]]) | // CHECK: %[[MEM:.+]] = call i8* @llvm.coro.free(token %[[ID]], i8* %[[FRAME]]) | ||||
// CHECK: %[[NeedDealloc:.+]] = icmp ne i8* %[[MEM]], null | // CHECK: %[[NeedDealloc:.+]] = icmp ne i8* %[[MEM]], null | ||||
// CHECK: br i1 %[[NeedDealloc]], label %[[FreeBB:.+]], label %[[Afterwards:.+]] | // CHECK: br i1 %[[NeedDealloc]], label %[[FreeBB:.+]], label %[[Afterwards:.+]] | ||||
// CHECK: [[FreeBB]]: | // CHECK: [[FreeBB]]: | ||||
// CHECK: call void @_ZdlPv(i8* noundef %[[MEM]]) | // CHECK: %[[SIZE:.+]] = call i64 @llvm.coro.size.i64() | ||||
// CHECK: call void @_ZdlPvm(i8* noundef %[[MEM]], i64 noundef %[[SIZE]]) | |||||
// CHECK: br label %[[Afterwards]] | // CHECK: br label %[[Afterwards]] | ||||
// CHECK: [[Afterwards]]: | // CHECK: [[Afterwards]]: | ||||
// CHECK: ret void | // CHECK: ret void | ||||
co_return; | co_return; | ||||
} | } | ||||
struct promise_new_tag {}; | struct promise_new_tag {}; | ||||
Show All 12 Lines | |||||
// CHECK-LABEL: f1( | // CHECK-LABEL: f1( | ||||
extern "C" void f1(promise_new_tag) { | extern "C" void f1(promise_new_tag) { | ||||
// CHECK: %[[ID:.+]] = call token @llvm.coro.id(i32 16 | // CHECK: %[[ID:.+]] = call token @llvm.coro.id(i32 16 | ||||
// CHECK: %[[SIZE:.+]] = call i64 @llvm.coro.size.i64() | // CHECK: %[[SIZE:.+]] = call i64 @llvm.coro.size.i64() | ||||
// CHECK: call noundef i8* @_ZNSt12experimental16coroutine_traitsIJv15promise_new_tagEE12promise_typenwEm(i64 noundef %[[SIZE]]) | // CHECK: call noundef i8* @_ZNSt12experimental16coroutine_traitsIJv15promise_new_tagEE12promise_typenwEm(i64 noundef %[[SIZE]]) | ||||
// CHECK: %[[FRAME:.+]] = call i8* @llvm.coro.begin( | // CHECK: %[[FRAME:.+]] = call i8* @llvm.coro.begin( | ||||
// CHECK: %[[MEM:.+]] = call i8* @llvm.coro.free(token %[[ID]], i8* %[[FRAME]]) | // CHECK: %[[MEM:.+]] = call i8* @llvm.coro.free(token %[[ID]], i8* %[[FRAME]]) | ||||
// CHECK: call void @_ZdlPv(i8* noundef %[[MEM]]) | // CHECK: %[[SIZE:.+]] = call i64 @llvm.coro.size.i64() | ||||
// CHECK: call void @_ZdlPvm(i8* noundef %[[MEM]], i64 noundef %[[SIZE]]) | |||||
co_return; | co_return; | ||||
} | } | ||||
struct promise_matching_placement_new_tag {}; | struct promise_matching_placement_new_tag {}; | ||||
template <> | template <> | ||||
struct std::experimental::coroutine_traits<void, promise_matching_placement_new_tag, int, float, double> { | struct std::experimental::coroutine_traits<void, promise_matching_placement_new_tag, int, float, double> { | ||||
struct promise_type { | struct promise_type { | ||||
▲ Show 20 Lines • Show All 135 Lines • Show Last 20 Lines |