Created
November 5, 2020 16:46
-
-
Save jmorse/4850a987bfc8d4fed50c622a0b8e7c46 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ModuleID = 'test.cpp' | |
source_filename = "test.cpp" | |
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" | |
target triple = "x86_64-unknown-linux-gnu" | |
%_Z3foov.Frame = type { void (%_Z3foov.Frame*)*, void (%_Z3foov.Frame*)*, %"struct.coro::promise_type", i2, %"struct.std::experimental::coroutines_v1::suspend_never", %"struct.std::experimental::coroutines_v1::suspend_always", i32, %"class.std::experimental::coroutines_v1::coroutine_handle.0", [10 x i32], %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle", %"struct.std::experimental::coroutines_v1::suspend_never" } | |
%"struct.coro::promise_type" = type { i8 } | |
%"struct.std::experimental::coroutines_v1::suspend_always" = type { i8 } | |
%"class.std::experimental::coroutines_v1::coroutine_handle.0" = type { i8* } | |
%"class.std::experimental::coroutines_v1::coroutine_handle" = type { %"class.std::experimental::coroutines_v1::coroutine_handle.0" } | |
%"struct.std::experimental::coroutines_v1::suspend_never" = type { i8 } | |
%struct.coro = type { %"class.std::experimental::coroutines_v1::coroutine_handle" } | |
$_ZN4coro12promise_type17get_return_objectEv = comdat any | |
$_ZN4coro12promise_type15initial_suspendEv = comdat any | |
$_ZNKSt12experimental13coroutines_v113suspend_never11await_readyEv = comdat any | |
$_ZNKSt12experimental13coroutines_v113suspend_never13await_suspendENS0_16coroutine_handleIvEE = comdat any | |
$_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_addressEPv = comdat any | |
$_ZNKSt12experimental13coroutines_v113suspend_never12await_resumeEv = comdat any | |
$_ZNKSt12experimental13coroutines_v114suspend_always11await_readyEv = comdat any | |
$_ZNKSt12experimental13coroutines_v114suspend_always13await_suspendENS0_16coroutine_handleIvEE = comdat any | |
$_ZNKSt12experimental13coroutines_v114suspend_always12await_resumeEv = comdat any | |
$_ZN4coro12promise_type11return_voidEv = comdat any | |
$_ZN4coro12promise_type19unhandled_exceptionEv = comdat any | |
$__clang_call_terminate = comdat any | |
$_ZN4coro12promise_type13final_suspendEv = comdat any | |
$_ZNSt12experimental13coroutines_v116coroutine_handleIvE6resumeEv = comdat any | |
$_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_promiseERS3_ = comdat any | |
$_ZN4coroC2ENSt12experimental13coroutines_v116coroutine_handleINS_12promise_typeEEE = comdat any | |
$_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEEC2Ev = comdat any | |
$_ZNSt3__19addressofIN4coro12promise_typeEEEPT_RS3_ = comdat any | |
$_ZNSt12experimental13coroutines_v116coroutine_handleIvEC2Ev = comdat any | |
@_Z3foov.resumers = private constant [3 x void (%_Z3foov.Frame*)*] [void (%_Z3foov.Frame*)* @_Z3foov.resume, void (%_Z3foov.Frame*)* @_Z3foov.destroy, void (%_Z3foov.Frame*)* @_Z3foov.cleanup] | |
; Function Attrs: noinline optnone uwtable | |
define dso_local i8* @_Z3foov() #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) !dbg !530 { | |
entry: | |
%retval = alloca %struct.coro, align 8 | |
%gro.active = alloca i1, align 1 | |
%__promise = alloca %"struct.coro::promise_type", align 1 | |
%exn.slot = alloca i8*, align 8 | |
%ehselector.slot = alloca i32, align 4 | |
%ref.tmp = alloca %"struct.std::experimental::coroutines_v1::suspend_never", align 1 | |
%undef.agg.tmp = alloca %"struct.std::experimental::coroutines_v1::suspend_never", align 1 | |
%agg.tmp = alloca %"class.std::experimental::coroutines_v1::coroutine_handle.0", align 8 | |
%ref.tmp7 = alloca %"class.std::experimental::coroutines_v1::coroutine_handle", align 8 | |
%x = alloca [10 x i32], align 16 | |
%a = alloca i32, align 4 | |
%ref.tmp12 = alloca %"struct.std::experimental::coroutines_v1::suspend_always", align 1 | |
%agg.tmp14 = alloca %"class.std::experimental::coroutines_v1::coroutine_handle.0", align 8 | |
%ref.tmp15 = alloca %"class.std::experimental::coroutines_v1::coroutine_handle", align 8 | |
%ref.tmp29 = alloca %"struct.std::experimental::coroutines_v1::suspend_never", align 1 | |
%undef.agg.tmp30 = alloca %"struct.std::experimental::coroutines_v1::suspend_never", align 1 | |
%agg.tmp32 = alloca %"class.std::experimental::coroutines_v1::coroutine_handle.0", align 8 | |
%ref.tmp33 = alloca %"class.std::experimental::coroutines_v1::coroutine_handle", align 8 | |
call void @coro.devirt.trigger(i8* null) | |
br i1 true, label %coro.alloc, label %coro.init.from.entry, !dbg !532 | |
coro.init.from.entry: ; preds = %entry | |
%.coro.init = phi i8* [ null, %entry ] | |
br label %coro.init, !dbg !532 | |
coro.alloc: ; preds = %entry | |
%call = call noalias nonnull i8* @_Znwm(i64 120) #13, !dbg !533 | |
br label %coro.init.from.coro.alloc, !dbg !532 | |
coro.init.from.coro.alloc: ; preds = %coro.alloc | |
%call.coro.init = phi i8* [ %call, %coro.alloc ] | |
br label %coro.init, !dbg !532 | |
coro.init: ; preds = %coro.init.from.entry, %coro.init.from.coro.alloc | |
%0 = phi i8* [ %.coro.init, %coro.init.from.entry ], [ %call.coro.init, %coro.init.from.coro.alloc ], !dbg !532 | |
%FramePtr = bitcast i8* %0 to %_Z3foov.Frame*, !dbg !532 | |
%resume.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 0, !dbg !532 | |
store void (%_Z3foov.Frame*)* @_Z3foov.resume, void (%_Z3foov.Frame*)** %resume.addr, align 8, !dbg !532 | |
%1 = select i1 true, void (%_Z3foov.Frame*)* @_Z3foov.destroy, void (%_Z3foov.Frame*)* @_Z3foov.cleanup, !dbg !532 | |
%destroy.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 1, !dbg !532 | |
store void (%_Z3foov.Frame*)* %1, void (%_Z3foov.Frame*)** %destroy.addr, align 8, !dbg !532 | |
br label %AllocaSpillBB, !dbg !532 | |
AllocaSpillBB: ; preds = %coro.init | |
%ref.tmp.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 4, !dbg !532 | |
%agg.tmp.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 7, !dbg !532 | |
%ref.tmp7.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 9, !dbg !532 | |
%x.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 8, !dbg !532 | |
%a.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 6, !dbg !532 | |
%ref.tmp12.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 5, !dbg !532 | |
%agg.tmp14.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 10, !dbg !532 | |
%ref.tmp15.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 11, !dbg !532 | |
%ref.tmp29.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 14, !dbg !532 | |
%agg.tmp32.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 12, !dbg !532 | |
%ref.tmp33.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 13, !dbg !532 | |
%__promise.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 2, !dbg !532 | |
br label %PostSpill, !dbg !532 | |
PostSpill: ; preds = %AllocaSpillBB | |
store i1 false, i1* %gro.active, align 1, !dbg !532 | |
call void @llvm.dbg.declare(metadata %struct.coro* %retval, metadata !534, metadata !DIExpression()), !dbg !533 | |
call void @llvm.dbg.declare(metadata %"struct.coro::promise_type"* %__promise.reload.addr, metadata !535, metadata !DIExpression()), !dbg !533 | |
%call1 = invoke i8* @_ZN4coro12promise_type17get_return_objectEv(%"struct.coro::promise_type"* %__promise.reload.addr) | |
to label %invoke.cont unwind label %lpad, !dbg !533 | |
invoke.cont: ; preds = %PostSpill | |
%coerce.dive = getelementptr inbounds %struct.coro, %struct.coro* %retval, i32 0, i32 0, !dbg !533 | |
%coerce.dive2 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %coerce.dive, i32 0, i32 0, !dbg !533 | |
%coerce.dive3 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive2, i32 0, i32 0, !dbg !533 | |
store i8* %call1, i8** %coerce.dive3, align 8, !dbg !533 | |
store i1 true, i1* %gro.active, align 1, !dbg !533 | |
call void @_ZN4coro12promise_type15initial_suspendEv(%"struct.coro::promise_type"* %__promise.reload.addr), !dbg !533 | |
br label %invoke.cont5 | |
invoke.cont5: ; preds = %invoke.cont | |
%call6 = call zeroext i1 @_ZNKSt12experimental13coroutines_v113suspend_never11await_readyEv(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp.reload.addr) #2, !dbg !533 | |
br i1 %call6, label %init.ready, label %CoroSave, !dbg !533 | |
CoroSave: ; preds = %invoke.cont5 | |
%index.addr59 = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 3, !dbg !533 | |
store i2 0, i2* %index.addr59, align 1, !dbg !533 | |
br label %AfterCoroSave, !dbg !533 | |
AfterCoroSave: ; preds = %CoroSave | |
%call8 = call i8* @_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_addressEPv(i8* %0) #2, !dbg !533 | |
%coerce.dive9 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp7.reload.addr, i32 0, i32 0, !dbg !533 | |
%coerce.dive10 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive9, i32 0, i32 0, !dbg !533 | |
store i8* %call8, i8** %coerce.dive10, align 8, !dbg !533 | |
%2 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp7.reload.addr to %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, !dbg !533 | |
%3 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp.reload.addr to i8*, !dbg !533 | |
%4 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %2 to i8*, !dbg !533 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %3, i8* align 8 %4, i64 8, i1 false), !dbg !533 | |
%coerce.dive11 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp.reload.addr, i32 0, i32 0, !dbg !533 | |
%5 = load i8*, i8** %coerce.dive11, align 8, !dbg !533 | |
call void @_ZNKSt12experimental13coroutines_v113suspend_never13await_suspendENS0_16coroutine_handleIvEE(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp.reload.addr, i8* %5) #2, !dbg !533 | |
br label %CoroSuspend, !dbg !533 | |
CoroSuspend: ; preds = %AfterCoroSave | |
br label %resume.0.landing, !dbg !533 | |
resume.0.landing: ; preds = %CoroSuspend | |
br label %AfterCoroSuspend, !dbg !533 | |
AfterCoroSuspend: ; preds = %resume.0.landing | |
switch i8 -1, label %coro.ret [ | |
i8 0, label %init.ready | |
i8 1, label %init.cleanup | |
], !dbg !533 | |
init.cleanup: ; preds = %AfterCoroSuspend | |
br label %cleanup.from.init.cleanup, !dbg !533 | |
cleanup.from.init.cleanup: ; preds = %init.cleanup | |
%.cleanup57 = phi i32 [ 2, %init.cleanup ] | |
br label %cleanup, !dbg !533 | |
lpad: ; preds = %PostSpill | |
%6 = landingpad { i8*, i32 } | |
cleanup, !dbg !541 | |
%7 = extractvalue { i8*, i32 } %6, 0, !dbg !541 | |
store i8* %7, i8** %exn.slot, align 8, !dbg !541 | |
%8 = extractvalue { i8*, i32 } %6, 1, !dbg !541 | |
store i32 %8, i32* %ehselector.slot, align 4, !dbg !541 | |
br label %ehcleanup39, !dbg !541 | |
init.ready: ; preds = %AfterCoroSuspend, %invoke.cont5 | |
call void @_ZNKSt12experimental13coroutines_v113suspend_never12await_resumeEv(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp.reload.addr) #2, !dbg !533 | |
call void @llvm.dbg.declare(metadata [10 x i32]* %x.reload.addr, metadata !542, metadata !DIExpression()), !dbg !547 | |
%9 = bitcast [10 x i32]* %x.reload.addr to i8*, !dbg !547 | |
call void @llvm.memset.p0i8.i64(i8* align 16 %9, i8 0, i64 40, i1 false), !dbg !547 | |
call void @llvm.dbg.declare(metadata i32* %a.reload.addr, metadata !548, metadata !DIExpression()), !dbg !549 | |
store i32 3, i32* %a.reload.addr, align 4, !dbg !549 | |
%call13 = call zeroext i1 @_ZNKSt12experimental13coroutines_v114suspend_always11await_readyEv(%"struct.std::experimental::coroutines_v1::suspend_always"* %ref.tmp12.reload.addr) #2, !dbg !550 | |
br i1 %call13, label %await.ready, label %CoroSave47, !dbg !551 | |
CoroSave47: ; preds = %init.ready | |
%index.addr60 = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 3, !dbg !551 | |
store i2 1, i2* %index.addr60, align 1, !dbg !551 | |
br label %AfterCoroSave48, !dbg !550 | |
AfterCoroSave48: ; preds = %CoroSave47 | |
%call16 = call i8* @_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_addressEPv(i8* %0) #2, !dbg !550 | |
%coerce.dive17 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp15.reload.addr, i32 0, i32 0, !dbg !550 | |
%coerce.dive18 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive17, i32 0, i32 0, !dbg !550 | |
store i8* %call16, i8** %coerce.dive18, align 8, !dbg !550 | |
%10 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp15.reload.addr to %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, !dbg !550 | |
%11 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp14.reload.addr to i8*, !dbg !550 | |
%12 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %10 to i8*, !dbg !550 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %12, i64 8, i1 false), !dbg !550 | |
%coerce.dive19 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp14.reload.addr, i32 0, i32 0, !dbg !550 | |
%13 = load i8*, i8** %coerce.dive19, align 8, !dbg !550 | |
call void @_ZNKSt12experimental13coroutines_v114suspend_always13await_suspendENS0_16coroutine_handleIvEE(%"struct.std::experimental::coroutines_v1::suspend_always"* %ref.tmp12.reload.addr, i8* %13) #2, !dbg !550 | |
br label %CoroSuspend49, !dbg !551 | |
CoroSuspend49: ; preds = %AfterCoroSave48 | |
br label %resume.1.landing, !dbg !551 | |
resume.1.landing: ; preds = %CoroSuspend49 | |
br label %AfterCoroSuspend50, !dbg !551 | |
AfterCoroSuspend50: ; preds = %resume.1.landing | |
switch i8 -1, label %coro.ret [ | |
i8 0, label %await.ready | |
i8 1, label %await.cleanup | |
], !dbg !551 | |
await.cleanup: ; preds = %AfterCoroSuspend50 | |
br label %cleanup.from.await.cleanup, !dbg !551 | |
cleanup.from.await.cleanup: ; preds = %await.cleanup | |
%.cleanup56 = phi i32 [ 2, %await.cleanup ] | |
br label %cleanup, !dbg !551 | |
await.ready: ; preds = %AfterCoroSuspend50, %init.ready | |
call void @_ZNKSt12experimental13coroutines_v114suspend_always12await_resumeEv(%"struct.std::experimental::coroutines_v1::suspend_always"* %ref.tmp12.reload.addr) #2, !dbg !550 | |
%14 = load i32, i32* %a.reload.addr, align 4, !dbg !552 | |
%inc = add nsw i32 %14, 1, !dbg !552 | |
store i32 %inc, i32* %a.reload.addr, align 4, !dbg !552 | |
%arrayidx = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 0, !dbg !553 | |
store i32 1, i32* %arrayidx, align 16, !dbg !554 | |
%15 = load i32, i32* %a.reload.addr, align 4, !dbg !555 | |
%add = add nsw i32 %15, 2, !dbg !555 | |
store i32 %add, i32* %a.reload.addr, align 4, !dbg !555 | |
%arrayidx20 = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 1, !dbg !556 | |
store i32 2, i32* %arrayidx20, align 4, !dbg !557 | |
%16 = load i32, i32* %a.reload.addr, align 4, !dbg !558 | |
%add21 = add nsw i32 %16, 3, !dbg !558 | |
store i32 %add21, i32* %a.reload.addr, align 4, !dbg !558 | |
%arrayidx22 = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 2, !dbg !559 | |
store i32 3, i32* %arrayidx22, align 8, !dbg !560 | |
call void @_ZN4coro12promise_type11return_voidEv(%"struct.coro::promise_type"* %__promise.reload.addr), !dbg !533 | |
br label %invoke.cont24 | |
invoke.cont24: ; preds = %await.ready | |
br label %coro.final, !dbg !533 | |
coro.final: ; preds = %invoke.cont24 | |
call void @_ZN4coro12promise_type13final_suspendEv(%"struct.coro::promise_type"* %__promise.reload.addr) #2, !dbg !533 | |
%call31 = call zeroext i1 @_ZNKSt12experimental13coroutines_v113suspend_never11await_readyEv(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp29.reload.addr) #2, !dbg !533 | |
br i1 %call31, label %final.ready, label %CoroSave51, !dbg !533 | |
CoroSave51: ; preds = %coro.final | |
%ResumeFn.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 0, !dbg !533 | |
store void (%_Z3foov.Frame*)* null, void (%_Z3foov.Frame*)** %ResumeFn.addr, align 8, !dbg !533 | |
br label %AfterCoroSave52, !dbg !533 | |
AfterCoroSave52: ; preds = %CoroSave51 | |
%call34 = call i8* @_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_addressEPv(i8* %0) #2, !dbg !533 | |
%coerce.dive35 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp33.reload.addr, i32 0, i32 0, !dbg !533 | |
%coerce.dive36 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive35, i32 0, i32 0, !dbg !533 | |
store i8* %call34, i8** %coerce.dive36, align 8, !dbg !533 | |
%17 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp33.reload.addr to %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, !dbg !533 | |
%18 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp32.reload.addr to i8*, !dbg !533 | |
%19 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %17 to i8*, !dbg !533 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %18, i8* align 8 %19, i64 8, i1 false), !dbg !533 | |
%coerce.dive37 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp32.reload.addr, i32 0, i32 0, !dbg !533 | |
%20 = load i8*, i8** %coerce.dive37, align 8, !dbg !533 | |
call void @_ZNKSt12experimental13coroutines_v113suspend_never13await_suspendENS0_16coroutine_handleIvEE(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp29.reload.addr, i8* %20) #2, !dbg !533 | |
br label %CoroSuspend53, !dbg !533 | |
CoroSuspend53: ; preds = %AfterCoroSave52 | |
br label %resume.2.landing, !dbg !533 | |
resume.2.landing: ; preds = %CoroSuspend53 | |
br label %AfterCoroSuspend54, !dbg !533 | |
AfterCoroSuspend54: ; preds = %resume.2.landing | |
switch i8 -1, label %coro.ret [ | |
i8 0, label %final.ready | |
i8 1, label %final.cleanup | |
], !dbg !533 | |
final.cleanup: ; preds = %AfterCoroSuspend54 | |
br label %cleanup.from.final.cleanup, !dbg !533 | |
cleanup.from.final.cleanup: ; preds = %final.cleanup | |
%.cleanup55 = phi i32 [ 2, %final.cleanup ] | |
br label %cleanup, !dbg !533 | |
final.ready: ; preds = %AfterCoroSuspend54, %coro.final | |
call void @_ZNKSt12experimental13coroutines_v113suspend_never12await_resumeEv(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp29.reload.addr) #2, !dbg !533 | |
br label %cleanup.from.final.ready, !dbg !533 | |
cleanup.from.final.ready: ; preds = %final.ready | |
%.cleanup = phi i32 [ 0, %final.ready ] | |
br label %cleanup, !dbg !533 | |
cleanup: ; preds = %cleanup.from.final.ready, %cleanup.from.final.cleanup, %cleanup.from.await.cleanup, %cleanup.from.init.cleanup | |
%cleanup.dest.slot.0 = phi i32 [ %.cleanup, %cleanup.from.final.ready ], [ %.cleanup55, %cleanup.from.final.cleanup ], [ %.cleanup56, %cleanup.from.await.cleanup ], [ %.cleanup57, %cleanup.from.init.cleanup ] | |
%21 = icmp ne i8* %0, null, !dbg !533 | |
br i1 %21, label %coro.free, label %after.coro.free, !dbg !533 | |
coro.free: ; preds = %cleanup | |
call void @_ZdlPv(i8* %0) #2, !dbg !533 | |
br label %after.coro.free, !dbg !533 | |
after.coro.free: ; preds = %cleanup, %coro.free | |
switch i32 %cleanup.dest.slot.0, label %unreachable [ | |
i32 0, label %cleanup.cont38 | |
i32 2, label %coro.ret | |
] | |
cleanup.cont38: ; preds = %after.coro.free | |
br label %coro.ret, !dbg !533 | |
coro.ret: ; preds = %cleanup.cont38, %after.coro.free, %AfterCoroSuspend54, %AfterCoroSuspend50, %AfterCoroSuspend | |
br label %CoroEnd, !dbg !533 | |
CoroEnd: ; preds = %coro.ret | |
br label %AfterCoroEnd, !dbg !533 | |
AfterCoroEnd: ; preds = %CoroEnd | |
%coerce.dive42 = getelementptr inbounds %struct.coro, %struct.coro* %retval, i32 0, i32 0, !dbg !533 | |
%coerce.dive43 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %coerce.dive42, i32 0, i32 0, !dbg !533 | |
%coerce.dive44 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive43, i32 0, i32 0, !dbg !533 | |
%22 = load i8*, i8** %coerce.dive44, align 8, !dbg !533 | |
ret i8* %22, !dbg !533 | |
ehcleanup39: ; preds = %lpad | |
%23 = icmp ne i8* %0, null, !dbg !533 | |
br i1 %23, label %coro.free40, label %after.coro.free41, !dbg !533 | |
coro.free40: ; preds = %ehcleanup39 | |
call void @_ZdlPv(i8* %0) #2, !dbg !533 | |
br label %after.coro.free41, !dbg !533 | |
after.coro.free41: ; preds = %ehcleanup39, %coro.free40 | |
br label %eh.resume, !dbg !533 | |
eh.resume: ; preds = %after.coro.free41 | |
%exn45 = load i8*, i8** %exn.slot, align 8, !dbg !533 | |
%sel = load i32, i32* %ehselector.slot, align 4, !dbg !533 | |
%lpad.val = insertvalue { i8*, i32 } undef, i8* %exn45, 0, !dbg !533 | |
%lpad.val46 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1, !dbg !533 | |
resume { i8*, i32 } %lpad.val46, !dbg !533 | |
unreachable: ; preds = %after.coro.free | |
unreachable | |
} | |
; Function Attrs: argmemonly nounwind readonly | |
declare token @llvm.coro.id(i32, i8* readnone, i8* nocapture readonly, i8*) #1 | |
; Function Attrs: nounwind | |
declare i1 @llvm.coro.alloc(token) #2 | |
; Function Attrs: nobuiltin allocsize(0) | |
declare dso_local nonnull i8* @_Znwm(i64) #3 | |
; Function Attrs: nounwind readnone | |
declare i64 @llvm.coro.size.i64() #4 | |
; Function Attrs: nounwind | |
declare i8* @llvm.coro.begin(token, i8* writeonly) #2 | |
; Function Attrs: nofree nosync nounwind readnone speculatable willreturn | |
declare void @llvm.dbg.declare(metadata, metadata, metadata) #5 | |
; Function Attrs: noinline optnone uwtable | |
define linkonce_odr dso_local i8* @_ZN4coro12promise_type17get_return_objectEv(%"struct.coro::promise_type"* %this) #0 comdat align 2 !dbg !561 { | |
entry: | |
%retval = alloca %struct.coro, align 8 | |
%this.addr = alloca %"struct.coro::promise_type"*, align 8 | |
%handle = alloca %"class.std::experimental::coroutines_v1::coroutine_handle", align 8 | |
%agg.tmp = alloca %"class.std::experimental::coroutines_v1::coroutine_handle", align 8 | |
store %"struct.coro::promise_type"* %this, %"struct.coro::promise_type"** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"struct.coro::promise_type"** %this.addr, metadata !562, metadata !DIExpression()), !dbg !564 | |
%this1 = load %"struct.coro::promise_type"*, %"struct.coro::promise_type"** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"class.std::experimental::coroutines_v1::coroutine_handle"* %handle, metadata !565, metadata !DIExpression()), !dbg !566 | |
%call = call i8* @_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_promiseERS3_(%"struct.coro::promise_type"* nonnull align 1 dereferenceable(1) %this1) #2, !dbg !567 | |
%coerce.dive = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %handle, i32 0, i32 0, !dbg !567 | |
%coerce.dive2 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive, i32 0, i32 0, !dbg !567 | |
store i8* %call, i8** %coerce.dive2, align 8, !dbg !567 | |
%0 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %agg.tmp to i8*, !dbg !568 | |
%1 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %handle to i8*, !dbg !568 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 8, i1 false), !dbg !568 | |
%coerce.dive3 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %agg.tmp, i32 0, i32 0, !dbg !569 | |
%coerce.dive4 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive3, i32 0, i32 0, !dbg !569 | |
%2 = load i8*, i8** %coerce.dive4, align 8, !dbg !569 | |
call void @_ZN4coroC2ENSt12experimental13coroutines_v116coroutine_handleINS_12promise_typeEEE(%struct.coro* %retval, i8* %2), !dbg !569 | |
%coerce.dive5 = getelementptr inbounds %struct.coro, %struct.coro* %retval, i32 0, i32 0, !dbg !570 | |
%coerce.dive6 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %coerce.dive5, i32 0, i32 0, !dbg !570 | |
%coerce.dive7 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive6, i32 0, i32 0, !dbg !570 | |
%3 = load i8*, i8** %coerce.dive7, align 8, !dbg !570 | |
ret i8* %3, !dbg !570 | |
} | |
declare dso_local i32 @__gxx_personality_v0(...) | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr dso_local void @_ZN4coro12promise_type15initial_suspendEv(%"struct.coro::promise_type"* %this) #6 comdat align 2 !dbg !571 { | |
entry: | |
%this.addr = alloca %"struct.coro::promise_type"*, align 8 | |
store %"struct.coro::promise_type"* %this, %"struct.coro::promise_type"** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"struct.coro::promise_type"** %this.addr, metadata !572, metadata !DIExpression()), !dbg !573 | |
%this1 = load %"struct.coro::promise_type"*, %"struct.coro::promise_type"** %this.addr, align 8 | |
ret void, !dbg !574 | |
} | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr hidden zeroext i1 @_ZNKSt12experimental13coroutines_v113suspend_never11await_readyEv(%"struct.std::experimental::coroutines_v1::suspend_never"* %this) #6 comdat align 2 !dbg !575 { | |
entry: | |
%this.addr = alloca %"struct.std::experimental::coroutines_v1::suspend_never"*, align 8 | |
store %"struct.std::experimental::coroutines_v1::suspend_never"* %this, %"struct.std::experimental::coroutines_v1::suspend_never"** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"struct.std::experimental::coroutines_v1::suspend_never"** %this.addr, metadata !576, metadata !DIExpression()), !dbg !578 | |
%this1 = load %"struct.std::experimental::coroutines_v1::suspend_never"*, %"struct.std::experimental::coroutines_v1::suspend_never"** %this.addr, align 8 | |
ret i1 true, !dbg !579 | |
} | |
; Function Attrs: nounwind | |
declare token @llvm.coro.save(i8*) #2 | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr hidden void @_ZNKSt12experimental13coroutines_v113suspend_never13await_suspendENS0_16coroutine_handleIvEE(%"struct.std::experimental::coroutines_v1::suspend_never"* %this, i8* %.coerce) #6 comdat align 2 !dbg !580 { | |
entry: | |
%0 = alloca %"class.std::experimental::coroutines_v1::coroutine_handle.0", align 8 | |
%this.addr = alloca %"struct.std::experimental::coroutines_v1::suspend_never"*, align 8 | |
%coerce.dive = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %0, i32 0, i32 0 | |
store i8* %.coerce, i8** %coerce.dive, align 8 | |
store %"struct.std::experimental::coroutines_v1::suspend_never"* %this, %"struct.std::experimental::coroutines_v1::suspend_never"** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"struct.std::experimental::coroutines_v1::suspend_never"** %this.addr, metadata !581, metadata !DIExpression()), !dbg !582 | |
call void @llvm.dbg.declare(metadata %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %0, metadata !583, metadata !DIExpression()), !dbg !584 | |
%this1 = load %"struct.std::experimental::coroutines_v1::suspend_never"*, %"struct.std::experimental::coroutines_v1::suspend_never"** %this.addr, align 8 | |
ret void, !dbg !585 | |
} | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr hidden i8* @_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_addressEPv(i8* %__addr) #6 comdat align 2 !dbg !586 { | |
entry: | |
%retval = alloca %"class.std::experimental::coroutines_v1::coroutine_handle", align 8 | |
%__addr.addr = alloca i8*, align 8 | |
store i8* %__addr, i8** %__addr.addr, align 8 | |
call void @llvm.dbg.declare(metadata i8** %__addr.addr, metadata !587, metadata !DIExpression()), !dbg !588 | |
call void @llvm.dbg.declare(metadata %"class.std::experimental::coroutines_v1::coroutine_handle"* %retval, metadata !589, metadata !DIExpression()), !dbg !590 | |
call void @_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEEC2Ev(%"class.std::experimental::coroutines_v1::coroutine_handle"* %retval) #2, !dbg !590 | |
%0 = load i8*, i8** %__addr.addr, align 8, !dbg !591 | |
%1 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %retval to %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, !dbg !592 | |
%__handle_ = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %1, i32 0, i32 0, !dbg !593 | |
store i8* %0, i8** %__handle_, align 8, !dbg !594 | |
%coerce.dive = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %retval, i32 0, i32 0, !dbg !595 | |
%coerce.dive1 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive, i32 0, i32 0, !dbg !595 | |
%2 = load i8*, i8** %coerce.dive1, align 8, !dbg !595 | |
ret i8* %2, !dbg !595 | |
} | |
; Function Attrs: argmemonly nofree nosync nounwind willreturn | |
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #7 | |
; Function Attrs: nounwind | |
declare i8 @llvm.coro.suspend(token, i1) #2 | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr hidden void @_ZNKSt12experimental13coroutines_v113suspend_never12await_resumeEv(%"struct.std::experimental::coroutines_v1::suspend_never"* %this) #6 comdat align 2 !dbg !596 { | |
entry: | |
%this.addr = alloca %"struct.std::experimental::coroutines_v1::suspend_never"*, align 8 | |
store %"struct.std::experimental::coroutines_v1::suspend_never"* %this, %"struct.std::experimental::coroutines_v1::suspend_never"** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"struct.std::experimental::coroutines_v1::suspend_never"** %this.addr, metadata !597, metadata !DIExpression()), !dbg !598 | |
%this1 = load %"struct.std::experimental::coroutines_v1::suspend_never"*, %"struct.std::experimental::coroutines_v1::suspend_never"** %this.addr, align 8 | |
ret void, !dbg !599 | |
} | |
; Function Attrs: argmemonly nofree nosync nounwind willreturn writeonly | |
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #8 | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr hidden zeroext i1 @_ZNKSt12experimental13coroutines_v114suspend_always11await_readyEv(%"struct.std::experimental::coroutines_v1::suspend_always"* %this) #6 comdat align 2 !dbg !600 { | |
entry: | |
%this.addr = alloca %"struct.std::experimental::coroutines_v1::suspend_always"*, align 8 | |
store %"struct.std::experimental::coroutines_v1::suspend_always"* %this, %"struct.std::experimental::coroutines_v1::suspend_always"** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"struct.std::experimental::coroutines_v1::suspend_always"** %this.addr, metadata !614, metadata !DIExpression()), !dbg !616 | |
%this1 = load %"struct.std::experimental::coroutines_v1::suspend_always"*, %"struct.std::experimental::coroutines_v1::suspend_always"** %this.addr, align 8 | |
ret i1 false, !dbg !617 | |
} | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr hidden void @_ZNKSt12experimental13coroutines_v114suspend_always13await_suspendENS0_16coroutine_handleIvEE(%"struct.std::experimental::coroutines_v1::suspend_always"* %this, i8* %.coerce) #6 comdat align 2 !dbg !618 { | |
entry: | |
%0 = alloca %"class.std::experimental::coroutines_v1::coroutine_handle.0", align 8 | |
%this.addr = alloca %"struct.std::experimental::coroutines_v1::suspend_always"*, align 8 | |
%coerce.dive = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %0, i32 0, i32 0 | |
store i8* %.coerce, i8** %coerce.dive, align 8 | |
store %"struct.std::experimental::coroutines_v1::suspend_always"* %this, %"struct.std::experimental::coroutines_v1::suspend_always"** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"struct.std::experimental::coroutines_v1::suspend_always"** %this.addr, metadata !619, metadata !DIExpression()), !dbg !620 | |
call void @llvm.dbg.declare(metadata %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %0, metadata !621, metadata !DIExpression()), !dbg !622 | |
%this1 = load %"struct.std::experimental::coroutines_v1::suspend_always"*, %"struct.std::experimental::coroutines_v1::suspend_always"** %this.addr, align 8 | |
ret void, !dbg !623 | |
} | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr hidden void @_ZNKSt12experimental13coroutines_v114suspend_always12await_resumeEv(%"struct.std::experimental::coroutines_v1::suspend_always"* %this) #6 comdat align 2 !dbg !624 { | |
entry: | |
%this.addr = alloca %"struct.std::experimental::coroutines_v1::suspend_always"*, align 8 | |
store %"struct.std::experimental::coroutines_v1::suspend_always"* %this, %"struct.std::experimental::coroutines_v1::suspend_always"** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"struct.std::experimental::coroutines_v1::suspend_always"** %this.addr, metadata !625, metadata !DIExpression()), !dbg !626 | |
%this1 = load %"struct.std::experimental::coroutines_v1::suspend_always"*, %"struct.std::experimental::coroutines_v1::suspend_always"** %this.addr, align 8 | |
ret void, !dbg !627 | |
} | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr dso_local void @_ZN4coro12promise_type11return_voidEv(%"struct.coro::promise_type"* %this) #6 comdat align 2 !dbg !628 { | |
entry: | |
%this.addr = alloca %"struct.coro::promise_type"*, align 8 | |
store %"struct.coro::promise_type"* %this, %"struct.coro::promise_type"** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"struct.coro::promise_type"** %this.addr, metadata !629, metadata !DIExpression()), !dbg !630 | |
%this1 = load %"struct.coro::promise_type"*, %"struct.coro::promise_type"** %this.addr, align 8 | |
ret void, !dbg !631 | |
} | |
declare dso_local i8* @__cxa_begin_catch(i8*) | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr dso_local void @_ZN4coro12promise_type19unhandled_exceptionEv(%"struct.coro::promise_type"* %this) #6 comdat align 2 !dbg !632 { | |
entry: | |
%this.addr = alloca %"struct.coro::promise_type"*, align 8 | |
store %"struct.coro::promise_type"* %this, %"struct.coro::promise_type"** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"struct.coro::promise_type"** %this.addr, metadata !633, metadata !DIExpression()), !dbg !634 | |
%this1 = load %"struct.coro::promise_type"*, %"struct.coro::promise_type"** %this.addr, align 8 | |
ret void, !dbg !635 | |
} | |
declare dso_local void @__cxa_end_catch() | |
; Function Attrs: noinline noreturn nounwind | |
define linkonce_odr hidden void @__clang_call_terminate(i8* %0) #9 comdat { | |
%2 = call i8* @__cxa_begin_catch(i8* %0) #2 | |
call void @_ZSt9terminatev() #14 | |
unreachable | |
} | |
declare dso_local void @_ZSt9terminatev() | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr dso_local void @_ZN4coro12promise_type13final_suspendEv(%"struct.coro::promise_type"* %this) #6 comdat align 2 !dbg !636 { | |
entry: | |
%this.addr = alloca %"struct.coro::promise_type"*, align 8 | |
store %"struct.coro::promise_type"* %this, %"struct.coro::promise_type"** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"struct.coro::promise_type"** %this.addr, metadata !637, metadata !DIExpression()), !dbg !638 | |
%this1 = load %"struct.coro::promise_type"*, %"struct.coro::promise_type"** %this.addr, align 8 | |
ret void, !dbg !639 | |
} | |
; Function Attrs: nounwind | |
declare i1 @llvm.coro.end(i8*, i1) #2 | |
; Function Attrs: nobuiltin nounwind | |
declare dso_local void @_ZdlPv(i8*) #10 | |
; Function Attrs: argmemonly nounwind readonly | |
declare i8* @llvm.coro.free(token, i8* nocapture readonly) #1 | |
; Function Attrs: noinline norecurse optnone uwtable | |
define dso_local i32 @main() #11 !dbg !640 { | |
entry: | |
%c = alloca %struct.coro, align 8 | |
call void @llvm.dbg.declare(metadata %struct.coro* %c, metadata !641, metadata !DIExpression()), !dbg !642 | |
%call = call i8* @_Z3foov(), !dbg !643 | |
%coerce.dive = getelementptr inbounds %struct.coro, %struct.coro* %c, i32 0, i32 0, !dbg !643 | |
%coerce.dive1 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %coerce.dive, i32 0, i32 0, !dbg !643 | |
%coerce.dive2 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive1, i32 0, i32 0, !dbg !643 | |
store i8* %call, i8** %coerce.dive2, align 8, !dbg !643 | |
%handle = getelementptr inbounds %struct.coro, %struct.coro* %c, i32 0, i32 0, !dbg !644 | |
%0 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %handle to %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, !dbg !645 | |
call void @_ZNSt12experimental13coroutines_v116coroutine_handleIvE6resumeEv(%"class.std::experimental::coroutines_v1::coroutine_handle.0"* %0), !dbg !646 | |
%handle3 = getelementptr inbounds %struct.coro, %struct.coro* %c, i32 0, i32 0, !dbg !647 | |
%1 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %handle3 to %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, !dbg !648 | |
call void @_ZNSt12experimental13coroutines_v116coroutine_handleIvE6resumeEv(%"class.std::experimental::coroutines_v1::coroutine_handle.0"* %1), !dbg !649 | |
ret i32 0, !dbg !650 | |
} | |
; Function Attrs: noinline optnone uwtable | |
define linkonce_odr hidden void @_ZNSt12experimental13coroutines_v116coroutine_handleIvE6resumeEv(%"class.std::experimental::coroutines_v1::coroutine_handle.0"* %this) #0 comdat align 2 !dbg !651 { | |
entry: | |
%this.addr = alloca %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, align 8 | |
store %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %this, %"class.std::experimental::coroutines_v1::coroutine_handle.0"** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"class.std::experimental::coroutines_v1::coroutine_handle.0"** %this.addr, metadata !652, metadata !DIExpression()), !dbg !654 | |
%this1 = load %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, %"class.std::experimental::coroutines_v1::coroutine_handle.0"** %this.addr, align 8 | |
%__handle_ = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %this1, i32 0, i32 0, !dbg !655 | |
%0 = load i8*, i8** %__handle_, align 8, !dbg !655 | |
%1 = bitcast i8* %0 to { i8*, i8* }* | |
%2 = getelementptr inbounds { i8*, i8* }, { i8*, i8* }* %1, i32 0, i32 0 | |
%3 = load i8*, i8** %2, align 8 | |
%4 = bitcast i8* %3 to void (i8*)* | |
call fastcc void %4(i8* %0), !dbg !656 | |
ret void, !dbg !657 | |
} | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr hidden i8* @_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_promiseERS3_(%"struct.coro::promise_type"* nonnull align 1 dereferenceable(1) %__promise) #6 comdat align 2 !dbg !658 { | |
entry: | |
%retval = alloca %"class.std::experimental::coroutines_v1::coroutine_handle", align 8 | |
%__promise.addr = alloca %"struct.coro::promise_type"*, align 8 | |
store %"struct.coro::promise_type"* %__promise, %"struct.coro::promise_type"** %__promise.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"struct.coro::promise_type"** %__promise.addr, metadata !659, metadata !DIExpression()), !dbg !660 | |
call void @llvm.dbg.declare(metadata %"class.std::experimental::coroutines_v1::coroutine_handle"* %retval, metadata !661, metadata !DIExpression()), !dbg !662 | |
call void @_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEEC2Ev(%"class.std::experimental::coroutines_v1::coroutine_handle"* %retval) #2, !dbg !662 | |
%0 = load %"struct.coro::promise_type"*, %"struct.coro::promise_type"** %__promise.addr, align 8, !dbg !663 | |
%call = call %"struct.coro::promise_type"* @_ZNSt3__19addressofIN4coro12promise_typeEEEPT_RS3_(%"struct.coro::promise_type"* nonnull align 1 dereferenceable(1) %0) #2, !dbg !664 | |
%1 = bitcast %"struct.coro::promise_type"* %call to i8*, !dbg !664 | |
%2 = getelementptr inbounds i8, i8* %1, i32 -16, !dbg !665 | |
%3 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %retval to %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, !dbg !666 | |
%__handle_ = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %3, i32 0, i32 0, !dbg !667 | |
store i8* %2, i8** %__handle_, align 8, !dbg !668 | |
%coerce.dive = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %retval, i32 0, i32 0, !dbg !669 | |
%coerce.dive1 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive, i32 0, i32 0, !dbg !669 | |
%4 = load i8*, i8** %coerce.dive1, align 8, !dbg !669 | |
ret i8* %4, !dbg !669 | |
} | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr dso_local void @_ZN4coroC2ENSt12experimental13coroutines_v116coroutine_handleINS_12promise_typeEEE(%struct.coro* %this, i8* %handle.coerce) unnamed_addr #6 comdat align 2 !dbg !670 { | |
entry: | |
%handle = alloca %"class.std::experimental::coroutines_v1::coroutine_handle", align 8 | |
%this.addr = alloca %struct.coro*, align 8 | |
%coerce.dive = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %handle, i32 0, i32 0 | |
%coerce.dive1 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive, i32 0, i32 0 | |
store i8* %handle.coerce, i8** %coerce.dive1, align 8 | |
store %struct.coro* %this, %struct.coro** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %struct.coro** %this.addr, metadata !671, metadata !DIExpression()), !dbg !673 | |
call void @llvm.dbg.declare(metadata %"class.std::experimental::coroutines_v1::coroutine_handle"* %handle, metadata !674, metadata !DIExpression()), !dbg !675 | |
%this2 = load %struct.coro*, %struct.coro** %this.addr, align 8 | |
%handle3 = getelementptr inbounds %struct.coro, %struct.coro* %this2, i32 0, i32 0, !dbg !676 | |
%0 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %handle3 to i8*, !dbg !676 | |
%1 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %handle to i8*, !dbg !676 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 8, i1 false), !dbg !676 | |
ret void, !dbg !677 | |
} | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr dso_local void @_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEEC2Ev(%"class.std::experimental::coroutines_v1::coroutine_handle"* %this) unnamed_addr #6 comdat align 2 !dbg !678 { | |
entry: | |
%this.addr = alloca %"class.std::experimental::coroutines_v1::coroutine_handle"*, align 8 | |
store %"class.std::experimental::coroutines_v1::coroutine_handle"* %this, %"class.std::experimental::coroutines_v1::coroutine_handle"** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"class.std::experimental::coroutines_v1::coroutine_handle"** %this.addr, metadata !682, metadata !DIExpression()), !dbg !684 | |
%this1 = load %"class.std::experimental::coroutines_v1::coroutine_handle"*, %"class.std::experimental::coroutines_v1::coroutine_handle"** %this.addr, align 8 | |
%0 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %this1 to %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, !dbg !685 | |
call void @_ZNSt12experimental13coroutines_v116coroutine_handleIvEC2Ev(%"class.std::experimental::coroutines_v1::coroutine_handle.0"* %0) #2, !dbg !685 | |
ret void, !dbg !685 | |
} | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr hidden %"struct.coro::promise_type"* @_ZNSt3__19addressofIN4coro12promise_typeEEEPT_RS3_(%"struct.coro::promise_type"* nonnull align 1 dereferenceable(1) %__x) #6 comdat !dbg !686 { | |
entry: | |
%__x.addr = alloca %"struct.coro::promise_type"*, align 8 | |
store %"struct.coro::promise_type"* %__x, %"struct.coro::promise_type"** %__x.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"struct.coro::promise_type"** %__x.addr, metadata !692, metadata !DIExpression()), !dbg !693 | |
%0 = load %"struct.coro::promise_type"*, %"struct.coro::promise_type"** %__x.addr, align 8, !dbg !694 | |
ret %"struct.coro::promise_type"* %0, !dbg !695 | |
} | |
; Function Attrs: nounwind readnone | |
declare i8* @llvm.coro.promise(i8* nocapture, i32, i1) #4 | |
; Function Attrs: noinline nounwind optnone uwtable | |
define linkonce_odr hidden void @_ZNSt12experimental13coroutines_v116coroutine_handleIvEC2Ev(%"class.std::experimental::coroutines_v1::coroutine_handle.0"* %this) unnamed_addr #6 comdat align 2 !dbg !696 { | |
entry: | |
%this.addr = alloca %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, align 8 | |
store %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %this, %"class.std::experimental::coroutines_v1::coroutine_handle.0"** %this.addr, align 8 | |
call void @llvm.dbg.declare(metadata %"class.std::experimental::coroutines_v1::coroutine_handle.0"** %this.addr, metadata !697, metadata !DIExpression()), !dbg !698 | |
%this1 = load %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, %"class.std::experimental::coroutines_v1::coroutine_handle.0"** %this.addr, align 8 | |
%__handle_ = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %this1, i32 0, i32 0, !dbg !699 | |
store i8* null, i8** %__handle_, align 8, !dbg !699 | |
ret void, !dbg !700 | |
} | |
declare void @llvm.coro.resume(i8*) | |
; Function Attrs: argmemonly nounwind readonly | |
declare i8* @llvm.coro.subfn.addr(i8* nocapture readonly, i8) #1 | |
; Function Attrs: alwaysinline | |
define private void @coro.devirt.trigger(i8* %0) #12 { | |
entry: | |
ret void | |
} | |
; Function Attrs: noinline optnone uwtable | |
define internal fastcc void @_Z3foov.resume(%_Z3foov.Frame* noalias nonnull align 16 dereferenceable(128) %FramePtr) #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) !dbg !701 { | |
entry.resume: | |
%vFrame = bitcast %_Z3foov.Frame* %FramePtr to i8* | |
%ehselector.slot = alloca i32, align 4 | |
%exn.slot = alloca i8*, align 8 | |
%gro.active = alloca i1, align 1 | |
%retval = alloca %struct.coro, align 8 | |
%ref.tmp.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 4, !dbg !702 | |
%agg.tmp.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 7, !dbg !702 | |
%ref.tmp7.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 9, !dbg !702 | |
%x.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 8, !dbg !702 | |
%a.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 6, !dbg !702 | |
%ref.tmp12.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 5, !dbg !702 | |
%agg.tmp14.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 10, !dbg !702 | |
%ref.tmp15.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 11, !dbg !702 | |
%ref.tmp29.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 14, !dbg !702 | |
%agg.tmp32.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 12, !dbg !702 | |
%ref.tmp33.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 13, !dbg !702 | |
%__promise.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 2, !dbg !702 | |
br label %resume.entry, !dbg !702 | |
resume.0: ; preds = %resume.entry | |
br label %resume.0.landing, !dbg !703 | |
resume.0.landing: ; preds = %resume.0 | |
br label %AfterCoroSuspend, !dbg !703 | |
AfterCoroSuspend: ; preds = %resume.0.landing | |
switch i8 0, label %coro.ret [ | |
i8 0, label %init.ready | |
i8 1, label %init.cleanup | |
], !dbg !703 | |
init.cleanup: ; preds = %AfterCoroSuspend | |
br label %cleanup.from.init.cleanup, !dbg !703 | |
cleanup.from.init.cleanup: ; preds = %init.cleanup | |
%.cleanup57 = phi i32 [ 2, %init.cleanup ] | |
br label %cleanup, !dbg !703 | |
init.ready: ; preds = %AfterCoroSuspend | |
call void @_ZNKSt12experimental13coroutines_v113suspend_never12await_resumeEv(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp.reload.addr) #2, !dbg !703 | |
call void @llvm.dbg.declare(metadata [10 x i32]* %x.reload.addr, metadata !704, metadata !DIExpression()), !dbg !706 | |
%0 = bitcast [10 x i32]* %x.reload.addr to i8*, !dbg !706 | |
call void @llvm.memset.p0i8.i64(i8* align 16 %0, i8 0, i64 40, i1 false), !dbg !706 | |
call void @llvm.dbg.declare(metadata i32* %a.reload.addr, metadata !707, metadata !DIExpression()), !dbg !708 | |
store i32 3, i32* %a.reload.addr, align 4, !dbg !708 | |
%call13 = call zeroext i1 @_ZNKSt12experimental13coroutines_v114suspend_always11await_readyEv(%"struct.std::experimental::coroutines_v1::suspend_always"* %ref.tmp12.reload.addr) #2, !dbg !709 | |
br i1 %call13, label %await.ready, label %CoroSave47, !dbg !710 | |
CoroSave47: ; preds = %init.ready | |
%index.addr60 = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 3, !dbg !710 | |
store i2 1, i2* %index.addr60, align 1, !dbg !710 | |
br label %AfterCoroSave48, !dbg !709 | |
AfterCoroSave48: ; preds = %CoroSave47 | |
%call16 = call i8* @_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_addressEPv(i8* %vFrame) #2, !dbg !709 | |
%coerce.dive17 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp15.reload.addr, i32 0, i32 0, !dbg !709 | |
%coerce.dive18 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive17, i32 0, i32 0, !dbg !709 | |
store i8* %call16, i8** %coerce.dive18, align 8, !dbg !709 | |
%1 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp15.reload.addr to %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, !dbg !709 | |
%2 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp14.reload.addr to i8*, !dbg !709 | |
%3 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %1 to i8*, !dbg !709 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %2, i8* align 8 %3, i64 8, i1 false), !dbg !709 | |
%coerce.dive19 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp14.reload.addr, i32 0, i32 0, !dbg !709 | |
%4 = load i8*, i8** %coerce.dive19, align 8, !dbg !709 | |
call void @_ZNKSt12experimental13coroutines_v114suspend_always13await_suspendENS0_16coroutine_handleIvEE(%"struct.std::experimental::coroutines_v1::suspend_always"* %ref.tmp12.reload.addr, i8* %4) #2, !dbg !709 | |
br label %CoroSuspend49, !dbg !710 | |
CoroSuspend49: ; preds = %AfterCoroSave48 | |
br label %resume.1.landing, !dbg !710 | |
resume.1: ; preds = %resume.entry | |
br label %resume.1.landing, !dbg !710 | |
resume.1.landing: ; preds = %resume.1, %CoroSuspend49 | |
%5 = phi i8 [ -1, %CoroSuspend49 ], [ 0, %resume.1 ] | |
br label %AfterCoroSuspend50, !dbg !710 | |
AfterCoroSuspend50: ; preds = %resume.1.landing | |
switch i8 %5, label %coro.ret [ | |
i8 0, label %await.ready | |
i8 1, label %await.cleanup | |
], !dbg !710 | |
await.cleanup: ; preds = %AfterCoroSuspend50 | |
br label %cleanup.from.await.cleanup, !dbg !710 | |
cleanup.from.await.cleanup: ; preds = %await.cleanup | |
%.cleanup56 = phi i32 [ 2, %await.cleanup ] | |
br label %cleanup, !dbg !710 | |
await.ready: ; preds = %AfterCoroSuspend50, %init.ready | |
call void @_ZNKSt12experimental13coroutines_v114suspend_always12await_resumeEv(%"struct.std::experimental::coroutines_v1::suspend_always"* %ref.tmp12.reload.addr) #2, !dbg !709 | |
%6 = load i32, i32* %a.reload.addr, align 4, !dbg !711 | |
%inc = add nsw i32 %6, 1, !dbg !711 | |
store i32 %inc, i32* %a.reload.addr, align 4, !dbg !711 | |
%arrayidx = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 0, !dbg !712 | |
store i32 1, i32* %arrayidx, align 16, !dbg !713 | |
%7 = load i32, i32* %a.reload.addr, align 4, !dbg !714 | |
%add = add nsw i32 %7, 2, !dbg !714 | |
store i32 %add, i32* %a.reload.addr, align 4, !dbg !714 | |
%arrayidx20 = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 1, !dbg !715 | |
store i32 2, i32* %arrayidx20, align 4, !dbg !716 | |
%8 = load i32, i32* %a.reload.addr, align 4, !dbg !717 | |
%add21 = add nsw i32 %8, 3, !dbg !717 | |
store i32 %add21, i32* %a.reload.addr, align 4, !dbg !717 | |
%arrayidx22 = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 2, !dbg !718 | |
store i32 3, i32* %arrayidx22, align 8, !dbg !719 | |
call void @_ZN4coro12promise_type11return_voidEv(%"struct.coro::promise_type"* %__promise.reload.addr), !dbg !703 | |
br label %invoke.cont24 | |
invoke.cont24: ; preds = %await.ready | |
br label %coro.final, !dbg !703 | |
coro.final: ; preds = %invoke.cont24 | |
call void @_ZN4coro12promise_type13final_suspendEv(%"struct.coro::promise_type"* %__promise.reload.addr) #2, !dbg !703 | |
%call31 = call zeroext i1 @_ZNKSt12experimental13coroutines_v113suspend_never11await_readyEv(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp29.reload.addr) #2, !dbg !703 | |
br i1 %call31, label %final.ready, label %CoroSave51, !dbg !703 | |
CoroSave51: ; preds = %coro.final | |
%ResumeFn.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 0, !dbg !703 | |
store void (%_Z3foov.Frame*)* null, void (%_Z3foov.Frame*)** %ResumeFn.addr, align 8, !dbg !703 | |
br label %AfterCoroSave52, !dbg !703 | |
AfterCoroSave52: ; preds = %CoroSave51 | |
%call34 = call i8* @_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_addressEPv(i8* %vFrame) #2, !dbg !703 | |
%coerce.dive35 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp33.reload.addr, i32 0, i32 0, !dbg !703 | |
%coerce.dive36 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive35, i32 0, i32 0, !dbg !703 | |
store i8* %call34, i8** %coerce.dive36, align 8, !dbg !703 | |
%9 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp33.reload.addr to %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, !dbg !703 | |
%10 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp32.reload.addr to i8*, !dbg !703 | |
%11 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %9 to i8*, !dbg !703 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %10, i8* align 8 %11, i64 8, i1 false), !dbg !703 | |
%coerce.dive37 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp32.reload.addr, i32 0, i32 0, !dbg !703 | |
%12 = load i8*, i8** %coerce.dive37, align 8, !dbg !703 | |
call void @_ZNKSt12experimental13coroutines_v113suspend_never13await_suspendENS0_16coroutine_handleIvEE(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp29.reload.addr, i8* %12) #2, !dbg !703 | |
br label %CoroSuspend53, !dbg !703 | |
CoroSuspend53: ; preds = %AfterCoroSave52 | |
br label %resume.2.landing, !dbg !703 | |
resume.2.landing: ; preds = %CoroSuspend53 | |
br label %AfterCoroSuspend54, !dbg !703 | |
AfterCoroSuspend54: ; preds = %resume.2.landing | |
switch i8 -1, label %coro.ret [ | |
i8 0, label %final.ready | |
i8 1, label %final.cleanup | |
], !dbg !703 | |
final.cleanup: ; preds = %AfterCoroSuspend54 | |
br label %cleanup.from.final.cleanup, !dbg !703 | |
cleanup.from.final.cleanup: ; preds = %final.cleanup | |
%.cleanup55 = phi i32 [ 2, %final.cleanup ] | |
br label %cleanup, !dbg !703 | |
final.ready: ; preds = %AfterCoroSuspend54, %coro.final | |
call void @_ZNKSt12experimental13coroutines_v113suspend_never12await_resumeEv(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp29.reload.addr) #2, !dbg !703 | |
br label %cleanup.from.final.ready, !dbg !703 | |
cleanup.from.final.ready: ; preds = %final.ready | |
%.cleanup = phi i32 [ 0, %final.ready ] | |
br label %cleanup, !dbg !703 | |
cleanup: ; preds = %cleanup.from.final.ready, %cleanup.from.final.cleanup, %cleanup.from.await.cleanup, %cleanup.from.init.cleanup | |
%cleanup.dest.slot.0 = phi i32 [ %.cleanup, %cleanup.from.final.ready ], [ %.cleanup55, %cleanup.from.final.cleanup ], [ %.cleanup56, %cleanup.from.await.cleanup ], [ %.cleanup57, %cleanup.from.init.cleanup ] | |
%13 = icmp ne i8* %vFrame, null, !dbg !703 | |
br i1 %13, label %coro.free, label %after.coro.free, !dbg !703 | |
coro.free: ; preds = %cleanup | |
call void @_ZdlPv(i8* %vFrame) #2, !dbg !703 | |
br label %after.coro.free, !dbg !703 | |
after.coro.free: ; preds = %coro.free, %cleanup | |
switch i32 %cleanup.dest.slot.0, label %unreachable [ | |
i32 0, label %cleanup.cont38 | |
i32 2, label %coro.ret | |
] | |
cleanup.cont38: ; preds = %after.coro.free | |
br label %coro.ret, !dbg !703 | |
coro.ret: ; preds = %cleanup.cont38, %after.coro.free, %AfterCoroSuspend54, %AfterCoroSuspend50, %AfterCoroSuspend | |
br label %CoroEnd, !dbg !703 | |
CoroEnd: ; preds = %coro.ret | |
ret void, !dbg !703 | |
unreachable: ; preds = %after.coro.free | |
unreachable | |
resume.entry: ; preds = %entry.resume | |
%index.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 3 | |
%index = load i2, i2* %index.addr, align 1 | |
switch i2 %index, label %unreachable58 [ | |
i2 0, label %resume.0 | |
i2 1, label %resume.1 | |
] | |
unreachable58: ; preds = %resume.entry | |
unreachable, !dbg !703 | |
} | |
; Function Attrs: noinline optnone uwtable | |
define internal fastcc void @_Z3foov.destroy(%_Z3foov.Frame* noalias nonnull align 16 dereferenceable(128) %FramePtr) #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) !dbg !720 { | |
entry.destroy: | |
%vFrame = bitcast %_Z3foov.Frame* %FramePtr to i8* | |
%ehselector.slot = alloca i32, align 4 | |
%exn.slot = alloca i8*, align 8 | |
%gro.active = alloca i1, align 1 | |
%retval = alloca %struct.coro, align 8 | |
%ref.tmp.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 4, !dbg !721 | |
%agg.tmp.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 7, !dbg !721 | |
%ref.tmp7.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 9, !dbg !721 | |
%x.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 8, !dbg !721 | |
%a.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 6, !dbg !721 | |
%ref.tmp12.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 5, !dbg !721 | |
%agg.tmp14.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 10, !dbg !721 | |
%ref.tmp15.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 11, !dbg !721 | |
%ref.tmp29.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 14, !dbg !721 | |
%agg.tmp32.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 12, !dbg !721 | |
%ref.tmp33.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 13, !dbg !721 | |
%__promise.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 2, !dbg !721 | |
br label %resume.entry, !dbg !721 | |
resume.0: ; preds = %Switch | |
br label %resume.0.landing, !dbg !722 | |
resume.0.landing: ; preds = %resume.0 | |
br label %AfterCoroSuspend, !dbg !722 | |
AfterCoroSuspend: ; preds = %resume.0.landing | |
switch i8 1, label %coro.ret [ | |
i8 0, label %init.ready | |
i8 1, label %init.cleanup | |
], !dbg !722 | |
init.cleanup: ; preds = %AfterCoroSuspend | |
br label %cleanup.from.init.cleanup, !dbg !722 | |
cleanup.from.init.cleanup: ; preds = %init.cleanup | |
%.cleanup57 = phi i32 [ 2, %init.cleanup ] | |
br label %cleanup, !dbg !722 | |
init.ready: ; preds = %AfterCoroSuspend | |
call void @_ZNKSt12experimental13coroutines_v113suspend_never12await_resumeEv(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp.reload.addr) #2, !dbg !722 | |
call void @llvm.dbg.declare(metadata [10 x i32]* %x.reload.addr, metadata !723, metadata !DIExpression()), !dbg !725 | |
%0 = bitcast [10 x i32]* %x.reload.addr to i8*, !dbg !725 | |
call void @llvm.memset.p0i8.i64(i8* align 16 %0, i8 0, i64 40, i1 false), !dbg !725 | |
call void @llvm.dbg.declare(metadata i32* %a.reload.addr, metadata !726, metadata !DIExpression()), !dbg !727 | |
store i32 3, i32* %a.reload.addr, align 4, !dbg !727 | |
%call13 = call zeroext i1 @_ZNKSt12experimental13coroutines_v114suspend_always11await_readyEv(%"struct.std::experimental::coroutines_v1::suspend_always"* %ref.tmp12.reload.addr) #2, !dbg !728 | |
br i1 %call13, label %await.ready, label %CoroSave47, !dbg !729 | |
CoroSave47: ; preds = %init.ready | |
%index.addr60 = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 3, !dbg !729 | |
store i2 1, i2* %index.addr60, align 1, !dbg !729 | |
br label %AfterCoroSave48, !dbg !728 | |
AfterCoroSave48: ; preds = %CoroSave47 | |
%call16 = call i8* @_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_addressEPv(i8* %vFrame) #2, !dbg !728 | |
%coerce.dive17 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp15.reload.addr, i32 0, i32 0, !dbg !728 | |
%coerce.dive18 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive17, i32 0, i32 0, !dbg !728 | |
store i8* %call16, i8** %coerce.dive18, align 8, !dbg !728 | |
%1 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp15.reload.addr to %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, !dbg !728 | |
%2 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp14.reload.addr to i8*, !dbg !728 | |
%3 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %1 to i8*, !dbg !728 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %2, i8* align 8 %3, i64 8, i1 false), !dbg !728 | |
%coerce.dive19 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp14.reload.addr, i32 0, i32 0, !dbg !728 | |
%4 = load i8*, i8** %coerce.dive19, align 8, !dbg !728 | |
call void @_ZNKSt12experimental13coroutines_v114suspend_always13await_suspendENS0_16coroutine_handleIvEE(%"struct.std::experimental::coroutines_v1::suspend_always"* %ref.tmp12.reload.addr, i8* %4) #2, !dbg !728 | |
br label %CoroSuspend49, !dbg !729 | |
CoroSuspend49: ; preds = %AfterCoroSave48 | |
br label %resume.1.landing, !dbg !729 | |
resume.1: ; preds = %Switch | |
br label %resume.1.landing, !dbg !729 | |
resume.1.landing: ; preds = %resume.1, %CoroSuspend49 | |
%5 = phi i8 [ -1, %CoroSuspend49 ], [ 1, %resume.1 ] | |
br label %AfterCoroSuspend50, !dbg !729 | |
AfterCoroSuspend50: ; preds = %resume.1.landing | |
switch i8 %5, label %coro.ret [ | |
i8 0, label %await.ready | |
i8 1, label %await.cleanup | |
], !dbg !729 | |
await.cleanup: ; preds = %AfterCoroSuspend50 | |
br label %cleanup.from.await.cleanup, !dbg !729 | |
cleanup.from.await.cleanup: ; preds = %await.cleanup | |
%.cleanup56 = phi i32 [ 2, %await.cleanup ] | |
br label %cleanup, !dbg !729 | |
await.ready: ; preds = %AfterCoroSuspend50, %init.ready | |
call void @_ZNKSt12experimental13coroutines_v114suspend_always12await_resumeEv(%"struct.std::experimental::coroutines_v1::suspend_always"* %ref.tmp12.reload.addr) #2, !dbg !728 | |
%6 = load i32, i32* %a.reload.addr, align 4, !dbg !730 | |
%inc = add nsw i32 %6, 1, !dbg !730 | |
store i32 %inc, i32* %a.reload.addr, align 4, !dbg !730 | |
%arrayidx = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 0, !dbg !731 | |
store i32 1, i32* %arrayidx, align 16, !dbg !732 | |
%7 = load i32, i32* %a.reload.addr, align 4, !dbg !733 | |
%add = add nsw i32 %7, 2, !dbg !733 | |
store i32 %add, i32* %a.reload.addr, align 4, !dbg !733 | |
%arrayidx20 = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 1, !dbg !734 | |
store i32 2, i32* %arrayidx20, align 4, !dbg !735 | |
%8 = load i32, i32* %a.reload.addr, align 4, !dbg !736 | |
%add21 = add nsw i32 %8, 3, !dbg !736 | |
store i32 %add21, i32* %a.reload.addr, align 4, !dbg !736 | |
%arrayidx22 = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 2, !dbg !737 | |
store i32 3, i32* %arrayidx22, align 8, !dbg !738 | |
call void @_ZN4coro12promise_type11return_voidEv(%"struct.coro::promise_type"* %__promise.reload.addr), !dbg !722 | |
br label %invoke.cont24 | |
invoke.cont24: ; preds = %await.ready | |
br label %coro.final, !dbg !722 | |
coro.final: ; preds = %invoke.cont24 | |
call void @_ZN4coro12promise_type13final_suspendEv(%"struct.coro::promise_type"* %__promise.reload.addr) #2, !dbg !722 | |
%call31 = call zeroext i1 @_ZNKSt12experimental13coroutines_v113suspend_never11await_readyEv(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp29.reload.addr) #2, !dbg !722 | |
br i1 %call31, label %final.ready, label %CoroSave51, !dbg !722 | |
CoroSave51: ; preds = %coro.final | |
%ResumeFn.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 0, !dbg !722 | |
store void (%_Z3foov.Frame*)* null, void (%_Z3foov.Frame*)** %ResumeFn.addr, align 8, !dbg !722 | |
br label %AfterCoroSave52, !dbg !722 | |
AfterCoroSave52: ; preds = %CoroSave51 | |
%call34 = call i8* @_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_addressEPv(i8* %vFrame) #2, !dbg !722 | |
%coerce.dive35 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp33.reload.addr, i32 0, i32 0, !dbg !722 | |
%coerce.dive36 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive35, i32 0, i32 0, !dbg !722 | |
store i8* %call34, i8** %coerce.dive36, align 8, !dbg !722 | |
%9 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp33.reload.addr to %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, !dbg !722 | |
%10 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp32.reload.addr to i8*, !dbg !722 | |
%11 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %9 to i8*, !dbg !722 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %10, i8* align 8 %11, i64 8, i1 false), !dbg !722 | |
%coerce.dive37 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp32.reload.addr, i32 0, i32 0, !dbg !722 | |
%12 = load i8*, i8** %coerce.dive37, align 8, !dbg !722 | |
call void @_ZNKSt12experimental13coroutines_v113suspend_never13await_suspendENS0_16coroutine_handleIvEE(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp29.reload.addr, i8* %12) #2, !dbg !722 | |
br label %CoroSuspend53, !dbg !722 | |
CoroSuspend53: ; preds = %AfterCoroSave52 | |
br label %resume.2.landing, !dbg !722 | |
resume.2: ; preds = %resume.entry | |
br label %resume.2.landing, !dbg !722 | |
resume.2.landing: ; preds = %resume.2, %CoroSuspend53 | |
%13 = phi i8 [ -1, %CoroSuspend53 ], [ 1, %resume.2 ] | |
br label %AfterCoroSuspend54, !dbg !722 | |
AfterCoroSuspend54: ; preds = %resume.2.landing | |
switch i8 %13, label %coro.ret [ | |
i8 0, label %final.ready | |
i8 1, label %final.cleanup | |
], !dbg !722 | |
final.cleanup: ; preds = %AfterCoroSuspend54 | |
br label %cleanup.from.final.cleanup, !dbg !722 | |
cleanup.from.final.cleanup: ; preds = %final.cleanup | |
%.cleanup55 = phi i32 [ 2, %final.cleanup ] | |
br label %cleanup, !dbg !722 | |
final.ready: ; preds = %AfterCoroSuspend54, %coro.final | |
call void @_ZNKSt12experimental13coroutines_v113suspend_never12await_resumeEv(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp29.reload.addr) #2, !dbg !722 | |
br label %cleanup.from.final.ready, !dbg !722 | |
cleanup.from.final.ready: ; preds = %final.ready | |
%.cleanup = phi i32 [ 0, %final.ready ] | |
br label %cleanup, !dbg !722 | |
cleanup: ; preds = %cleanup.from.final.ready, %cleanup.from.final.cleanup, %cleanup.from.await.cleanup, %cleanup.from.init.cleanup | |
%cleanup.dest.slot.0 = phi i32 [ %.cleanup, %cleanup.from.final.ready ], [ %.cleanup55, %cleanup.from.final.cleanup ], [ %.cleanup56, %cleanup.from.await.cleanup ], [ %.cleanup57, %cleanup.from.init.cleanup ] | |
%14 = icmp ne i8* %vFrame, null, !dbg !722 | |
br i1 %14, label %coro.free, label %after.coro.free, !dbg !722 | |
coro.free: ; preds = %cleanup | |
call void @_ZdlPv(i8* %vFrame) #2, !dbg !722 | |
br label %after.coro.free, !dbg !722 | |
after.coro.free: ; preds = %coro.free, %cleanup | |
switch i32 %cleanup.dest.slot.0, label %unreachable [ | |
i32 0, label %cleanup.cont38 | |
i32 2, label %coro.ret | |
] | |
cleanup.cont38: ; preds = %after.coro.free | |
br label %coro.ret, !dbg !722 | |
coro.ret: ; preds = %cleanup.cont38, %after.coro.free, %AfterCoroSuspend54, %AfterCoroSuspend50, %AfterCoroSuspend | |
br label %CoroEnd, !dbg !722 | |
CoroEnd: ; preds = %coro.ret | |
ret void, !dbg !722 | |
unreachable: ; preds = %after.coro.free | |
unreachable | |
resume.entry: ; preds = %entry.destroy | |
%index.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 3 | |
%index = load i2, i2* %index.addr, align 1 | |
%ResumeFn.addr1 = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 0 | |
%15 = load void (%_Z3foov.Frame*)*, void (%_Z3foov.Frame*)** %ResumeFn.addr1, align 8 | |
%16 = icmp eq void (%_Z3foov.Frame*)* %15, null | |
br i1 %16, label %resume.2, label %Switch | |
Switch: ; preds = %resume.entry | |
switch i2 %index, label %unreachable58 [ | |
i2 0, label %resume.0 | |
i2 1, label %resume.1 | |
] | |
unreachable58: ; preds = %Switch | |
unreachable, !dbg !722 | |
} | |
; Function Attrs: noinline optnone uwtable | |
define internal fastcc void @_Z3foov.cleanup(%_Z3foov.Frame* noalias nonnull align 16 dereferenceable(128) %FramePtr) #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) !dbg !739 { | |
entry.cleanup: | |
%vFrame = bitcast %_Z3foov.Frame* %FramePtr to i8* | |
%ehselector.slot = alloca i32, align 4 | |
%exn.slot = alloca i8*, align 8 | |
%gro.active = alloca i1, align 1 | |
%retval = alloca %struct.coro, align 8 | |
%ref.tmp.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 4, !dbg !740 | |
%agg.tmp.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 7, !dbg !740 | |
%ref.tmp7.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 9, !dbg !740 | |
%x.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 8, !dbg !740 | |
%a.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 6, !dbg !740 | |
%ref.tmp12.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 5, !dbg !740 | |
%agg.tmp14.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 10, !dbg !740 | |
%ref.tmp15.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 11, !dbg !740 | |
%ref.tmp29.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 14, !dbg !740 | |
%agg.tmp32.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 12, !dbg !740 | |
%ref.tmp33.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 13, !dbg !740 | |
%__promise.reload.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 2, !dbg !740 | |
br label %resume.entry, !dbg !740 | |
resume.0: ; preds = %Switch | |
br label %resume.0.landing, !dbg !741 | |
resume.0.landing: ; preds = %resume.0 | |
br label %AfterCoroSuspend, !dbg !741 | |
AfterCoroSuspend: ; preds = %resume.0.landing | |
switch i8 1, label %coro.ret [ | |
i8 0, label %init.ready | |
i8 1, label %init.cleanup | |
], !dbg !741 | |
init.cleanup: ; preds = %AfterCoroSuspend | |
br label %cleanup.from.init.cleanup, !dbg !741 | |
cleanup.from.init.cleanup: ; preds = %init.cleanup | |
%.cleanup57 = phi i32 [ 2, %init.cleanup ] | |
br label %cleanup, !dbg !741 | |
init.ready: ; preds = %AfterCoroSuspend | |
call void @_ZNKSt12experimental13coroutines_v113suspend_never12await_resumeEv(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp.reload.addr) #2, !dbg !741 | |
call void @llvm.dbg.declare(metadata [10 x i32]* %x.reload.addr, metadata !742, metadata !DIExpression()), !dbg !744 | |
%0 = bitcast [10 x i32]* %x.reload.addr to i8*, !dbg !744 | |
call void @llvm.memset.p0i8.i64(i8* align 16 %0, i8 0, i64 40, i1 false), !dbg !744 | |
call void @llvm.dbg.declare(metadata i32* %a.reload.addr, metadata !745, metadata !DIExpression()), !dbg !746 | |
store i32 3, i32* %a.reload.addr, align 4, !dbg !746 | |
%call13 = call zeroext i1 @_ZNKSt12experimental13coroutines_v114suspend_always11await_readyEv(%"struct.std::experimental::coroutines_v1::suspend_always"* %ref.tmp12.reload.addr) #2, !dbg !747 | |
br i1 %call13, label %await.ready, label %CoroSave47, !dbg !748 | |
CoroSave47: ; preds = %init.ready | |
%index.addr60 = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 3, !dbg !748 | |
store i2 1, i2* %index.addr60, align 1, !dbg !748 | |
br label %AfterCoroSave48, !dbg !747 | |
AfterCoroSave48: ; preds = %CoroSave47 | |
%call16 = call i8* @_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_addressEPv(i8* %vFrame) #2, !dbg !747 | |
%coerce.dive17 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp15.reload.addr, i32 0, i32 0, !dbg !747 | |
%coerce.dive18 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive17, i32 0, i32 0, !dbg !747 | |
store i8* %call16, i8** %coerce.dive18, align 8, !dbg !747 | |
%1 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp15.reload.addr to %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, !dbg !747 | |
%2 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp14.reload.addr to i8*, !dbg !747 | |
%3 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %1 to i8*, !dbg !747 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %2, i8* align 8 %3, i64 8, i1 false), !dbg !747 | |
%coerce.dive19 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp14.reload.addr, i32 0, i32 0, !dbg !747 | |
%4 = load i8*, i8** %coerce.dive19, align 8, !dbg !747 | |
call void @_ZNKSt12experimental13coroutines_v114suspend_always13await_suspendENS0_16coroutine_handleIvEE(%"struct.std::experimental::coroutines_v1::suspend_always"* %ref.tmp12.reload.addr, i8* %4) #2, !dbg !747 | |
br label %CoroSuspend49, !dbg !748 | |
CoroSuspend49: ; preds = %AfterCoroSave48 | |
br label %resume.1.landing, !dbg !748 | |
resume.1: ; preds = %Switch | |
br label %resume.1.landing, !dbg !748 | |
resume.1.landing: ; preds = %resume.1, %CoroSuspend49 | |
%5 = phi i8 [ -1, %CoroSuspend49 ], [ 1, %resume.1 ] | |
br label %AfterCoroSuspend50, !dbg !748 | |
AfterCoroSuspend50: ; preds = %resume.1.landing | |
switch i8 %5, label %coro.ret [ | |
i8 0, label %await.ready | |
i8 1, label %await.cleanup | |
], !dbg !748 | |
await.cleanup: ; preds = %AfterCoroSuspend50 | |
br label %cleanup.from.await.cleanup, !dbg !748 | |
cleanup.from.await.cleanup: ; preds = %await.cleanup | |
%.cleanup56 = phi i32 [ 2, %await.cleanup ] | |
br label %cleanup, !dbg !748 | |
await.ready: ; preds = %AfterCoroSuspend50, %init.ready | |
call void @_ZNKSt12experimental13coroutines_v114suspend_always12await_resumeEv(%"struct.std::experimental::coroutines_v1::suspend_always"* %ref.tmp12.reload.addr) #2, !dbg !747 | |
%6 = load i32, i32* %a.reload.addr, align 4, !dbg !749 | |
%inc = add nsw i32 %6, 1, !dbg !749 | |
store i32 %inc, i32* %a.reload.addr, align 4, !dbg !749 | |
%arrayidx = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 0, !dbg !750 | |
store i32 1, i32* %arrayidx, align 16, !dbg !751 | |
%7 = load i32, i32* %a.reload.addr, align 4, !dbg !752 | |
%add = add nsw i32 %7, 2, !dbg !752 | |
store i32 %add, i32* %a.reload.addr, align 4, !dbg !752 | |
%arrayidx20 = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 1, !dbg !753 | |
store i32 2, i32* %arrayidx20, align 4, !dbg !754 | |
%8 = load i32, i32* %a.reload.addr, align 4, !dbg !755 | |
%add21 = add nsw i32 %8, 3, !dbg !755 | |
store i32 %add21, i32* %a.reload.addr, align 4, !dbg !755 | |
%arrayidx22 = getelementptr inbounds [10 x i32], [10 x i32]* %x.reload.addr, i64 0, i64 2, !dbg !756 | |
store i32 3, i32* %arrayidx22, align 8, !dbg !757 | |
call void @_ZN4coro12promise_type11return_voidEv(%"struct.coro::promise_type"* %__promise.reload.addr), !dbg !741 | |
br label %invoke.cont24 | |
invoke.cont24: ; preds = %await.ready | |
br label %coro.final, !dbg !741 | |
coro.final: ; preds = %invoke.cont24 | |
call void @_ZN4coro12promise_type13final_suspendEv(%"struct.coro::promise_type"* %__promise.reload.addr) #2, !dbg !741 | |
%call31 = call zeroext i1 @_ZNKSt12experimental13coroutines_v113suspend_never11await_readyEv(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp29.reload.addr) #2, !dbg !741 | |
br i1 %call31, label %final.ready, label %CoroSave51, !dbg !741 | |
CoroSave51: ; preds = %coro.final | |
%ResumeFn.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 0, !dbg !741 | |
store void (%_Z3foov.Frame*)* null, void (%_Z3foov.Frame*)** %ResumeFn.addr, align 8, !dbg !741 | |
br label %AfterCoroSave52, !dbg !741 | |
AfterCoroSave52: ; preds = %CoroSave51 | |
%call34 = call i8* @_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_addressEPv(i8* %vFrame) #2, !dbg !741 | |
%coerce.dive35 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle", %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp33.reload.addr, i32 0, i32 0, !dbg !741 | |
%coerce.dive36 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %coerce.dive35, i32 0, i32 0, !dbg !741 | |
store i8* %call34, i8** %coerce.dive36, align 8, !dbg !741 | |
%9 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle"* %ref.tmp33.reload.addr to %"class.std::experimental::coroutines_v1::coroutine_handle.0"*, !dbg !741 | |
%10 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp32.reload.addr to i8*, !dbg !741 | |
%11 = bitcast %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %9 to i8*, !dbg !741 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %10, i8* align 8 %11, i64 8, i1 false), !dbg !741 | |
%coerce.dive37 = getelementptr inbounds %"class.std::experimental::coroutines_v1::coroutine_handle.0", %"class.std::experimental::coroutines_v1::coroutine_handle.0"* %agg.tmp32.reload.addr, i32 0, i32 0, !dbg !741 | |
%12 = load i8*, i8** %coerce.dive37, align 8, !dbg !741 | |
call void @_ZNKSt12experimental13coroutines_v113suspend_never13await_suspendENS0_16coroutine_handleIvEE(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp29.reload.addr, i8* %12) #2, !dbg !741 | |
br label %CoroSuspend53, !dbg !741 | |
CoroSuspend53: ; preds = %AfterCoroSave52 | |
br label %resume.2.landing, !dbg !741 | |
resume.2: ; preds = %resume.entry | |
br label %resume.2.landing, !dbg !741 | |
resume.2.landing: ; preds = %resume.2, %CoroSuspend53 | |
%13 = phi i8 [ -1, %CoroSuspend53 ], [ 1, %resume.2 ] | |
br label %AfterCoroSuspend54, !dbg !741 | |
AfterCoroSuspend54: ; preds = %resume.2.landing | |
switch i8 %13, label %coro.ret [ | |
i8 0, label %final.ready | |
i8 1, label %final.cleanup | |
], !dbg !741 | |
final.cleanup: ; preds = %AfterCoroSuspend54 | |
br label %cleanup.from.final.cleanup, !dbg !741 | |
cleanup.from.final.cleanup: ; preds = %final.cleanup | |
%.cleanup55 = phi i32 [ 2, %final.cleanup ] | |
br label %cleanup, !dbg !741 | |
final.ready: ; preds = %AfterCoroSuspend54, %coro.final | |
call void @_ZNKSt12experimental13coroutines_v113suspend_never12await_resumeEv(%"struct.std::experimental::coroutines_v1::suspend_never"* %ref.tmp29.reload.addr) #2, !dbg !741 | |
br label %cleanup.from.final.ready, !dbg !741 | |
cleanup.from.final.ready: ; preds = %final.ready | |
%.cleanup = phi i32 [ 0, %final.ready ] | |
br label %cleanup, !dbg !741 | |
cleanup: ; preds = %cleanup.from.final.ready, %cleanup.from.final.cleanup, %cleanup.from.await.cleanup, %cleanup.from.init.cleanup | |
%cleanup.dest.slot.0 = phi i32 [ %.cleanup, %cleanup.from.final.ready ], [ %.cleanup55, %cleanup.from.final.cleanup ], [ %.cleanup56, %cleanup.from.await.cleanup ], [ %.cleanup57, %cleanup.from.init.cleanup ] | |
%14 = icmp ne i8* null, null, !dbg !741 | |
br i1 %14, label %coro.free, label %after.coro.free, !dbg !741 | |
coro.free: ; preds = %cleanup | |
call void @_ZdlPv(i8* null) #2, !dbg !741 | |
br label %after.coro.free, !dbg !741 | |
after.coro.free: ; preds = %coro.free, %cleanup | |
switch i32 %cleanup.dest.slot.0, label %unreachable [ | |
i32 0, label %cleanup.cont38 | |
i32 2, label %coro.ret | |
] | |
cleanup.cont38: ; preds = %after.coro.free | |
br label %coro.ret, !dbg !741 | |
coro.ret: ; preds = %cleanup.cont38, %after.coro.free, %AfterCoroSuspend54, %AfterCoroSuspend50, %AfterCoroSuspend | |
br label %CoroEnd, !dbg !741 | |
CoroEnd: ; preds = %coro.ret | |
ret void, !dbg !741 | |
unreachable: ; preds = %after.coro.free | |
unreachable | |
resume.entry: ; preds = %entry.cleanup | |
%index.addr = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 3 | |
%index = load i2, i2* %index.addr, align 1 | |
%ResumeFn.addr1 = getelementptr inbounds %_Z3foov.Frame, %_Z3foov.Frame* %FramePtr, i32 0, i32 0 | |
%15 = load void (%_Z3foov.Frame*)*, void (%_Z3foov.Frame*)** %ResumeFn.addr1, align 8 | |
%16 = icmp eq void (%_Z3foov.Frame*)* %15, null | |
br i1 %16, label %resume.2, label %Switch | |
Switch: ; preds = %resume.entry | |
switch i2 %index, label %unreachable58 [ | |
i2 0, label %resume.0 | |
i2 1, label %resume.1 | |
] | |
unreachable58: ; preds = %Switch | |
unreachable, !dbg !741 | |
} | |
attributes #0 = { noinline optnone uwtable "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" } | |
attributes #1 = { argmemonly nounwind readonly } | |
attributes #2 = { nounwind } | |
attributes #3 = { nobuiltin allocsize(0) "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" } | |
attributes #4 = { nounwind readnone } | |
attributes #5 = { nofree nosync nounwind readnone speculatable willreturn } | |
attributes #6 = { noinline nounwind optnone uwtable "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" } | |
attributes #7 = { argmemonly nofree nosync nounwind willreturn } | |
attributes #8 = { argmemonly nofree nosync nounwind willreturn writeonly } | |
attributes #9 = { noinline noreturn nounwind } | |
attributes #10 = { nobuiltin nounwind "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" } | |
attributes #11 = { noinline norecurse optnone uwtable "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" } | |
attributes #12 = { alwaysinline } | |
attributes #13 = { allocsize(0) } | |
attributes #14 = { noreturn nounwind } | |
!llvm.dbg.cu = !{!0} | |
!llvm.module.flags = !{!526, !527, !528} | |
!llvm.ident = !{!529} | |
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "clang version 12.0.0 (git@github.com:llvm/llvm-project 0a702b967927d888bd222806252783359fc74d57)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !3, imports: !107, splitDebugInlining: false, nameTableKind: None) | |
!1 = !DIFile(filename: "test.cpp", directory: "/tmp") | |
!2 = !{} | |
!3 = !{!4} | |
!4 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "coro", file: !1, line: 5, size: 64, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !5, identifier: "_ZTS4coro") | |
!5 = !{!6, !103} | |
!6 = !DIDerivedType(tag: DW_TAG_member, name: "handle", scope: !4, file: !1, line: 17, baseType: !7, size: 64) | |
!7 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "coroutine_handle<coro::promise_type>", scope: !9, file: !8, line: 196, size: 64, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !12, templateParams: !101, identifier: "_ZTSNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEEE") | |
!8 = !DIFile(filename: "/fast/fs/llvm3/build/bin/../include/c++/v1/experimental/coroutine", directory: "") | |
!9 = !DINamespace(name: "coroutines_v1", scope: !10, exportSymbols: true) | |
!10 = !DINamespace(name: "experimental", scope: !11) | |
!11 = !DINamespace(name: "std", scope: null) | |
!12 = !{!13, !54, !59, !92, !95, !98} | |
!13 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !7, baseType: !14, flags: DIFlagPublic, extraData: i32 0) | |
!14 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "coroutine_handle<void>", scope: !9, file: !8, line: 92, size: 64, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !15, templateParams: !52, identifier: "_ZTSNSt12experimental13coroutines_v116coroutine_handleIvEE") | |
!15 = !{!16, !18, !22, !28, !32, !37, !41, !42, !43, !44, !45, !48, !51} | |
!16 = !DIDerivedType(tag: DW_TAG_member, name: "__handle_", scope: !14, file: !8, line: 166, baseType: !17, size: 64) | |
!17 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) | |
!18 = !DISubprogram(name: "coroutine_handle", scope: !14, file: !8, line: 95, type: !19, scopeLine: 95, flags: DIFlagPublic | DIFlagPrototyped, spFlags: 0) | |
!19 = !DISubroutineType(types: !20) | |
!20 = !{null, !21} | |
!21 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!22 = !DISubprogram(name: "coroutine_handle", scope: !14, file: !8, line: 98, type: !23, scopeLine: 98, flags: DIFlagPublic | DIFlagPrototyped, spFlags: 0) | |
!23 = !DISubroutineType(types: !24) | |
!24 = !{null, !21, !25} | |
!25 = !DIDerivedType(tag: DW_TAG_typedef, name: "nullptr_t", scope: !11, file: !26, line: 56, baseType: !27) | |
!26 = !DIFile(filename: "/fast/fs/llvm3/build/bin/../include/c++/v1/__nullptr", directory: "") | |
!27 = !DIBasicType(tag: DW_TAG_unspecified_type, name: "decltype(nullptr)") | |
!28 = !DISubprogram(name: "operator=", linkageName: "_ZNSt12experimental13coroutines_v116coroutine_handleIvEaSEDn", scope: !14, file: !8, line: 101, type: !29, scopeLine: 101, flags: DIFlagPublic | DIFlagPrototyped, spFlags: 0) | |
!29 = !DISubroutineType(types: !30) | |
!30 = !{!31, !21, !25} | |
!31 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !14, size: 64) | |
!32 = !DISubprogram(name: "address", linkageName: "_ZNKSt12experimental13coroutines_v116coroutine_handleIvE7addressEv", scope: !14, file: !8, line: 107, type: !33, scopeLine: 107, flags: DIFlagPublic | DIFlagPrototyped, spFlags: 0) | |
!33 = !DISubroutineType(types: !34) | |
!34 = !{!17, !35} | |
!35 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !36, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!36 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !14) | |
!37 = !DISubprogram(name: "operator bool", linkageName: "_ZNKSt12experimental13coroutines_v116coroutine_handleIvEcvbEv", scope: !14, file: !8, line: 110, type: !38, scopeLine: 110, flags: DIFlagPublic | DIFlagExplicit | DIFlagPrototyped, spFlags: 0) | |
!38 = !DISubroutineType(types: !39) | |
!39 = !{!40, !35} | |
!40 = !DIBasicType(name: "bool", size: 8, encoding: DW_ATE_boolean) | |
!41 = !DISubprogram(name: "operator()", linkageName: "_ZNSt12experimental13coroutines_v116coroutine_handleIvEclEv", scope: !14, file: !8, line: 113, type: !19, scopeLine: 113, flags: DIFlagPublic | DIFlagPrototyped, spFlags: 0) | |
!42 = !DISubprogram(name: "resume", linkageName: "_ZNSt12experimental13coroutines_v116coroutine_handleIvE6resumeEv", scope: !14, file: !8, line: 116, type: !19, scopeLine: 116, flags: DIFlagPublic | DIFlagPrototyped, spFlags: 0) | |
!43 = !DISubprogram(name: "destroy", linkageName: "_ZNSt12experimental13coroutines_v116coroutine_handleIvE7destroyEv", scope: !14, file: !8, line: 125, type: !19, scopeLine: 125, flags: DIFlagPublic | DIFlagPrototyped, spFlags: 0) | |
!44 = !DISubprogram(name: "done", linkageName: "_ZNKSt12experimental13coroutines_v116coroutine_handleIvE4doneEv", scope: !14, file: !8, line: 132, type: !38, scopeLine: 132, flags: DIFlagPublic | DIFlagPrototyped, spFlags: 0) | |
!45 = !DISubprogram(name: "from_address", linkageName: "_ZNSt12experimental13coroutines_v116coroutine_handleIvE12from_addressEPv", scope: !14, file: !8, line: 140, type: !46, scopeLine: 140, flags: DIFlagPublic | DIFlagPrototyped | DIFlagStaticMember, spFlags: 0) | |
!46 = !DISubroutineType(types: !47) | |
!47 = !{!14, !17} | |
!48 = !DISubprogram(name: "from_address", linkageName: "_ZNSt12experimental13coroutines_v116coroutine_handleIvE12from_addressEDn", scope: !14, file: !8, line: 148, type: !49, scopeLine: 148, flags: DIFlagPublic | DIFlagPrototyped | DIFlagStaticMember, spFlags: 0) | |
!49 = !DISubroutineType(types: !50) | |
!50 = !{!14, !25} | |
!51 = !DISubprogram(name: "__is_suspended", linkageName: "_ZNKSt12experimental13coroutines_v116coroutine_handleIvE14__is_suspendedEv", scope: !14, file: !8, line: 160, type: !38, scopeLine: 160, flags: DIFlagPrototyped, spFlags: 0) | |
!52 = !{!53} | |
!53 = !DITemplateTypeParameter(name: "_Promise", type: null, defaulted: true) | |
!54 = !DISubprogram(name: "operator=", linkageName: "_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEEaSEDn", scope: !7, file: !8, line: 207, type: !55, scopeLine: 207, flags: DIFlagPublic | DIFlagPrototyped, spFlags: 0) | |
!55 = !DISubroutineType(types: !56) | |
!56 = !{!57, !58, !25} | |
!57 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !7, size: 64) | |
!58 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!59 = !DISubprogram(name: "promise", linkageName: "_ZNKSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE7promiseEv", scope: !7, file: !8, line: 213, type: !60, scopeLine: 213, flags: DIFlagPublic | DIFlagPrototyped, spFlags: 0) | |
!60 = !DISubroutineType(types: !61) | |
!61 = !{!62, !90} | |
!62 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !63, size: 64) | |
!63 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "promise_type", scope: !4, file: !1, line: 6, size: 8, flags: DIFlagTypePassByValue, elements: !64, identifier: "_ZTSN4coro12promise_typeE") | |
!64 = !{!65, !69, !85, !86, !89} | |
!65 = !DISubprogram(name: "get_return_object", linkageName: "_ZN4coro12promise_type17get_return_objectEv", scope: !63, file: !1, line: 7, type: !66, scopeLine: 7, flags: DIFlagPrototyped, spFlags: 0) | |
!66 = !DISubroutineType(types: !67) | |
!67 = !{!4, !68} | |
!68 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !63, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!69 = !DISubprogram(name: "initial_suspend", linkageName: "_ZN4coro12promise_type15initial_suspendEv", scope: !63, file: !1, line: 11, type: !70, scopeLine: 11, flags: DIFlagPrototyped, spFlags: 0) | |
!70 = !DISubroutineType(types: !71) | |
!71 = !{!72, !68} | |
!72 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "suspend_never", scope: !9, file: !8, line: 300, size: 8, flags: DIFlagTypePassByValue, elements: !73, identifier: "_ZTSNSt12experimental13coroutines_v113suspend_neverE") | |
!73 = !{!74, !79, !82} | |
!74 = !DISubprogram(name: "await_ready", linkageName: "_ZNKSt12experimental13coroutines_v113suspend_never11await_readyEv", scope: !72, file: !8, line: 302, type: !75, scopeLine: 302, flags: DIFlagPrototyped, spFlags: 0) | |
!75 = !DISubroutineType(types: !76) | |
!76 = !{!40, !77} | |
!77 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !78, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!78 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !72) | |
!79 = !DISubprogram(name: "await_suspend", linkageName: "_ZNKSt12experimental13coroutines_v113suspend_never13await_suspendENS0_16coroutine_handleIvEE", scope: !72, file: !8, line: 304, type: !80, scopeLine: 304, flags: DIFlagPrototyped, spFlags: 0) | |
!80 = !DISubroutineType(types: !81) | |
!81 = !{null, !77, !14} | |
!82 = !DISubprogram(name: "await_resume", linkageName: "_ZNKSt12experimental13coroutines_v113suspend_never12await_resumeEv", scope: !72, file: !8, line: 306, type: !83, scopeLine: 306, flags: DIFlagPrototyped, spFlags: 0) | |
!83 = !DISubroutineType(types: !84) | |
!84 = !{null, !77} | |
!85 = !DISubprogram(name: "final_suspend", linkageName: "_ZN4coro12promise_type13final_suspendEv", scope: !63, file: !1, line: 12, type: !70, scopeLine: 12, flags: DIFlagPrototyped, spFlags: 0) | |
!86 = !DISubprogram(name: "return_void", linkageName: "_ZN4coro12promise_type11return_voidEv", scope: !63, file: !1, line: 13, type: !87, scopeLine: 13, flags: DIFlagPrototyped, spFlags: 0) | |
!87 = !DISubroutineType(types: !88) | |
!88 = !{null, !68} | |
!89 = !DISubprogram(name: "unhandled_exception", linkageName: "_ZN4coro12promise_type19unhandled_exceptionEv", scope: !63, file: !1, line: 14, type: !87, scopeLine: 14, flags: DIFlagPrototyped, spFlags: 0) | |
!90 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !91, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!91 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !7) | |
!92 = !DISubprogram(name: "from_address", linkageName: "_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_addressEPv", scope: !7, file: !8, line: 220, type: !93, scopeLine: 220, flags: DIFlagPublic | DIFlagPrototyped | DIFlagStaticMember, spFlags: 0) | |
!93 = !DISubroutineType(types: !94) | |
!94 = !{!7, !17} | |
!95 = !DISubprogram(name: "from_address", linkageName: "_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_addressEDn", scope: !7, file: !8, line: 231, type: !96, scopeLine: 231, flags: DIFlagPublic | DIFlagPrototyped | DIFlagStaticMember, spFlags: 0) | |
!96 = !DISubroutineType(types: !97) | |
!97 = !{!7, !25} | |
!98 = !DISubprogram(name: "from_promise", linkageName: "_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_promiseERS3_", scope: !7, file: !8, line: 250, type: !99, scopeLine: 250, flags: DIFlagPublic | DIFlagPrototyped | DIFlagStaticMember, spFlags: 0) | |
!99 = !DISubroutineType(types: !100) | |
!100 = !{!7, !62} | |
!101 = !{!102} | |
!102 = !DITemplateTypeParameter(name: "_Promise", type: !63) | |
!103 = !DISubprogram(name: "coro", scope: !4, file: !1, line: 18, type: !104, scopeLine: 18, flags: DIFlagPrototyped, spFlags: 0) | |
!104 = !DISubroutineType(types: !105) | |
!105 = !{null, !106, !7} | |
!106 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!107 = !{!108, !114, !117, !121, !123, !127, !133, !140, !148, !153, !157, !161, !169, !174, !179, !183, !187, !191, !196, !200, !205, !209, !213, !217, !221, !225, !230, !234, !236, !240, !242, !252, !256, !261, !265, !269, !273, !277, !279, !283, !290, !294, !298, !306, !308, !310, !317, !321, !324, !327, !332, !336, !339, !342, !345, !347, !349, !351, !353, !355, !357, !359, !361, !363, !365, !367, !369, !371, !373, !375, !377, !379, !382, !385, !387, !394, !398, !402, !406, !408, !410, !414, !418, !422, !424, !428, !433, !437, !441, !445, !447, !449, !451, !453, !455, !459, !463, !465, !470, !471, !475, !478, !483, !487, !492, !497, !503, !509, !513, !515, !520, !525} | |
!108 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !110, file: !113, line: 49) | |
!109 = !DINamespace(name: "__1", scope: !11, exportSymbols: true) | |
!110 = !DIDerivedType(tag: DW_TAG_typedef, name: "ptrdiff_t", file: !111, line: 35, baseType: !112) | |
!111 = !DIFile(filename: "/fast/fs/llvm3/build/lib/clang/12.0.0/include/stddef.h", directory: "") | |
!112 = !DIBasicType(name: "long int", size: 64, encoding: DW_ATE_signed) | |
!113 = !DIFile(filename: "/fast/fs/llvm3/build/bin/../include/c++/v1/cstddef", directory: "") | |
!114 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !115, file: !113, line: 50) | |
!115 = !DIDerivedType(tag: DW_TAG_typedef, name: "size_t", file: !111, line: 46, baseType: !116) | |
!116 = !DIBasicType(name: "long unsigned int", size: 64, encoding: DW_ATE_unsigned) | |
!117 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !118, file: !113, line: 53) | |
!118 = !DIDerivedType(tag: DW_TAG_typedef, name: "max_align_t", file: !119, line: 24, baseType: !120) | |
!119 = !DIFile(filename: "/fast/fs/llvm3/build/lib/clang/12.0.0/include/__stddef_max_align_t.h", directory: "") | |
!120 = !DICompositeType(tag: DW_TAG_structure_type, file: !119, line: 19, size: 256, flags: DIFlagFwdDecl, identifier: "_ZTS11max_align_t") | |
!121 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !115, file: !122, line: 99) | |
!122 = !DIFile(filename: "/fast/fs/llvm3/build/bin/../include/c++/v1/cstdlib", directory: "") | |
!123 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !124, file: !122, line: 100) | |
!124 = !DIDerivedType(tag: DW_TAG_typedef, name: "div_t", file: !125, line: 62, baseType: !126) | |
!125 = !DIFile(filename: "/usr/include/stdlib.h", directory: "") | |
!126 = !DICompositeType(tag: DW_TAG_structure_type, file: !125, line: 58, size: 64, flags: DIFlagFwdDecl, identifier: "_ZTS5div_t") | |
!127 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !128, file: !122, line: 101) | |
!128 = !DIDerivedType(tag: DW_TAG_typedef, name: "ldiv_t", file: !125, line: 70, baseType: !129) | |
!129 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !125, line: 66, size: 128, flags: DIFlagTypePassByValue, elements: !130, identifier: "_ZTS6ldiv_t") | |
!130 = !{!131, !132} | |
!131 = !DIDerivedType(tag: DW_TAG_member, name: "quot", scope: !129, file: !125, line: 68, baseType: !112, size: 64) | |
!132 = !DIDerivedType(tag: DW_TAG_member, name: "rem", scope: !129, file: !125, line: 69, baseType: !112, size: 64, offset: 64) | |
!133 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !134, file: !122, line: 103) | |
!134 = !DIDerivedType(tag: DW_TAG_typedef, name: "lldiv_t", file: !125, line: 80, baseType: !135) | |
!135 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !125, line: 76, size: 128, flags: DIFlagTypePassByValue, elements: !136, identifier: "_ZTS7lldiv_t") | |
!136 = !{!137, !139} | |
!137 = !DIDerivedType(tag: DW_TAG_member, name: "quot", scope: !135, file: !125, line: 78, baseType: !138, size: 64) | |
!138 = !DIBasicType(name: "long long int", size: 64, encoding: DW_ATE_signed) | |
!139 = !DIDerivedType(tag: DW_TAG_member, name: "rem", scope: !135, file: !125, line: 79, baseType: !138, size: 64, offset: 64) | |
!140 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !141, file: !122, line: 105) | |
!141 = !DISubprogram(name: "atof", scope: !125, file: !125, line: 101, type: !142, flags: DIFlagPrototyped, spFlags: 0) | |
!142 = !DISubroutineType(types: !143) | |
!143 = !{!144, !145} | |
!144 = !DIBasicType(name: "double", size: 64, encoding: DW_ATE_float) | |
!145 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !146, size: 64) | |
!146 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !147) | |
!147 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) | |
!148 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !149, file: !122, line: 106) | |
!149 = !DISubprogram(name: "atoi", scope: !125, file: !125, line: 104, type: !150, flags: DIFlagPrototyped, spFlags: 0) | |
!150 = !DISubroutineType(types: !151) | |
!151 = !{!152, !145} | |
!152 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) | |
!153 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !154, file: !122, line: 107) | |
!154 = !DISubprogram(name: "atol", scope: !125, file: !125, line: 107, type: !155, flags: DIFlagPrototyped, spFlags: 0) | |
!155 = !DISubroutineType(types: !156) | |
!156 = !{!112, !145} | |
!157 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !158, file: !122, line: 109) | |
!158 = !DISubprogram(name: "atoll", scope: !125, file: !125, line: 112, type: !159, flags: DIFlagPrototyped, spFlags: 0) | |
!159 = !DISubroutineType(types: !160) | |
!160 = !{!138, !145} | |
!161 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !162, file: !122, line: 111) | |
!162 = !DISubprogram(name: "strtod", scope: !125, file: !125, line: 117, type: !163, flags: DIFlagPrototyped, spFlags: 0) | |
!163 = !DISubroutineType(types: !164) | |
!164 = !{!144, !165, !166} | |
!165 = !DIDerivedType(tag: DW_TAG_restrict_type, baseType: !145) | |
!166 = !DIDerivedType(tag: DW_TAG_restrict_type, baseType: !167) | |
!167 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !168, size: 64) | |
!168 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !147, size: 64) | |
!169 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !170, file: !122, line: 112) | |
!170 = !DISubprogram(name: "strtof", scope: !125, file: !125, line: 123, type: !171, flags: DIFlagPrototyped, spFlags: 0) | |
!171 = !DISubroutineType(types: !172) | |
!172 = !{!173, !165, !166} | |
!173 = !DIBasicType(name: "float", size: 32, encoding: DW_ATE_float) | |
!174 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !175, file: !122, line: 113) | |
!175 = !DISubprogram(name: "strtold", scope: !125, file: !125, line: 126, type: !176, flags: DIFlagPrototyped, spFlags: 0) | |
!176 = !DISubroutineType(types: !177) | |
!177 = !{!178, !165, !166} | |
!178 = !DIBasicType(name: "long double", size: 128, encoding: DW_ATE_float) | |
!179 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !180, file: !122, line: 114) | |
!180 = !DISubprogram(name: "strtol", scope: !125, file: !125, line: 176, type: !181, flags: DIFlagPrototyped, spFlags: 0) | |
!181 = !DISubroutineType(types: !182) | |
!182 = !{!112, !165, !166, !152} | |
!183 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !184, file: !122, line: 116) | |
!184 = !DISubprogram(name: "strtoll", scope: !125, file: !125, line: 200, type: !185, flags: DIFlagPrototyped, spFlags: 0) | |
!185 = !DISubroutineType(types: !186) | |
!186 = !{!138, !165, !166, !152} | |
!187 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !188, file: !122, line: 118) | |
!188 = !DISubprogram(name: "strtoul", scope: !125, file: !125, line: 180, type: !189, flags: DIFlagPrototyped, spFlags: 0) | |
!189 = !DISubroutineType(types: !190) | |
!190 = !{!116, !165, !166, !152} | |
!191 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !192, file: !122, line: 120) | |
!192 = !DISubprogram(name: "strtoull", scope: !125, file: !125, line: 205, type: !193, flags: DIFlagPrototyped, spFlags: 0) | |
!193 = !DISubroutineType(types: !194) | |
!194 = !{!195, !165, !166, !152} | |
!195 = !DIBasicType(name: "long long unsigned int", size: 64, encoding: DW_ATE_unsigned) | |
!196 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !197, file: !122, line: 122) | |
!197 = !DISubprogram(name: "rand", scope: !125, file: !125, line: 453, type: !198, flags: DIFlagPrototyped, spFlags: 0) | |
!198 = !DISubroutineType(types: !199) | |
!199 = !{!152} | |
!200 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !201, file: !122, line: 123) | |
!201 = !DISubprogram(name: "srand", scope: !125, file: !125, line: 455, type: !202, flags: DIFlagPrototyped, spFlags: 0) | |
!202 = !DISubroutineType(types: !203) | |
!203 = !{null, !204} | |
!204 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) | |
!205 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !206, file: !122, line: 124) | |
!206 = !DISubprogram(name: "calloc", scope: !125, file: !125, line: 541, type: !207, flags: DIFlagPrototyped, spFlags: 0) | |
!207 = !DISubroutineType(types: !208) | |
!208 = !{!17, !115, !115} | |
!209 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !210, file: !122, line: 125) | |
!210 = !DISubprogram(name: "free", scope: !125, file: !125, line: 563, type: !211, flags: DIFlagPrototyped, spFlags: 0) | |
!211 = !DISubroutineType(types: !212) | |
!212 = !{null, !17} | |
!213 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !214, file: !122, line: 126) | |
!214 = !DISubprogram(name: "malloc", scope: !125, file: !125, line: 539, type: !215, flags: DIFlagPrototyped, spFlags: 0) | |
!215 = !DISubroutineType(types: !216) | |
!216 = !{!17, !115} | |
!217 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !218, file: !122, line: 127) | |
!218 = !DISubprogram(name: "realloc", scope: !125, file: !125, line: 549, type: !219, flags: DIFlagPrototyped, spFlags: 0) | |
!219 = !DISubroutineType(types: !220) | |
!220 = !{!17, !17, !115} | |
!221 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !222, file: !122, line: 128) | |
!222 = !DISubprogram(name: "abort", scope: !125, file: !125, line: 588, type: !223, flags: DIFlagPrototyped | DIFlagNoReturn, spFlags: 0) | |
!223 = !DISubroutineType(types: !224) | |
!224 = !{null} | |
!225 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !226, file: !122, line: 129) | |
!226 = !DISubprogram(name: "atexit", scope: !125, file: !125, line: 592, type: !227, flags: DIFlagPrototyped, spFlags: 0) | |
!227 = !DISubroutineType(types: !228) | |
!228 = !{!152, !229} | |
!229 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !223, size: 64) | |
!230 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !231, file: !122, line: 130) | |
!231 = !DISubprogram(name: "exit", scope: !125, file: !125, line: 614, type: !232, flags: DIFlagPrototyped | DIFlagNoReturn, spFlags: 0) | |
!232 = !DISubroutineType(types: !233) | |
!233 = !{null, !152} | |
!234 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !235, file: !122, line: 131) | |
!235 = !DISubprogram(name: "_Exit", scope: !125, file: !125, line: 626, type: !232, flags: DIFlagPrototyped | DIFlagNoReturn, spFlags: 0) | |
!236 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !237, file: !122, line: 133) | |
!237 = !DISubprogram(name: "getenv", scope: !125, file: !125, line: 631, type: !238, flags: DIFlagPrototyped, spFlags: 0) | |
!238 = !DISubroutineType(types: !239) | |
!239 = !{!168, !145} | |
!240 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !241, file: !122, line: 134) | |
!241 = !DISubprogram(name: "system", scope: !125, file: !125, line: 781, type: !150, flags: DIFlagPrototyped, spFlags: 0) | |
!242 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !243, file: !122, line: 136) | |
!243 = !DISubprogram(name: "bsearch", scope: !125, file: !125, line: 817, type: !244, flags: DIFlagPrototyped, spFlags: 0) | |
!244 = !DISubroutineType(types: !245) | |
!245 = !{!17, !246, !246, !115, !115, !248} | |
!246 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !247, size: 64) | |
!247 = !DIDerivedType(tag: DW_TAG_const_type, baseType: null) | |
!248 = !DIDerivedType(tag: DW_TAG_typedef, name: "__compar_fn_t", file: !125, line: 805, baseType: !249) | |
!249 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !250, size: 64) | |
!250 = !DISubroutineType(types: !251) | |
!251 = !{!152, !246, !246} | |
!252 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !253, file: !122, line: 137) | |
!253 = !DISubprogram(name: "qsort", scope: !125, file: !125, line: 827, type: !254, flags: DIFlagPrototyped, spFlags: 0) | |
!254 = !DISubroutineType(types: !255) | |
!255 = !{null, !17, !115, !115, !248} | |
!256 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !257, file: !122, line: 138) | |
!257 = !DISubprogram(name: "abs", linkageName: "_Z3abse", scope: !258, file: !258, line: 127, type: !259, flags: DIFlagPrototyped, spFlags: 0) | |
!258 = !DIFile(filename: "/fast/fs/llvm3/build/bin/../include/c++/v1/stdlib.h", directory: "") | |
!259 = !DISubroutineType(types: !260) | |
!260 = !{!178, !178} | |
!261 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !262, file: !122, line: 139) | |
!262 = !DISubprogram(name: "labs", scope: !125, file: !125, line: 838, type: !263, flags: DIFlagPrototyped, spFlags: 0) | |
!263 = !DISubroutineType(types: !264) | |
!264 = !{!112, !112} | |
!265 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !266, file: !122, line: 141) | |
!266 = !DISubprogram(name: "llabs", scope: !125, file: !125, line: 841, type: !267, flags: DIFlagPrototyped, spFlags: 0) | |
!267 = !DISubroutineType(types: !268) | |
!268 = !{!138, !138} | |
!269 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !270, file: !122, line: 143) | |
!270 = !DISubprogram(name: "div", linkageName: "_Z3divxx", scope: !258, file: !258, line: 146, type: !271, flags: DIFlagPrototyped, spFlags: 0) | |
!271 = !DISubroutineType(types: !272) | |
!272 = !{!134, !138, !138} | |
!273 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !274, file: !122, line: 144) | |
!274 = !DISubprogram(name: "ldiv", scope: !125, file: !125, line: 851, type: !275, flags: DIFlagPrototyped, spFlags: 0) | |
!275 = !DISubroutineType(types: !276) | |
!276 = !{!128, !112, !112} | |
!277 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !278, file: !122, line: 146) | |
!278 = !DISubprogram(name: "lldiv", scope: !125, file: !125, line: 855, type: !271, flags: DIFlagPrototyped, spFlags: 0) | |
!279 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !280, file: !122, line: 148) | |
!280 = !DISubprogram(name: "mblen", scope: !125, file: !125, line: 919, type: !281, flags: DIFlagPrototyped, spFlags: 0) | |
!281 = !DISubroutineType(types: !282) | |
!282 = !{!152, !145, !115} | |
!283 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !284, file: !122, line: 149) | |
!284 = !DISubprogram(name: "mbtowc", scope: !125, file: !125, line: 922, type: !285, flags: DIFlagPrototyped, spFlags: 0) | |
!285 = !DISubroutineType(types: !286) | |
!286 = !{!152, !287, !165, !115} | |
!287 = !DIDerivedType(tag: DW_TAG_restrict_type, baseType: !288) | |
!288 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !289, size: 64) | |
!289 = !DIBasicType(name: "wchar_t", size: 32, encoding: DW_ATE_signed) | |
!290 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !291, file: !122, line: 150) | |
!291 = !DISubprogram(name: "wctomb", scope: !125, file: !125, line: 926, type: !292, flags: DIFlagPrototyped, spFlags: 0) | |
!292 = !DISubroutineType(types: !293) | |
!293 = !{!152, !168, !289} | |
!294 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !295, file: !122, line: 151) | |
!295 = !DISubprogram(name: "mbstowcs", scope: !125, file: !125, line: 930, type: !296, flags: DIFlagPrototyped, spFlags: 0) | |
!296 = !DISubroutineType(types: !297) | |
!297 = !{!115, !287, !165, !115} | |
!298 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !299, file: !122, line: 152) | |
!299 = !DISubprogram(name: "wcstombs", scope: !125, file: !125, line: 933, type: !300, flags: DIFlagPrototyped, spFlags: 0) | |
!300 = !DISubroutineType(types: !301) | |
!301 = !{!115, !302, !303, !115} | |
!302 = !DIDerivedType(tag: DW_TAG_restrict_type, baseType: !168) | |
!303 = !DIDerivedType(tag: DW_TAG_restrict_type, baseType: !304) | |
!304 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !305, size: 64) | |
!305 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !289) | |
!306 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !307, file: !122, line: 154) | |
!307 = !DISubprogram(name: "at_quick_exit", scope: !125, file: !125, line: 597, type: !227, flags: DIFlagPrototyped, spFlags: 0) | |
!308 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !309, file: !122, line: 155) | |
!309 = !DISubprogram(name: "quick_exit", scope: !125, file: !125, line: 620, type: !232, flags: DIFlagPrototyped | DIFlagNoReturn, spFlags: 0) | |
!310 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !311, file: !316, line: 152) | |
!311 = !DIDerivedType(tag: DW_TAG_typedef, name: "int8_t", file: !312, line: 24, baseType: !313) | |
!312 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h", directory: "") | |
!313 = !DIDerivedType(tag: DW_TAG_typedef, name: "__int8_t", file: !314, line: 36, baseType: !315) | |
!314 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types.h", directory: "") | |
!315 = !DIBasicType(name: "signed char", size: 8, encoding: DW_ATE_signed_char) | |
!316 = !DIFile(filename: "/fast/fs/llvm3/build/bin/../include/c++/v1/cstdint", directory: "") | |
!317 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !318, file: !316, line: 153) | |
!318 = !DIDerivedType(tag: DW_TAG_typedef, name: "int16_t", file: !312, line: 25, baseType: !319) | |
!319 = !DIDerivedType(tag: DW_TAG_typedef, name: "__int16_t", file: !314, line: 38, baseType: !320) | |
!320 = !DIBasicType(name: "short", size: 16, encoding: DW_ATE_signed) | |
!321 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !322, file: !316, line: 154) | |
!322 = !DIDerivedType(tag: DW_TAG_typedef, name: "int32_t", file: !312, line: 26, baseType: !323) | |
!323 = !DIDerivedType(tag: DW_TAG_typedef, name: "__int32_t", file: !314, line: 40, baseType: !152) | |
!324 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !325, file: !316, line: 155) | |
!325 = !DIDerivedType(tag: DW_TAG_typedef, name: "int64_t", file: !312, line: 27, baseType: !326) | |
!326 = !DIDerivedType(tag: DW_TAG_typedef, name: "__int64_t", file: !314, line: 43, baseType: !112) | |
!327 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !328, file: !316, line: 157) | |
!328 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint8_t", file: !329, line: 24, baseType: !330) | |
!329 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h", directory: "") | |
!330 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint8_t", file: !314, line: 37, baseType: !331) | |
!331 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char) | |
!332 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !333, file: !316, line: 158) | |
!333 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint16_t", file: !329, line: 25, baseType: !334) | |
!334 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint16_t", file: !314, line: 39, baseType: !335) | |
!335 = !DIBasicType(name: "unsigned short", size: 16, encoding: DW_ATE_unsigned) | |
!336 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !337, file: !316, line: 159) | |
!337 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint32_t", file: !329, line: 26, baseType: !338) | |
!338 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint32_t", file: !314, line: 41, baseType: !204) | |
!339 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !340, file: !316, line: 160) | |
!340 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint64_t", file: !329, line: 27, baseType: !341) | |
!341 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uint64_t", file: !314, line: 44, baseType: !116) | |
!342 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !343, file: !316, line: 162) | |
!343 = !DIDerivedType(tag: DW_TAG_typedef, name: "int_least8_t", file: !344, line: 43, baseType: !315) | |
!344 = !DIFile(filename: "/usr/include/stdint.h", directory: "") | |
!345 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !346, file: !316, line: 163) | |
!346 = !DIDerivedType(tag: DW_TAG_typedef, name: "int_least16_t", file: !344, line: 44, baseType: !320) | |
!347 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !348, file: !316, line: 164) | |
!348 = !DIDerivedType(tag: DW_TAG_typedef, name: "int_least32_t", file: !344, line: 45, baseType: !152) | |
!349 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !350, file: !316, line: 165) | |
!350 = !DIDerivedType(tag: DW_TAG_typedef, name: "int_least64_t", file: !344, line: 47, baseType: !112) | |
!351 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !352, file: !316, line: 167) | |
!352 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint_least8_t", file: !344, line: 54, baseType: !331) | |
!353 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !354, file: !316, line: 168) | |
!354 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint_least16_t", file: !344, line: 55, baseType: !335) | |
!355 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !356, file: !316, line: 169) | |
!356 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint_least32_t", file: !344, line: 56, baseType: !204) | |
!357 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !358, file: !316, line: 170) | |
!358 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint_least64_t", file: !344, line: 58, baseType: !116) | |
!359 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !360, file: !316, line: 172) | |
!360 = !DIDerivedType(tag: DW_TAG_typedef, name: "int_fast8_t", file: !344, line: 68, baseType: !315) | |
!361 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !362, file: !316, line: 173) | |
!362 = !DIDerivedType(tag: DW_TAG_typedef, name: "int_fast16_t", file: !344, line: 70, baseType: !112) | |
!363 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !364, file: !316, line: 174) | |
!364 = !DIDerivedType(tag: DW_TAG_typedef, name: "int_fast32_t", file: !344, line: 71, baseType: !112) | |
!365 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !366, file: !316, line: 175) | |
!366 = !DIDerivedType(tag: DW_TAG_typedef, name: "int_fast64_t", file: !344, line: 72, baseType: !112) | |
!367 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !368, file: !316, line: 177) | |
!368 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint_fast8_t", file: !344, line: 81, baseType: !331) | |
!369 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !370, file: !316, line: 178) | |
!370 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint_fast16_t", file: !344, line: 83, baseType: !116) | |
!371 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !372, file: !316, line: 179) | |
!372 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint_fast32_t", file: !344, line: 84, baseType: !116) | |
!373 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !374, file: !316, line: 180) | |
!374 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint_fast64_t", file: !344, line: 85, baseType: !116) | |
!375 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !376, file: !316, line: 182) | |
!376 = !DIDerivedType(tag: DW_TAG_typedef, name: "intptr_t", file: !344, line: 97, baseType: !112) | |
!377 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !378, file: !316, line: 183) | |
!378 = !DIDerivedType(tag: DW_TAG_typedef, name: "uintptr_t", file: !344, line: 100, baseType: !116) | |
!379 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !380, file: !316, line: 185) | |
!380 = !DIDerivedType(tag: DW_TAG_typedef, name: "intmax_t", file: !344, line: 111, baseType: !381) | |
!381 = !DIDerivedType(tag: DW_TAG_typedef, name: "__intmax_t", file: !314, line: 61, baseType: !112) | |
!382 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !383, file: !316, line: 186) | |
!383 = !DIDerivedType(tag: DW_TAG_typedef, name: "uintmax_t", file: !344, line: 112, baseType: !384) | |
!384 = !DIDerivedType(tag: DW_TAG_typedef, name: "__uintmax_t", file: !314, line: 62, baseType: !116) | |
!385 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !115, file: !386, line: 68) | |
!386 = !DIFile(filename: "/fast/fs/llvm3/build/bin/../include/c++/v1/cstring", directory: "") | |
!387 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !388, file: !386, line: 69) | |
!388 = !DISubprogram(name: "memcpy", scope: !389, file: !389, line: 42, type: !390, flags: DIFlagPrototyped, spFlags: 0) | |
!389 = !DIFile(filename: "/usr/include/string.h", directory: "") | |
!390 = !DISubroutineType(types: !391) | |
!391 = !{!17, !392, !393, !115} | |
!392 = !DIDerivedType(tag: DW_TAG_restrict_type, baseType: !17) | |
!393 = !DIDerivedType(tag: DW_TAG_restrict_type, baseType: !246) | |
!394 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !395, file: !386, line: 70) | |
!395 = !DISubprogram(name: "memmove", scope: !389, file: !389, line: 46, type: !396, flags: DIFlagPrototyped, spFlags: 0) | |
!396 = !DISubroutineType(types: !397) | |
!397 = !{!17, !17, !246, !115} | |
!398 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !399, file: !386, line: 71) | |
!399 = !DISubprogram(name: "strcpy", scope: !389, file: !389, line: 121, type: !400, flags: DIFlagPrototyped, spFlags: 0) | |
!400 = !DISubroutineType(types: !401) | |
!401 = !{!168, !302, !165} | |
!402 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !403, file: !386, line: 72) | |
!403 = !DISubprogram(name: "strncpy", scope: !389, file: !389, line: 124, type: !404, flags: DIFlagPrototyped, spFlags: 0) | |
!404 = !DISubroutineType(types: !405) | |
!405 = !{!168, !302, !165, !115} | |
!406 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !407, file: !386, line: 73) | |
!407 = !DISubprogram(name: "strcat", scope: !389, file: !389, line: 129, type: !400, flags: DIFlagPrototyped, spFlags: 0) | |
!408 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !409, file: !386, line: 74) | |
!409 = !DISubprogram(name: "strncat", scope: !389, file: !389, line: 132, type: !404, flags: DIFlagPrototyped, spFlags: 0) | |
!410 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !411, file: !386, line: 75) | |
!411 = !DISubprogram(name: "memcmp", scope: !389, file: !389, line: 63, type: !412, flags: DIFlagPrototyped, spFlags: 0) | |
!412 = !DISubroutineType(types: !413) | |
!413 = !{!152, !246, !246, !115} | |
!414 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !415, file: !386, line: 76) | |
!415 = !DISubprogram(name: "strcmp", scope: !389, file: !389, line: 136, type: !416, flags: DIFlagPrototyped, spFlags: 0) | |
!416 = !DISubroutineType(types: !417) | |
!417 = !{!152, !145, !145} | |
!418 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !419, file: !386, line: 77) | |
!419 = !DISubprogram(name: "strncmp", scope: !389, file: !389, line: 139, type: !420, flags: DIFlagPrototyped, spFlags: 0) | |
!420 = !DISubroutineType(types: !421) | |
!421 = !{!152, !145, !145, !115} | |
!422 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !423, file: !386, line: 78) | |
!423 = !DISubprogram(name: "strcoll", scope: !389, file: !389, line: 143, type: !416, flags: DIFlagPrototyped, spFlags: 0) | |
!424 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !425, file: !386, line: 79) | |
!425 = !DISubprogram(name: "strxfrm", scope: !389, file: !389, line: 146, type: !426, flags: DIFlagPrototyped, spFlags: 0) | |
!426 = !DISubroutineType(types: !427) | |
!427 = !{!115, !302, !165, !115} | |
!428 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !429, file: !386, line: 80) | |
!429 = !DISubprogram(name: "memchr", linkageName: "_Z6memchrUa9enable_ifIXLb1EEEPvim", scope: !430, file: !430, line: 98, type: !431, flags: DIFlagPrototyped, spFlags: 0) | |
!430 = !DIFile(filename: "/fast/fs/llvm3/build/bin/../include/c++/v1/string.h", directory: "") | |
!431 = !DISubroutineType(types: !432) | |
!432 = !{!17, !17, !152, !115} | |
!433 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !434, file: !386, line: 81) | |
!434 = !DISubprogram(name: "strchr", linkageName: "_Z6strchrUa9enable_ifIXLb1EEEPci", scope: !430, file: !430, line: 77, type: !435, flags: DIFlagPrototyped, spFlags: 0) | |
!435 = !DISubroutineType(types: !436) | |
!436 = !{!168, !168, !152} | |
!437 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !438, file: !386, line: 82) | |
!438 = !DISubprogram(name: "strcspn", scope: !389, file: !389, line: 272, type: !439, flags: DIFlagPrototyped, spFlags: 0) | |
!439 = !DISubroutineType(types: !440) | |
!440 = !{!115, !145, !145} | |
!441 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !442, file: !386, line: 83) | |
!442 = !DISubprogram(name: "strpbrk", linkageName: "_Z7strpbrkUa9enable_ifIXLb1EEEPcPKc", scope: !430, file: !430, line: 84, type: !443, flags: DIFlagPrototyped, spFlags: 0) | |
!443 = !DISubroutineType(types: !444) | |
!444 = !{!168, !168, !145} | |
!445 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !446, file: !386, line: 84) | |
!446 = !DISubprogram(name: "strrchr", linkageName: "_Z7strrchrUa9enable_ifIXLb1EEEPci", scope: !430, file: !430, line: 91, type: !435, flags: DIFlagPrototyped, spFlags: 0) | |
!447 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !448, file: !386, line: 85) | |
!448 = !DISubprogram(name: "strspn", scope: !389, file: !389, line: 276, type: !439, flags: DIFlagPrototyped, spFlags: 0) | |
!449 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !450, file: !386, line: 86) | |
!450 = !DISubprogram(name: "strstr", linkageName: "_Z6strstrUa9enable_ifIXLb1EEEPcPKc", scope: !430, file: !430, line: 105, type: !443, flags: DIFlagPrototyped, spFlags: 0) | |
!451 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !452, file: !386, line: 88) | |
!452 = !DISubprogram(name: "strtok", scope: !389, file: !389, line: 335, type: !400, flags: DIFlagPrototyped, spFlags: 0) | |
!453 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !454, file: !386, line: 90) | |
!454 = !DISubprogram(name: "memset", scope: !389, file: !389, line: 60, type: !431, flags: DIFlagPrototyped, spFlags: 0) | |
!455 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !456, file: !386, line: 91) | |
!456 = !DISubprogram(name: "strerror", scope: !389, file: !389, line: 396, type: !457, flags: DIFlagPrototyped, spFlags: 0) | |
!457 = !DISubroutineType(types: !458) | |
!458 = !{!168, !152} | |
!459 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !460, file: !386, line: 92) | |
!460 = !DISubprogram(name: "strlen", scope: !389, file: !389, line: 384, type: !461, flags: DIFlagPrototyped, spFlags: 0) | |
!461 = !DISubroutineType(types: !462) | |
!462 = !{!115, !145} | |
!463 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !0, entity: !25, file: !464, line: 51) | |
!464 = !DIFile(filename: "/fast/fs/llvm3/build/bin/../include/c++/v1/stddef.h", directory: "") | |
!465 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !466, file: !469, line: 71) | |
!466 = !DIDerivedType(tag: DW_TAG_typedef, name: "clock_t", file: !467, line: 7, baseType: !468) | |
!467 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types/clock_t.h", directory: "") | |
!468 = !DIDerivedType(tag: DW_TAG_typedef, name: "__clock_t", file: !314, line: 144, baseType: !112) | |
!469 = !DIFile(filename: "/fast/fs/llvm3/build/bin/../include/c++/v1/ctime", directory: "") | |
!470 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !115, file: !469, line: 72) | |
!471 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !472, file: !469, line: 73) | |
!472 = !DIDerivedType(tag: DW_TAG_typedef, name: "time_t", file: !473, line: 7, baseType: !474) | |
!473 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types/time_t.h", directory: "") | |
!474 = !DIDerivedType(tag: DW_TAG_typedef, name: "__time_t", file: !314, line: 148, baseType: !112) | |
!475 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !476, file: !469, line: 74) | |
!476 = !DICompositeType(tag: DW_TAG_structure_type, name: "tm", file: !477, line: 7, size: 448, flags: DIFlagFwdDecl, identifier: "_ZTS2tm") | |
!477 = !DIFile(filename: "/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h", directory: "") | |
!478 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !479, file: !469, line: 78) | |
!479 = !DISubprogram(name: "clock", scope: !480, file: !480, line: 72, type: !481, flags: DIFlagPrototyped, spFlags: 0) | |
!480 = !DIFile(filename: "/usr/include/time.h", directory: "") | |
!481 = !DISubroutineType(types: !482) | |
!482 = !{!466} | |
!483 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !484, file: !469, line: 79) | |
!484 = !DISubprogram(name: "difftime", scope: !480, file: !480, line: 78, type: !485, flags: DIFlagPrototyped, spFlags: 0) | |
!485 = !DISubroutineType(types: !486) | |
!486 = !{!144, !472, !472} | |
!487 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !488, file: !469, line: 80) | |
!488 = !DISubprogram(name: "mktime", scope: !480, file: !480, line: 82, type: !489, flags: DIFlagPrototyped, spFlags: 0) | |
!489 = !DISubroutineType(types: !490) | |
!490 = !{!472, !491} | |
!491 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !476, size: 64) | |
!492 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !493, file: !469, line: 81) | |
!493 = !DISubprogram(name: "time", scope: !480, file: !480, line: 75, type: !494, flags: DIFlagPrototyped, spFlags: 0) | |
!494 = !DISubroutineType(types: !495) | |
!495 = !{!472, !496} | |
!496 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !472, size: 64) | |
!497 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !498, file: !469, line: 83) | |
!498 = !DISubprogram(name: "asctime", scope: !480, file: !480, line: 139, type: !499, flags: DIFlagPrototyped, spFlags: 0) | |
!499 = !DISubroutineType(types: !500) | |
!500 = !{!168, !501} | |
!501 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !502, size: 64) | |
!502 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !476) | |
!503 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !504, file: !469, line: 84) | |
!504 = !DISubprogram(name: "ctime", scope: !480, file: !480, line: 142, type: !505, flags: DIFlagPrototyped, spFlags: 0) | |
!505 = !DISubroutineType(types: !506) | |
!506 = !{!168, !507} | |
!507 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !508, size: 64) | |
!508 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !472) | |
!509 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !510, file: !469, line: 85) | |
!510 = !DISubprogram(name: "gmtime", scope: !480, file: !480, line: 119, type: !511, flags: DIFlagPrototyped, spFlags: 0) | |
!511 = !DISubroutineType(types: !512) | |
!512 = !{!491, !507} | |
!513 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !514, file: !469, line: 86) | |
!514 = !DISubprogram(name: "localtime", scope: !480, file: !480, line: 123, type: !511, flags: DIFlagPrototyped, spFlags: 0) | |
!515 = !DIImportedEntity(tag: DW_TAG_imported_declaration, scope: !109, entity: !516, file: !469, line: 88) | |
!516 = !DISubprogram(name: "strftime", scope: !480, file: !480, line: 88, type: !517, flags: DIFlagPrototyped, spFlags: 0) | |
!517 = !DISubroutineType(types: !518) | |
!518 = !{!115, !302, !115, !165, !519} | |
!519 = !DIDerivedType(tag: DW_TAG_restrict_type, baseType: !501) | |
!520 = !DIImportedEntity(tag: DW_TAG_imported_module, scope: !521, entity: !522, file: !524, line: 2922) | |
!521 = !DINamespace(name: "chrono", scope: !109) | |
!522 = !DINamespace(name: "chrono_literals", scope: !523, exportSymbols: true) | |
!523 = !DINamespace(name: "literals", scope: !109, exportSymbols: true) | |
!524 = !DIFile(filename: "/fast/fs/llvm3/build/bin/../include/c++/v1/chrono", directory: "") | |
!525 = !DIImportedEntity(tag: DW_TAG_imported_module, scope: !0, entity: !10, file: !1, line: 3) | |
!526 = !{i32 7, !"Dwarf Version", i32 4} | |
!527 = !{i32 2, !"Debug Info Version", i32 3} | |
!528 = !{i32 1, !"wchar_size", i32 4} | |
!529 = !{!"clang version 12.0.0 (git@github.com:llvm/llvm-project 0a702b967927d888bd222806252783359fc74d57)"} | |
!530 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 23, type: !531, scopeLine: 23, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2) | |
!531 = !DISubroutineType(types: !3) | |
!532 = !DILocation(line: 23, column: 12, scope: !530) | |
!533 = !DILocation(line: 23, column: 6, scope: !530) | |
!534 = !DILocalVariable(name: "__coro_gro", scope: !530, file: !1, line: 23, type: !4) | |
!535 = !DILocalVariable(name: "__promise", scope: !530, file: !1, line: 23, type: !536) | |
!536 = !DIDerivedType(tag: DW_TAG_typedef, name: "promise_type", scope: !537, file: !8, line: 79, baseType: !63) | |
!537 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "__coroutine_traits_sfinae<coro, void>", scope: !9, file: !8, line: 76, size: 8, flags: DIFlagTypePassByValue, elements: !2, templateParams: !538, identifier: "_ZTSNSt12experimental13coroutines_v125__coroutine_traits_sfinaeI4corovEE") | |
!538 = !{!539, !540} | |
!539 = !DITemplateTypeParameter(name: "_Tp", type: !4) | |
!540 = !DITemplateTypeParameter(type: null, defaulted: true) | |
!541 = !DILocation(line: 33, column: 1, scope: !530) | |
!542 = !DILocalVariable(name: "x", scope: !543, file: !1, line: 24, type: !544) | |
!543 = distinct !DILexicalBlock(scope: !530, file: !1, line: 23, column: 12) | |
!544 = !DICompositeType(tag: DW_TAG_array_type, baseType: !152, size: 320, elements: !545) | |
!545 = !{!546} | |
!546 = !DISubrange(count: 10) | |
!547 = !DILocation(line: 24, column: 7, scope: !543) | |
!548 = !DILocalVariable(name: "a", scope: !543, file: !1, line: 25, type: !152) | |
!549 = !DILocation(line: 25, column: 7, scope: !543) | |
!550 = !DILocation(line: 26, column: 12, scope: !543) | |
!551 = !DILocation(line: 26, column: 3, scope: !543) | |
!552 = !DILocation(line: 27, column: 4, scope: !543) | |
!553 = !DILocation(line: 28, column: 3, scope: !543) | |
!554 = !DILocation(line: 28, column: 8, scope: !543) | |
!555 = !DILocation(line: 29, column: 5, scope: !543) | |
!556 = !DILocation(line: 30, column: 3, scope: !543) | |
!557 = !DILocation(line: 30, column: 8, scope: !543) | |
!558 = !DILocation(line: 31, column: 5, scope: !543) | |
!559 = !DILocation(line: 32, column: 3, scope: !543) | |
!560 = !DILocation(line: 32, column: 8, scope: !543) | |
!561 = distinct !DISubprogram(name: "get_return_object", linkageName: "_ZN4coro12promise_type17get_return_objectEv", scope: !63, file: !1, line: 7, type: !66, scopeLine: 7, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !65, retainedNodes: !2) | |
!562 = !DILocalVariable(name: "this", arg: 1, scope: !561, type: !563, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!563 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !63, size: 64) | |
!564 = !DILocation(line: 0, scope: !561) | |
!565 = !DILocalVariable(name: "handle", scope: !561, file: !1, line: 8, type: !7) | |
!566 = !DILocation(line: 8, column: 12, scope: !561) | |
!567 = !DILocation(line: 8, column: 21, scope: !561) | |
!568 = !DILocation(line: 9, column: 19, scope: !561) | |
!569 = !DILocation(line: 9, column: 14, scope: !561) | |
!570 = !DILocation(line: 9, column: 7, scope: !561) | |
!571 = distinct !DISubprogram(name: "initial_suspend", linkageName: "_ZN4coro12promise_type15initial_suspendEv", scope: !63, file: !1, line: 11, type: !70, scopeLine: 11, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !69, retainedNodes: !2) | |
!572 = !DILocalVariable(name: "this", arg: 1, scope: !571, type: !563, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!573 = !DILocation(line: 0, scope: !571) | |
!574 = !DILocation(line: 11, column: 39, scope: !571) | |
!575 = distinct !DISubprogram(name: "await_ready", linkageName: "_ZNKSt12experimental13coroutines_v113suspend_never11await_readyEv", scope: !72, file: !8, line: 302, type: !75, scopeLine: 302, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !74, retainedNodes: !2) | |
!576 = !DILocalVariable(name: "this", arg: 1, scope: !575, type: !577, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!577 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !78, size: 64) | |
!578 = !DILocation(line: 0, scope: !575) | |
!579 = !DILocation(line: 302, column: 40, scope: !575) | |
!580 = distinct !DISubprogram(name: "await_suspend", linkageName: "_ZNKSt12experimental13coroutines_v113suspend_never13await_suspendENS0_16coroutine_handleIvEE", scope: !72, file: !8, line: 304, type: !80, scopeLine: 304, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !79, retainedNodes: !2) | |
!581 = !DILocalVariable(name: "this", arg: 1, scope: !580, type: !577, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!582 = !DILocation(line: 0, scope: !580) | |
!583 = !DILocalVariable(arg: 2, scope: !580, file: !8, line: 304, type: !14) | |
!584 = !DILocation(line: 304, column: 40, scope: !580) | |
!585 = !DILocation(line: 304, column: 59, scope: !580) | |
!586 = distinct !DISubprogram(name: "from_address", linkageName: "_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_addressEPv", scope: !7, file: !8, line: 220, type: !93, scopeLine: 220, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !92, retainedNodes: !2) | |
!587 = !DILocalVariable(name: "__addr", arg: 1, scope: !586, file: !8, line: 220, type: !17) | |
!588 = !DILocation(line: 220, column: 48, scope: !586) | |
!589 = !DILocalVariable(name: "__tmp", scope: !586, file: !8, line: 221, type: !7) | |
!590 = !DILocation(line: 221, column: 26, scope: !586) | |
!591 = !DILocation(line: 222, column: 27, scope: !586) | |
!592 = !DILocation(line: 222, column: 9, scope: !586) | |
!593 = !DILocation(line: 222, column: 15, scope: !586) | |
!594 = !DILocation(line: 222, column: 25, scope: !586) | |
!595 = !DILocation(line: 223, column: 9, scope: !586) | |
!596 = distinct !DISubprogram(name: "await_resume", linkageName: "_ZNKSt12experimental13coroutines_v113suspend_never12await_resumeEv", scope: !72, file: !8, line: 306, type: !83, scopeLine: 306, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !82, retainedNodes: !2) | |
!597 = !DILocalVariable(name: "this", arg: 1, scope: !596, type: !577, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!598 = !DILocation(line: 0, scope: !596) | |
!599 = !DILocation(line: 306, column: 40, scope: !596) | |
!600 = distinct !DISubprogram(name: "await_ready", linkageName: "_ZNKSt12experimental13coroutines_v114suspend_always11await_readyEv", scope: !601, file: !8, line: 311, type: !604, scopeLine: 311, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !603, retainedNodes: !2) | |
!601 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "suspend_always", scope: !9, file: !8, line: 309, size: 8, flags: DIFlagTypePassByValue, elements: !602, identifier: "_ZTSNSt12experimental13coroutines_v114suspend_alwaysE") | |
!602 = !{!603, !608, !611} | |
!603 = !DISubprogram(name: "await_ready", linkageName: "_ZNKSt12experimental13coroutines_v114suspend_always11await_readyEv", scope: !601, file: !8, line: 311, type: !604, scopeLine: 311, flags: DIFlagPrototyped, spFlags: 0) | |
!604 = !DISubroutineType(types: !605) | |
!605 = !{!40, !606} | |
!606 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !607, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!607 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !601) | |
!608 = !DISubprogram(name: "await_suspend", linkageName: "_ZNKSt12experimental13coroutines_v114suspend_always13await_suspendENS0_16coroutine_handleIvEE", scope: !601, file: !8, line: 313, type: !609, scopeLine: 313, flags: DIFlagPrototyped, spFlags: 0) | |
!609 = !DISubroutineType(types: !610) | |
!610 = !{null, !606, !14} | |
!611 = !DISubprogram(name: "await_resume", linkageName: "_ZNKSt12experimental13coroutines_v114suspend_always12await_resumeEv", scope: !601, file: !8, line: 315, type: !612, scopeLine: 315, flags: DIFlagPrototyped, spFlags: 0) | |
!612 = !DISubroutineType(types: !613) | |
!613 = !{null, !606} | |
!614 = !DILocalVariable(name: "this", arg: 1, scope: !600, type: !615, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!615 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !607, size: 64) | |
!616 = !DILocation(line: 0, scope: !600) | |
!617 = !DILocation(line: 311, column: 40, scope: !600) | |
!618 = distinct !DISubprogram(name: "await_suspend", linkageName: "_ZNKSt12experimental13coroutines_v114suspend_always13await_suspendENS0_16coroutine_handleIvEE", scope: !601, file: !8, line: 313, type: !609, scopeLine: 313, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !608, retainedNodes: !2) | |
!619 = !DILocalVariable(name: "this", arg: 1, scope: !618, type: !615, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!620 = !DILocation(line: 0, scope: !618) | |
!621 = !DILocalVariable(arg: 2, scope: !618, file: !8, line: 313, type: !14) | |
!622 = !DILocation(line: 313, column: 40, scope: !618) | |
!623 = !DILocation(line: 313, column: 59, scope: !618) | |
!624 = distinct !DISubprogram(name: "await_resume", linkageName: "_ZNKSt12experimental13coroutines_v114suspend_always12await_resumeEv", scope: !601, file: !8, line: 315, type: !612, scopeLine: 315, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !611, retainedNodes: !2) | |
!625 = !DILocalVariable(name: "this", arg: 1, scope: !624, type: !615, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!626 = !DILocation(line: 0, scope: !624) | |
!627 = !DILocation(line: 315, column: 40, scope: !624) | |
!628 = distinct !DISubprogram(name: "return_void", linkageName: "_ZN4coro12promise_type11return_voidEv", scope: !63, file: !1, line: 13, type: !87, scopeLine: 13, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !86, retainedNodes: !2) | |
!629 = !DILocalVariable(name: "this", arg: 1, scope: !628, type: !563, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!630 = !DILocation(line: 0, scope: !628) | |
!631 = !DILocation(line: 13, column: 25, scope: !628) | |
!632 = distinct !DISubprogram(name: "unhandled_exception", linkageName: "_ZN4coro12promise_type19unhandled_exceptionEv", scope: !63, file: !1, line: 14, type: !87, scopeLine: 14, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !89, retainedNodes: !2) | |
!633 = !DILocalVariable(name: "this", arg: 1, scope: !632, type: !563, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!634 = !DILocation(line: 0, scope: !632) | |
!635 = !DILocation(line: 14, column: 33, scope: !632) | |
!636 = distinct !DISubprogram(name: "final_suspend", linkageName: "_ZN4coro12promise_type13final_suspendEv", scope: !63, file: !1, line: 12, type: !70, scopeLine: 12, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !85, retainedNodes: !2) | |
!637 = !DILocalVariable(name: "this", arg: 1, scope: !636, type: !563, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!638 = !DILocation(line: 0, scope: !636) | |
!639 = !DILocation(line: 12, column: 46, scope: !636) | |
!640 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 36, type: !198, scopeLine: 36, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2) | |
!641 = !DILocalVariable(name: "c", scope: !640, file: !1, line: 37, type: !4) | |
!642 = !DILocation(line: 37, column: 8, scope: !640) | |
!643 = !DILocation(line: 37, column: 12, scope: !640) | |
!644 = !DILocation(line: 38, column: 5, scope: !640) | |
!645 = !DILocation(line: 38, column: 3, scope: !640) | |
!646 = !DILocation(line: 38, column: 12, scope: !640) | |
!647 = !DILocation(line: 39, column: 5, scope: !640) | |
!648 = !DILocation(line: 39, column: 3, scope: !640) | |
!649 = !DILocation(line: 39, column: 12, scope: !640) | |
!650 = !DILocation(line: 40, column: 1, scope: !640) | |
!651 = distinct !DISubprogram(name: "resume", linkageName: "_ZNSt12experimental13coroutines_v116coroutine_handleIvE6resumeEv", scope: !14, file: !8, line: 116, type: !19, scopeLine: 116, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !42, retainedNodes: !2) | |
!652 = !DILocalVariable(name: "this", arg: 1, scope: !651, type: !653, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!653 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64) | |
!654 = !DILocation(line: 0, scope: !651) | |
!655 = !DILocation(line: 121, column: 29, scope: !651) | |
!656 = !DILocation(line: 121, column: 7, scope: !651) | |
!657 = !DILocation(line: 122, column: 5, scope: !651) | |
!658 = distinct !DISubprogram(name: "from_promise", linkageName: "_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEE12from_promiseERS3_", scope: !7, file: !8, line: 250, type: !99, scopeLine: 250, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !98, retainedNodes: !2) | |
!659 = !DILocalVariable(name: "__promise", arg: 1, scope: !658, file: !8, line: 250, type: !62) | |
!660 = !DILocation(line: 250, column: 52, scope: !658) | |
!661 = !DILocalVariable(name: "__tmp", scope: !658, file: !8, line: 252, type: !7) | |
!662 = !DILocation(line: 252, column: 26, scope: !658) | |
!663 = !DILocation(line: 254, column: 55, scope: !658) | |
!664 = !DILocation(line: 254, column: 13, scope: !658) | |
!665 = !DILocation(line: 253, column: 27, scope: !658) | |
!666 = !DILocation(line: 253, column: 9, scope: !658) | |
!667 = !DILocation(line: 253, column: 15, scope: !658) | |
!668 = !DILocation(line: 253, column: 25, scope: !658) | |
!669 = !DILocation(line: 256, column: 9, scope: !658) | |
!670 = distinct !DISubprogram(name: "coro", linkageName: "_ZN4coroC2ENSt12experimental13coroutines_v116coroutine_handleINS_12promise_typeEEE", scope: !4, file: !1, line: 18, type: !104, scopeLine: 19, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !103, retainedNodes: !2) | |
!671 = !DILocalVariable(name: "this", arg: 1, scope: !670, type: !672, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!672 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) | |
!673 = !DILocation(line: 0, scope: !670) | |
!674 = !DILocalVariable(name: "handle", arg: 2, scope: !670, file: !1, line: 18, type: !7) | |
!675 = !DILocation(line: 18, column: 39, scope: !670) | |
!676 = !DILocation(line: 19, column: 9, scope: !670) | |
!677 = !DILocation(line: 19, column: 25, scope: !670) | |
!678 = distinct !DISubprogram(name: "coroutine_handle", linkageName: "_ZNSt12experimental13coroutines_v116coroutine_handleIN4coro12promise_typeEEC2Ev", scope: !7, file: !8, line: 196, type: !679, scopeLine: 196, flags: DIFlagArtificial | DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !681, retainedNodes: !2) | |
!679 = !DISubroutineType(types: !680) | |
!680 = !{null, !58} | |
!681 = !DISubprogram(name: "coroutine_handle", scope: !7, type: !679, flags: DIFlagPublic | DIFlagArtificial | DIFlagPrototyped, spFlags: 0) | |
!682 = !DILocalVariable(name: "this", arg: 1, scope: !678, type: !683, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!683 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64) | |
!684 = !DILocation(line: 0, scope: !678) | |
!685 = !DILocation(line: 196, column: 28, scope: !678) | |
!686 = distinct !DISubprogram(name: "addressof<coro::promise_type>", linkageName: "_ZNSt3__19addressofIN4coro12promise_typeEEEPT_RS3_", scope: !109, file: !687, line: 605, type: !688, scopeLine: 606, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, templateParams: !690, retainedNodes: !2) | |
!687 = !DIFile(filename: "/fast/fs/llvm3/build/bin/../include/c++/v1/type_traits", directory: "") | |
!688 = !DISubroutineType(types: !689) | |
!689 = !{!563, !62} | |
!690 = !{!691} | |
!691 = !DITemplateTypeParameter(name: "_Tp", type: !63) | |
!692 = !DILocalVariable(name: "__x", arg: 1, scope: !686, file: !687, line: 605, type: !62) | |
!693 = !DILocation(line: 605, column: 16, scope: !686) | |
!694 = !DILocation(line: 607, column: 32, scope: !686) | |
!695 = !DILocation(line: 607, column: 5, scope: !686) | |
!696 = distinct !DISubprogram(name: "coroutine_handle", linkageName: "_ZNSt12experimental13coroutines_v116coroutine_handleIvEC2Ev", scope: !14, file: !8, line: 95, type: !19, scopeLine: 95, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, declaration: !18, retainedNodes: !2) | |
!697 = !DILocalVariable(name: "this", arg: 1, scope: !696, type: !653, flags: DIFlagArtificial | DIFlagObjectPointer) | |
!698 = !DILocation(line: 0, scope: !696) | |
!699 = !DILocation(line: 95, column: 54, scope: !696) | |
!700 = !DILocation(line: 95, column: 74, scope: !696) | |
!701 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 23, type: !531, scopeLine: 23, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2) | |
!702 = !DILocation(line: 23, column: 12, scope: !701) | |
!703 = !DILocation(line: 23, column: 6, scope: !701) | |
!704 = !DILocalVariable(name: "x", scope: !705, file: !1, line: 24, type: !544) | |
!705 = distinct !DILexicalBlock(scope: !701, file: !1, line: 23, column: 12) | |
!706 = !DILocation(line: 24, column: 7, scope: !705) | |
!707 = !DILocalVariable(name: "a", scope: !705, file: !1, line: 25, type: !152) | |
!708 = !DILocation(line: 25, column: 7, scope: !705) | |
!709 = !DILocation(line: 26, column: 12, scope: !705) | |
!710 = !DILocation(line: 26, column: 3, scope: !705) | |
!711 = !DILocation(line: 27, column: 4, scope: !705) | |
!712 = !DILocation(line: 28, column: 3, scope: !705) | |
!713 = !DILocation(line: 28, column: 8, scope: !705) | |
!714 = !DILocation(line: 29, column: 5, scope: !705) | |
!715 = !DILocation(line: 30, column: 3, scope: !705) | |
!716 = !DILocation(line: 30, column: 8, scope: !705) | |
!717 = !DILocation(line: 31, column: 5, scope: !705) | |
!718 = !DILocation(line: 32, column: 3, scope: !705) | |
!719 = !DILocation(line: 32, column: 8, scope: !705) | |
!720 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 23, type: !531, scopeLine: 23, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2) | |
!721 = !DILocation(line: 23, column: 12, scope: !720) | |
!722 = !DILocation(line: 23, column: 6, scope: !720) | |
!723 = !DILocalVariable(name: "x", scope: !724, file: !1, line: 24, type: !544) | |
!724 = distinct !DILexicalBlock(scope: !720, file: !1, line: 23, column: 12) | |
!725 = !DILocation(line: 24, column: 7, scope: !724) | |
!726 = !DILocalVariable(name: "a", scope: !724, file: !1, line: 25, type: !152) | |
!727 = !DILocation(line: 25, column: 7, scope: !724) | |
!728 = !DILocation(line: 26, column: 12, scope: !724) | |
!729 = !DILocation(line: 26, column: 3, scope: !724) | |
!730 = !DILocation(line: 27, column: 4, scope: !724) | |
!731 = !DILocation(line: 28, column: 3, scope: !724) | |
!732 = !DILocation(line: 28, column: 8, scope: !724) | |
!733 = !DILocation(line: 29, column: 5, scope: !724) | |
!734 = !DILocation(line: 30, column: 3, scope: !724) | |
!735 = !DILocation(line: 30, column: 8, scope: !724) | |
!736 = !DILocation(line: 31, column: 5, scope: !724) | |
!737 = !DILocation(line: 32, column: 3, scope: !724) | |
!738 = !DILocation(line: 32, column: 8, scope: !724) | |
!739 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 23, type: !531, scopeLine: 23, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2) | |
!740 = !DILocation(line: 23, column: 12, scope: !739) | |
!741 = !DILocation(line: 23, column: 6, scope: !739) | |
!742 = !DILocalVariable(name: "x", scope: !743, file: !1, line: 24, type: !544) | |
!743 = distinct !DILexicalBlock(scope: !739, file: !1, line: 23, column: 12) | |
!744 = !DILocation(line: 24, column: 7, scope: !743) | |
!745 = !DILocalVariable(name: "a", scope: !743, file: !1, line: 25, type: !152) | |
!746 = !DILocation(line: 25, column: 7, scope: !743) | |
!747 = !DILocation(line: 26, column: 12, scope: !743) | |
!748 = !DILocation(line: 26, column: 3, scope: !743) | |
!749 = !DILocation(line: 27, column: 4, scope: !743) | |
!750 = !DILocation(line: 28, column: 3, scope: !743) | |
!751 = !DILocation(line: 28, column: 8, scope: !743) | |
!752 = !DILocation(line: 29, column: 5, scope: !743) | |
!753 = !DILocation(line: 30, column: 3, scope: !743) | |
!754 = !DILocation(line: 30, column: 8, scope: !743) | |
!755 = !DILocation(line: 31, column: 5, scope: !743) | |
!756 = !DILocation(line: 32, column: 3, scope: !743) | |
!757 = !DILocation(line: 32, column: 8, scope: !743) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <experimental/coroutine> | |
using namespace std::experimental; | |
struct coro { | |
struct promise_type { | |
coro get_return_object() { | |
auto handle = coroutine_handle<promise_type>::from_promise(*this); | |
return coro(handle); | |
} | |
suspend_never initial_suspend() { return {}; } | |
suspend_never final_suspend() noexcept { return {}; } | |
void return_void() {} | |
void unhandled_exception() {} | |
}; | |
coroutine_handle<promise_type> handle; | |
coro(coroutine_handle<promise_type> handle) | |
: handle(handle) {} | |
}; | |
// Complete code here: https://gist.github.com/bcardosolopes/a992950bdfc66ab4ce6dc0c75920f4ef | |
coro foo() { | |
int x[10] = {}; | |
int a = 3; | |
co_await std::experimental::suspend_always(); | |
a++; | |
x[0] = 1; | |
a += 2; | |
x[1] = 2; | |
a += 3; | |
x[2] = 3; | |
} | |
int main() { | |
auto c = foo(); | |
c.handle.resume(); | |
c.handle.resume(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment