* 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
This commit is contained in:
Chris Lattner
2001-10-27 08:28:11 +00:00
parent 204eec3f57
commit c259316730
7 changed files with 216 additions and 37 deletions

View File

@ -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"