Browse Source

Avoid showing line number when its not relevant

Brian Fiete 5 năm trước cách đây
mục cha
commit
e2428a11a3
3 tập tin đã thay đổi với 23 bổ sung16 xóa
  1. 2 2
      IDE/src/BuildContext.bf
  2. 2 1
      IDEHelper/CMakeLists.txt
  3. 19 13
      IDEHelper/Compiler/BfIRCodeGen.cpp

+ 2 - 2
IDE/src/BuildContext.bf

@@ -322,10 +322,10 @@ namespace IDE
 			            }
 			            else
 			            {
-							IDEUtils.AppendWithOptionalQuotes(linkLine, scope String("-L", llvmDir, "/x86_64-w64-mingw32/lib"));
+							/*IDEUtils.AppendWithOptionalQuotes(linkLine, scope String("-L", llvmDir, "/x86_64-w64-mingw32/lib"));
 							linkLine.Append(" ");
 							IDEUtils.AppendWithOptionalQuotes(linkLine, scope String("-L", llvmDir, "/lib/gcc/x86_64-w64-mingw32/5.2.0"));
-							linkLine.Append(" ");
+							linkLine.Append(" ");*/
 			            }
 					}
 					else // Microsoft

+ 2 - 1
IDEHelper/CMakeLists.txt

@@ -170,7 +170,8 @@ file(GLOB SRC_FILES
     Compiler/BfSystem.cpp
     Compiler/BfUtil.cpp
     Compiler/BfVarDeclChecker.cpp
-    Compiler/MemReporter.cpp
+    Compiler/BfTargetTriple.cpp
+    Compiler/MemReporter.cpp    
 )
 
 # Add library to build.

+ 19 - 13
IDEHelper/Compiler/BfIRCodeGen.cpp

@@ -390,14 +390,17 @@ void BfIRCodeGen::Fail(const StringImpl& error)
 	if (mFailed)
 		return;
 
-	auto dbgLoc = mIRBuilder->getCurrentDebugLocation();
-	if (dbgLoc)
+	if (mHasDebugLoc)
 	{
-		llvm::DIFile* file = NULL;
-		if (llvm::DIScope* scope = llvm::dyn_cast<llvm::DIScope>(dbgLoc.getScope()))		
-		{			
-			BfIRCodeGenBase::Fail(StrFormat("%s at line %d:%d in %s/%s", error.c_str(), dbgLoc.getLine(), dbgLoc.getCol(), scope->getDirectory().data(), scope->getFilename().data()));
-			return;
+		auto dbgLoc = mIRBuilder->getCurrentDebugLocation();
+		if (dbgLoc)
+		{
+			llvm::DIFile* file = NULL;
+			if (llvm::DIScope* scope = llvm::dyn_cast<llvm::DIScope>(dbgLoc.getScope()))		
+			{			
+				BfIRCodeGenBase::Fail(StrFormat("%s at line %d:%d in %s/%s", error.c_str(), dbgLoc.getLine(), dbgLoc.getCol(), scope->getDirectory().data(), scope->getFilename().data()));
+				return;
+			}
 		}
 	}
 	
@@ -2615,6 +2618,7 @@ void BfIRCodeGen::HandleNextCmd()
 	case BfIRCmd_StatementStart:
 		// We only commit the debug loc for statement starts
 		mIRBuilder->SetCurrentDebugLocation(mDebugLoc);
+		mHasDebugLoc = true;
 		break;
 	case BfIRCmd_ObjectAccessCheck:
 		{
@@ -3942,6 +3946,8 @@ bool BfIRCodeGen::WriteObjectFile(const StringImpl& outFileName, const BfCodeGen
 	// 		
 	// 	}
 	
+	mHasDebugLoc = false; // So fails don't show a line number
+
 	bool enableLTO = codeGenOptions.mLTOType != BfLTOType_None;
 
 	if (enableLTO)
@@ -4166,8 +4172,8 @@ int BF_LinuxFixLinkage()
 
 int BF_AARC64_Linkage()
 {
-	LLVMInitializeAArch64TargetInfo();
-	LLVMInitializeAArch64Target();
+	LLVMInitializeAArch64TargetInfo();
+	LLVMInitializeAArch64Target();
 	LLVMInitializeAArch64TargetMC();	
 	return 0;
 }
@@ -4175,15 +4181,15 @@ int BF_AARC64_Linkage()
 
 void BfIRCodeGen::StaticInit()
 {
-	LLVMInitializeX86TargetInfo();
-	LLVMInitializeX86Target();
+	LLVMInitializeX86TargetInfo();
+	LLVMInitializeX86Target();
 	LLVMInitializeX86TargetMC();
 	LLVMInitializeX86AsmPrinter();
 	LLVMInitializeX86AsmParser();
 	LLVMInitializeX86Disassembler();
 
-	LLVMInitializeAArch64TargetInfo();
-	LLVMInitializeAArch64Target();
+	LLVMInitializeAArch64TargetInfo();
+	LLVMInitializeAArch64Target();
 	LLVMInitializeAArch64TargetMC();
 	LLVMInitializeAArch64AsmPrinter();
 	//LLVMInitializeAArch64Parser();