[LLVMbugs] [Bug 419] NEW: JIT Needs To Support Arbitrary Function Call

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Sat Aug 14 18:12:02 PDT 2004


http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=419

           Summary: JIT Needs To Support Arbitrary Function Call
           Product: libraries
           Version: 1.0
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Generic Execution Engine Support
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: rspencer at x10sys.com


Currently, the JIT class supports calling of only two function prototypes:
  void func(int)
  int func(int, char**)

This is a known limitation of the current implementation but a more generic
solution could be developed so that any function could be invoked. There is a
FIXME in llvm::JIT::runFunction that reads:

  // FIXME: This code should handle a couple of common cases efficiently, but
  // it should also implement the general case by code-gening a new anonymous
  // nullary function to call.

There are several different ways to fix the problem, as hinted at by the
comment.  In the short term, adding something like this:

} else if (ArgValues.empty()) {
  void (*PF)() = (void(*)())getPointerToFunction(F);
  assert(PF && "Pointer to fn's code was null after getPointerToFunction");
  PF();

before the "else" case, should fix the issue.  That code is basically only smart
enough to run 'main', but could be enhanced by someone interested in it to
handle the general case.



------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.




More information about the llvm-bugs mailing list