Index: llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp =================================================================== --- llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp +++ llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp @@ -403,11 +403,9 @@ TargetPassConfig::addIRPasses(); - // Run the parallel DSP pass and its helpers. - if (getOptLevel() == CodeGenOpt::Aggressive) { - addPass(createEarlyCSEPass()); + // Run the parallel DSP pass. + if (getOptLevel() == CodeGenOpt::Aggressive) addPass(createARMParallelDSPPass()); - } // Match interleaved memory accesses to ldN/stN intrinsics. if (TM->getOptLevel() != CodeGenOpt::None) Index: llvm/trunk/test/CodeGen/ARM/O3-pipeline.ll =================================================================== --- llvm/trunk/test/CodeGen/ARM/O3-pipeline.ll +++ llvm/trunk/test/CodeGen/ARM/O3-pipeline.ll @@ -33,7 +33,6 @@ ; CHECK: Scalarize Masked Memory Intrinsics ; CHECK: Expand reduction intrinsics ; CHECK: Dominator Tree Construction -; CHECK: Early CSE ; CHECK: Natural Loop Information ; CHECK: Scalar Evolution Analysis ; CHECK: Basic Alias Analysis (stateless AA impl) Index: llvm/trunk/test/CodeGen/ARM/ParallelDSP/unroll-n-jam-smlad.ll =================================================================== --- llvm/trunk/test/CodeGen/ARM/ParallelDSP/unroll-n-jam-smlad.ll +++ llvm/trunk/test/CodeGen/ARM/ParallelDSP/unroll-n-jam-smlad.ll @@ -31,15 +31,11 @@ %inc11.us.i.3.i = add i32 %idx, 4 br label %for.body +; TODO: CSE, or something similar, is required to remove the duplicate loads. ; CHECK: %for.body ; CHECK: smlad ; CHECK: smlad -; CHECK: smlad -; CHECK: smlad -; CHECK: smlad -; CHECK: smlad -; CHECK: smlad -; CHECK: smlad +; CHECK-NOT: smlad r{{.*}} for.body: %A3 = phi i32 [ %add9.us.i.3361.i, %for.body ], [ 0, %entry ] Index: llvm/trunk/test/CodeGen/Thumb2/2010-06-21-TailMergeBug.ll =================================================================== --- llvm/trunk/test/CodeGen/Thumb2/2010-06-21-TailMergeBug.ll +++ llvm/trunk/test/CodeGen/Thumb2/2010-06-21-TailMergeBug.ll @@ -32,12 +32,13 @@ define fastcc i32 @parse_percent_token() nounwind { entry: -; CHECK: bx lr -; CHECK: bx lr -; CHECK: bx lr -; CHECK: bx lr -; CHECK: bx lr -; CHECK: bx lr +; CHECK: pop +; CHECK: pop +; CHECK: pop +; CHECK: pop +; CHECK: pop +; CHECK: pop +; CHECK: pop ; Do not convert into single stream code. BranchProbability Analysis assumes ; that branches which goes to "ret" instruction have lower probabilities. switch i32 undef, label %bb7 [