diff options
Diffstat (limited to 'contrib/llvm/patches/patch-r262262-clang-r199399-sparc.diff')
-rw-r--r-- | contrib/llvm/patches/patch-r262262-clang-r199399-sparc.diff | 37 |
1 files changed, 0 insertions, 37 deletions
diff --git a/contrib/llvm/patches/patch-r262262-clang-r199399-sparc.diff b/contrib/llvm/patches/patch-r262262-clang-r199399-sparc.diff deleted file mode 100644 index 4a22be2..0000000 --- a/contrib/llvm/patches/patch-r262262-clang-r199399-sparc.diff +++ /dev/null @@ -1,37 +0,0 @@ -Pull in r199399 from upstream clang trunk (by Jakob Stoklund Olesen): - - SPARCv9 implements long double as an IEEE quad. - -Introduced here: http://svnweb.freebsd.org/changeset/base/262262 - -Index: tools/clang/test/CodeGen/sparcv9-abi.c -=================================================================== ---- tools/clang/test/CodeGen/sparcv9-abi.c -+++ tools/clang/test/CodeGen/sparcv9-abi.c -@@ -18,6 +18,9 @@ long long f_int_3(long long x) { return x; } - // CHECK-LABEL: define signext i8 @f_int_4(i8 signext %x) - char f_int_4(char x) { return x; } - -+// CHECK-LABEL: define fp128 @f_ld(fp128 %x) -+long double f_ld(long double x) { return x; } -+ - // Small structs are passed in registers. - struct small { - int *a, *b; -Index: tools/clang/lib/Basic/Targets.cpp -=================================================================== ---- tools/clang/lib/Basic/Targets.cpp -+++ tools/clang/lib/Basic/Targets.cpp -@@ -4529,6 +4529,12 @@ class SparcV9TargetInfo : public SparcTargetInfo { - UIntMaxType = UnsignedLong; - } - Int64Type = IntMaxType; -+ -+ // The SPARCv8 System V ABI has long double 128-bits in size, but 64-bit -+ // aligned. The SPARCv9 SCD 2.4.1 says 16-byte aligned. -+ LongDoubleWidth = 128; -+ LongDoubleAlign = 128; -+ LongDoubleFormat = &llvm::APFloat::IEEEquad; - } - - virtual void getTargetDefines(const LangOptions &Opts, |