18df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang/* 28df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang * Copyright (C) 2015 The Android Open Source Project 38df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang * 48df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang * Licensed under the Apache License, Version 2.0 (the "License"); 58df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang * you may not use this file except in compliance with the License. 68df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang * You may obtain a copy of the License at 78df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang * 88df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang * http://www.apache.org/licenses/LICENSE-2.0 98df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang * 108df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang * Unless required by applicable law or agreed to in writing, software 118df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang * distributed under the License is distributed on an "AS IS" BASIS, 128df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang * See the License for the specific language governing permissions and 148df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang * limitations under the License. 158df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang */ 168df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang 178df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang#ifndef ART_COMPILER_OPTIMIZING_LOAD_STORE_ELIMINATION_H_ 188df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang#define ART_COMPILER_OPTIMIZING_LOAD_STORE_ELIMINATION_H_ 198df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang 208df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang#include "optimization.h" 218df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang 228df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yangnamespace art { 238df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang 248df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yangclass SideEffectsAnalysis; 258df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang 268df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yangclass LoadStoreElimination : public HOptimization { 278df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang public: 288df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang LoadStoreElimination(HGraph* graph, const SideEffectsAnalysis& side_effects) 298df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang : HOptimization(graph, kLoadStoreEliminationPassName), 308df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang side_effects_(side_effects) {} 318df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang 328df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang void Run() OVERRIDE; 338df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang 348df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang static constexpr const char* kLoadStoreEliminationPassName = "load_store_elimination"; 358df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang 368df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang private: 378df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang const SideEffectsAnalysis& side_effects_; 388df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang 398df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang DISALLOW_COPY_AND_ASSIGN(LoadStoreElimination); 408df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang}; 418df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang 428df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang} // namespace art 438df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang 448df69d42a9e3ccd9456ff72fac8dbd1999f98755Mingyao Yang#endif // ART_COMPILER_OPTIMIZING_LOAD_STORE_ELIMINATION_H_ 45