Further changes to compile using MSVC.

This commit is contained in:
kai 2012-05-23 17:36:26 +02:00
parent bb2ca5b4f5
commit 48f8ffeb0b
6 changed files with 26 additions and 9 deletions

View file

@ -37,13 +37,14 @@
#if !IN_LLVM
#include "lib.h"
#include "json.h"
#endif
#if WINDOWS_SEH
#include <windows.h>
long __cdecl __ehfilter(LPEXCEPTION_POINTERS ep);
#endif
#if !IN_LLVM
int response_expand(int *pargc, char ***pargv);
void browse(const char *url);
void getenv_setargv(const char *envvar, int *pargc, char** *pargv);
@ -1617,3 +1618,19 @@ Ldone:
*pargc = argc;
*pargv = argv->tdata();
}
#if WINDOWS_SEH
long __cdecl __ehfilter(LPEXCEPTION_POINTERS ep)
{
//printf("%x\n", ep->ExceptionRecord->ExceptionCode);
if (ep->ExceptionRecord->ExceptionCode == STATUS_STACK_OVERFLOW)
{
#if 1 //ndef DEBUG
return EXCEPTION_EXECUTE_HANDLER;
#endif
}
return EXCEPTION_CONTINUE_SEARCH;
}
#endif

View file

@ -44,7 +44,7 @@ LLType* DtoComplexBaseType(Type* t)
//////////////////////////////////////////////////////////////////////////////////////////
LLConstant* DtoConstComplex(Type* _ty, long double re, long double im)
LLConstant* DtoConstComplex(Type* _ty, longdouble re, longdouble im)
{
TY ty = _ty->toBasetype()->ty;

View file

@ -4,7 +4,7 @@
llvm::StructType* DtoComplexType(Type* t);
LLType* DtoComplexBaseType(Type* t);
LLConstant* DtoConstComplex(Type* t, long double re, long double im);
LLConstant* DtoConstComplex(Type* t, longdouble re, longdouble im);
LLConstant* DtoComplexShuffleMask(unsigned a, unsigned b);

View file

@ -412,11 +412,11 @@ DValue* ComplexExp::toElem(IRState* p)
if (c->isNullValue()) {
Type* t = type->toBasetype();
if (t->ty == Tcomplex32)
c = DtoConstFP(Type::tfloat32, 0);
c = DtoConstFP(Type::tfloat32, ldouble(0));
else if (t->ty == Tcomplex64)
c = DtoConstFP(Type::tfloat64, 0);
c = DtoConstFP(Type::tfloat64, ldouble(0));
else if (t->ty == Tcomplex80)
c = DtoConstFP(Type::tfloat80, 0);
c = DtoConstFP(Type::tfloat80, ldouble(0));
else
assert(0);
res = DtoAggrPair(DtoType(type), c, c);
@ -1879,7 +1879,7 @@ DValue* PostExp::toElem(IRState* p)
else if (e1type->isfloating())
{
assert(e2type->isfloating());
LLValue* one = DtoConstFP(e1type, 1.0);
LLValue* one = DtoConstFP(e1type, ldouble(1.0));
if (op == TOKplusplus) {
post = llvm::BinaryOperator::CreateFAdd(val,one,"tmp",p->scopebb());
}

View file

@ -578,7 +578,7 @@ llvm::ConstantInt* DtoConstUbyte(unsigned char i)
return LLConstantInt::get(LLType::getInt8Ty(gIR->context()), i, false);
}
LLConstant* DtoConstFP(Type* t, long double value)
LLConstant* DtoConstFP(Type* t, longdouble value)
{
LLType* llty = DtoType(t);
assert(llty->isFloatingPointTy());

View file

@ -55,7 +55,7 @@ LLConstantInt* DtoConstSize_t(uint64_t);
LLConstantInt* DtoConstUint(unsigned i);
LLConstantInt* DtoConstInt(int i);
LLConstantInt* DtoConstUbyte(unsigned char i);
LLConstant* DtoConstFP(Type* t, long double value);
LLConstant* DtoConstFP(Type* t, longdouble value);
LLConstant* DtoConstString(const char*);
LLConstant* DtoConstStringPtr(const char* str, const char* section = 0);