[LLVMdev] Order of code generation

Sanjoy Das sanjoy at playingwithpointers.com
Fri Aug 5 23:40:55 PDT 2011


Hi!

I have a DAG (attached), which, according to me, should result in the
code for coroutine_make be generated _before_ the ret.

However, it seems that the corresponding EmitInstrWithCustomInserter is
being called /after/ the RET instruction has already been emitted.

The LLVM code I'm trying to compile is this (coroutine_make is an
intrinsic I've added):

declare i32 @llvm.coroutine_size()
declare void @llvm.coroutine_make(i64 *, i64 *, i8 *, i32)

define i64 * @foo() {
    %a = call i32 @llvm.coroutine_size()
    %b = alloca i64, i32 %a
    %func = bitcast i64* () * @foo to i64 *
    call void @llvm.coroutine_make(i64 * %b, i64 * %func, i8 * null, i32 20)
    ret i64 *%b
}

What am I doing wrong? How do I fix this?

Thanks!

-- 
Sanjoy Das
http://playingwithpointers.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dag.foo.dot.ps
Type: application/postscript
Size: 30784 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110806/11524b26/attachment.ps>


More information about the llvm-dev mailing list