5351a5352,5356
> // If a C++ object has either a non-trivial copy constructor or a non-trivial
> // destructor, it is passed with an explicit indirect pointer / sret pointer.
> if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI()))
> return ABIArgInfo::getIndirect(0, RAA == CGCXXABI::RAA_DirectInMemory);
>
5432a5438,5444
>
> int getDwarfEHStackPointer(CodeGen::CodeGenModule &M) const {
> return 14;
> }
>
> bool initDwarfEHRegSizeTable(CodeGen::CodeGenFunction &CGF,
> llvm::Value *Address) const;
5435a5448,5452
> bool
> SparcV9TargetCodeGenInfo::initDwarfEHRegSizeTable(CodeGen::CodeGenFunction &CGF,
> llvm::Value *Address) const {
> // This is calculated from the LLVM and GCC tables and verified
> // against gcc output. AFAIK all ABIs use the same encoding.
5436a5454,5482
> CodeGen::CGBuilderTy &Builder = CGF.Builder;
>
> llvm::IntegerType *i8 = CGF.Int8Ty;
> llvm::Value *Four8 = llvm::ConstantInt::get(i8, 4);
> llvm::Value *Eight8 = llvm::ConstantInt::get(i8, 8);
>
> // 0-31: the 8-byte general-purpose registers
> AssignToArrayRange(Builder, Address, Eight8, 0, 31);
>
> // 32-63: f0-31, the 4-byte floating-point registers
> AssignToArrayRange(Builder, Address, Four8, 32, 63);
>
> // Y = 64
> // PSR = 65
> // WIM = 66
> // TBR = 67
> // PC = 68
> // NPC = 69
> // FSR = 70
> // CSR = 71
> AssignToArrayRange(Builder, Address, Eight8, 64, 71);
>
> // 72-87: d0-15, the 8-byte floating-point registers
> AssignToArrayRange(Builder, Address, Eight8, 72, 87);
>
> return false;
> }
>
>
> // If a C++ object has either a non-trivial copy constructor or a non-trivial
> // destructor, it is passed with an explicit indirect pointer / sret pointer.
> if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI()))
> return ABIArgInfo::getIndirect(0, RAA == CGCXXABI::RAA_DirectInMemory);
>
5432a5438,5444
>
> int getDwarfEHStackPointer(CodeGen::CodeGenModule &M) const {
> return 14;
> }
>
> bool initDwarfEHRegSizeTable(CodeGen::CodeGenFunction &CGF,
> llvm::Value *Address) const;
5435a5448,5452
> bool
> SparcV9TargetCodeGenInfo::initDwarfEHRegSizeTable(CodeGen::CodeGenFunction &CGF,
> llvm::Value *Address) const {
> // This is calculated from the LLVM and GCC tables and verified
> // against gcc output. AFAIK all ABIs use the same encoding.
5436a5454,5482
> CodeGen::CGBuilderTy &Builder = CGF.Builder;
>
> llvm::IntegerType *i8 = CGF.Int8Ty;
> llvm::Value *Four8 = llvm::ConstantInt::get(i8, 4);
> llvm::Value *Eight8 = llvm::ConstantInt::get(i8, 8);
>
> // 0-31: the 8-byte general-purpose registers
> AssignToArrayRange(Builder, Address, Eight8, 0, 31);
>
> // 32-63: f0-31, the 4-byte floating-point registers
> AssignToArrayRange(Builder, Address, Four8, 32, 63);
>
> // Y = 64
> // PSR = 65
> // WIM = 66
> // TBR = 67
> // PC = 68
> // NPC = 69
> // FSR = 70
> // CSR = 71
> AssignToArrayRange(Builder, Address, Eight8, 64, 71);
>
> // 72-87: d0-15, the 8-byte floating-point registers
> AssignToArrayRange(Builder, Address, Eight8, 72, 87);
>
> return false;
> }
>
>