diff --git a/tools/transforms/PNTransformDriver.cpp b/tools/transforms/PNTransformDriver.cpp
index f77b36a30f926159ddcb4d17611bb2c477631c30..e8a1586ab742a0c71a24af69e696212aee53076c 100644
--- a/tools/transforms/PNTransformDriver.cpp
+++ b/tools/transforms/PNTransformDriver.cpp
@@ -1663,80 +1663,10 @@ bool PNTransformDriver::Validate_Recursive(vector<validation_record> &vrs, unsig
 void PNTransformDriver::Finalize_Transformation()
 {
 	cout<<"Finalizing Transformation: Committing all previously validated transformations ("<<finalization_registry.size()<<" functions)"<<endl;
-// 	set<FileIR_t*> firps;
-
-// 	for(vector<finalize_record>::iterator it = finalization_registry.begin(); it != finalization_registry.end(); it++)
-// 	{
-// 		finalize_record fr = *it;
-// 		Function_t *func;
-// 		PNStackLayout *layout;
-// 		FileIR_t *firp;
-
-// 		func = fr.func;
-// 		layout = fr.layout;
-// 		firp = fr.firp;
-
-// 		assert(func != NULL && layout != NULL && firp != NULL);
-// 		firps.insert(firp);
-
-// //DEBUG: This code needs to be put back, especially for removing canaries
-// //if do_canaries is false, but at the moment, accumulating modifications
-// //works for zsh, making it appear that delayed modification is broken. 
-
-// 		// orig_virp = firp;
-
-// 		//Make sure any previous modificaitons are undone. 
-// 		//undo(func);
-
-// 		// //TODO: really there should be no need to retransform, but it
-// 		// //is much easier to retransform than to retain the modified
-// 		// //instructions previously made. 
-// 		// if(do_canaries)
-// 		// 	Canary_Rewrite(layout,func);
-// 		// else
-// 		// 	Sans_Canary_Rewrite(layout,func);
-// 	}
 
 	//TODO: one more validation? 
 	cerr<<"Sanity validation check....."<<endl;
 
-	// string dirname = "p1.xform/validation_final";
-	// string cmd = "mkdir -p " + dirname;
-	// system(cmd.c_str());
-
-	// string aspri_filename = string(get_current_dir_name()) + "/" + dirname + "/a.irdb.aspri";
-	// string bspri_filename = string(get_current_dir_name()) + "/" + dirname + "/a.irdb.bspri";
-
-	// ofstream aspriFile;
-	// aspriFile.open(aspri_filename.c_str(),ios_base::out);
-	
-	// if(!aspriFile.is_open())
-	// {
-	// 	assert(false);
-	// }
-
-	// for(set<FileIR_t*>::iterator it=firps.begin();
-	// 	it!=firps.end();
-	// 	++it
-	// 	)
-	// {
-	// 	FileIR_t *firp = *it;
-	// 	firp->GenerateSPRI(aspriFile,false);
-	// }
-
-	// aspriFile.close();
-
-	// char new_instr[1024];
-	// //This script generates the aspri and bspri files; it also runs BED
-	// sprintf(new_instr, "%s %d %s %s", BED_script.c_str(), orig_progid, aspri_filename.c_str(), bspri_filename.c_str());
-	
-	// //If OK=BED(func), then commit	
-	// int rt=system(new_instr);
-	// int actual_exit = -1, actual_signal = -1;
-	// if (WIFEXITED(rt)) actual_exit = WEXITSTATUS(rt);
-	// else actual_signal = WTERMSIG(rt);
-	// int retval = actual_exit;
-
 	if(	!Validate(NULL,"validation_final"))
 	{
 		cerr<<"TEST ERROR: Sanity validation failed!! Backing off all transformations (PN disabled for this program)."<<endl;
@@ -1945,6 +1875,9 @@ bool PNTransformDriver::ShuffleValidation(int reps, PNStackLayout *layout,Functi
 // previously modified and validated functions. 
 bool PNTransformDriver::Validate(FileIR_t *virp, string name)
 {
+	if(!pn_options->getShouldSpriValidate())
+		return true;
+
 	cerr<<"PNTransformDriver: Validate(): "<<name<<endl;
 
 	string dirname = "p1.xform/" + name;
diff --git a/tools/transforms/globals.h b/tools/transforms/globals.h
index a43c585af8ffa8929a279524ee8bb276180285db..d94166d94ae8740752d55e4701b3f1489792d2e1 100644
--- a/tools/transforms/globals.h
+++ b/tools/transforms/globals.h
@@ -49,6 +49,7 @@ class PNOptions
 			canary_value=0;
 			canary_value_inited=false;
 			double_threshold=32*1024; // 32kb 
+			spri_validate=false;
 		}
 
 		void setMinStackPadding(int val) { min_stack_padding = val; }
@@ -65,6 +66,7 @@ class PNOptions
 		int getRecursiveMinStackPadding() const { return recursive_min_stack_padding; }
 		int getRecursiveMaxStackPadding() const { return recursive_max_stack_padding; }
 		bool getShouldDoubleFrameSize() const { return should_double_frame_size; }
+		bool getShouldSpriValidate() const { return spri_validate; }
 		int getDoubleThreshold() { return double_threshold; }
 		int getRandomSeed() { return random_seed; }
 		int getCanaryValue() 	
@@ -104,6 +106,7 @@ class PNOptions
 		bool canary_value_inited;
 
 		int double_threshold;
+		bool spri_validate;
 
 		std::set<std::string> canary_functions;
 };