1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 04:22:20 +02:00

Linux fixes

This commit is contained in:
Brian Fiete 2020-12-14 09:24:45 -08:00
parent cdc030ab30
commit 52a441f486
5 changed files with 33 additions and 42 deletions

View file

@ -130,6 +130,10 @@ public:
void Reset(); void Reset();
void Mixin(const void* data, int size); void Mixin(const void* data, int size);
void Mixin(int val)
{
Mixin((void*)&val, (int)sizeof(val));
}
template <typename T> template <typename T>
void Mixin(const T& val) void Mixin(const T& val)
{ {

View file

@ -2101,74 +2101,74 @@ String BeModule::ToString(BeFunction* wantFunc)
str += " {\n"; str += " {\n";
#define DISPLAY_INST0(typeName, name) \ #define DISPLAY_INST0(typeName, name) \
case typeName##::TypeId: { \ case typeName::TypeId: { \
auto castedInst = (typeName*)inst; \ auto castedInst = (typeName*)inst; \
str += name; \ str += name; \
} \ } \
break; break;
#define DISPLAY_INST1(typeName, name, member1) \ #define DISPLAY_INST1(typeName, name, member1) \
case typeName##::TypeId: { \ case typeName::TypeId: { \
auto castedInst = (typeName*)inst; \ auto castedInst = (typeName*)inst; \
str += name; \ str += name; \
str += " "; \ str += " "; \
dc.ToString(str, castedInst->##member1); \ dc.ToString(str, castedInst->member1); \
} \ } \
break; break;
#define DISPLAY_INST2(typeName, name, member1, member2) \ #define DISPLAY_INST2(typeName, name, member1, member2) \
case typeName##::TypeId: { \ case typeName::TypeId: { \
auto castedInst = (typeName*)inst;\ auto castedInst = (typeName*)inst;\
str += name; \ str += name; \
str += " "; \ str += " "; \
dc.ToString(str, castedInst->##member1); \ dc.ToString(str, castedInst->member1); \
str += ", "; \ str += ", "; \
dc.ToString(str, castedInst->##member2); \ dc.ToString(str, castedInst->member2); \
} \ } \
break; break;
#define DISPLAY_INST2_OPEN(typeName, name, member1, member2) \ #define DISPLAY_INST2_OPEN(typeName, name, member1, member2) \
case typeName##::TypeId: { \ case typeName::TypeId: { \
auto castedInst = (typeName*)inst;\ auto castedInst = (typeName*)inst;\
str += name; \ str += name; \
str += " "; \ str += " "; \
dc.ToString(str, castedInst->##member1); \ dc.ToString(str, castedInst->member1); \
str += ", "; \ str += ", "; \
dc.ToString(str, castedInst->##member2); \ dc.ToString(str, castedInst->member2); \
} }
#define DISPLAY_INST3(typeName, name, member1, member2, member3) \ #define DISPLAY_INST3(typeName, name, member1, member2, member3) \
case typeName##::TypeId: { \ case typeName::TypeId: { \
auto castedInst = (typeName*)inst;\ auto castedInst = (typeName*)inst;\
str += name; \ str += name; \
str += " "; \ str += " "; \
dc.ToString(str, castedInst->##member1); \ dc.ToString(str, castedInst->member1); \
str += ", "; \ str += ", "; \
dc.ToString(str, castedInst->##member2); \ dc.ToString(str, castedInst->member2); \
if (castedInst->##member3 != NULL) \ if ((std::is_pointer<decltype(castedInst->member3)>::value) && (castedInst->member3 != NULL)) \
{ \ { \
str += ", "; \ str += ", "; \
str += dc.ToString(castedInst->##member3); \ str += dc.ToString(castedInst->member3); \
} \ } \
} \ } \
break; break;
#define DISPLAY_INST4(typeName, name, member1, member2, member3, member4) \ #define DISPLAY_INST4(typeName, name, member1, member2, member3, member4) \
case typeName##::TypeId: { \ case typeName::TypeId: { \
auto castedInst = (typeName*)inst;\ auto castedInst = (typeName*)inst;\
str += name; \ str += name; \
str += " "; \ str += " "; \
dc.ToString(str, castedInst->##member1); \ dc.ToString(str, castedInst->member1); \
str += ", "; \ str += ", "; \
dc.ToString(str, castedInst->##member2); \ dc.ToString(str, castedInst->member2); \
if (castedInst->##member3 != NULL) \ if ((std::is_pointer<decltype(castedInst->member3)>::value) && (castedInst->member3 != NULL)) \
{ \ { \
str += ", "; \ str += ", "; \
dc.ToString(str, castedInst->##member3); \ dc.ToString(str, castedInst->member3); \
if (castedInst->##member4 != NULL) \ if ((std::is_pointer<decltype(castedInst->member4)>::value) && (castedInst->member4 != NULL)) \
{ \ { \
str += ", "; \ str += ", "; \
dc.ToString(str, castedInst->##member4); \ dc.ToString(str, castedInst->member4); \
} \ } \
} \ } \
} \ } \
@ -2880,7 +2880,8 @@ void BeModule::DoInlining(BeFunction* func)
if (func->mDbgFunction != NULL) if (func->mDbgFunction != NULL)
prevDbgVars = (int)func->mDbgFunction->mVariables.size();*/ prevDbgVars = (int)func->mDbgFunction->mVariables.size();*/
_DoInlining(blockIdx, NULL, std::unordered_set<BeFunction*>()); std::unordered_set<BeFunction*> newFuncSet;
_DoInlining(blockIdx, NULL, newFuncSet);
/*if ((func->mDbgFunction != NULL) && (prevDbgVars != (int)func->mDbgFunction->mVariables.size())) /*if ((func->mDbgFunction != NULL) && (prevDbgVars != (int)func->mDbgFunction->mVariables.size()))
{ {

View file

@ -180,6 +180,10 @@ file(GLOB SRC_FILES
Compiler/BfTargetTriple.cpp Compiler/BfTargetTriple.cpp
Compiler/CeMachine.cpp Compiler/CeMachine.cpp
Compiler/MemReporter.cpp Compiler/MemReporter.cpp
Backend/BeContext.cpp
Backend/BeIRCodeGen.cpp
Backend/BeModule.cpp
) )
# Add library to build. # Add library to build.

View file

@ -10,10 +10,7 @@
#include "BfMangler.h" #include "BfMangler.h"
#include "BfCompiler.h" #include "BfCompiler.h"
#include "BfSystem.h" #include "BfSystem.h"
#ifdef BF_PLATFORM_WINDOWS
#include "../Backend/BeIRCodeGen.h" #include "../Backend/BeIRCodeGen.h"
#endif
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:4141) #pragma warning(disable:4141)
@ -1177,9 +1174,7 @@ BfIRBuilder::BfIRBuilder(BfModule* module) : BfIRConstHolder(module)
mHasDebugInfo = false; mHasDebugInfo = false;
mHasDebugLineInfo = false; mHasDebugLineInfo = false;
mIRCodeGen = NULL; mIRCodeGen = NULL;
#ifdef BF_PLATFORM_WINDOWS
mBeIRCodeGen = NULL; mBeIRCodeGen = NULL;
#endif
mBfIRCodeGen = NULL; mBfIRCodeGen = NULL;
mDbgVerifyCodeGen = false; mDbgVerifyCodeGen = false;
@ -1326,7 +1321,6 @@ String BfIRBuilder::ToString(BfIRValue irValue)
strStream.flush(); strStream.flush();
return outStr; return outStr;
} }
#ifdef BF_PLATFORM_WINDOWS
else if (mBeIRCodeGen != NULL) else if (mBeIRCodeGen != NULL)
{ {
auto val = mBeIRCodeGen->GetBeValue(irValue.mId); auto val = mBeIRCodeGen->GetBeValue(irValue.mId);
@ -1343,7 +1337,6 @@ String BfIRBuilder::ToString(BfIRValue irValue)
return str; return str;
} }
#endif
else else
return "???"; return "???";
} }
@ -1388,7 +1381,6 @@ String BfIRBuilder::ToString(BfIRType irType)
strStream.flush(); strStream.flush();
return outStr; return outStr;
} }
#ifdef BF_PLATFORM_WINDOWS
else if (mBeIRCodeGen != NULL) else if (mBeIRCodeGen != NULL)
{ {
BeType* beType; BeType* beType;
@ -1412,7 +1404,6 @@ String BfIRBuilder::ToString(BfIRType irType)
dc.ToString(str, beType); dc.ToString(str, beType);
return str; return str;
} }
#endif
else if (irType.mKind == BfIRTypeData::TypeKind_TypeId) else if (irType.mKind == BfIRTypeData::TypeKind_TypeId)
{ {
return StrFormat("Type Id %d", irType.mId); return StrFormat("Type Id %d", irType.mId);
@ -1436,7 +1427,6 @@ String BfIRBuilder::ToString(BfIRFunction irFunc)
strStream.flush(); strStream.flush();
return outStr; return outStr;
} }
#ifdef BF_PLATFORM_WINDOWS
else if (mBeIRCodeGen != NULL) else if (mBeIRCodeGen != NULL)
{ {
auto val = mBeIRCodeGen->GetBeValue(irFunc.mId); auto val = mBeIRCodeGen->GetBeValue(irFunc.mId);
@ -1448,7 +1438,6 @@ String BfIRBuilder::ToString(BfIRFunction irFunc)
dc.ToString(str, val); dc.ToString(str, val);
return str; return str;
} }
#endif
else else
return "???"; return "???";
} }
@ -1483,7 +1472,6 @@ String BfIRBuilder::ToString(BfIRMDNode irMDNode)
strStream.flush(); strStream.flush();
return outStr; return outStr;
} }
#ifdef BF_PLATFORM_WINDOWS
else if (mBeIRCodeGen != NULL) else if (mBeIRCodeGen != NULL)
{ {
auto md = mBeIRCodeGen->GetBeMetadata(irMDNode.mId); auto md = mBeIRCodeGen->GetBeMetadata(irMDNode.mId);
@ -1494,7 +1482,6 @@ String BfIRBuilder::ToString(BfIRMDNode irMDNode)
dc.ToString(str, md); dc.ToString(str, md);
return str; return str;
} }
#endif
else else
return "???"; return "???";
} }
@ -1603,7 +1590,6 @@ void BfIRBuilder::SetBackend(bool isBeefBackend)
BF_ASSERT(mIRCodeGen == NULL); BF_ASSERT(mIRCodeGen == NULL);
if (mDbgVerifyCodeGen) if (mDbgVerifyCodeGen)
{ {
#ifdef BF_PLATFORM_WINDOWS
if (isBeefBackend) if (isBeefBackend)
{ {
mBeIRCodeGen = new BeIRCodeGen(); mBeIRCodeGen = new BeIRCodeGen();
@ -1612,7 +1598,6 @@ void BfIRBuilder::SetBackend(bool isBeefBackend)
mIRCodeGen = mBeIRCodeGen; mIRCodeGen = mBeIRCodeGen;
} }
else else
#endif
{ {
mBfIRCodeGen = new BfIRCodeGen(); mBfIRCodeGen = new BfIRCodeGen();
mBfIRCodeGen->mStream = &mStream; mBfIRCodeGen->mStream = &mStream;

View file

@ -933,10 +933,7 @@ public:
BfIRCodeGenBase* mIRCodeGen; BfIRCodeGenBase* mIRCodeGen;
BfIRCodeGen* mBfIRCodeGen; BfIRCodeGen* mBfIRCodeGen;
#ifdef BF_PLATFORM_WINDOWS
BeIRCodeGen* mBeIRCodeGen; BeIRCodeGen* mBeIRCodeGen;
#endif
#ifdef BFIR_RENTRY_CHECK #ifdef BFIR_RENTRY_CHECK
std::set<BfType*> mDeclReentrySet; std::set<BfType*> mDeclReentrySet;