@@ -121,7 +121,8 @@ Optimizer& Optimizer::RegisterPass(PassToken&& p) {
121121// problem. The optimization we use are all used to either do copy propagation
122122// or enable more copy propagation.
123123Optimizer& Optimizer::RegisterLegalizationPasses (bool preserve_interface,
124- bool include_loop_unroll) {
124+ bool include_loop_unroll,
125+ bool include_ssa_rewrite) {
125126 auto & optimizer =
126127 // Wrap OpKill instructions so all other code can be inlined.
127128 RegisterPass (CreateWrapOpKillPass ())
@@ -148,11 +149,15 @@ Optimizer& Optimizer::RegisterLegalizationPasses(bool preserve_interface,
148149 // Takes care of copy propagation of non-members.
149150 .RegisterPass (CreateLocalSingleBlockLoadStoreElimPass ())
150151 .RegisterPass (CreateLocalSingleStoreElimPass ())
151- .RegisterPass (CreateAggressiveDCEPass (preserve_interface))
152- .RegisterPass (CreateLocalMultiStoreElimPass ())
153- .RegisterPass (CreateCombineAccessChainsPass ())
154- .RegisterPass (CreateAggressiveDCEPass (preserve_interface))
155- .RegisterPass (CreateLegalizeMultidimArrayPass ())
152+ .RegisterPass (CreateAggressiveDCEPass (preserve_interface));
153+ if (include_ssa_rewrite) {
154+ optimizer.RegisterPass (CreateLocalMultiStoreElimPass ());
155+ }
156+ optimizer.RegisterPass (CreateCombineAccessChainsPass ());
157+ if (include_ssa_rewrite) {
158+ optimizer.RegisterPass (CreateAggressiveDCEPass (preserve_interface));
159+ }
160+ optimizer.RegisterPass (CreateLegalizeMultidimArrayPass ())
156161 // Propagate constants to get as many constant conditions on branches
157162 // as possible.
158163 .RegisterPass (CreateCCPPass ());
@@ -181,11 +186,11 @@ Optimizer& Optimizer::RegisterLegalizationPasses(bool preserve_interface,
181186}
182187
183188Optimizer& Optimizer::RegisterLegalizationPasses () {
184- return RegisterLegalizationPasses (false , true );
189+ return RegisterLegalizationPasses (false , true , true );
185190}
186191
187192Optimizer& Optimizer::RegisterLegalizationPasses (bool preserve_interface) {
188- return RegisterLegalizationPasses (preserve_interface, true );
193+ return RegisterLegalizationPasses (preserve_interface, true , true );
189194}
190195
191196Optimizer& Optimizer::RegisterPerformancePasses (bool preserve_interface) {
0 commit comments