2
0
Brian Fiete 4 жил өмнө
parent
commit
52a441f486

+ 5 - 1
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 <typename T>
 	void Mixin(const T& val)
 	{

+ 23 - 22
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_pointer<decltype(castedInst->member3)>::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_pointer<decltype(castedInst->member3)>::value) && (castedInst->member3 != NULL)) \
 			{ \
 				str += ", "; \
-				dc.ToString(str, castedInst->##member3); \
-				if (castedInst->##member4 != NULL) \
+				dc.ToString(str, castedInst->member3); \
+				if ((std::is_pointer<decltype(castedInst->member4)>::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<BeFunction*>());
+	std::unordered_set<BeFunction*> newFuncSet;
+	_DoInlining(blockIdx, NULL, newFuncSet);
 
 	/*if ((func->mDbgFunction != NULL) && (prevDbgVars != (int)func->mDbgFunction->mVariables.size()))
 	{

+ 4 - 0
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.

+ 1 - 16
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;

+ 0 - 3
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<BfType*> mDeclReentrySet;