mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22:20 +02:00
Linux fixes
This commit is contained in:
parent
cdc030ab30
commit
52a441f486
5 changed files with 33 additions and 42 deletions
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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()))
|
||||||
{
|
{
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue