From 52a441f48650058952586c3d9b4c1d9fea6ec5b4 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Mon, 14 Dec 2020 09:24:45 -0800 Subject: [PATCH] Linux fixes --- BeefySysLib/util/Hash.h | 6 +++- IDEHelper/Backend/BeModule.cpp | 45 +++++++++++++++--------------- IDEHelper/CMakeLists.txt | 4 +++ IDEHelper/Compiler/BfIRBuilder.cpp | 17 +---------- IDEHelper/Compiler/BfIRBuilder.h | 3 -- 5 files changed, 33 insertions(+), 42 deletions(-) diff --git a/BeefySysLib/util/Hash.h b/BeefySysLib/util/Hash.h index 997c7f1d..0a22de32 100644 --- a/BeefySysLib/util/Hash.h +++ b/BeefySysLib/util/Hash.h @@ -129,7 +129,11 @@ public: ~HashContext(); 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 void Mixin(const T& val) { diff --git a/IDEHelper/Backend/BeModule.cpp b/IDEHelper/Backend/BeModule.cpp index cf2d9db7..b52fadbe 100644 --- a/IDEHelper/Backend/BeModule.cpp +++ b/IDEHelper/Backend/BeModule.cpp @@ -2101,74 +2101,74 @@ String BeModule::ToString(BeFunction* wantFunc) str += " {\n"; #define DISPLAY_INST0(typeName, name) \ - case typeName##::TypeId: { \ + case typeName::TypeId: { \ auto castedInst = (typeName*)inst; \ str += name; \ } \ break; #define DISPLAY_INST1(typeName, name, member1) \ - case typeName##::TypeId: { \ + case typeName::TypeId: { \ auto castedInst = (typeName*)inst; \ str += name; \ str += " "; \ - dc.ToString(str, castedInst->##member1); \ + dc.ToString(str, castedInst->member1); \ } \ break; #define DISPLAY_INST2(typeName, name, member1, member2) \ - case typeName##::TypeId: { \ + case typeName::TypeId: { \ auto castedInst = (typeName*)inst;\ str += name; \ str += " "; \ - dc.ToString(str, castedInst->##member1); \ + dc.ToString(str, castedInst->member1); \ str += ", "; \ - dc.ToString(str, castedInst->##member2); \ + dc.ToString(str, castedInst->member2); \ } \ break; #define DISPLAY_INST2_OPEN(typeName, name, member1, member2) \ - case typeName##::TypeId: { \ + case typeName::TypeId: { \ auto castedInst = (typeName*)inst;\ str += name; \ str += " "; \ - dc.ToString(str, castedInst->##member1); \ + dc.ToString(str, castedInst->member1); \ str += ", "; \ - dc.ToString(str, castedInst->##member2); \ + dc.ToString(str, castedInst->member2); \ } #define DISPLAY_INST3(typeName, name, member1, member2, member3) \ - case typeName##::TypeId: { \ + case typeName::TypeId: { \ auto castedInst = (typeName*)inst;\ str += name; \ str += " "; \ - dc.ToString(str, castedInst->##member1); \ + dc.ToString(str, castedInst->member1); \ str += ", "; \ - dc.ToString(str, castedInst->##member2); \ - if (castedInst->##member3 != NULL) \ + dc.ToString(str, castedInst->member2); \ + if ((std::is_pointermember3)>::value) && (castedInst->member3 != NULL)) \ { \ str += ", "; \ - str += dc.ToString(castedInst->##member3); \ + str += dc.ToString(castedInst->member3); \ } \ } \ break; #define DISPLAY_INST4(typeName, name, member1, member2, member3, member4) \ - case typeName##::TypeId: { \ + case typeName::TypeId: { \ auto castedInst = (typeName*)inst;\ str += name; \ str += " "; \ - dc.ToString(str, castedInst->##member1); \ + dc.ToString(str, castedInst->member1); \ str += ", "; \ - dc.ToString(str, castedInst->##member2); \ - if (castedInst->##member3 != NULL) \ + dc.ToString(str, castedInst->member2); \ + if ((std::is_pointermember3)>::value) && (castedInst->member3 != NULL)) \ { \ str += ", "; \ - dc.ToString(str, castedInst->##member3); \ - if (castedInst->##member4 != NULL) \ + dc.ToString(str, castedInst->member3); \ + if ((std::is_pointermember4)>::value) && (castedInst->member4 != NULL)) \ { \ str += ", "; \ - dc.ToString(str, castedInst->##member4); \ + dc.ToString(str, castedInst->member4); \ } \ } \ } \ @@ -2880,7 +2880,8 @@ void BeModule::DoInlining(BeFunction* func) if (func->mDbgFunction != NULL) prevDbgVars = (int)func->mDbgFunction->mVariables.size();*/ - _DoInlining(blockIdx, NULL, std::unordered_set()); + std::unordered_set newFuncSet; + _DoInlining(blockIdx, NULL, newFuncSet); /*if ((func->mDbgFunction != NULL) && (prevDbgVars != (int)func->mDbgFunction->mVariables.size())) { diff --git a/IDEHelper/CMakeLists.txt b/IDEHelper/CMakeLists.txt index 978f99d4..46a478e9 100644 --- a/IDEHelper/CMakeLists.txt +++ b/IDEHelper/CMakeLists.txt @@ -180,6 +180,10 @@ file(GLOB SRC_FILES Compiler/BfTargetTriple.cpp Compiler/CeMachine.cpp Compiler/MemReporter.cpp + + Backend/BeContext.cpp + Backend/BeIRCodeGen.cpp + Backend/BeModule.cpp ) # Add library to build. diff --git a/IDEHelper/Compiler/BfIRBuilder.cpp b/IDEHelper/Compiler/BfIRBuilder.cpp index ea01830a..4bb61d26 100644 --- a/IDEHelper/Compiler/BfIRBuilder.cpp +++ b/IDEHelper/Compiler/BfIRBuilder.cpp @@ -10,10 +10,7 @@ #include "BfMangler.h" #include "BfCompiler.h" #include "BfSystem.h" - -#ifdef BF_PLATFORM_WINDOWS #include "../Backend/BeIRCodeGen.h" -#endif #pragma warning(push) #pragma warning(disable:4141) @@ -1177,9 +1174,7 @@ BfIRBuilder::BfIRBuilder(BfModule* module) : BfIRConstHolder(module) mHasDebugInfo = false; mHasDebugLineInfo = false; mIRCodeGen = NULL; -#ifdef BF_PLATFORM_WINDOWS mBeIRCodeGen = NULL; -#endif mBfIRCodeGen = NULL; mDbgVerifyCodeGen = false; @@ -1326,7 +1321,6 @@ String BfIRBuilder::ToString(BfIRValue irValue) strStream.flush(); return outStr; } -#ifdef BF_PLATFORM_WINDOWS else if (mBeIRCodeGen != NULL) { auto val = mBeIRCodeGen->GetBeValue(irValue.mId); @@ -1342,8 +1336,7 @@ String BfIRBuilder::ToString(BfIRValue irValue) } return str; - } -#endif + } else return "???"; } @@ -1388,7 +1381,6 @@ String BfIRBuilder::ToString(BfIRType irType) strStream.flush(); return outStr; } -#ifdef BF_PLATFORM_WINDOWS else if (mBeIRCodeGen != NULL) { BeType* beType; @@ -1412,7 +1404,6 @@ String BfIRBuilder::ToString(BfIRType irType) dc.ToString(str, beType); return str; } -#endif else if (irType.mKind == BfIRTypeData::TypeKind_TypeId) { return StrFormat("Type Id %d", irType.mId); @@ -1436,7 +1427,6 @@ String BfIRBuilder::ToString(BfIRFunction irFunc) strStream.flush(); return outStr; } -#ifdef BF_PLATFORM_WINDOWS else if (mBeIRCodeGen != NULL) { auto val = mBeIRCodeGen->GetBeValue(irFunc.mId); @@ -1448,7 +1438,6 @@ String BfIRBuilder::ToString(BfIRFunction irFunc) dc.ToString(str, val); return str; } -#endif else return "???"; } @@ -1483,7 +1472,6 @@ String BfIRBuilder::ToString(BfIRMDNode irMDNode) strStream.flush(); return outStr; } -#ifdef BF_PLATFORM_WINDOWS else if (mBeIRCodeGen != NULL) { auto md = mBeIRCodeGen->GetBeMetadata(irMDNode.mId); @@ -1494,7 +1482,6 @@ String BfIRBuilder::ToString(BfIRMDNode irMDNode) dc.ToString(str, md); return str; } -#endif else return "???"; } @@ -1603,7 +1590,6 @@ void BfIRBuilder::SetBackend(bool isBeefBackend) BF_ASSERT(mIRCodeGen == NULL); if (mDbgVerifyCodeGen) { -#ifdef BF_PLATFORM_WINDOWS if (isBeefBackend) { mBeIRCodeGen = new BeIRCodeGen(); @@ -1612,7 +1598,6 @@ void BfIRBuilder::SetBackend(bool isBeefBackend) mIRCodeGen = mBeIRCodeGen; } else -#endif { mBfIRCodeGen = new BfIRCodeGen(); mBfIRCodeGen->mStream = &mStream; diff --git a/IDEHelper/Compiler/BfIRBuilder.h b/IDEHelper/Compiler/BfIRBuilder.h index 102e2c8b..4482e838 100644 --- a/IDEHelper/Compiler/BfIRBuilder.h +++ b/IDEHelper/Compiler/BfIRBuilder.h @@ -933,10 +933,7 @@ public: BfIRCodeGenBase* mIRCodeGen; BfIRCodeGen* mBfIRCodeGen; - -#ifdef BF_PLATFORM_WINDOWS BeIRCodeGen* mBeIRCodeGen; -#endif #ifdef BFIR_RENTRY_CHECK std::set mDeclReentrySet;