//===- PPCRegisterInfo.cpp - PowerPC Register Information -------*- 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 the PowerPC implementation of the TargetRegisterInfo// class.////===----------------------------------------------------------------------===//#define DEBUG_TYPE "reginfo"#include"PPC.h"#include"PPCInstrBuilder.h"#include"PPCMachineFunctionInfo.h"#include"PPCRegisterInfo.h"#include"PPCFrameInfo.h"#include"PPCSubtarget.h"#include"llvm/CallingConv.h"#include"llvm/Constants.h"#include"llvm/Function.h"#include"llvm/Type.h"#include"llvm/CodeGen/ValueTypes.h"#include"llvm/CodeGen/MachineInstrBuilder.h"#include"llvm/CodeGen/MachineModuleInfo.h"#include"llvm/CodeGen/MachineFunction.h"#include"llvm/CodeGen/MachineFrameInfo.h"#include"llvm/CodeGen/MachineLocation.h"#include"llvm/CodeGen/MachineRegisterInfo.h"#include"llvm/CodeGen/RegisterScavenging.h"#include"llvm/Target/TargetFrameInfo.h"#include"llvm/Target/TargetInstrInfo.h"#include"llvm/Target/TargetMachine.h"#include"llvm/Target/TargetOptions.h"#include"llvm/Support/CommandLine.h"#include"llvm/Support/Debug.h"#include"llvm/Support/MathExtras.h"#include"llvm/ADT/BitVector.h"#include"llvm/ADT/STLExtras.h"#include<cstdlib>usingnamespacellvm;// FIXME This disables some code that aligns the stack to a boundary// bigger than the default (16 bytes on Darwin) when there is a stack local// of greater alignment. This does not currently work, because the delta// between old and new stack pointers is added to offsets that reference// incoming parameters after the prolog is generated, and the code that // does that doesn't handle a variable delta. You don't want to do that// anyway; a better approach is to reserve another register that retains// to the incoming stac