diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp index 992f030099d11..b78098275ede1 100644 --- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -435,7 +435,10 @@ void PassManagerBuilder::addFunctionSimplificationPasses( if (OptLevel > 1) MPM.add(createTailCallEliminationPass()); // Eliminate tail calls MPM.add(createCFGSimplificationPass()); // Merge & remove BBs - MPM.add(createReassociatePass()); // Reassociate expressions + // FIXME: re-association increases variables liveness and therefore register + // pressure. + if (!SYCLOptimizationMode) + MPM.add(createReassociatePass()); // Reassociate expressions // Do not run loop pass pipeline in "SYCL Optimization Mode". Loop // optimizations rely on TTI, which is not accurate for SPIR target.