r202059 - Implement getDwarfEHStackPointer() and initDwarfEHRegSizeTable() for sparcv9.

Rafael EspĂ­ndola rafael.espindola at gmail.com
Mon Feb 24 10:59:55 PST 2014


testcase?

On 24 February 2014 13:46, Roman Divacky <rdivacky at freebsd.org> wrote:
> Author: rdivacky
> Date: Mon Feb 24 12:46:27 2014
> New Revision: 202059
>
> URL: http://llvm.org/viewvc/llvm-project?rev=202059&view=rev
> Log:
> Implement getDwarfEHStackPointer() and initDwarfEHRegSizeTable() for sparcv9.
>
> Modified:
>     cfe/trunk/lib/CodeGen/TargetInfo.cpp
>
> Modified: cfe/trunk/lib/CodeGen/TargetInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/TargetInfo.cpp?rev=202059&r1=202058&r2=202059&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/TargetInfo.cpp (original)
> +++ cfe/trunk/lib/CodeGen/TargetInfo.cpp Mon Feb 24 12:46:27 2014
> @@ -5660,9 +5660,50 @@ class SparcV9TargetCodeGenInfo : public
>  public:
>    SparcV9TargetCodeGenInfo(CodeGenTypes &CGT)
>      : TargetCodeGenInfo(new SparcV9ABIInfo(CGT)) {}
> +
> +  int getDwarfEHStackPointer(CodeGen::CodeGenModule &M) const {
> +    return 14;
> +  }
> +
> +  bool initDwarfEHRegSizeTable(CodeGen::CodeGenFunction &CGF,
> +                               llvm::Value *Address) const;
>  };
>  } // end anonymous namespace
>
> +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.
> +
> +  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;
> +}
> +
>
>  //===----------------------------------------------------------------------===//
>  // Xcore ABI Implementation
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list