diff options
author | Koen Kooi <koen@dominion.thruhere.net> | 2010-11-02 22:03:58 +0100 |
---|---|---|
committer | Koen Kooi <koen@dominion.thruhere.net> | 2010-11-02 22:12:02 +0100 |
commit | be10a6b1321f250b1034c7d9d0a8ef18b296eef1 (patch) | |
tree | 9249025cbfbfbee4cc430d62b27f75301dd4dfde /recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99347.patch | |
parent | 93b28937ac67ba46d65f55637e42552e224aa7e2 (diff) | |
download | meta-openembedded-be10a6b1321f250b1034c7d9d0a8ef18b296eef1.tar.gz |
angstrom-layers: meta-openembedded: replace poky gcc 4.5 sources with OE ones
This needs further investigation, but for now we can get the tested sources into the poky gcc harness
Signed-off-by: Koen Kooi <k-kooi@ti.com>
Diffstat (limited to 'recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99347.patch')
-rw-r--r-- | recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99347.patch | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99347.patch b/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99347.patch new file mode 100644 index 0000000000..57b8605e55 --- /dev/null +++ b/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99347.patch | |||
@@ -0,0 +1,83 @@ | |||
1 | Merge from Sourcery G++ 4.4: | ||
2 | |||
3 | 2010-02-15 Julian Brown <julian@codesourcery.com> | ||
4 | |||
5 | Issue #7486 | ||
6 | |||
7 | gcc/ | ||
8 | * config/arm/arm.c (arm_libcall_uses_aapcs_base) | ||
9 | (arm_init_cumulative_args): Use correct ABI for double-precision | ||
10 | helper functions in hard-float mode if only single-precision | ||
11 | arithmetic is supported in hardware. | ||
12 | |||
13 | 2010-07-26 Julian Brown <julian@codesourcery.com> | ||
14 | |||
15 | Backport from FSF mainline: | ||
16 | |||
17 | Julian Brown <julian@codesourcery.com> | ||
18 | |||
19 | === modified file 'gcc/config/arm/arm.c' | ||
20 | --- old/gcc/config/arm/arm.c 2010-08-13 10:30:35 +0000 | ||
21 | +++ new/gcc/config/arm/arm.c 2010-08-13 10:43:42 +0000 | ||
22 | @@ -3453,6 +3453,28 @@ | ||
23 | convert_optab_libfunc (sfix_optab, DImode, SFmode)); | ||
24 | add_libcall (libcall_htab, | ||
25 | convert_optab_libfunc (ufix_optab, DImode, SFmode)); | ||
26 | + | ||
27 | + /* Values from double-precision helper functions are returned in core | ||
28 | + registers if the selected core only supports single-precision | ||
29 | + arithmetic, even if we are using the hard-float ABI. */ | ||
30 | + if (TARGET_VFP) | ||
31 | + { | ||
32 | + add_libcall (libcall_htab, optab_libfunc (add_optab, DFmode)); | ||
33 | + add_libcall (libcall_htab, optab_libfunc (sdiv_optab, DFmode)); | ||
34 | + add_libcall (libcall_htab, optab_libfunc (smul_optab, DFmode)); | ||
35 | + add_libcall (libcall_htab, optab_libfunc (neg_optab, DFmode)); | ||
36 | + add_libcall (libcall_htab, optab_libfunc (sub_optab, DFmode)); | ||
37 | + add_libcall (libcall_htab, optab_libfunc (eq_optab, DFmode)); | ||
38 | + add_libcall (libcall_htab, optab_libfunc (lt_optab, DFmode)); | ||
39 | + add_libcall (libcall_htab, optab_libfunc (le_optab, DFmode)); | ||
40 | + add_libcall (libcall_htab, optab_libfunc (ge_optab, DFmode)); | ||
41 | + add_libcall (libcall_htab, optab_libfunc (gt_optab, DFmode)); | ||
42 | + add_libcall (libcall_htab, optab_libfunc (unord_optab, DFmode)); | ||
43 | + add_libcall (libcall_htab, | ||
44 | + convert_optab_libfunc (sext_optab, DFmode, SFmode)); | ||
45 | + add_libcall (libcall_htab, | ||
46 | + convert_optab_libfunc (trunc_optab, SFmode, DFmode)); | ||
47 | + } | ||
48 | } | ||
49 | |||
50 | return libcall && htab_find (libcall_htab, libcall) != NULL; | ||
51 | @@ -4406,6 +4428,31 @@ | ||
52 | if (arm_libcall_uses_aapcs_base (libname)) | ||
53 | pcum->pcs_variant = ARM_PCS_AAPCS; | ||
54 | |||
55 | + /* We must pass arguments to double-precision helper functions in core | ||
56 | + registers if we only have hardware support for single-precision | ||
57 | + arithmetic, even if we are using the hard-float ABI. */ | ||
58 | + if (TARGET_VFP | ||
59 | + && (rtx_equal_p (libname, optab_libfunc (add_optab, DFmode)) | ||
60 | + || rtx_equal_p (libname, optab_libfunc (sdiv_optab, DFmode)) | ||
61 | + || rtx_equal_p (libname, optab_libfunc (smul_optab, DFmode)) | ||
62 | + || rtx_equal_p (libname, optab_libfunc (neg_optab, DFmode)) | ||
63 | + || rtx_equal_p (libname, optab_libfunc (sub_optab, DFmode)) | ||
64 | + || rtx_equal_p (libname, optab_libfunc (eq_optab, DFmode)) | ||
65 | + || rtx_equal_p (libname, optab_libfunc (lt_optab, DFmode)) | ||
66 | + || rtx_equal_p (libname, optab_libfunc (le_optab, DFmode)) | ||
67 | + || rtx_equal_p (libname, optab_libfunc (ge_optab, DFmode)) | ||
68 | + || rtx_equal_p (libname, optab_libfunc (gt_optab, DFmode)) | ||
69 | + || rtx_equal_p (libname, optab_libfunc (unord_optab, DFmode)) | ||
70 | + || rtx_equal_p (libname, convert_optab_libfunc (sext_optab, | ||
71 | + DFmode, SFmode)) | ||
72 | + || rtx_equal_p (libname, convert_optab_libfunc (trunc_optab, | ||
73 | + SFmode, DFmode)) | ||
74 | + || rtx_equal_p (libname, convert_optab_libfunc (sfix_optab, | ||
75 | + SImode, DFmode)) | ||
76 | + || rtx_equal_p (libname, convert_optab_libfunc (ufix_optab, | ||
77 | + SImode, DFmode)))) | ||
78 | + pcum->pcs_variant = ARM_PCS_AAPCS; | ||
79 | + | ||
80 | pcum->aapcs_ncrn = pcum->aapcs_next_ncrn = 0; | ||
81 | pcum->aapcs_reg = NULL_RTX; | ||
82 | pcum->aapcs_partial = 0; | ||
83 | |||