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.