[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