In 
transactional memory systems, transactional aborts due to conflicts between concurrent threads may cause 
system performance degradation. A 
compiler may attempt to minimize runtime abort rates by performing one or more code transformations and / or other optimizations on a 
transactional memory program in an attempt to minimize one or more store-
commit intervals. The 
compiler may employ store deferral, hoisting of long-latency operations from within a transaction body and / or store-
commit interval, speculative hoisting of long-latency operations, and / or redundant store squashing optimizations. The 
compiler may perform optimizing transformations on 
source code and / or on any intermediate representation of the 
source code (e.g., parse trees, un-optimized 
assembly code, etc.). In some embodiments, the compiler may preemptively avoid naïve target code constructions. The compiler may perform static and / or dynamic analysis of a program in order to determine which, if any, transformations should be applied and / or may dynamically recompile code sections at runtime, based on execution analysis.