Speculative Loop Invariant Code Motion -- EECS 583 Advanced Compiler