//===-- ARMLoadStoreOptimizer.cpp - ARM load / store opt. pass ----*- C++ -*-=////// The LLVM Compiler Infrastructure//// This file is distributed under the University of Illinois Open Source// License. See LICENSE.TXT for details.////===----------------------------------------------------------------------===////// This file contains a pass that performs load / store related peephole// optimizations. This pass should be run after register allocation.////===----------------------------------------------------------------------===//#define DEBUG_TYPE "arm-ldst-opt"#include"ARM.h"#include"ARMAddressingModes.h"#include"ARMBaseInstrInfo.h"#include"ARMMachineFunctionInfo.h"#include"ARMRegisterInfo.h"#include"llvm/DerivedTypes.h"#include"llvm/Function.h"#include"llvm/CodeGen/MachineBasicBlock.h"#include"llvm/CodeGen/MachineFunctionPass.h"#include"llvm/CodeGen/MachineInstr.h"#include"llvm/CodeGen/MachineInstrBuilder.h"#include"llvm/CodeGen/MachineRegisterInfo.h"#include"llvm/CodeGen/RegisterScavenging.h"#include"llvm/Target/TargetData.h"#include"llvm/Target/TargetInstrInfo.h"#include"llvm/Target/TargetMachine.h"#include"llvm/Target/TargetRegisterInfo.h"#include"llvm/Support/Compiler.h"#include"llvm/Support/ErrorHandling.h"#include"llvm/ADT/DenseMap.h"#include"llvm/ADT/STLExtras.h"#include"llvm/ADT/SmallPtrSet.h"#include"llvm/ADT/SmallSet.h"#include"llvm/ADT/SmallVector.h"#include"llvm/ADT/Statistic.h"usingnamespacellvm;STATISTIC(NumLDMGened,"Number of ldm instructions generated");STATISTIC(NumSTMGened,