Review: restore doInitialization/doFinalization (issue1972042)


larry...@...
 

Reviewers: ,

Description:
LLVM tweaks: I had commented out the doInitialization/doFinalization
calls to the pass manager because they didn't seem to do anything
useful. But on a hunch after some very rare crashes (maybe 1 in 20, not
reliable) decided to restore them. Now no crashes (for at least a
couple hundred runs, so at the very least it's much rarer).


Please review this at http://codereview.appspot.com/1972042/show

Affected files:
src/liboslexec/llvm_instance.cpp


Index: src/liboslexec/llvm_instance.cpp
===================================================================
--- src/liboslexec/llvm_instance.cpp (revision 798)
+++ src/liboslexec/llvm_instance.cpp (working copy)
@@ -3502,7 +3502,6 @@
fpm.add (llvm::createPromoteMemoryToRegisterPass());
// Always add verifier?
fpm.add (llvm::createVerifierPass());
- fpm.doInitialization ();


// Change memory references to registers
@@ -3523,7 +3522,6 @@
fpmo.add (llvm::createPromoteMemoryToRegisterPass());
// Always add verifier?
fpmo.add (llvm::createVerifierPass());
- fpmo.doInitialization ();


passes.add (new llvm::TargetData(llvm_module()));
@@ -3655,15 +3653,15 @@
ASSERT (m_llvm_passes != NULL && m_llvm_func_passes != NULL);

#if 1
-// m_llvm_func_passes->doInitialization();
+ m_llvm_func_passes->doInitialization();
m_llvm_func_passes->run (*func);
-// m_llvm_func_passes->doFinalization();
+ m_llvm_func_passes->doFinalization();
#else
for (llvm::Module::iterator i = llvm_module()->begin();
i != llvm_module()->end(); ++i) {
-// m_llvm_func_passes->doInitialization();
+ m_llvm_func_passes->doInitialization();
m_llvm_func_passes->run (*i);
-// m_llvm_func_passes->doFinalization();
+ m_llvm_func_passes->doFinalization();
}
#endif

@@ -3674,11 +3672,11 @@
// Since the passes above inlined function calls, among other
// things, we should rerun our whole optimization set on the master
// function now.
-#if 1
+#if 0
ASSERT (func);
-// m_llvm_func_passes_optimized->doInitialization ();
+ m_llvm_func_passes_optimized->doInitialization ();
m_llvm_func_passes_optimized->run (*func);
-// m_llvm_func_passes_optimized->doFinalization ();
+ m_llvm_func_passes_optimized->doFinalization ();
#endif
}
}