aboutsummaryrefslogtreecommitdiff
path: root/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2001-10-27 08:28:11 +0000
committerChris Lattner <sabre@nondot.org>2001-10-27 08:28:11 +0000
commitc25931673092b1dae646aeeac1d18f75d9640ec7 (patch)
tree1ceb094a137e6c7f064f3d46c5a208f828ecd712 /lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp
parent204eec3f57aedd703fb73db78ac2b4087caf9f07 (diff)
* 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
Diffstat (limited to 'lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp')
-rw-r--r--lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp22
1 files changed, 22 insertions, 0 deletions
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 <map>
#include <dlfcn.h>
#include <link.h>
+#include <math.h>
typedef GenericValue (*ExFunc)(MethodType *, const vector<GenericValue> &);
static map<const Method *, ExFunc> Functions;
@@ -170,4 +171,25 @@ GenericValue lle_Vi_exit(MethodType *M, const vector<GenericValue> &Args) {
return GenericValue();
}
+// void *malloc(uint)
+GenericValue lle_PI_malloc(MethodType *M, const vector<GenericValue> &Args) {
+ GenericValue GV;
+ GV.LongVal = (uint64_t)malloc(Args[0].UIntVal);
+ return GV;
+}
+
+// void free(void *)
+GenericValue lle_VP_free(MethodType *M, const vector<GenericValue> &Args) {
+ free((void*)Args[0].LongVal);
+ return GenericValue();
+}
+
+// double pow(double, double)
+GenericValue lle_DDD_pow(MethodType *M, const vector<GenericValue> &Args) {
+ GenericValue GV;
+ GV.DoubleVal = pow(GV.DoubleVal, GV.DoubleVal);
+ return GV;
+}
+
+
} // End extern "C"