diff --git a/src/base/SMPFunction.cpp b/src/base/SMPFunction.cpp
index ae0860c609180b636511a3e75ca76c8923d58f39..fc373ec58d6f5ab955f47879aab950c8f2b89b02 100644
--- a/src/base/SMPFunction.cpp
+++ b/src/base/SMPFunction.cpp
@@ -14133,6 +14133,8 @@ void SMPFunction::EmitAnnotations(FILE *AnnotFile, FILE *InfoAnnotFile) {
 			if (NULL != CurrBlock) delete CurrBlock;
 		}
 
+		this->Instrs.clear();
+		this->Blocks.clear();
 		return;
 	} // end if reduced analysis
 
diff --git a/src/base/SMPInstr.cpp b/src/base/SMPInstr.cpp
index f9493eeb4cca5d96f9a2698650c1cca28ac48425..e93ab8def1b7b7d2a019fffb59887fae047830da 100644
--- a/src/base/SMPInstr.cpp
+++ b/src/base/SMPInstr.cpp
@@ -4399,8 +4399,10 @@ SMPInstr::SMPInstr(STARS_ea_t addr) : STARS_ID(addr) {
 
 // Destructor.
 SMPInstr::~SMPInstr() {
-	this->Defs.clear();
-	this->Uses.clear();
+	if (global_STARS_program->ShouldSTARSPerformFullAnalysis()) { // not already deleted
+		this->Defs.clear();
+		this->Uses.clear();
+	}
 	return;
 }