diff --git a/libIRDB/src/core/fileir.cpp b/libIRDB/src/core/fileir.cpp
index 60ea3115dcf90bbb29114a86789fb8d1d093bbdb..6bc84fcb233aab9cb7f968d6a8553aa5c7fff2d7 100644
--- a/libIRDB/src/core/fileir.cpp
+++ b/libIRDB/src/core/fileir.cpp
@@ -479,9 +479,12 @@ void FileIR_t::WriteToDB()
 				abort();
 			}
 			if(insnp->GetTarget()==NULL && disasm.Instruction.BranchType!=0 && 
-				disasm.Instruction.BranchType!=RetType )
+				disasm.Instruction.BranchType!=RetType &&
+				// not an indirect branch
+				((disasm.Instruction.BranchType!=JmpType && disasm.Instruction.BranchType!=CallType) ||
+				 disasm.Argument1.ArgType&CONSTANT_TYPE))
 			{
-				// instructions that jump are required to either specify a target that's
+				// direct branches are required to either specify a target that's
 				// in the IRDB, or have an associated "old" instruction.  
 				// without these bits of information, the new instruction can't possibly execute correctly.
 				// and we won't have the information necessary to emit spri.