From c25931673092b1dae646aeeac1d18f75d9640ec7 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 27 Oct 2001 08:28:11 +0000 Subject: * Make pointer values work better by treating them uniformly as 64 bit values. This causes code that is generated by gcc to work better. * Implement mul & div * Export malloc, free, and pow * add strtol, atoi, and atol to the runtime library git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@988 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../Interpreter/ExternalFunctions.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp') diff --git a/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp b/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp index 973cca6842..662abc2291 100644 --- a/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp +++ b/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp @@ -14,6 +14,7 @@ #include #include #include +#include typedef GenericValue (*ExFunc)(MethodType *, const vector &); static map Functions; @@ -170,4 +171,25 @@ GenericValue lle_Vi_exit(MethodType *M, const vector &Args) { return GenericValue(); } +// void *malloc(uint) +GenericValue lle_PI_malloc(MethodType *M, const vector &Args) { + GenericValue GV; + GV.LongVal = (uint64_t)malloc(Args[0].UIntVal); + return GV; +} + +// void free(void *) +GenericValue lle_VP_free(MethodType *M, const vector &Args) { + free((void*)Args[0].LongVal); + return GenericValue(); +} + +// double pow(double, double) +GenericValue lle_DDD_pow(MethodType *M, const vector &Args) { + GenericValue GV; + GV.DoubleVal = pow(GV.DoubleVal, GV.DoubleVal); + return GV; +} + + } // End extern "C" -- cgit v1.2.3-18-g5258