a426b286c8
patch for r263619, and unify all the URLs to point to svnweb.
63 lines
2.0 KiB
Diff
63 lines
2.0 KiB
Diff
Pull in r202059 from upstream clang trunk (by Roman Divacky):
|
|
|
|
Implement getDwarfEHStackPointer() and initDwarfEHRegSizeTable() for sparcv9.
|
|
|
|
Introduced here: http://svnweb.freebsd.org/changeset/base/262460
|
|
|
|
Index: tools/clang/lib/CodeGen/TargetInfo.cpp
|
|
===================================================================
|
|
--- tools/clang/lib/CodeGen/TargetInfo.cpp
|
|
+++ tools/clang/lib/CodeGen/TargetInfo.cpp
|
|
@@ -5435,10 +5435,51 @@ class SparcV9TargetCodeGenInfo : public TargetCode
|
|
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
|
|
//===----------------------------------------------------------------------===//
|