<meta http-equiv="content-type" content="text/html; charset=utf-8">Ah, ok, so the call to builder.CreateCall needs to come after builder.SetInsertPoint for the wrapping function to work properly? I think I get it now.<br><br>

<div class="gmail_quote">On Thu, Aug 12, 2010 at 4:26 PM, Reid Kleckner <span dir="ltr"><<a href="mailto:reid.kleckner@gmail.com" target="_blank">reid.kleckner@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">You need to insert v into the basic block before the return.  Note<br>
that %calltmp is absent from the dump of the function.  The verifier<br>
is complaining because it found this pointer to %calltmp, but it<br>
didn't find the definition anywhere above its use.<br>
<font color="#888888"><br>
Reid<br>
</font><div><div></div><div><br>
On Thu, Aug 12, 2010 at 1:04 PM, alecbenzer <<a href="mailto:alecbenzer@gmail.com" target="_blank">alecbenzer@gmail.com</a>> wrote:<br>
><br>
> This has been driving me crazy. In order to JIT stuff in a simple REPL I'm<br>
> trying to wrap them in anonymous functions and then evaluate them (as per<br>
> recommendation of the Kaleidoscope guide).<br>
><br>
> With simple expressions it works fine. Like if I try and add 4 and 5, I get<br>
> this from the bare llvm::Value dump:<br>
><br>
> double 9.000000e+00<br>
><br>
> and this after it's wrapped in a function:<br>
><br>
> define double @0() {<br>
> entry:<br>
>  ret double 9.000000e+00<br>
> }<br>
><br>
><br>
> Then I define a function (ignores its one parameter and returns 4):<br>
><br>
> define double @test(double %x) {<br>
> entry:<br>
>  ret double 4.000000e+00<br>
> }<br>
><br>
> And get the dump from the llvm::Value call to it (passing 10 as the arg)<br>
><br>
> %calltmp = call double @test(double 1.000000e+01) ; <double> [#uses=1]<br>
><br>
> the dump from the call wrapped in a function:<br>
><br>
> define double @1() {<br>
> entry:<br>
>  ret double %calltmp<br>
> }<br>
><br>
> but when I try to verify the wrapping function, I get:<br>
><br>
> Instruction does not dominate all uses!<br>
>  %calltmp = call double @test(double 1.000000e+01) ; <double> [#uses=1]<br>
>  ret double %calltmp<br>
><br>
> The code that I'm using to create the wrapping functions:<br>
> <a href="http://pastebin.com/1Jzm8LgP" target="_blank">http://pastebin.com/1Jzm8LgP</a><br>
><br>
> What's going on here? From what I understand , "Instruction does not<br>
> dominate all uses!" has to do with using a variable before its definition? I<br>
> don't see where/how that's happening here.<br>
><br>
> --<br>
> View this message in context: <a href="http://old.nabble.com/Instruction-does-not-dominate-all-uses--tp29422733p29422733.html" target="_blank">http://old.nabble.com/Instruction-does-not-dominate-all-uses--tp29422733p29422733.html</a><br>



> Sent from the LLVM - Dev mailing list archive at Nabble.com.<br>
><br>
> _______________________________________________<br>
> LLVM Developers mailing list<br>
> <a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
><br>
</div></div></blockquote></div><br>