Hello all,<div><br></div><div>I am an user of LLVM Interpreter. The situation I encounter is as follows:<br><br>---------------------------------------------------------------------<br>main.c:<br><br>jmp_buf buf;<br>int main() {<br>
<br> if (setjmp(buf) == 0) {<br> ...<br> } else {<br> execute();<br> }<br><br>}<br>---------------------------------------------------------------------<br>execute.c:<br><br>execute() {<br> EE->runFunction(Func, Args); // EE is LLVM interpreter, function body <br>
// of Func is in Func.ll<br>}<br>---------------------------------------------------------------------<br>Func.ll:<br><br></div><div>def void @Func() {</div><div> . </div><div>
call void @foo() noreturn</div><div> .</div>
<div>}<br>---------------------------------------------------------------------<br>foo.c:<br><br>void foo() {<br> longjmp(buf, 1);<br>}<br>---------------------------------------------------------------------<br><br>If Interpreter execute a LLVM function Func, It may not update stack frame of <br>
interpreter simultaneously. An error may occur when recall interpreter::run().<br><br>Does anyone encounter the same problem and have any idea to solve it?<br><br>Thanks a lot<br></div>