diff options
author | Khem Raj <raj.khem@gmail.com> | 2012-03-08 06:20:05 +0000 |
---|---|---|
committer | Koen Kooi <koen@dominion.thruhere.net> | 2012-03-09 07:03:53 +0100 |
commit | 896bbc379a24bfa4878fd8331a68b425e1b9a1fd (patch) | |
tree | 1bd2a7b613bbca46a2b3cf1675baf72ca09c0e5f /meta-oe/recipes-devtools | |
parent | 112c1f86fc26c960cc2a69266f44e149b60ba307 (diff) | |
download | meta-openembedded-896bbc379a24bfa4878fd8331a68b425e1b9a1fd.tar.gz |
gcc-4.5: Move SRCREV to latest on gcc-4_5-branch
This brings in bug fixes for details clone gcc tree and
checkout gcc-4_5-branch and then
git log aab79458fc2025967f9a35aef4e7c0094c63d38e..1b523ca2a20934d1c52cb3a54b634ac4441debdf
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
Diffstat (limited to 'meta-oe/recipes-devtools')
5 files changed, 384 insertions, 470 deletions
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5.inc b/meta-oe/recipes-devtools/gcc/gcc-4.5.inc index d1802b566..b23b3224b 100644 --- a/meta-oe/recipes-devtools/gcc/gcc-4.5.inc +++ b/meta-oe/recipes-devtools/gcc/gcc-4.5.inc | |||
@@ -14,7 +14,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \ | |||
14 | 14 | ||
15 | 15 | ||
16 | PV = "4.5" | 16 | PV = "4.5" |
17 | PR = "r46" | 17 | PR = "r47" |
18 | 18 | ||
19 | # BINV should be incremented after updating to a revision | 19 | # BINV should be incremented after updating to a revision |
20 | # after a minor gcc release (e.g. 4.5.1 or 4.5.2) has been made | 20 | # after a minor gcc release (e.g. 4.5.1 or 4.5.2) has been made |
@@ -23,7 +23,7 @@ PR = "r46" | |||
23 | # which will be next minor release and so on. | 23 | # which will be next minor release and so on. |
24 | 24 | ||
25 | BINV = "${PV}.4" | 25 | BINV = "${PV}.4" |
26 | SRCREV = "181733" | 26 | SRCREV = "184907" |
27 | BRANCH = "gcc-4_5-branch" | 27 | BRANCH = "gcc-4_5-branch" |
28 | PR_append = "+svnr${SRCPV}" | 28 | PR_append = "+svnr${SRCPV}" |
29 | 29 | ||
@@ -80,7 +80,6 @@ SRC_URI = "svn://gcc.gnu.org/svn/gcc/branches;module=${BRANCH};proto=http \ | |||
80 | file://linaro/gcc-4.5-linaro-r99344.patch \ | 80 | file://linaro/gcc-4.5-linaro-r99344.patch \ |
81 | file://linaro/gcc-4.5-linaro-r99345.patch \ | 81 | file://linaro/gcc-4.5-linaro-r99345.patch \ |
82 | file://linaro/gcc-4.5-linaro-r99346.patch \ | 82 | file://linaro/gcc-4.5-linaro-r99346.patch \ |
83 | file://linaro/gcc-4.5-linaro-r99347.patch \ | ||
84 | file://linaro/gcc-4.5-linaro-r99348.patch \ | 83 | file://linaro/gcc-4.5-linaro-r99348.patch \ |
85 | file://linaro/gcc-4.5-linaro-r99349.patch \ | 84 | file://linaro/gcc-4.5-linaro-r99349.patch \ |
86 | file://linaro/gcc-4.5-linaro-r99351.patch \ | 85 | file://linaro/gcc-4.5-linaro-r99351.patch \ |
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99347.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99347.patch deleted file mode 100644 index 57b8605e5..000000000 --- a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99347.patch +++ /dev/null | |||
@@ -1,83 +0,0 @@ | |||
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 | |||
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99380.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99380.patch index c66c11f82..b7b6d88a0 100644 --- a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99380.patch +++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99380.patch | |||
@@ -171,9 +171,11 @@ | |||
171 | Backport from mainline: | 171 | Backport from mainline: |
172 | 172 | ||
173 | === modified file 'gcc/Makefile.in' | 173 | === modified file 'gcc/Makefile.in' |
174 | --- old/gcc/Makefile.in 2010-08-10 13:31:21 +0000 | 174 | Index: gcc-4_5-branch/gcc/Makefile.in |
175 | +++ new/gcc/Makefile.in 2010-09-01 13:29:58 +0000 | 175 | =================================================================== |
176 | @@ -3193,7 +3193,7 @@ | 176 | --- gcc-4_5-branch.orig/gcc/Makefile.in 2012-03-06 12:11:29.000000000 -0800 |
177 | +++ gcc-4_5-branch/gcc/Makefile.in 2012-03-06 12:14:01.024439210 -0800 | ||
178 | @@ -3197,7 +3197,7 @@ | ||
177 | ira-costs.o: ira-costs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ | 179 | ira-costs.o: ira-costs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ |
178 | hard-reg-set.h $(RTL_H) $(EXPR_H) $(TM_P_H) $(FLAGS_H) $(BASIC_BLOCK_H) \ | 180 | hard-reg-set.h $(RTL_H) $(EXPR_H) $(TM_P_H) $(FLAGS_H) $(BASIC_BLOCK_H) \ |
179 | $(REGS_H) addresses.h insn-config.h $(RECOG_H) $(TOPLEV_H) $(TARGET_H) \ | 181 | $(REGS_H) addresses.h insn-config.h $(RECOG_H) $(TOPLEV_H) $(TARGET_H) \ |
@@ -182,10 +184,10 @@ | |||
182 | ira-conflicts.o: ira-conflicts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ | 184 | ira-conflicts.o: ira-conflicts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ |
183 | $(TARGET_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) \ | 185 | $(TARGET_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) \ |
184 | insn-config.h $(RECOG_H) $(BASIC_BLOCK_H) $(TOPLEV_H) $(TM_P_H) $(PARAMS_H) \ | 186 | insn-config.h $(RECOG_H) $(BASIC_BLOCK_H) $(TOPLEV_H) $(TM_P_H) $(PARAMS_H) \ |
185 | 187 | Index: gcc-4_5-branch/gcc/basic-block.h | |
186 | === modified file 'gcc/basic-block.h' | 188 | =================================================================== |
187 | --- old/gcc/basic-block.h 2010-08-16 09:41:58 +0000 | 189 | --- gcc-4_5-branch.orig/gcc/basic-block.h 2012-03-06 12:11:33.000000000 -0800 |
188 | +++ new/gcc/basic-block.h 2010-09-01 13:29:58 +0000 | 190 | +++ gcc-4_5-branch/gcc/basic-block.h 2012-03-06 12:14:01.024439210 -0800 |
189 | @@ -894,6 +894,10 @@ | 191 | @@ -894,6 +894,10 @@ |
190 | 192 | ||
191 | /* In cfgcleanup.c. */ | 193 | /* In cfgcleanup.c. */ |
@@ -197,10 +199,10 @@ | |||
197 | extern bool delete_unreachable_blocks (void); | 199 | extern bool delete_unreachable_blocks (void); |
198 | 200 | ||
199 | extern bool mark_dfs_back_edges (void); | 201 | extern bool mark_dfs_back_edges (void); |
200 | 202 | Index: gcc-4_5-branch/gcc/cfgcleanup.c | |
201 | === modified file 'gcc/cfgcleanup.c' | 203 | =================================================================== |
202 | --- old/gcc/cfgcleanup.c 2010-05-17 16:26:22 +0000 | 204 | --- gcc-4_5-branch.orig/gcc/cfgcleanup.c 2012-03-06 11:53:32.000000000 -0800 |
203 | +++ new/gcc/cfgcleanup.c 2010-09-01 13:29:58 +0000 | 205 | +++ gcc-4_5-branch/gcc/cfgcleanup.c 2012-03-06 12:14:01.028439167 -0800 |
204 | @@ -68,7 +68,6 @@ | 206 | @@ -68,7 +68,6 @@ |
205 | static bool try_crossjump_to_edge (int, edge, edge); | 207 | static bool try_crossjump_to_edge (int, edge, edge); |
206 | static bool try_crossjump_bb (int, basic_block); | 208 | static bool try_crossjump_bb (int, basic_block); |
@@ -209,16 +211,15 @@ | |||
209 | static bool old_insns_match_p (int, rtx, rtx); | 211 | static bool old_insns_match_p (int, rtx, rtx); |
210 | 212 | ||
211 | static void merge_blocks_move_predecessor_nojumps (basic_block, basic_block); | 213 | static void merge_blocks_move_predecessor_nojumps (basic_block, basic_block); |
212 | @@ -972,13 +971,27 @@ | 214 | @@ -977,13 +976,27 @@ |
213 | be filled that clobbers a parameter expected by the subroutine. | 215 | be filled that clobbers a parameter expected by the subroutine. |
214 | 216 | ||
215 | ??? We take the simple route for now and assume that if they're | 217 | ??? We take the simple route for now and assume that if they're |
216 | - equal, they were constructed identically. */ | 218 | - equal, they were constructed identically. */ |
217 | - | 219 | + equal, they were constructed identically. |
220 | |||
218 | - if (CALL_P (i1) | 221 | - if (CALL_P (i1) |
219 | - && (!rtx_equal_p (CALL_INSN_FUNCTION_USAGE (i1), | 222 | - && (!rtx_equal_p (CALL_INSN_FUNCTION_USAGE (i1), |
220 | + equal, they were constructed identically. | ||
221 | + | ||
222 | + Also check for identical exception regions. */ | 223 | + Also check for identical exception regions. */ |
223 | + | 224 | + |
224 | + if (CALL_P (i1)) | 225 | + if (CALL_P (i1)) |
@@ -243,7 +244,7 @@ | |||
243 | 244 | ||
244 | #ifdef STACK_REGS | 245 | #ifdef STACK_REGS |
245 | /* If cross_jump_death_matters is not 0, the insn's mode | 246 | /* If cross_jump_death_matters is not 0, the insn's mode |
246 | @@ -1017,6 +1030,29 @@ | 247 | @@ -1022,6 +1035,29 @@ |
247 | return false; | 248 | return false; |
248 | } | 249 | } |
249 | 250 | ||
@@ -273,7 +274,7 @@ | |||
273 | /* Look through the insns at the end of BB1 and BB2 and find the longest | 274 | /* Look through the insns at the end of BB1 and BB2 and find the longest |
274 | sequence that are equivalent. Store the first insns for that sequence | 275 | sequence that are equivalent. Store the first insns for that sequence |
275 | in *F1 and *F2 and return the sequence length. | 276 | in *F1 and *F2 and return the sequence length. |
276 | @@ -1024,9 +1060,8 @@ | 277 | @@ -1029,9 +1065,8 @@ |
277 | To simplify callers of this function, if the blocks match exactly, | 278 | To simplify callers of this function, if the blocks match exactly, |
278 | store the head of the blocks in *F1 and *F2. */ | 279 | store the head of the blocks in *F1 and *F2. */ |
279 | 280 | ||
@@ -285,7 +286,7 @@ | |||
285 | { | 286 | { |
286 | rtx i1, i2, last1, last2, afterlast1, afterlast2; | 287 | rtx i1, i2, last1, last2, afterlast1, afterlast2; |
287 | int ninsns = 0; | 288 | int ninsns = 0; |
288 | @@ -1066,7 +1101,7 @@ | 289 | @@ -1071,7 +1106,7 @@ |
289 | if (i1 == BB_HEAD (bb1) || i2 == BB_HEAD (bb2)) | 290 | if (i1 == BB_HEAD (bb1) || i2 == BB_HEAD (bb2)) |
290 | break; | 291 | break; |
291 | 292 | ||
@@ -294,7 +295,7 @@ | |||
294 | break; | 295 | break; |
295 | 296 | ||
296 | merge_memattrs (i1, i2); | 297 | merge_memattrs (i1, i2); |
297 | @@ -1074,21 +1109,7 @@ | 298 | @@ -1079,21 +1114,7 @@ |
298 | /* Don't begin a cross-jump with a NOTE insn. */ | 299 | /* Don't begin a cross-jump with a NOTE insn. */ |
299 | if (INSN_P (i1)) | 300 | if (INSN_P (i1)) |
300 | { | 301 | { |
@@ -317,7 +318,7 @@ | |||
317 | 318 | ||
318 | afterlast1 = last1, afterlast2 = last2; | 319 | afterlast1 = last1, afterlast2 = last2; |
319 | last1 = i1, last2 = i2; | 320 | last1 = i1, last2 = i2; |
320 | @@ -1130,6 +1151,97 @@ | 321 | @@ -1135,6 +1156,97 @@ |
321 | return ninsns; | 322 | return ninsns; |
322 | } | 323 | } |
323 | 324 | ||
@@ -415,7 +416,7 @@ | |||
415 | /* Return true iff outgoing edges of BB1 and BB2 match, together with | 416 | /* Return true iff outgoing edges of BB1 and BB2 match, together with |
416 | the branch instruction. This means that if we commonize the control | 417 | the branch instruction. This means that if we commonize the control |
417 | flow before end of the basic block, the semantic remains unchanged. | 418 | flow before end of the basic block, the semantic remains unchanged. |
418 | @@ -1498,7 +1610,7 @@ | 419 | @@ -1503,7 +1615,7 @@ |
419 | return false; | 420 | return false; |
420 | 421 | ||
421 | /* ... and part the second. */ | 422 | /* ... and part the second. */ |
@@ -424,11 +425,11 @@ | |||
424 | 425 | ||
425 | /* Don't proceed with the crossjump unless we found a sufficient number | 426 | /* Don't proceed with the crossjump unless we found a sufficient number |
426 | of matching instructions or the 'from' block was totally matched | 427 | of matching instructions or the 'from' block was totally matched |
427 | 428 | Index: gcc-4_5-branch/gcc/cfgexpand.c | |
428 | === modified file 'gcc/cfgexpand.c' | 429 | =================================================================== |
429 | --- old/gcc/cfgexpand.c 2010-05-14 17:11:03 +0000 | 430 | --- gcc-4_5-branch.orig/gcc/cfgexpand.c 2012-03-06 11:53:32.000000000 -0800 |
430 | +++ new/gcc/cfgexpand.c 2010-09-01 13:29:58 +0000 | 431 | +++ gcc-4_5-branch/gcc/cfgexpand.c 2012-03-06 12:14:01.028439167 -0800 |
431 | @@ -3026,14 +3026,15 @@ | 432 | @@ -3033,14 +3033,15 @@ |
432 | if (SCALAR_INT_MODE_P (GET_MODE (op0)) | 433 | if (SCALAR_INT_MODE_P (GET_MODE (op0)) |
433 | && SCALAR_INT_MODE_P (mode)) | 434 | && SCALAR_INT_MODE_P (mode)) |
434 | { | 435 | { |
@@ -448,11 +449,11 @@ | |||
448 | return gen_rtx_MULT (mode, op0, op1); | 449 | return gen_rtx_MULT (mode, op0, op1); |
449 | } | 450 | } |
450 | return NULL; | 451 | return NULL; |
451 | 452 | Index: gcc-4_5-branch/gcc/config/arm/arm.c | |
452 | === modified file 'gcc/config/arm/arm.c' | 453 | =================================================================== |
453 | --- old/gcc/config/arm/arm.c 2010-08-31 10:00:27 +0000 | 454 | --- gcc-4_5-branch.orig/gcc/config/arm/arm.c 2012-03-06 12:11:35.000000000 -0800 |
454 | +++ new/gcc/config/arm/arm.c 2010-09-01 13:29:58 +0000 | 455 | +++ gcc-4_5-branch/gcc/config/arm/arm.c 2012-03-06 12:14:01.032439183 -0800 |
455 | @@ -8116,8 +8116,6 @@ | 456 | @@ -8096,8 +8096,6 @@ |
456 | static bool | 457 | static bool |
457 | xscale_sched_adjust_cost (rtx insn, rtx link, rtx dep, int * cost) | 458 | xscale_sched_adjust_cost (rtx insn, rtx link, rtx dep, int * cost) |
458 | { | 459 | { |
@@ -461,7 +462,7 @@ | |||
461 | /* Some true dependencies can have a higher cost depending | 462 | /* Some true dependencies can have a higher cost depending |
462 | on precisely how certain input operands are used. */ | 463 | on precisely how certain input operands are used. */ |
463 | if (REG_NOTE_KIND (link) == 0 | 464 | if (REG_NOTE_KIND (link) == 0 |
464 | @@ -12166,6 +12164,60 @@ | 465 | @@ -12146,6 +12144,60 @@ |
465 | return result; | 466 | return result; |
466 | } | 467 | } |
467 | 468 | ||
@@ -522,7 +523,7 @@ | |||
522 | /* Gcc puts the pool in the wrong place for ARM, since we can only | 523 | /* Gcc puts the pool in the wrong place for ARM, since we can only |
523 | load addresses a limited distance around the pc. We do some | 524 | load addresses a limited distance around the pc. We do some |
524 | special munging to move the constant pool values to the correct | 525 | special munging to move the constant pool values to the correct |
525 | @@ -12177,6 +12229,9 @@ | 526 | @@ -12157,6 +12209,9 @@ |
526 | HOST_WIDE_INT address = 0; | 527 | HOST_WIDE_INT address = 0; |
527 | Mfix * fix; | 528 | Mfix * fix; |
528 | 529 | ||
@@ -532,10 +533,10 @@ | |||
532 | minipool_fix_head = minipool_fix_tail = NULL; | 533 | minipool_fix_head = minipool_fix_tail = NULL; |
533 | 534 | ||
534 | /* The first insn must always be a note, or the code below won't | 535 | /* The first insn must always be a note, or the code below won't |
535 | 536 | Index: gcc-4_5-branch/gcc/config/arm/arm.h | |
536 | === modified file 'gcc/config/arm/arm.h' | 537 | =================================================================== |
537 | --- old/gcc/config/arm/arm.h 2010-08-13 11:11:15 +0000 | 538 | --- gcc-4_5-branch.orig/gcc/config/arm/arm.h 2012-03-06 12:11:33.000000000 -0800 |
538 | +++ new/gcc/config/arm/arm.h 2010-09-01 13:29:58 +0000 | 539 | +++ gcc-4_5-branch/gcc/config/arm/arm.h 2012-03-06 12:14:01.032439183 -0800 |
539 | @@ -1133,7 +1133,11 @@ | 540 | @@ -1133,7 +1133,11 @@ |
540 | } | 541 | } |
541 | 542 | ||
@@ -549,10 +550,10 @@ | |||
549 | 550 | ||
550 | /* Interrupt functions can only use registers that have already been | 551 | /* Interrupt functions can only use registers that have already been |
551 | saved by the prologue, even if they would normally be | 552 | saved by the prologue, even if they would normally be |
552 | 553 | Index: gcc-4_5-branch/gcc/config/arm/arm.md | |
553 | === modified file 'gcc/config/arm/arm.md' | 554 | =================================================================== |
554 | --- old/gcc/config/arm/arm.md 2010-08-31 10:00:27 +0000 | 555 | --- gcc-4_5-branch.orig/gcc/config/arm/arm.md 2012-03-06 12:11:35.000000000 -0800 |
555 | +++ new/gcc/config/arm/arm.md 2010-09-01 13:29:58 +0000 | 556 | +++ gcc-4_5-branch/gcc/config/arm/arm.md 2012-03-06 12:14:01.036439231 -0800 |
556 | @@ -4074,7 +4074,7 @@ | 557 | @@ -4074,7 +4074,7 @@ |
557 | 558 | ||
558 | (define_split | 559 | (define_split |
@@ -562,10 +563,10 @@ | |||
562 | "!TARGET_THUMB2 && !arm_arch6" | 563 | "!TARGET_THUMB2 && !arm_arch6" |
563 | [(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 16))) | 564 | [(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 16))) |
564 | (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 16)))] | 565 | (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 16)))] |
565 | 566 | Index: gcc-4_5-branch/gcc/config/arm/thumb2.md | |
566 | === modified file 'gcc/config/arm/thumb2.md' | 567 | =================================================================== |
567 | --- old/gcc/config/arm/thumb2.md 2010-08-31 10:00:27 +0000 | 568 | --- gcc-4_5-branch.orig/gcc/config/arm/thumb2.md 2012-03-06 12:11:35.000000000 -0800 |
568 | +++ new/gcc/config/arm/thumb2.md 2010-09-01 13:29:58 +0000 | 569 | +++ gcc-4_5-branch/gcc/config/arm/thumb2.md 2012-03-06 12:14:01.036439231 -0800 |
569 | @@ -1046,29 +1046,6 @@ | 570 | @@ -1046,29 +1046,6 @@ |
570 | }" | 571 | }" |
571 | ) | 572 | ) |
@@ -596,10 +597,10 @@ | |||
596 | (define_insn "*thumb2_alusi3_short" | 597 | (define_insn "*thumb2_alusi3_short" |
597 | [(set (match_operand:SI 0 "s_register_operand" "=l") | 598 | [(set (match_operand:SI 0 "s_register_operand" "=l") |
598 | (match_operator:SI 3 "thumb_16bit_operator" | 599 | (match_operator:SI 3 "thumb_16bit_operator" |
599 | 600 | Index: gcc-4_5-branch/gcc/config/avr/avr.h | |
600 | === modified file 'gcc/config/avr/avr.h' | 601 | =================================================================== |
601 | --- old/gcc/config/avr/avr.h 2010-01-11 23:12:14 +0000 | 602 | --- gcc-4_5-branch.orig/gcc/config/avr/avr.h 2012-03-06 11:53:21.000000000 -0800 |
602 | +++ new/gcc/config/avr/avr.h 2010-09-01 13:29:58 +0000 | 603 | +++ gcc-4_5-branch/gcc/config/avr/avr.h 2012-03-06 12:14:01.036439231 -0800 |
603 | @@ -232,7 +232,7 @@ | 604 | @@ -232,7 +232,7 @@ |
604 | 32,33,34,35 \ | 605 | 32,33,34,35 \ |
605 | } | 606 | } |
@@ -609,10 +610,10 @@ | |||
609 | 610 | ||
610 | 611 | ||
611 | #define HARD_REGNO_NREGS(REGNO, MODE) ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) | 612 | #define HARD_REGNO_NREGS(REGNO, MODE) ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) |
612 | 613 | Index: gcc-4_5-branch/gcc/config/i386/i386.h | |
613 | === modified file 'gcc/config/i386/i386.h' | 614 | =================================================================== |
614 | --- old/gcc/config/i386/i386.h 2010-04-27 19:14:19 +0000 | 615 | --- gcc-4_5-branch.orig/gcc/config/i386/i386.h 2012-03-06 11:53:19.000000000 -0800 |
615 | +++ new/gcc/config/i386/i386.h 2010-09-01 13:29:58 +0000 | 616 | +++ gcc-4_5-branch/gcc/config/i386/i386.h 2012-03-06 12:14:01.036439231 -0800 |
616 | @@ -955,7 +955,7 @@ | 617 | @@ -955,7 +955,7 @@ |
617 | registers listed in CALL_USED_REGISTERS, keeping the others | 618 | registers listed in CALL_USED_REGISTERS, keeping the others |
618 | available for storage of persistent values. | 619 | available for storage of persistent values. |
@@ -636,10 +637,10 @@ | |||
636 | 637 | ||
637 | 638 | ||
638 | #define OVERRIDE_ABI_FORMAT(FNDECL) ix86_call_abi_override (FNDECL) | 639 | #define OVERRIDE_ABI_FORMAT(FNDECL) ix86_call_abi_override (FNDECL) |
639 | 640 | Index: gcc-4_5-branch/gcc/config/mips/mips.h | |
640 | === modified file 'gcc/config/mips/mips.h' | 641 | =================================================================== |
641 | --- old/gcc/config/mips/mips.h 2009-10-29 17:39:52 +0000 | 642 | --- gcc-4_5-branch.orig/gcc/config/mips/mips.h 2012-03-06 11:53:28.000000000 -0800 |
642 | +++ new/gcc/config/mips/mips.h 2010-09-01 13:29:58 +0000 | 643 | +++ gcc-4_5-branch/gcc/config/mips/mips.h 2012-03-06 12:14:01.040439261 -0800 |
643 | @@ -2059,12 +2059,12 @@ | 644 | @@ -2059,12 +2059,12 @@ |
644 | 182,183,184,185,186,187 \ | 645 | 182,183,184,185,186,187 \ |
645 | } | 646 | } |
@@ -655,10 +656,10 @@ | |||
655 | 656 | ||
656 | /* True if VALUE is an unsigned 6-bit number. */ | 657 | /* True if VALUE is an unsigned 6-bit number. */ |
657 | 658 | ||
658 | 659 | Index: gcc-4_5-branch/gcc/config/picochip/picochip.h | |
659 | === modified file 'gcc/config/picochip/picochip.h' | 660 | =================================================================== |
660 | --- old/gcc/config/picochip/picochip.h 2009-11-04 11:06:36 +0000 | 661 | --- gcc-4_5-branch.orig/gcc/config/picochip/picochip.h 2012-03-06 11:53:26.000000000 -0800 |
661 | +++ new/gcc/config/picochip/picochip.h 2010-09-01 13:29:58 +0000 | 662 | +++ gcc-4_5-branch/gcc/config/picochip/picochip.h 2012-03-06 12:14:01.040439261 -0800 |
662 | @@ -261,7 +261,7 @@ | 663 | @@ -261,7 +261,7 @@ |
663 | /* We can dynamically change the REG_ALLOC_ORDER using the following hook. | 664 | /* We can dynamically change the REG_ALLOC_ORDER using the following hook. |
664 | It would be desirable to change it for leaf functions so we can put | 665 | It would be desirable to change it for leaf functions so we can put |
@@ -668,10 +669,10 @@ | |||
668 | 669 | ||
669 | /* How Values Fit in Registers */ | 670 | /* How Values Fit in Registers */ |
670 | 671 | ||
671 | 672 | Index: gcc-4_5-branch/gcc/config/sparc/predicates.md | |
672 | === modified file 'gcc/config/sparc/predicates.md' | 673 | =================================================================== |
673 | --- old/gcc/config/sparc/predicates.md 2009-02-20 15:20:38 +0000 | 674 | --- gcc-4_5-branch.orig/gcc/config/sparc/predicates.md 2012-03-06 11:53:17.000000000 -0800 |
674 | +++ new/gcc/config/sparc/predicates.md 2010-09-01 13:29:58 +0000 | 675 | +++ gcc-4_5-branch/gcc/config/sparc/predicates.md 2012-03-06 12:14:01.040439261 -0800 |
675 | @@ -1,5 +1,5 @@ | 676 | @@ -1,5 +1,5 @@ |
676 | ;; Predicate definitions for SPARC. | 677 | ;; Predicate definitions for SPARC. |
677 | -;; Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc. | 678 | -;; Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc. |
@@ -689,11 +690,11 @@ | |||
689 | - (and (match_code "mem") | 690 | - (and (match_code "mem") |
690 | - (and (match_operand 0 "memory_operand") | 691 | - (and (match_operand 0 "memory_operand") |
691 | - (match_test "REG_P (XEXP (op, 0))")))) | 692 | - (match_test "REG_P (XEXP (op, 0))")))) |
692 | 693 | Index: gcc-4_5-branch/gcc/config/sparc/sparc.h | |
693 | === modified file 'gcc/config/sparc/sparc.h' | 694 | =================================================================== |
694 | --- old/gcc/config/sparc/sparc.h 2010-04-02 18:54:46 +0000 | 695 | --- gcc-4_5-branch.orig/gcc/config/sparc/sparc.h 2012-03-06 11:53:17.000000000 -0800 |
695 | +++ new/gcc/config/sparc/sparc.h 2010-09-01 13:29:58 +0000 | 696 | +++ gcc-4_5-branch/gcc/config/sparc/sparc.h 2012-03-06 12:14:01.040439261 -0800 |
696 | @@ -1181,7 +1181,7 @@ | 697 | @@ -1188,7 +1188,7 @@ |
697 | 96, 97, 98, 99, /* %fcc0-3 */ \ | 698 | 96, 97, 98, 99, /* %fcc0-3 */ \ |
698 | 100, 0, 14, 30, 31, 101} /* %icc, %g0, %o6, %i6, %i7, %sfp */ | 699 | 100, 0, 14, 30, 31, 101} /* %icc, %g0, %o6, %i6, %i7, %sfp */ |
699 | 700 | ||
@@ -702,10 +703,10 @@ | |||
702 | 703 | ||
703 | extern char sparc_leaf_regs[]; | 704 | extern char sparc_leaf_regs[]; |
704 | #define LEAF_REGISTERS sparc_leaf_regs | 705 | #define LEAF_REGISTERS sparc_leaf_regs |
705 | 706 | Index: gcc-4_5-branch/gcc/config/sparc/sync.md | |
706 | === modified file 'gcc/config/sparc/sync.md' | 707 | =================================================================== |
707 | --- old/gcc/config/sparc/sync.md 2009-02-20 15:20:38 +0000 | 708 | --- gcc-4_5-branch.orig/gcc/config/sparc/sync.md 2012-03-06 11:53:17.000000000 -0800 |
708 | +++ new/gcc/config/sparc/sync.md 2010-09-01 13:29:58 +0000 | 709 | +++ gcc-4_5-branch/gcc/config/sparc/sync.md 2012-03-06 12:14:01.040439261 -0800 |
709 | @@ -1,5 +1,5 @@ | 710 | @@ -1,5 +1,5 @@ |
710 | ;; GCC machine description for SPARC synchronization instructions. | 711 | ;; GCC machine description for SPARC synchronization instructions. |
711 | -;; Copyright (C) 2005, 2007, 2009 | 712 | -;; Copyright (C) 2005, 2007, 2009 |
@@ -766,10 +767,10 @@ | |||
766 | return "srlx\t%L3, 32, %H3"; | 767 | return "srlx\t%L3, 32, %H3"; |
767 | } | 768 | } |
768 | [(set_attr "type" "multi") | 769 | [(set_attr "type" "multi") |
769 | 770 | Index: gcc-4_5-branch/gcc/config/xtensa/xtensa.h | |
770 | === modified file 'gcc/config/xtensa/xtensa.h' | 771 | =================================================================== |
771 | --- old/gcc/config/xtensa/xtensa.h 2009-09-23 21:24:42 +0000 | 772 | --- gcc-4_5-branch.orig/gcc/config/xtensa/xtensa.h 2012-03-06 11:53:21.000000000 -0800 |
772 | +++ new/gcc/config/xtensa/xtensa.h 2010-09-01 13:29:58 +0000 | 773 | +++ gcc-4_5-branch/gcc/config/xtensa/xtensa.h 2012-03-06 12:14:01.040439261 -0800 |
773 | @@ -286,7 +286,7 @@ | 774 | @@ -286,7 +286,7 @@ |
774 | incoming argument in a2 is live throughout the function and | 775 | incoming argument in a2 is live throughout the function and |
775 | local-alloc decides to use a2, then the incoming argument must | 776 | local-alloc decides to use a2, then the incoming argument must |
@@ -788,10 +789,10 @@ | |||
788 | 789 | ||
789 | /* For Xtensa, the only point of this is to prevent GCC from otherwise | 790 | /* For Xtensa, the only point of this is to prevent GCC from otherwise |
790 | giving preference to call-used registers. To minimize window | 791 | giving preference to call-used registers. To minimize window |
791 | 792 | Index: gcc-4_5-branch/gcc/doc/tm.texi | |
792 | === modified file 'gcc/doc/tm.texi' | 793 | =================================================================== |
793 | --- old/gcc/doc/tm.texi 2010-08-13 11:53:46 +0000 | 794 | --- gcc-4_5-branch.orig/gcc/doc/tm.texi 2012-03-06 12:11:33.000000000 -0800 |
794 | +++ new/gcc/doc/tm.texi 2010-09-01 13:29:58 +0000 | 795 | +++ gcc-4_5-branch/gcc/doc/tm.texi 2012-03-06 12:14:01.044439265 -0800 |
795 | @@ -2093,7 +2093,7 @@ | 796 | @@ -2093,7 +2093,7 @@ |
796 | the highest numbered allocable register first. | 797 | the highest numbered allocable register first. |
797 | @end defmac | 798 | @end defmac |
@@ -817,11 +818,11 @@ | |||
817 | @defmac IRA_HARD_REGNO_ADD_COST_MULTIPLIER (@var{regno}) | 818 | @defmac IRA_HARD_REGNO_ADD_COST_MULTIPLIER (@var{regno}) |
818 | In some case register allocation order is not enough for the | 819 | In some case register allocation order is not enough for the |
819 | Integrated Register Allocator (@acronym{IRA}) to generate a good code. | 820 | Integrated Register Allocator (@acronym{IRA}) to generate a good code. |
820 | 821 | Index: gcc-4_5-branch/gcc/expmed.c | |
821 | === modified file 'gcc/expmed.c' | 822 | =================================================================== |
822 | --- old/gcc/expmed.c 2010-03-03 22:10:17 +0000 | 823 | --- gcc-4_5-branch.orig/gcc/expmed.c 2012-03-06 11:53:32.000000000 -0800 |
823 | +++ new/gcc/expmed.c 2010-09-01 13:29:58 +0000 | 824 | +++ gcc-4_5-branch/gcc/expmed.c 2012-03-06 12:14:01.044439265 -0800 |
824 | @@ -3253,6 +3253,55 @@ | 825 | @@ -3255,6 +3255,55 @@ |
825 | gcc_assert (op0); | 826 | gcc_assert (op0); |
826 | return op0; | 827 | return op0; |
827 | } | 828 | } |
@@ -877,11 +878,11 @@ | |||
877 | 878 | ||
878 | /* Return the smallest n such that 2**n >= X. */ | 879 | /* Return the smallest n such that 2**n >= X. */ |
879 | 880 | ||
880 | 881 | Index: gcc-4_5-branch/gcc/expr.c | |
881 | === modified file 'gcc/expr.c' | 882 | =================================================================== |
882 | --- old/gcc/expr.c 2010-08-20 16:21:01 +0000 | 883 | --- gcc-4_5-branch.orig/gcc/expr.c 2012-03-06 12:11:34.000000000 -0800 |
883 | +++ new/gcc/expr.c 2010-09-01 13:29:58 +0000 | 884 | +++ gcc-4_5-branch/gcc/expr.c 2012-03-06 12:46:21.548533151 -0800 |
884 | @@ -7224,7 +7224,6 @@ | 885 | @@ -7345,7 +7345,6 @@ |
885 | optab this_optab; | 886 | optab this_optab; |
886 | rtx subtarget, original_target; | 887 | rtx subtarget, original_target; |
887 | int ignore; | 888 | int ignore; |
@@ -889,7 +890,7 @@ | |||
889 | bool reduce_bit_field; | 890 | bool reduce_bit_field; |
890 | gimple subexp0_def, subexp1_def; | 891 | gimple subexp0_def, subexp1_def; |
891 | tree top0, top1; | 892 | tree top0, top1; |
892 | @@ -7679,13 +7678,7 @@ | 893 | @@ -7800,13 +7799,7 @@ |
893 | 894 | ||
894 | goto binop2; | 895 | goto binop2; |
895 | 896 | ||
@@ -904,7 +905,7 @@ | |||
904 | /* If first operand is constant, swap them. | 905 | /* If first operand is constant, swap them. |
905 | Thus the following special case checks need only | 906 | Thus the following special case checks need only |
906 | check the second operand. */ | 907 | check the second operand. */ |
907 | @@ -7696,96 +7689,35 @@ | 908 | @@ -7817,96 +7810,35 @@ |
908 | treeop1 = t1; | 909 | treeop1 = t1; |
909 | } | 910 | } |
910 | 911 | ||
@@ -1015,7 +1016,7 @@ | |||
1015 | enum machine_mode innermode = TYPE_MODE (op0type); | 1016 | enum machine_mode innermode = TYPE_MODE (op0type); |
1016 | bool zextend_p = TYPE_UNSIGNED (op0type); | 1017 | bool zextend_p = TYPE_UNSIGNED (op0type); |
1017 | optab other_optab = zextend_p ? smul_widen_optab : umul_widen_optab; | 1018 | optab other_optab = zextend_p ? smul_widen_optab : umul_widen_optab; |
1018 | @@ -7795,24 +7727,22 @@ | 1019 | @@ -7916,24 +7848,22 @@ |
1019 | { | 1020 | { |
1020 | if (optab_handler (this_optab, mode)->insn_code != CODE_FOR_nothing) | 1021 | if (optab_handler (this_optab, mode)->insn_code != CODE_FOR_nothing) |
1021 | { | 1022 | { |
@@ -1051,7 +1052,7 @@ | |||
1051 | temp = expand_binop (mode, other_optab, op0, op1, target, | 1052 | temp = expand_binop (mode, other_optab, op0, op1, target, |
1052 | unsignedp, OPTAB_LIB_WIDEN); | 1053 | unsignedp, OPTAB_LIB_WIDEN); |
1053 | hipart = gen_highpart (innermode, temp); | 1054 | hipart = gen_highpart (innermode, temp); |
1054 | @@ -7825,7 +7755,53 @@ | 1055 | @@ -7946,7 +7876,53 @@ |
1055 | } | 1056 | } |
1056 | } | 1057 | } |
1057 | } | 1058 | } |
@@ -1106,7 +1107,7 @@ | |||
1106 | return REDUCE_BIT_FIELD (expand_mult (mode, op0, op1, target, unsignedp)); | 1107 | return REDUCE_BIT_FIELD (expand_mult (mode, op0, op1, target, unsignedp)); |
1107 | 1108 | ||
1108 | case TRUNC_DIV_EXPR: | 1109 | case TRUNC_DIV_EXPR: |
1109 | @@ -8311,6 +8287,8 @@ | 1110 | @@ -8435,6 +8411,8 @@ |
1110 | location_t loc = EXPR_LOCATION (exp); | 1111 | location_t loc = EXPR_LOCATION (exp); |
1111 | struct separate_ops ops; | 1112 | struct separate_ops ops; |
1112 | tree treeop0, treeop1, treeop2; | 1113 | tree treeop0, treeop1, treeop2; |
@@ -1115,7 +1116,7 @@ | |||
1115 | 1116 | ||
1116 | type = TREE_TYPE (exp); | 1117 | type = TREE_TYPE (exp); |
1117 | mode = TYPE_MODE (type); | 1118 | mode = TYPE_MODE (type); |
1118 | @@ -8423,15 +8401,17 @@ | 1119 | @@ -8547,15 +8525,17 @@ |
1119 | base variable. This unnecessarily allocates a pseudo, see how we can | 1120 | base variable. This unnecessarily allocates a pseudo, see how we can |
1120 | reuse it, if partition base vars have it set already. */ | 1121 | reuse it, if partition base vars have it set already. */ |
1121 | if (!currently_expanding_to_rtl) | 1122 | if (!currently_expanding_to_rtl) |
@@ -1142,22 +1143,11 @@ | |||
1142 | goto expand_decl_rtl; | 1143 | goto expand_decl_rtl; |
1143 | 1144 | ||
1144 | case PARM_DECL: | 1145 | case PARM_DECL: |
1145 | @@ -8533,15 +8513,21 @@ | 1146 | @@ -8669,7 +8649,15 @@ |
1146 | /* If the mode of DECL_RTL does not match that of the decl, it | ||
1147 | must be a promoted value. We return a SUBREG of the wanted mode, | ||
1148 | but mark it so that we know that it was already extended. */ | ||
1149 | - | ||
1150 | - if (REG_P (decl_rtl) | ||
1151 | - && GET_MODE (decl_rtl) != DECL_MODE (exp)) | ||
1152 | + if (REG_P (decl_rtl) && GET_MODE (decl_rtl) != DECL_MODE (exp)) | ||
1153 | { | ||
1154 | enum machine_mode pmode; | ||
1155 | 1147 | ||
1156 | - /* Get the signedness used for this variable. Ensure we get the | 1148 | /* Get the signedness used for this variable. Ensure we get the |
1157 | - same mode we got when the variable was declared. */ | 1149 | same mode we got when the variable was declared. */ |
1158 | - pmode = promote_decl_mode (exp, &unsignedp); | 1150 | - pmode = promote_decl_mode (exp, &unsignedp); |
1159 | + /* Get the signedness to be used for this variable. Ensure we get | ||
1160 | + the same mode we got when the variable was declared. */ | ||
1161 | + if (code == SSA_NAME | 1151 | + if (code == SSA_NAME |
1162 | + && (g = SSA_NAME_DEF_STMT (ssa_name)) | 1152 | + && (g = SSA_NAME_DEF_STMT (ssa_name)) |
1163 | + && gimple_code (g) == GIMPLE_CALL) | 1153 | + && gimple_code (g) == GIMPLE_CALL) |
@@ -1170,11 +1160,11 @@ | |||
1170 | gcc_assert (GET_MODE (decl_rtl) == pmode); | 1160 | gcc_assert (GET_MODE (decl_rtl) == pmode); |
1171 | 1161 | ||
1172 | temp = gen_lowpart_SUBREG (mode, decl_rtl); | 1162 | temp = gen_lowpart_SUBREG (mode, decl_rtl); |
1173 | 1163 | Index: gcc-4_5-branch/gcc/fold-const.c | |
1174 | === modified file 'gcc/fold-const.c' | 1164 | =================================================================== |
1175 | --- old/gcc/fold-const.c 2010-04-06 09:36:57 +0000 | 1165 | --- gcc-4_5-branch.orig/gcc/fold-const.c 2012-03-06 11:53:32.000000000 -0800 |
1176 | +++ new/gcc/fold-const.c 2010-09-01 13:29:58 +0000 | 1166 | +++ gcc-4_5-branch/gcc/fold-const.c 2012-03-06 12:14:01.052439240 -0800 |
1177 | @@ -5741,6 +5741,76 @@ | 1167 | @@ -5749,6 +5749,76 @@ |
1178 | const_binop (BIT_XOR_EXPR, c, temp, 0)); | 1168 | const_binop (BIT_XOR_EXPR, c, temp, 0)); |
1179 | } | 1169 | } |
1180 | 1170 | ||
@@ -1251,7 +1241,7 @@ | |||
1251 | /* Find ways of folding logical expressions of LHS and RHS: | 1241 | /* Find ways of folding logical expressions of LHS and RHS: |
1252 | Try to merge two comparisons to the same innermost item. | 1242 | Try to merge two comparisons to the same innermost item. |
1253 | Look for range tests like "ch >= '0' && ch <= '9'". | 1243 | Look for range tests like "ch >= '0' && ch <= '9'". |
1254 | @@ -12539,6 +12609,22 @@ | 1244 | @@ -12553,6 +12623,22 @@ |
1255 | if (0 != (tem = fold_range_test (loc, code, type, op0, op1))) | 1245 | if (0 != (tem = fold_range_test (loc, code, type, op0, op1))) |
1256 | return tem; | 1246 | return tem; |
1257 | 1247 | ||
@@ -1274,10 +1264,10 @@ | |||
1274 | /* Check for the possibility of merging component references. If our | 1264 | /* Check for the possibility of merging component references. If our |
1275 | lhs is another similar operation, try to merge its rhs with our | 1265 | lhs is another similar operation, try to merge its rhs with our |
1276 | rhs. Then try to merge our lhs and rhs. */ | 1266 | rhs. Then try to merge our lhs and rhs. */ |
1277 | 1267 | Index: gcc-4_5-branch/gcc/ifcvt.c | |
1278 | === modified file 'gcc/ifcvt.c' | 1268 | =================================================================== |
1279 | --- old/gcc/ifcvt.c 2010-04-02 18:54:46 +0000 | 1269 | --- gcc-4_5-branch.orig/gcc/ifcvt.c 2012-03-06 11:53:32.000000000 -0800 |
1280 | +++ new/gcc/ifcvt.c 2010-09-01 13:29:58 +0000 | 1270 | +++ gcc-4_5-branch/gcc/ifcvt.c 2012-03-06 12:14:01.052439240 -0800 |
1281 | @@ -385,7 +385,11 @@ | 1271 | @@ -385,7 +385,11 @@ |
1282 | rtx false_expr; /* test for then block insns */ | 1272 | rtx false_expr; /* test for then block insns */ |
1283 | rtx true_prob_val; /* probability of else block */ | 1273 | rtx true_prob_val; /* probability of else block */ |
@@ -1395,11 +1385,11 @@ | |||
1395 | merge_if_block (ce_info); | 1385 | merge_if_block (ce_info); |
1396 | cond_exec_changed_p = TRUE; | 1386 | cond_exec_changed_p = TRUE; |
1397 | return TRUE; | 1387 | return TRUE; |
1398 | 1388 | Index: gcc-4_5-branch/gcc/ira-color.c | |
1399 | === modified file 'gcc/ira-color.c' | 1389 | =================================================================== |
1400 | --- old/gcc/ira-color.c 2010-04-02 18:54:46 +0000 | 1390 | --- gcc-4_5-branch.orig/gcc/ira-color.c 2012-03-06 11:53:32.000000000 -0800 |
1401 | +++ new/gcc/ira-color.c 2010-09-01 13:29:58 +0000 | 1391 | +++ gcc-4_5-branch/gcc/ira-color.c 2012-03-06 12:14:01.056439222 -0800 |
1402 | @@ -441,14 +441,18 @@ | 1392 | @@ -447,14 +447,18 @@ |
1403 | { | 1393 | { |
1404 | HARD_REG_SET conflicting_regs; | 1394 | HARD_REG_SET conflicting_regs; |
1405 | int i, j, k, hard_regno, best_hard_regno, class_size; | 1395 | int i, j, k, hard_regno, best_hard_regno, class_size; |
@@ -1420,7 +1410,7 @@ | |||
1420 | #ifdef STACK_REGS | 1410 | #ifdef STACK_REGS |
1421 | bool no_stack_reg_p; | 1411 | bool no_stack_reg_p; |
1422 | #endif | 1412 | #endif |
1423 | @@ -586,6 +590,7 @@ | 1413 | @@ -592,6 +596,7 @@ |
1424 | continue; | 1414 | continue; |
1425 | cost = costs[i]; | 1415 | cost = costs[i]; |
1426 | full_cost = full_costs[i]; | 1416 | full_cost = full_costs[i]; |
@@ -1428,7 +1418,7 @@ | |||
1428 | if (! allocated_hardreg_p[hard_regno] | 1418 | if (! allocated_hardreg_p[hard_regno] |
1429 | && ira_hard_reg_not_in_set_p (hard_regno, mode, call_used_reg_set)) | 1419 | && ira_hard_reg_not_in_set_p (hard_regno, mode, call_used_reg_set)) |
1430 | /* We need to save/restore the hard register in | 1420 | /* We need to save/restore the hard register in |
1431 | @@ -598,6 +603,7 @@ | 1421 | @@ -604,6 +609,7 @@ |
1432 | cost += add_cost; | 1422 | cost += add_cost; |
1433 | full_cost += add_cost; | 1423 | full_cost += add_cost; |
1434 | } | 1424 | } |
@@ -1436,10 +1426,10 @@ | |||
1436 | if (min_cost > cost) | 1426 | if (min_cost > cost) |
1437 | min_cost = cost; | 1427 | min_cost = cost; |
1438 | if (min_full_cost > full_cost) | 1428 | if (min_full_cost > full_cost) |
1439 | 1429 | Index: gcc-4_5-branch/gcc/ira-costs.c | |
1440 | === modified file 'gcc/ira-costs.c' | 1430 | =================================================================== |
1441 | --- old/gcc/ira-costs.c 2010-08-13 11:40:17 +0000 | 1431 | --- gcc-4_5-branch.orig/gcc/ira-costs.c 2012-03-06 12:11:33.000000000 -0800 |
1442 | +++ new/gcc/ira-costs.c 2010-09-01 13:29:58 +0000 | 1432 | +++ gcc-4_5-branch/gcc/ira-costs.c 2012-03-06 12:14:01.056439222 -0800 |
1443 | @@ -33,6 +33,7 @@ | 1433 | @@ -33,6 +33,7 @@ |
1444 | #include "addresses.h" | 1434 | #include "addresses.h" |
1445 | #include "insn-config.h" | 1435 | #include "insn-config.h" |
@@ -1525,10 +1515,10 @@ | |||
1525 | + else | 1515 | + else |
1526 | + regno_equiv_gains[regno] += cost; | 1516 | + regno_equiv_gains[regno] += cost; |
1527 | +} | 1517 | +} |
1528 | 1518 | Index: gcc-4_5-branch/gcc/ira.c | |
1529 | === modified file 'gcc/ira.c' | 1519 | =================================================================== |
1530 | --- old/gcc/ira.c 2010-08-12 13:51:16 +0000 | 1520 | --- gcc-4_5-branch.orig/gcc/ira.c 2012-03-06 12:11:32.000000000 -0800 |
1531 | +++ new/gcc/ira.c 2010-09-01 13:29:58 +0000 | 1521 | +++ gcc-4_5-branch/gcc/ira.c 2012-03-06 12:14:01.056439222 -0800 |
1532 | @@ -431,9 +431,6 @@ | 1522 | @@ -431,9 +431,6 @@ |
1533 | HARD_REG_SET processed_hard_reg_set; | 1523 | HARD_REG_SET processed_hard_reg_set; |
1534 | 1524 | ||
@@ -1564,7 +1554,7 @@ | |||
1564 | { | 1554 | { |
1565 | /* It can happen that a REG_EQUIV note contains a MEM | 1555 | /* It can happen that a REG_EQUIV note contains a MEM |
1566 | that is not a legitimate memory operand. As later | 1556 | that is not a legitimate memory operand. As later |
1567 | @@ -3097,8 +3093,19 @@ | 1557 | @@ -3096,8 +3092,19 @@ |
1568 | if (dump_file) | 1558 | if (dump_file) |
1569 | print_insn_chains (dump_file); | 1559 | print_insn_chains (dump_file); |
1570 | } | 1560 | } |
@@ -1585,7 +1575,7 @@ | |||
1585 | 1575 | ||
1586 | /* All natural loops. */ | 1576 | /* All natural loops. */ |
1587 | struct loops ira_loops; | 1577 | struct loops ira_loops; |
1588 | @@ -3203,6 +3210,8 @@ | 1578 | @@ -3202,6 +3209,8 @@ |
1589 | record_loop_exits (); | 1579 | record_loop_exits (); |
1590 | current_loops = &ira_loops; | 1580 | current_loops = &ira_loops; |
1591 | 1581 | ||
@@ -1594,7 +1584,7 @@ | |||
1594 | if (internal_flag_ira_verbose > 0 && ira_dump_file != NULL) | 1584 | if (internal_flag_ira_verbose > 0 && ira_dump_file != NULL) |
1595 | fprintf (ira_dump_file, "Building IRA IR\n"); | 1585 | fprintf (ira_dump_file, "Building IRA IR\n"); |
1596 | loops_p = ira_build (optimize | 1586 | loops_p = ira_build (optimize |
1597 | @@ -3263,13 +3272,8 @@ | 1587 | @@ -3265,13 +3274,8 @@ |
1598 | #endif | 1588 | #endif |
1599 | 1589 | ||
1600 | delete_trivially_dead_insns (get_insns (), max_reg_num ()); | 1590 | delete_trivially_dead_insns (get_insns (), max_reg_num ()); |
@@ -1609,19 +1599,19 @@ | |||
1609 | 1599 | ||
1610 | if (max_regno != max_regno_before_ira) | 1600 | if (max_regno != max_regno_before_ira) |
1611 | { | 1601 | { |
1612 | 1602 | Index: gcc-4_5-branch/gcc/ira.h | |
1613 | === modified file 'gcc/ira.h' | 1603 | =================================================================== |
1614 | --- old/gcc/ira.h 2009-09-02 17:54:25 +0000 | 1604 | --- gcc-4_5-branch.orig/gcc/ira.h 2012-03-06 11:53:32.000000000 -0800 |
1615 | +++ new/gcc/ira.h 2010-09-01 13:29:58 +0000 | 1605 | +++ gcc-4_5-branch/gcc/ira.h 2012-03-06 12:14:01.056439222 -0800 |
1616 | @@ -87,3 +87,4 @@ | 1606 | @@ -87,3 +87,4 @@ |
1617 | extern void ira_mark_new_stack_slot (rtx, int, unsigned int); | 1607 | extern void ira_mark_new_stack_slot (rtx, int, unsigned int); |
1618 | extern bool ira_better_spill_reload_regno_p (int *, int *, rtx, rtx, rtx); | 1608 | extern bool ira_better_spill_reload_regno_p (int *, int *, rtx, rtx, rtx); |
1619 | 1609 | ||
1620 | +extern void ira_adjust_equiv_reg_cost (unsigned, int); | 1610 | +extern void ira_adjust_equiv_reg_cost (unsigned, int); |
1621 | 1611 | Index: gcc-4_5-branch/gcc/optabs.h | |
1622 | === modified file 'gcc/optabs.h' | 1612 | =================================================================== |
1623 | --- old/gcc/optabs.h 2009-11-25 10:55:54 +0000 | 1613 | --- gcc-4_5-branch.orig/gcc/optabs.h 2012-03-06 11:53:32.000000000 -0800 |
1624 | +++ new/gcc/optabs.h 2010-09-01 13:29:58 +0000 | 1614 | +++ gcc-4_5-branch/gcc/optabs.h 2012-03-06 12:14:01.056439222 -0800 |
1625 | @@ -771,6 +771,9 @@ | 1615 | @@ -771,6 +771,9 @@ |
1626 | /* Generate code for float to integral conversion. */ | 1616 | /* Generate code for float to integral conversion. */ |
1627 | extern bool expand_sfix_optab (rtx, rtx, convert_optab); | 1617 | extern bool expand_sfix_optab (rtx, rtx, convert_optab); |
@@ -1632,10 +1622,10 @@ | |||
1632 | /* Return tree if target supports vector operations for COND_EXPR. */ | 1622 | /* Return tree if target supports vector operations for COND_EXPR. */ |
1633 | bool expand_vec_cond_expr_p (tree, enum machine_mode); | 1623 | bool expand_vec_cond_expr_p (tree, enum machine_mode); |
1634 | 1624 | ||
1635 | 1625 | Index: gcc-4_5-branch/gcc/passes.c | |
1636 | === modified file 'gcc/passes.c' | 1626 | =================================================================== |
1637 | --- old/gcc/passes.c 2010-05-19 12:14:37 +0000 | 1627 | --- gcc-4_5-branch.orig/gcc/passes.c 2012-03-06 11:53:32.000000000 -0800 |
1638 | +++ new/gcc/passes.c 2010-09-01 13:29:58 +0000 | 1628 | +++ gcc-4_5-branch/gcc/passes.c 2012-03-06 12:14:01.056439222 -0800 |
1639 | @@ -944,6 +944,7 @@ | 1629 | @@ -944,6 +944,7 @@ |
1640 | NEXT_PASS (pass_forwprop); | 1630 | NEXT_PASS (pass_forwprop); |
1641 | NEXT_PASS (pass_phiopt); | 1631 | NEXT_PASS (pass_phiopt); |
@@ -1644,10 +1634,10 @@ | |||
1644 | NEXT_PASS (pass_tail_calls); | 1634 | NEXT_PASS (pass_tail_calls); |
1645 | NEXT_PASS (pass_rename_ssa_copies); | 1635 | NEXT_PASS (pass_rename_ssa_copies); |
1646 | NEXT_PASS (pass_uncprop); | 1636 | NEXT_PASS (pass_uncprop); |
1647 | 1637 | Index: gcc-4_5-branch/gcc/reload.h | |
1648 | === modified file 'gcc/reload.h' | 1638 | =================================================================== |
1649 | --- old/gcc/reload.h 2010-04-02 18:54:46 +0000 | 1639 | --- gcc-4_5-branch.orig/gcc/reload.h 2012-03-06 11:53:32.000000000 -0800 |
1650 | +++ new/gcc/reload.h 2010-09-01 13:29:58 +0000 | 1640 | +++ gcc-4_5-branch/gcc/reload.h 2012-03-06 12:14:01.056439222 -0800 |
1651 | @@ -347,6 +347,10 @@ | 1641 | @@ -347,6 +347,10 @@ |
1652 | extern rtx eliminate_regs (rtx, enum machine_mode, rtx); | 1642 | extern rtx eliminate_regs (rtx, enum machine_mode, rtx); |
1653 | extern bool elimination_target_reg_p (rtx); | 1643 | extern bool elimination_target_reg_p (rtx); |
@@ -1659,10 +1649,10 @@ | |||
1659 | /* Deallocate the reload register used by reload number R. */ | 1649 | /* Deallocate the reload register used by reload number R. */ |
1660 | extern void deallocate_reload_reg (int r); | 1650 | extern void deallocate_reload_reg (int r); |
1661 | 1651 | ||
1662 | 1652 | Index: gcc-4_5-branch/gcc/reload1.c | |
1663 | === modified file 'gcc/reload1.c' | 1653 | =================================================================== |
1664 | --- old/gcc/reload1.c 2010-03-02 18:56:50 +0000 | 1654 | --- gcc-4_5-branch.orig/gcc/reload1.c 2012-03-06 11:53:32.000000000 -0800 |
1665 | +++ new/gcc/reload1.c 2010-09-01 13:29:58 +0000 | 1655 | +++ gcc-4_5-branch/gcc/reload1.c 2012-03-06 12:14:01.060439213 -0800 |
1666 | @@ -413,6 +413,7 @@ | 1656 | @@ -413,6 +413,7 @@ |
1667 | static void set_label_offsets (rtx, rtx, int); | 1657 | static void set_label_offsets (rtx, rtx, int); |
1668 | static void check_eliminable_occurrences (rtx); | 1658 | static void check_eliminable_occurrences (rtx); |
@@ -1683,7 +1673,7 @@ | |||
1683 | static void spill_hard_reg (unsigned int, int); | 1673 | static void spill_hard_reg (unsigned int, int); |
1684 | static int finish_spills (int); | 1674 | static int finish_spills (int); |
1685 | static void scan_paradoxical_subregs (rtx); | 1675 | static void scan_paradoxical_subregs (rtx); |
1686 | @@ -698,6 +702,9 @@ | 1676 | @@ -697,6 +701,9 @@ |
1687 | 1677 | ||
1688 | /* Global variables used by reload and its subroutines. */ | 1678 | /* Global variables used by reload and its subroutines. */ |
1689 | 1679 | ||
@@ -1693,7 +1683,7 @@ | |||
1693 | /* Set during calculate_needs if an insn needs register elimination. */ | 1683 | /* Set during calculate_needs if an insn needs register elimination. */ |
1694 | static int something_needs_elimination; | 1684 | static int something_needs_elimination; |
1695 | /* Set during calculate_needs if an insn needs an operand changed. */ | 1685 | /* Set during calculate_needs if an insn needs an operand changed. */ |
1696 | @@ -776,22 +783,6 @@ | 1686 | @@ -775,22 +782,6 @@ |
1697 | if (! call_used_regs[i] && ! fixed_regs[i] && ! LOCAL_REGNO (i)) | 1687 | if (! call_used_regs[i] && ! fixed_regs[i] && ! LOCAL_REGNO (i)) |
1698 | df_set_regs_ever_live (i, true); | 1688 | df_set_regs_ever_live (i, true); |
1699 | 1689 | ||
@@ -1716,7 +1706,7 @@ | |||
1716 | reg_old_renumber = XCNEWVEC (short, max_regno); | 1706 | reg_old_renumber = XCNEWVEC (short, max_regno); |
1717 | memcpy (reg_old_renumber, reg_renumber, max_regno * sizeof (short)); | 1707 | memcpy (reg_old_renumber, reg_renumber, max_regno * sizeof (short)); |
1718 | pseudo_forbidden_regs = XNEWVEC (HARD_REG_SET, max_regno); | 1708 | pseudo_forbidden_regs = XNEWVEC (HARD_REG_SET, max_regno); |
1719 | @@ -799,115 +790,9 @@ | 1709 | @@ -798,115 +789,9 @@ |
1720 | 1710 | ||
1721 | CLEAR_HARD_REG_SET (bad_spill_regs_global); | 1711 | CLEAR_HARD_REG_SET (bad_spill_regs_global); |
1722 | 1712 | ||
@@ -1833,13 +1823,11 @@ | |||
1833 | /* Alter each pseudo-reg rtx to contain its hard reg number. Assign | 1823 | /* Alter each pseudo-reg rtx to contain its hard reg number. Assign |
1834 | stack slots to the pseudos that lack hard regs or equivalents. | 1824 | stack slots to the pseudos that lack hard regs or equivalents. |
1835 | Do not touch virtual registers. */ | 1825 | Do not touch virtual registers. */ |
1836 | @@ -1411,31 +1296,11 @@ | 1826 | @@ -1410,31 +1295,11 @@ |
1837 | } | 1827 | } |
1838 | } | 1828 | } |
1839 | 1829 | ||
1840 | + free (temp_pseudo_reg_arr); | 1830 | - /* Indicate that we no longer have known memory locations or constants. */ |
1841 | + | ||
1842 | /* Indicate that we no longer have known memory locations or constants. */ | ||
1843 | - if (reg_equiv_constant) | 1831 | - if (reg_equiv_constant) |
1844 | - free (reg_equiv_constant); | 1832 | - free (reg_equiv_constant); |
1845 | - if (reg_equiv_invariant) | 1833 | - if (reg_equiv_invariant) |
@@ -1849,8 +1837,8 @@ | |||
1849 | - VEC_free (rtx, gc, reg_equiv_memory_loc_vec); | 1837 | - VEC_free (rtx, gc, reg_equiv_memory_loc_vec); |
1850 | - reg_equiv_memory_loc = 0; | 1838 | - reg_equiv_memory_loc = 0; |
1851 | - | 1839 | - |
1852 | - free (temp_pseudo_reg_arr); | 1840 | free (temp_pseudo_reg_arr); |
1853 | - | 1841 | |
1854 | - if (offsets_known_at) | 1842 | - if (offsets_known_at) |
1855 | - free (offsets_known_at); | 1843 | - free (offsets_known_at); |
1856 | - if (offsets_at) | 1844 | - if (offsets_at) |
@@ -1862,13 +1850,14 @@ | |||
1862 | - free (reg_equiv_alt_mem_list); | 1850 | - free (reg_equiv_alt_mem_list); |
1863 | - | 1851 | - |
1864 | - free (reg_equiv_mem); | 1852 | - free (reg_equiv_mem); |
1853 | + /* Indicate that we no longer have known memory locations or constants. */ | ||
1865 | + free_reg_equiv (); | 1854 | + free_reg_equiv (); |
1866 | reg_equiv_init = 0; | 1855 | reg_equiv_init = 0; |
1867 | - free (reg_equiv_address); | 1856 | - free (reg_equiv_address); |
1868 | free (reg_max_ref_width); | 1857 | free (reg_max_ref_width); |
1869 | free (reg_old_renumber); | 1858 | free (reg_old_renumber); |
1870 | free (pseudo_previous_regs); | 1859 | free (pseudo_previous_regs); |
1871 | @@ -1728,6 +1593,100 @@ | 1860 | @@ -1727,6 +1592,100 @@ |
1872 | *pprev_reload = 0; | 1861 | *pprev_reload = 0; |
1873 | } | 1862 | } |
1874 | 1863 | ||
@@ -1969,7 +1958,7 @@ | |||
1969 | /* Comparison function for qsort to decide which of two reloads | 1958 | /* Comparison function for qsort to decide which of two reloads |
1970 | should be handled first. *P1 and *P2 are the reload numbers. */ | 1959 | should be handled first. *P1 and *P2 are the reload numbers. */ |
1971 | 1960 | ||
1972 | @@ -2514,6 +2473,36 @@ | 1961 | @@ -2513,6 +2472,36 @@ |
1973 | } | 1962 | } |
1974 | } | 1963 | } |
1975 | 1964 | ||
@@ -2006,7 +1995,7 @@ | |||
2006 | /* Scan X and replace any eliminable registers (such as fp) with a | 1995 | /* Scan X and replace any eliminable registers (such as fp) with a |
2007 | replacement (such as sp), plus an offset. | 1996 | replacement (such as sp), plus an offset. |
2008 | 1997 | ||
2009 | @@ -2533,6 +2522,9 @@ | 1998 | @@ -2532,6 +2521,9 @@ |
2010 | This means, do not set ref_outside_mem even if the reference | 1999 | This means, do not set ref_outside_mem even if the reference |
2011 | is outside of MEMs. | 2000 | is outside of MEMs. |
2012 | 2001 | ||
@@ -2016,7 +2005,7 @@ | |||
2016 | REG_EQUIV_MEM and REG_EQUIV_ADDRESS contain address that have had | 2005 | REG_EQUIV_MEM and REG_EQUIV_ADDRESS contain address that have had |
2017 | replacements done assuming all offsets are at their initial values. If | 2006 | replacements done assuming all offsets are at their initial values. If |
2018 | they are not, or if REG_EQUIV_ADDRESS is nonzero for a pseudo we | 2007 | they are not, or if REG_EQUIV_ADDRESS is nonzero for a pseudo we |
2019 | @@ -2541,7 +2533,7 @@ | 2008 | @@ -2540,7 +2532,7 @@ |
2020 | 2009 | ||
2021 | static rtx | 2010 | static rtx |
2022 | eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn, | 2011 | eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn, |
@@ -2025,7 +2014,7 @@ | |||
2025 | { | 2014 | { |
2026 | enum rtx_code code = GET_CODE (x); | 2015 | enum rtx_code code = GET_CODE (x); |
2027 | struct elim_table *ep; | 2016 | struct elim_table *ep; |
2028 | @@ -2589,11 +2581,12 @@ | 2017 | @@ -2588,11 +2580,12 @@ |
2029 | { | 2018 | { |
2030 | if (may_use_invariant || (insn && DEBUG_INSN_P (insn))) | 2019 | if (may_use_invariant || (insn && DEBUG_INSN_P (insn))) |
2031 | return eliminate_regs_1 (copy_rtx (reg_equiv_invariant[regno]), | 2020 | return eliminate_regs_1 (copy_rtx (reg_equiv_invariant[regno]), |
@@ -2040,7 +2029,7 @@ | |||
2040 | } | 2029 | } |
2041 | return x; | 2030 | return x; |
2042 | 2031 | ||
2043 | @@ -2654,8 +2647,10 @@ | 2032 | @@ -2653,8 +2646,10 @@ |
2044 | operand of a load-address insn. */ | 2033 | operand of a load-address insn. */ |
2045 | 2034 | ||
2046 | { | 2035 | { |
@@ -2053,7 +2042,7 @@ | |||
2053 | 2042 | ||
2054 | if (reg_renumber && (new0 != XEXP (x, 0) || new1 != XEXP (x, 1))) | 2043 | if (reg_renumber && (new0 != XEXP (x, 0) || new1 != XEXP (x, 1))) |
2055 | { | 2044 | { |
2056 | @@ -2729,9 +2724,11 @@ | 2045 | @@ -2728,9 +2723,11 @@ |
2057 | case GE: case GT: case GEU: case GTU: | 2046 | case GE: case GT: case GEU: case GTU: |
2058 | case LE: case LT: case LEU: case LTU: | 2047 | case LE: case LT: case LEU: case LTU: |
2059 | { | 2048 | { |
@@ -2067,7 +2056,7 @@ | |||
2067 | 2056 | ||
2068 | if (new0 != XEXP (x, 0) || new1 != XEXP (x, 1)) | 2057 | if (new0 != XEXP (x, 0) || new1 != XEXP (x, 1)) |
2069 | return gen_rtx_fmt_ee (code, GET_MODE (x), new0, new1); | 2058 | return gen_rtx_fmt_ee (code, GET_MODE (x), new0, new1); |
2070 | @@ -2742,7 +2739,8 @@ | 2059 | @@ -2741,7 +2738,8 @@ |
2071 | /* If we have something in XEXP (x, 0), the usual case, eliminate it. */ | 2060 | /* If we have something in XEXP (x, 0), the usual case, eliminate it. */ |
2072 | if (XEXP (x, 0)) | 2061 | if (XEXP (x, 0)) |
2073 | { | 2062 | { |
@@ -2077,7 +2066,7 @@ | |||
2077 | if (new_rtx != XEXP (x, 0)) | 2066 | if (new_rtx != XEXP (x, 0)) |
2078 | { | 2067 | { |
2079 | /* If this is a REG_DEAD note, it is not valid anymore. | 2068 | /* If this is a REG_DEAD note, it is not valid anymore. |
2080 | @@ -2750,7 +2748,8 @@ | 2069 | @@ -2749,7 +2747,8 @@ |
2081 | REG_DEAD note for the stack or frame pointer. */ | 2070 | REG_DEAD note for the stack or frame pointer. */ |
2082 | if (REG_NOTE_KIND (x) == REG_DEAD) | 2071 | if (REG_NOTE_KIND (x) == REG_DEAD) |
2083 | return (XEXP (x, 1) | 2072 | return (XEXP (x, 1) |
@@ -2087,7 +2076,7 @@ | |||
2087 | : NULL_RTX); | 2076 | : NULL_RTX); |
2088 | 2077 | ||
2089 | x = alloc_reg_note (REG_NOTE_KIND (x), new_rtx, XEXP (x, 1)); | 2078 | x = alloc_reg_note (REG_NOTE_KIND (x), new_rtx, XEXP (x, 1)); |
2090 | @@ -2765,7 +2764,8 @@ | 2079 | @@ -2764,7 +2763,8 @@ |
2091 | strictly needed, but it simplifies the code. */ | 2080 | strictly needed, but it simplifies the code. */ |
2092 | if (XEXP (x, 1)) | 2081 | if (XEXP (x, 1)) |
2093 | { | 2082 | { |
@@ -2097,7 +2086,7 @@ | |||
2097 | if (new_rtx != XEXP (x, 1)) | 2086 | if (new_rtx != XEXP (x, 1)) |
2098 | return | 2087 | return |
2099 | gen_rtx_fmt_ee (GET_CODE (x), GET_MODE (x), XEXP (x, 0), new_rtx); | 2088 | gen_rtx_fmt_ee (GET_CODE (x), GET_MODE (x), XEXP (x, 0), new_rtx); |
2100 | @@ -2791,7 +2791,7 @@ | 2089 | @@ -2790,7 +2790,7 @@ |
2101 | && XEXP (XEXP (x, 1), 0) == XEXP (x, 0)) | 2090 | && XEXP (XEXP (x, 1), 0) == XEXP (x, 0)) |
2102 | { | 2091 | { |
2103 | rtx new_rtx = eliminate_regs_1 (XEXP (XEXP (x, 1), 1), mem_mode, | 2092 | rtx new_rtx = eliminate_regs_1 (XEXP (XEXP (x, 1), 1), mem_mode, |
@@ -2106,7 +2095,7 @@ | |||
2106 | 2095 | ||
2107 | if (new_rtx != XEXP (XEXP (x, 1), 1)) | 2096 | if (new_rtx != XEXP (XEXP (x, 1), 1)) |
2108 | return gen_rtx_fmt_ee (code, GET_MODE (x), XEXP (x, 0), | 2097 | return gen_rtx_fmt_ee (code, GET_MODE (x), XEXP (x, 0), |
2109 | @@ -2814,7 +2814,8 @@ | 2098 | @@ -2813,7 +2813,8 @@ |
2110 | case POPCOUNT: | 2099 | case POPCOUNT: |
2111 | case PARITY: | 2100 | case PARITY: |
2112 | case BSWAP: | 2101 | case BSWAP: |
@@ -2116,7 +2105,7 @@ | |||
2116 | if (new_rtx != XEXP (x, 0)) | 2105 | if (new_rtx != XEXP (x, 0)) |
2117 | return gen_rtx_fmt_e (code, GET_MODE (x), new_rtx); | 2106 | return gen_rtx_fmt_e (code, GET_MODE (x), new_rtx); |
2118 | return x; | 2107 | return x; |
2119 | @@ -2835,7 +2836,8 @@ | 2108 | @@ -2834,7 +2835,8 @@ |
2120 | new_rtx = SUBREG_REG (x); | 2109 | new_rtx = SUBREG_REG (x); |
2121 | } | 2110 | } |
2122 | else | 2111 | else |
@@ -2126,7 +2115,7 @@ | |||
2126 | 2115 | ||
2127 | if (new_rtx != SUBREG_REG (x)) | 2116 | if (new_rtx != SUBREG_REG (x)) |
2128 | { | 2117 | { |
2129 | @@ -2869,14 +2871,20 @@ | 2118 | @@ -2868,14 +2870,20 @@ |
2130 | /* Our only special processing is to pass the mode of the MEM to our | 2119 | /* Our only special processing is to pass the mode of the MEM to our |
2131 | recursive call and copy the flags. While we are here, handle this | 2120 | recursive call and copy the flags. While we are here, handle this |
2132 | case more efficiently. */ | 2121 | case more efficiently. */ |
@@ -2152,7 +2141,7 @@ | |||
2152 | if (new_rtx != XEXP (x, 0)) | 2141 | if (new_rtx != XEXP (x, 0)) |
2153 | return gen_rtx_USE (GET_MODE (x), new_rtx); | 2142 | return gen_rtx_USE (GET_MODE (x), new_rtx); |
2154 | return x; | 2143 | return x; |
2155 | @@ -2900,7 +2908,8 @@ | 2144 | @@ -2899,7 +2907,8 @@ |
2156 | { | 2145 | { |
2157 | if (*fmt == 'e') | 2146 | if (*fmt == 'e') |
2158 | { | 2147 | { |
@@ -2162,7 +2151,7 @@ | |||
2162 | if (new_rtx != XEXP (x, i) && ! copied) | 2151 | if (new_rtx != XEXP (x, i) && ! copied) |
2163 | { | 2152 | { |
2164 | x = shallow_copy_rtx (x); | 2153 | x = shallow_copy_rtx (x); |
2165 | @@ -2913,7 +2922,8 @@ | 2154 | @@ -2912,7 +2921,8 @@ |
2166 | int copied_vec = 0; | 2155 | int copied_vec = 0; |
2167 | for (j = 0; j < XVECLEN (x, i); j++) | 2156 | for (j = 0; j < XVECLEN (x, i); j++) |
2168 | { | 2157 | { |
@@ -2172,7 +2161,7 @@ | |||
2172 | if (new_rtx != XVECEXP (x, i, j) && ! copied_vec) | 2161 | if (new_rtx != XVECEXP (x, i, j) && ! copied_vec) |
2173 | { | 2162 | { |
2174 | rtvec new_v = gen_rtvec_v (XVECLEN (x, i), | 2163 | rtvec new_v = gen_rtvec_v (XVECLEN (x, i), |
2175 | @@ -2937,7 +2947,7 @@ | 2164 | @@ -2936,7 +2946,7 @@ |
2176 | rtx | 2165 | rtx |
2177 | eliminate_regs (rtx x, enum machine_mode mem_mode, rtx insn) | 2166 | eliminate_regs (rtx x, enum machine_mode mem_mode, rtx insn) |
2178 | { | 2167 | { |
@@ -2181,7 +2170,7 @@ | |||
2181 | } | 2170 | } |
2182 | 2171 | ||
2183 | /* Scan rtx X for modifications of elimination target registers. Update | 2172 | /* Scan rtx X for modifications of elimination target registers. Update |
2184 | @@ -3455,7 +3465,8 @@ | 2173 | @@ -3454,7 +3464,8 @@ |
2185 | /* Companion to the above plus substitution, we can allow | 2174 | /* Companion to the above plus substitution, we can allow |
2186 | invariants as the source of a plain move. */ | 2175 | invariants as the source of a plain move. */ |
2187 | is_set_src = false; | 2176 | is_set_src = false; |
@@ -2191,7 +2180,7 @@ | |||
2191 | is_set_src = true; | 2180 | is_set_src = true; |
2192 | in_plus = false; | 2181 | in_plus = false; |
2193 | if (plus_src | 2182 | if (plus_src |
2194 | @@ -3466,7 +3477,7 @@ | 2183 | @@ -3465,7 +3476,7 @@ |
2195 | substed_operand[i] | 2184 | substed_operand[i] |
2196 | = eliminate_regs_1 (recog_data.operand[i], VOIDmode, | 2185 | = eliminate_regs_1 (recog_data.operand[i], VOIDmode, |
2197 | replace ? insn : NULL_RTX, | 2186 | replace ? insn : NULL_RTX, |
@@ -2200,7 +2189,7 @@ | |||
2200 | if (substed_operand[i] != orig_operand[i]) | 2189 | if (substed_operand[i] != orig_operand[i]) |
2201 | val = 1; | 2190 | val = 1; |
2202 | /* Terminate the search in check_eliminable_occurrences at | 2191 | /* Terminate the search in check_eliminable_occurrences at |
2203 | @@ -3594,11 +3605,167 @@ | 2192 | @@ -3593,11 +3604,167 @@ |
2204 | the pre-passes. */ | 2193 | the pre-passes. */ |
2205 | if (val && REG_NOTES (insn) != 0) | 2194 | if (val && REG_NOTES (insn) != 0) |
2206 | REG_NOTES (insn) | 2195 | REG_NOTES (insn) |
@@ -2369,7 +2358,7 @@ | |||
2369 | /* Loop through all elimination pairs. | 2358 | /* Loop through all elimination pairs. |
2370 | Recalculate the number not at initial offset. | 2359 | Recalculate the number not at initial offset. |
2371 | 2360 | ||
2372 | @@ -3908,6 +4075,168 @@ | 2361 | @@ -3907,6 +4074,168 @@ |
2373 | ep->to_rtx = gen_rtx_REG (Pmode, ep->to); | 2362 | ep->to_rtx = gen_rtx_REG (Pmode, ep->to); |
2374 | } | 2363 | } |
2375 | } | 2364 | } |
@@ -2547,10 +2536,10 @@ | |||
2547 | return 1; | 2536 | return 1; |
2548 | return 0; | 2537 | return 0; |
2549 | } | 2538 | } |
2550 | 2539 | Index: gcc-4_5-branch/gcc/system.h | |
2551 | === modified file 'gcc/system.h' | 2540 | =================================================================== |
2552 | --- old/gcc/system.h 2009-12-13 23:00:53 +0000 | 2541 | --- gcc-4_5-branch.orig/gcc/system.h 2012-03-06 11:53:32.000000000 -0800 |
2553 | +++ new/gcc/system.h 2010-09-01 13:29:58 +0000 | 2542 | +++ gcc-4_5-branch/gcc/system.h 2012-03-06 12:14:01.060439213 -0800 |
2554 | @@ -761,7 +761,8 @@ | 2543 | @@ -761,7 +761,8 @@ |
2555 | TARGET_ASM_EXCEPTION_SECTION TARGET_ASM_EH_FRAME_SECTION \ | 2544 | TARGET_ASM_EXCEPTION_SECTION TARGET_ASM_EH_FRAME_SECTION \ |
2556 | SMALL_ARG_MAX ASM_OUTPUT_SHARED_BSS ASM_OUTPUT_SHARED_COMMON \ | 2545 | SMALL_ARG_MAX ASM_OUTPUT_SHARED_BSS ASM_OUTPUT_SHARED_COMMON \ |
@@ -2561,10 +2550,10 @@ | |||
2561 | 2550 | ||
2562 | /* Hooks that are no longer used. */ | 2551 | /* Hooks that are no longer used. */ |
2563 | #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \ | 2552 | #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \ |
2564 | 2553 | Index: gcc-4_5-branch/gcc/testsuite/c-c++-common/uninit-17.c | |
2565 | === added file 'gcc/testsuite/c-c++-common/uninit-17.c' | 2554 | =================================================================== |
2566 | --- old/gcc/testsuite/c-c++-common/uninit-17.c 1970-01-01 00:00:00 +0000 | 2555 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
2567 | +++ new/gcc/testsuite/c-c++-common/uninit-17.c 2010-09-01 13:29:58 +0000 | 2556 | +++ gcc-4_5-branch/gcc/testsuite/c-c++-common/uninit-17.c 2012-03-06 12:14:01.060439213 -0800 |
2568 | @@ -0,0 +1,25 @@ | 2557 | @@ -0,0 +1,25 @@ |
2569 | +/* { dg-do compile } */ | 2558 | +/* { dg-do compile } */ |
2570 | +/* { dg-options "-O2 -Wuninitialized" } */ | 2559 | +/* { dg-options "-O2 -Wuninitialized" } */ |
@@ -2591,10 +2580,10 @@ | |||
2591 | + bar(foo(a), ptr); | 2580 | + bar(foo(a), ptr); |
2592 | +} | 2581 | +} |
2593 | + | 2582 | + |
2594 | 2583 | Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/eliminate.c | |
2595 | === added file 'gcc/testsuite/gcc.target/arm/eliminate.c' | 2584 | =================================================================== |
2596 | --- old/gcc/testsuite/gcc.target/arm/eliminate.c 1970-01-01 00:00:00 +0000 | 2585 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
2597 | +++ new/gcc/testsuite/gcc.target/arm/eliminate.c 2010-09-01 13:29:58 +0000 | 2586 | +++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/eliminate.c 2012-03-06 12:14:01.060439213 -0800 |
2598 | @@ -0,0 +1,19 @@ | 2587 | @@ -0,0 +1,19 @@ |
2599 | +/* { dg-do compile } */ | 2588 | +/* { dg-do compile } */ |
2600 | +/* { dg-options "-O2" } */ | 2589 | +/* { dg-options "-O2" } */ |
@@ -2615,10 +2604,10 @@ | |||
2615 | +} | 2604 | +} |
2616 | + | 2605 | + |
2617 | +/* { dg-final { scan-assembler-times "r0,\[\\t \]*sp" 3 } } */ | 2606 | +/* { dg-final { scan-assembler-times "r0,\[\\t \]*sp" 3 } } */ |
2618 | 2607 | Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/pr40900.c | |
2619 | === added file 'gcc/testsuite/gcc.target/arm/pr40900.c' | 2608 | =================================================================== |
2620 | --- old/gcc/testsuite/gcc.target/arm/pr40900.c 1970-01-01 00:00:00 +0000 | 2609 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
2621 | +++ new/gcc/testsuite/gcc.target/arm/pr40900.c 2010-09-01 13:29:58 +0000 | 2610 | +++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/pr40900.c 2012-03-06 12:14:01.060439213 -0800 |
2622 | @@ -0,0 +1,12 @@ | 2611 | @@ -0,0 +1,12 @@ |
2623 | +/* { dg-do compile } */ | 2612 | +/* { dg-do compile } */ |
2624 | +/* { dg-options "-O2 -fno-optimize-sibling-calls" } */ | 2613 | +/* { dg-options "-O2 -fno-optimize-sibling-calls" } */ |
@@ -2632,10 +2621,10 @@ | |||
2632 | +/* { dg-final { scan-assembler-not "lsl" } } */ | 2621 | +/* { dg-final { scan-assembler-not "lsl" } } */ |
2633 | +/* { dg-final { scan-assembler-not "asr" } } */ | 2622 | +/* { dg-final { scan-assembler-not "asr" } } */ |
2634 | +/* { dg-final { scan-assembler-not "sxth" } } */ | 2623 | +/* { dg-final { scan-assembler-not "sxth" } } */ |
2635 | 2624 | Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/pr42496.c | |
2636 | === added file 'gcc/testsuite/gcc.target/arm/pr42496.c' | 2625 | =================================================================== |
2637 | --- old/gcc/testsuite/gcc.target/arm/pr42496.c 1970-01-01 00:00:00 +0000 | 2626 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
2638 | +++ new/gcc/testsuite/gcc.target/arm/pr42496.c 2010-09-01 13:29:58 +0000 | 2627 | +++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/pr42496.c 2012-03-06 12:14:01.060439213 -0800 |
2639 | @@ -0,0 +1,16 @@ | 2628 | @@ -0,0 +1,16 @@ |
2640 | +/* { dg-options "-O2" } */ | 2629 | +/* { dg-options "-O2" } */ |
2641 | + | 2630 | + |
@@ -2653,10 +2642,10 @@ | |||
2653 | + | 2642 | + |
2654 | +/* { dg-final { scan-assembler-not "strne" } } */ | 2643 | +/* { dg-final { scan-assembler-not "strne" } } */ |
2655 | +/* { dg-final { scan-assembler-not "streq" } } */ | 2644 | +/* { dg-final { scan-assembler-not "streq" } } */ |
2656 | 2645 | Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/wmul-1.c | |
2657 | === added file 'gcc/testsuite/gcc.target/arm/wmul-1.c' | 2646 | =================================================================== |
2658 | --- old/gcc/testsuite/gcc.target/arm/wmul-1.c 1970-01-01 00:00:00 +0000 | 2647 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
2659 | +++ new/gcc/testsuite/gcc.target/arm/wmul-1.c 2010-09-01 13:29:58 +0000 | 2648 | +++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/wmul-1.c 2012-03-06 12:14:01.060439213 -0800 |
2660 | @@ -0,0 +1,18 @@ | 2649 | @@ -0,0 +1,18 @@ |
2661 | +/* { dg-do compile } */ | 2650 | +/* { dg-do compile } */ |
2662 | +/* { dg-options "-O2 -march=armv6t2 -fno-unroll-loops" } */ | 2651 | +/* { dg-options "-O2 -march=armv6t2 -fno-unroll-loops" } */ |
@@ -2676,10 +2665,10 @@ | |||
2676 | +} | 2665 | +} |
2677 | + | 2666 | + |
2678 | +/* { dg-final { scan-assembler-times "smulbb" 2 } } */ | 2667 | +/* { dg-final { scan-assembler-times "smulbb" 2 } } */ |
2679 | 2668 | Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/wmul-2.c | |
2680 | === added file 'gcc/testsuite/gcc.target/arm/wmul-2.c' | 2669 | =================================================================== |
2681 | --- old/gcc/testsuite/gcc.target/arm/wmul-2.c 1970-01-01 00:00:00 +0000 | 2670 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
2682 | +++ new/gcc/testsuite/gcc.target/arm/wmul-2.c 2010-09-01 13:29:58 +0000 | 2671 | +++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/wmul-2.c 2012-03-06 12:14:01.064439219 -0800 |
2683 | @@ -0,0 +1,12 @@ | 2672 | @@ -0,0 +1,12 @@ |
2684 | +/* { dg-do compile } */ | 2673 | +/* { dg-do compile } */ |
2685 | +/* { dg-options "-O2 -march=armv6t2 -fno-unroll-loops" } */ | 2674 | +/* { dg-options "-O2 -march=armv6t2 -fno-unroll-loops" } */ |
@@ -2693,10 +2682,10 @@ | |||
2693 | +} | 2682 | +} |
2694 | + | 2683 | + |
2695 | +/* { dg-final { scan-assembler-times "smulbb" 1 } } */ | 2684 | +/* { dg-final { scan-assembler-times "smulbb" 1 } } */ |
2696 | 2685 | Index: gcc-4_5-branch/gcc/testsuite/gcc.target/bfin/wmul-1.c | |
2697 | === added file 'gcc/testsuite/gcc.target/bfin/wmul-1.c' | 2686 | =================================================================== |
2698 | --- old/gcc/testsuite/gcc.target/bfin/wmul-1.c 1970-01-01 00:00:00 +0000 | 2687 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
2699 | +++ new/gcc/testsuite/gcc.target/bfin/wmul-1.c 2010-09-01 13:29:58 +0000 | 2688 | +++ gcc-4_5-branch/gcc/testsuite/gcc.target/bfin/wmul-1.c 2012-03-06 12:14:01.064439219 -0800 |
2700 | @@ -0,0 +1,18 @@ | 2689 | @@ -0,0 +1,18 @@ |
2701 | +/* { dg-do compile } */ | 2690 | +/* { dg-do compile } */ |
2702 | +/* { dg-options "-O2" } */ | 2691 | +/* { dg-options "-O2" } */ |
@@ -2716,10 +2705,10 @@ | |||
2716 | +} | 2705 | +} |
2717 | + | 2706 | + |
2718 | +/* { dg-final { scan-assembler-times "\\(IS\\)" 2 } } */ | 2707 | +/* { dg-final { scan-assembler-times "\\(IS\\)" 2 } } */ |
2719 | 2708 | Index: gcc-4_5-branch/gcc/testsuite/gcc.target/bfin/wmul-2.c | |
2720 | === added file 'gcc/testsuite/gcc.target/bfin/wmul-2.c' | 2709 | =================================================================== |
2721 | --- old/gcc/testsuite/gcc.target/bfin/wmul-2.c 1970-01-01 00:00:00 +0000 | 2710 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
2722 | +++ new/gcc/testsuite/gcc.target/bfin/wmul-2.c 2010-09-01 13:29:58 +0000 | 2711 | +++ gcc-4_5-branch/gcc/testsuite/gcc.target/bfin/wmul-2.c 2012-03-06 12:14:01.064439219 -0800 |
2723 | @@ -0,0 +1,12 @@ | 2712 | @@ -0,0 +1,12 @@ |
2724 | +/* { dg-do compile } */ | 2713 | +/* { dg-do compile } */ |
2725 | +/* { dg-options "-O2" } */ | 2714 | +/* { dg-options "-O2" } */ |
@@ -2733,10 +2722,10 @@ | |||
2733 | +} | 2722 | +} |
2734 | + | 2723 | + |
2735 | +/* { dg-final { scan-assembler-times "\\(IS\\)" 1 } } */ | 2724 | +/* { dg-final { scan-assembler-times "\\(IS\\)" 1 } } */ |
2736 | 2725 | Index: gcc-4_5-branch/gcc/testsuite/gcc.target/i386/pr41442.c | |
2737 | === added file 'gcc/testsuite/gcc.target/i386/pr41442.c' | 2726 | =================================================================== |
2738 | --- old/gcc/testsuite/gcc.target/i386/pr41442.c 1970-01-01 00:00:00 +0000 | 2727 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
2739 | +++ new/gcc/testsuite/gcc.target/i386/pr41442.c 2010-09-01 13:29:58 +0000 | 2728 | +++ gcc-4_5-branch/gcc/testsuite/gcc.target/i386/pr41442.c 2012-03-06 12:14:01.064439219 -0800 |
2740 | @@ -0,0 +1,18 @@ | 2729 | @@ -0,0 +1,18 @@ |
2741 | +/* { dg-do compile } */ | 2730 | +/* { dg-do compile } */ |
2742 | +/* { dg-options "-O2" } */ | 2731 | +/* { dg-options "-O2" } */ |
@@ -2756,10 +2745,10 @@ | |||
2756 | +} | 2745 | +} |
2757 | + | 2746 | + |
2758 | +/* { dg-final { scan-assembler-times "test|cmp" 2 } } */ | 2747 | +/* { dg-final { scan-assembler-times "test|cmp" 2 } } */ |
2759 | 2748 | Index: gcc-4_5-branch/gcc/testsuite/gcc.target/i386/wmul-1.c | |
2760 | === added file 'gcc/testsuite/gcc.target/i386/wmul-1.c' | 2749 | =================================================================== |
2761 | --- old/gcc/testsuite/gcc.target/i386/wmul-1.c 1970-01-01 00:00:00 +0000 | 2750 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
2762 | +++ new/gcc/testsuite/gcc.target/i386/wmul-1.c 2010-09-01 13:29:58 +0000 | 2751 | +++ gcc-4_5-branch/gcc/testsuite/gcc.target/i386/wmul-1.c 2012-03-06 12:14:01.064439219 -0800 |
2763 | @@ -0,0 +1,18 @@ | 2752 | @@ -0,0 +1,18 @@ |
2764 | +/* { dg-do compile } */ | 2753 | +/* { dg-do compile } */ |
2765 | +/* { dg-options "-O2" } */ | 2754 | +/* { dg-options "-O2" } */ |
@@ -2779,10 +2768,10 @@ | |||
2779 | +} | 2768 | +} |
2780 | + | 2769 | + |
2781 | +/* { dg-final { scan-assembler-times "imull" 2 } } */ | 2770 | +/* { dg-final { scan-assembler-times "imull" 2 } } */ |
2782 | 2771 | Index: gcc-4_5-branch/gcc/testsuite/gcc.target/i386/wmul-2.c | |
2783 | === added file 'gcc/testsuite/gcc.target/i386/wmul-2.c' | 2772 | =================================================================== |
2784 | --- old/gcc/testsuite/gcc.target/i386/wmul-2.c 1970-01-01 00:00:00 +0000 | 2773 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
2785 | +++ new/gcc/testsuite/gcc.target/i386/wmul-2.c 2010-09-01 13:29:58 +0000 | 2774 | +++ gcc-4_5-branch/gcc/testsuite/gcc.target/i386/wmul-2.c 2012-03-06 12:14:01.064439219 -0800 |
2786 | @@ -0,0 +1,12 @@ | 2775 | @@ -0,0 +1,12 @@ |
2787 | +/* { dg-do compile } */ | 2776 | +/* { dg-do compile } */ |
2788 | +/* { dg-options "-O2" } */ | 2777 | +/* { dg-options "-O2" } */ |
@@ -2796,29 +2785,29 @@ | |||
2796 | +} | 2785 | +} |
2797 | + | 2786 | + |
2798 | +/* { dg-final { scan-assembler-times "imull" 1 } } */ | 2787 | +/* { dg-final { scan-assembler-times "imull" 1 } } */ |
2799 | 2788 | Index: gcc-4_5-branch/gcc/tree-cfg.c | |
2800 | === modified file 'gcc/tree-cfg.c' | 2789 | =================================================================== |
2801 | --- old/gcc/tree-cfg.c 2010-08-10 13:31:21 +0000 | 2790 | --- gcc-4_5-branch.orig/gcc/tree-cfg.c 2012-03-06 12:11:30.000000000 -0800 |
2802 | +++ new/gcc/tree-cfg.c 2010-09-01 13:29:58 +0000 | 2791 | +++ gcc-4_5-branch/gcc/tree-cfg.c 2012-03-06 12:14:01.064439219 -0800 |
2803 | @@ -3428,8 +3428,13 @@ | 2792 | @@ -3429,8 +3429,13 @@ |
2804 | connected to the operand types. */ | 2793 | connected to the operand types. */ |
2805 | return verify_gimple_comparison (lhs_type, rhs1, rhs2); | 2794 | return verify_gimple_comparison (lhs_type, rhs1, rhs2); |
2806 | 2795 | ||
2807 | + case WIDEN_MULT_EXPR: | 2796 | - case WIDEN_SUM_EXPR: |
2797 | case WIDEN_MULT_EXPR: | ||
2808 | + if (TREE_CODE (lhs_type) != INTEGER_TYPE) | 2798 | + if (TREE_CODE (lhs_type) != INTEGER_TYPE) |
2809 | + return true; | 2799 | + return true; |
2810 | + return ((2 * TYPE_PRECISION (rhs1_type) != TYPE_PRECISION (lhs_type)) | 2800 | + return ((2 * TYPE_PRECISION (rhs1_type) != TYPE_PRECISION (lhs_type)) |
2811 | + || (TYPE_PRECISION (rhs1_type) != TYPE_PRECISION (rhs2_type))); | 2801 | + || (TYPE_PRECISION (rhs1_type) != TYPE_PRECISION (rhs2_type))); |
2812 | + | 2802 | + |
2813 | case WIDEN_SUM_EXPR: | 2803 | + case WIDEN_SUM_EXPR: |
2814 | - case WIDEN_MULT_EXPR: | ||
2815 | case VEC_WIDEN_MULT_HI_EXPR: | 2804 | case VEC_WIDEN_MULT_HI_EXPR: |
2816 | case VEC_WIDEN_MULT_LO_EXPR: | 2805 | case VEC_WIDEN_MULT_LO_EXPR: |
2817 | case VEC_PACK_TRUNC_EXPR: | 2806 | case VEC_PACK_TRUNC_EXPR: |
2818 | 2807 | Index: gcc-4_5-branch/gcc/tree-inline.c | |
2819 | === modified file 'gcc/tree-inline.c' | 2808 | =================================================================== |
2820 | --- old/gcc/tree-inline.c 2010-08-10 13:31:21 +0000 | 2809 | --- gcc-4_5-branch.orig/gcc/tree-inline.c 2012-03-06 12:11:30.000000000 -0800 |
2821 | +++ new/gcc/tree-inline.c 2010-09-01 13:29:58 +0000 | 2810 | +++ gcc-4_5-branch/gcc/tree-inline.c 2012-03-06 12:14:01.064439219 -0800 |
2822 | @@ -229,6 +229,7 @@ | 2811 | @@ -229,6 +229,7 @@ |
2823 | regions of the CFG, but this is expensive to test. */ | 2812 | regions of the CFG, but this is expensive to test. */ |
2824 | if (id->entry_bb | 2813 | if (id->entry_bb |
@@ -2827,10 +2816,10 @@ | |||
2827 | && TREE_CODE (SSA_NAME_VAR (name)) != PARM_DECL | 2816 | && TREE_CODE (SSA_NAME_VAR (name)) != PARM_DECL |
2828 | && (id->entry_bb != EDGE_SUCC (ENTRY_BLOCK_PTR, 0)->dest | 2817 | && (id->entry_bb != EDGE_SUCC (ENTRY_BLOCK_PTR, 0)->dest |
2829 | || EDGE_COUNT (id->entry_bb->preds) != 1)) | 2818 | || EDGE_COUNT (id->entry_bb->preds) != 1)) |
2830 | 2819 | Index: gcc-4_5-branch/gcc/tree-pass.h | |
2831 | === modified file 'gcc/tree-pass.h' | 2820 | =================================================================== |
2832 | --- old/gcc/tree-pass.h 2010-04-02 18:54:46 +0000 | 2821 | --- gcc-4_5-branch.orig/gcc/tree-pass.h 2012-03-06 11:53:32.000000000 -0800 |
2833 | +++ new/gcc/tree-pass.h 2010-09-01 13:29:58 +0000 | 2822 | +++ gcc-4_5-branch/gcc/tree-pass.h 2012-03-06 12:14:01.068439233 -0800 |
2834 | @@ -407,6 +407,7 @@ | 2823 | @@ -407,6 +407,7 @@ |
2835 | extern struct gimple_opt_pass pass_cse_reciprocals; | 2824 | extern struct gimple_opt_pass pass_cse_reciprocals; |
2836 | extern struct gimple_opt_pass pass_cse_sincos; | 2825 | extern struct gimple_opt_pass pass_cse_sincos; |
@@ -2839,11 +2828,11 @@ | |||
2839 | extern struct gimple_opt_pass pass_warn_function_return; | 2828 | extern struct gimple_opt_pass pass_warn_function_return; |
2840 | extern struct gimple_opt_pass pass_warn_function_noreturn; | 2829 | extern struct gimple_opt_pass pass_warn_function_noreturn; |
2841 | extern struct gimple_opt_pass pass_cselim; | 2830 | extern struct gimple_opt_pass pass_cselim; |
2842 | 2831 | Index: gcc-4_5-branch/gcc/tree-ssa-math-opts.c | |
2843 | === modified file 'gcc/tree-ssa-math-opts.c' | 2832 | =================================================================== |
2844 | --- old/gcc/tree-ssa-math-opts.c 2010-04-02 18:54:46 +0000 | 2833 | --- gcc-4_5-branch.orig/gcc/tree-ssa-math-opts.c 2012-03-06 11:53:32.000000000 -0800 |
2845 | +++ new/gcc/tree-ssa-math-opts.c 2010-09-01 13:29:58 +0000 | 2834 | +++ gcc-4_5-branch/gcc/tree-ssa-math-opts.c 2012-03-06 12:14:01.068439233 -0800 |
2846 | @@ -1260,3 +1260,137 @@ | 2835 | @@ -1269,3 +1269,137 @@ |
2847 | 0 /* todo_flags_finish */ | 2836 | 0 /* todo_flags_finish */ |
2848 | } | 2837 | } |
2849 | }; | 2838 | }; |
@@ -2981,10 +2970,10 @@ | |||
2981 | + 0 /* todo_flags_finish */ | 2970 | + 0 /* todo_flags_finish */ |
2982 | + } | 2971 | + } |
2983 | +}; | 2972 | +}; |
2984 | 2973 | Index: gcc-4_5-branch/gcc/tree-ssa.c | |
2985 | === modified file 'gcc/tree-ssa.c' | 2974 | =================================================================== |
2986 | --- old/gcc/tree-ssa.c 2009-12-07 22:42:10 +0000 | 2975 | --- gcc-4_5-branch.orig/gcc/tree-ssa.c 2012-03-06 11:53:32.000000000 -0800 |
2987 | +++ new/gcc/tree-ssa.c 2010-09-01 13:29:58 +0000 | 2976 | +++ gcc-4_5-branch/gcc/tree-ssa.c 2012-03-06 12:14:01.068439233 -0800 |
2988 | @@ -1671,6 +1671,8 @@ | 2977 | @@ -1671,6 +1671,8 @@ |
2989 | { | 2978 | { |
2990 | TREE_NO_WARNING (var) = 1; | 2979 | TREE_NO_WARNING (var) = 1; |
@@ -2994,4 +2983,3 @@ | |||
2994 | if (xloc.file != floc.file | 2983 | if (xloc.file != floc.file |
2995 | || xloc.line < floc.line | 2984 | || xloc.line < floc.line |
2996 | || xloc.line > LOCATION_LINE (cfun->function_end_locus)) | 2985 | || xloc.line > LOCATION_LINE (cfun->function_end_locus)) |
2997 | |||
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99424.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99424.patch index b6c653266..ac3a1e224 100644 --- a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99424.patch +++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99424.patch | |||
@@ -66,8 +66,10 @@ | |||
66 | * gcc.target/i386/volatile-bitfields-2.c: New. | 66 | * gcc.target/i386/volatile-bitfields-2.c: New. |
67 | 67 | ||
68 | === modified file 'gcc/calls.c' | 68 | === modified file 'gcc/calls.c' |
69 | --- old/gcc/calls.c 2010-10-04 00:50:43 +0000 | 69 | Index: gcc-4_5-branch/gcc/calls.c |
70 | +++ new/gcc/calls.c 2010-11-04 12:43:52 +0000 | 70 | =================================================================== |
71 | --- gcc-4_5-branch.orig/gcc/calls.c 2012-03-06 13:05:56.524590011 -0800 | ||
72 | +++ gcc-4_5-branch/gcc/calls.c 2012-03-06 13:36:10.276677792 -0800 | ||
71 | @@ -878,7 +878,7 @@ | 73 | @@ -878,7 +878,7 @@ |
72 | int bitsize = MIN (bytes * BITS_PER_UNIT, BITS_PER_WORD); | 74 | int bitsize = MIN (bytes * BITS_PER_UNIT, BITS_PER_WORD); |
73 | 75 | ||
@@ -77,10 +79,10 @@ | |||
77 | word_mode, word_mode); | 79 | word_mode, word_mode); |
78 | 80 | ||
79 | /* There is no need to restrict this code to loading items | 81 | /* There is no need to restrict this code to loading items |
80 | 82 | Index: gcc-4_5-branch/gcc/common.opt | |
81 | === modified file 'gcc/common.opt' | 83 | =================================================================== |
82 | --- old/gcc/common.opt 2010-07-29 14:59:35 +0000 | 84 | --- gcc-4_5-branch.orig/gcc/common.opt 2012-03-06 13:05:48.400589618 -0800 |
83 | +++ new/gcc/common.opt 2010-11-04 12:43:52 +0000 | 85 | +++ gcc-4_5-branch/gcc/common.opt 2012-03-06 13:36:35.608679018 -0800 |
84 | @@ -613,6 +613,10 @@ | 86 | @@ -613,6 +613,10 @@ |
85 | Common Report Var(flag_loop_block) Optimization | 87 | Common Report Var(flag_loop_block) Optimization |
86 | Enable Loop Blocking transformation | 88 | Enable Loop Blocking transformation |
@@ -92,10 +94,10 @@ | |||
92 | fguess-branch-probability | 94 | fguess-branch-probability |
93 | Common Report Var(flag_guess_branch_prob) Optimization | 95 | Common Report Var(flag_guess_branch_prob) Optimization |
94 | Enable guessing of branch probabilities | 96 | Enable guessing of branch probabilities |
95 | 97 | Index: gcc-4_5-branch/gcc/config/h8300/h8300.c | |
96 | === modified file 'gcc/config/h8300/h8300.c' | 98 | =================================================================== |
97 | --- old/gcc/config/h8300/h8300.c 2010-04-02 18:54:46 +0000 | 99 | --- gcc-4_5-branch.orig/gcc/config/h8300/h8300.c 2012-03-06 11:53:30.000000000 -0800 |
98 | +++ new/gcc/config/h8300/h8300.c 2010-11-04 12:43:52 +0000 | 100 | +++ gcc-4_5-branch/gcc/config/h8300/h8300.c 2012-03-06 13:36:35.528679014 -0800 |
99 | @@ -403,6 +403,10 @@ | 101 | @@ -403,6 +403,10 @@ |
100 | restore er6 though, so bump up the cost. */ | 102 | restore er6 though, so bump up the cost. */ |
101 | h8300_move_ratio = 6; | 103 | h8300_move_ratio = 6; |
@@ -107,10 +109,10 @@ | |||
107 | } | 109 | } |
108 | 110 | ||
109 | /* Implement REG_CLASS_FROM_LETTER. | 111 | /* Implement REG_CLASS_FROM_LETTER. |
110 | 112 | Index: gcc-4_5-branch/gcc/config/m32c/m32c.c | |
111 | === modified file 'gcc/config/m32c/m32c.c' | 113 | =================================================================== |
112 | --- old/gcc/config/m32c/m32c.c 2009-10-22 18:46:26 +0000 | 114 | --- gcc-4_5-branch.orig/gcc/config/m32c/m32c.c 2012-03-06 11:53:16.000000000 -0800 |
113 | +++ new/gcc/config/m32c/m32c.c 2010-11-04 12:43:52 +0000 | 115 | +++ gcc-4_5-branch/gcc/config/m32c/m32c.c 2012-03-06 13:36:35.488679012 -0800 |
114 | @@ -428,6 +428,10 @@ | 116 | @@ -428,6 +428,10 @@ |
115 | 117 | ||
116 | if (TARGET_A24) | 118 | if (TARGET_A24) |
@@ -122,12 +124,12 @@ | |||
122 | } | 124 | } |
123 | 125 | ||
124 | /* Defining data structures for per-function information */ | 126 | /* Defining data structures for per-function information */ |
125 | 127 | Index: gcc-4_5-branch/gcc/config/rx/rx.c | |
126 | === modified file 'gcc/config/rx/rx.c' | 128 | =================================================================== |
127 | --- old/gcc/config/rx/rx.c 2010-07-27 14:39:53 +0000 | 129 | --- gcc-4_5-branch.orig/gcc/config/rx/rx.c 2012-03-06 11:53:17.000000000 -0800 |
128 | +++ new/gcc/config/rx/rx.c 2010-11-04 12:43:52 +0000 | 130 | +++ gcc-4_5-branch/gcc/config/rx/rx.c 2012-03-06 13:36:35.508679013 -0800 |
129 | @@ -2187,6 +2187,14 @@ | 131 | @@ -2417,6 +2417,14 @@ |
130 | } | 132 | return ! TYPE_PACKED (record_type); |
131 | } | 133 | } |
132 | 134 | ||
133 | +static void | 135 | +static void |
@@ -139,11 +141,11 @@ | |||
139 | +} | 141 | +} |
140 | + | 142 | + |
141 | 143 | ||
142 | static bool | 144 | /* Returns true if X a legitimate constant for an immediate |
143 | rx_allocate_stack_slots_for_args (void) | 145 | operand on the RX. X is already known to satisfy CONSTANT_P. */ |
144 | @@ -2759,6 +2767,9 @@ | 146 | @@ -2794,6 +2802,9 @@ |
145 | #undef TARGET_CC_MODES_COMPATIBLE | 147 | #undef TARGET_PROMOTE_FUNCTION_MODE |
146 | #define TARGET_CC_MODES_COMPATIBLE rx_cc_modes_compatible | 148 | #define TARGET_PROMOTE_FUNCTION_MODE rx_promote_function_mode |
147 | 149 | ||
148 | +#undef TARGET_OPTION_OVERRIDE | 150 | +#undef TARGET_OPTION_OVERRIDE |
149 | +#define TARGET_OPTION_OVERRIDE rx_option_override | 151 | +#define TARGET_OPTION_OVERRIDE rx_option_override |
@@ -151,10 +153,10 @@ | |||
151 | struct gcc_target targetm = TARGET_INITIALIZER; | 153 | struct gcc_target targetm = TARGET_INITIALIZER; |
152 | 154 | ||
153 | /* #include "gt-rx.h" */ | 155 | /* #include "gt-rx.h" */ |
154 | 156 | Index: gcc-4_5-branch/gcc/config/sh/sh.c | |
155 | === modified file 'gcc/config/sh/sh.c' | 157 | =================================================================== |
156 | --- old/gcc/config/sh/sh.c 2010-05-05 21:12:17 +0000 | 158 | --- gcc-4_5-branch.orig/gcc/config/sh/sh.c 2012-03-06 11:53:20.000000000 -0800 |
157 | +++ new/gcc/config/sh/sh.c 2010-11-04 12:43:52 +0000 | 159 | +++ gcc-4_5-branch/gcc/config/sh/sh.c 2012-03-06 13:36:35.516679013 -0800 |
158 | @@ -950,6 +950,10 @@ | 160 | @@ -950,6 +950,10 @@ |
159 | 161 | ||
160 | if (sh_fixed_range_str) | 162 | if (sh_fixed_range_str) |
@@ -166,10 +168,10 @@ | |||
166 | } | 168 | } |
167 | 169 | ||
168 | /* Print the operand address in x to the stream. */ | 170 | /* Print the operand address in x to the stream. */ |
169 | 171 | Index: gcc-4_5-branch/gcc/doc/invoke.texi | |
170 | === modified file 'gcc/doc/invoke.texi' | 172 | =================================================================== |
171 | --- old/gcc/doc/invoke.texi 2010-10-04 00:50:43 +0000 | 173 | --- gcc-4_5-branch.orig/gcc/doc/invoke.texi 2012-03-06 13:05:56.988590034 -0800 |
172 | +++ new/gcc/doc/invoke.texi 2010-11-04 12:43:52 +0000 | 174 | +++ gcc-4_5-branch/gcc/doc/invoke.texi 2012-03-06 13:36:36.048679039 -0800 |
173 | @@ -922,7 +922,7 @@ | 175 | @@ -922,7 +922,7 @@ |
174 | -fargument-noalias-global -fargument-noalias-anything @gol | 176 | -fargument-noalias-global -fargument-noalias-anything @gol |
175 | -fleading-underscore -ftls-model=@var{model} @gol | 177 | -fleading-underscore -ftls-model=@var{model} @gol |
@@ -213,10 +215,10 @@ | |||
213 | @end table | 215 | @end table |
214 | 216 | ||
215 | @c man end | 217 | @c man end |
216 | 218 | Index: gcc-4_5-branch/gcc/expmed.c | |
217 | === modified file 'gcc/expmed.c' | 219 | =================================================================== |
218 | --- old/gcc/expmed.c 2010-10-04 00:50:43 +0000 | 220 | --- gcc-4_5-branch.orig/gcc/expmed.c 2012-03-06 13:05:56.876590028 -0800 |
219 | +++ new/gcc/expmed.c 2010-11-04 12:43:52 +0000 | 221 | +++ gcc-4_5-branch/gcc/expmed.c 2012-03-06 13:36:35.104678993 -0800 |
220 | @@ -47,7 +47,7 @@ | 222 | @@ -47,7 +47,7 @@ |
221 | static rtx extract_fixed_bit_field (enum machine_mode, rtx, | 223 | static rtx extract_fixed_bit_field (enum machine_mode, rtx, |
222 | unsigned HOST_WIDE_INT, | 224 | unsigned HOST_WIDE_INT, |
@@ -458,10 +460,10 @@ | |||
458 | bitsdone += thissize; | 460 | bitsdone += thissize; |
459 | 461 | ||
460 | /* Shift this part into place for the result. */ | 462 | /* Shift this part into place for the result. */ |
461 | 463 | Index: gcc-4_5-branch/gcc/expr.c | |
462 | === modified file 'gcc/expr.c' | 464 | =================================================================== |
463 | --- old/gcc/expr.c 2010-10-04 00:50:43 +0000 | 465 | --- gcc-4_5-branch.orig/gcc/expr.c 2012-03-06 13:05:57.720590069 -0800 |
464 | +++ new/gcc/expr.c 2010-11-04 12:43:52 +0000 | 466 | +++ gcc-4_5-branch/gcc/expr.c 2012-03-06 13:40:14.504689612 -0800 |
465 | @@ -1749,7 +1749,7 @@ | 467 | @@ -1749,7 +1749,7 @@ |
466 | && (!REG_P (tmps[i]) || GET_MODE (tmps[i]) != mode)) | 468 | && (!REG_P (tmps[i]) || GET_MODE (tmps[i]) != mode)) |
467 | tmps[i] = extract_bit_field (tmps[i], bytelen * BITS_PER_UNIT, | 469 | tmps[i] = extract_bit_field (tmps[i], bytelen * BITS_PER_UNIT, |
@@ -498,7 +500,16 @@ | |||
498 | NULL_RTX, copy_mode, copy_mode)); | 500 | NULL_RTX, copy_mode, copy_mode)); |
499 | } | 501 | } |
500 | 502 | ||
501 | @@ -2970,7 +2970,7 @@ | 503 | @@ -2291,7 +2291,7 @@ |
504 | xbitpos for the destination store (right justified). */ | ||
505 | store_bit_field (dst_word, bitsize, xbitpos % BITS_PER_WORD, word_mode, | ||
506 | extract_bit_field (src_word, bitsize, | ||
507 | - bitpos % BITS_PER_WORD, 1, | ||
508 | + bitpos % BITS_PER_WORD, 1, false, | ||
509 | NULL_RTX, word_mode, word_mode)); | ||
510 | } | ||
511 | |||
512 | @@ -3075,7 +3075,7 @@ | ||
502 | } | 513 | } |
503 | 514 | ||
504 | return extract_bit_field (cplx, ibitsize, imag_p ? ibitsize : 0, | 515 | return extract_bit_field (cplx, ibitsize, imag_p ? ibitsize : 0, |
@@ -507,7 +518,7 @@ | |||
507 | } | 518 | } |
508 | 519 | ||
509 | /* A subroutine of emit_move_insn_1. Yet another lowpart generator. | 520 | /* A subroutine of emit_move_insn_1. Yet another lowpart generator. |
510 | @@ -4233,6 +4233,13 @@ | 521 | @@ -4338,6 +4338,13 @@ |
511 | 522 | ||
512 | to_rtx = expand_normal (tem); | 523 | to_rtx = expand_normal (tem); |
513 | 524 | ||
@@ -517,11 +528,11 @@ | |||
517 | + && GET_CODE (to_rtx) == MEM | 528 | + && GET_CODE (to_rtx) == MEM |
518 | + && flag_strict_volatile_bitfields > 0) | 529 | + && flag_strict_volatile_bitfields > 0) |
519 | + to_rtx = adjust_address (to_rtx, mode1, 0); | 530 | + to_rtx = adjust_address (to_rtx, mode1, 0); |
520 | + | 531 | + |
521 | if (offset != 0) | 532 | if (offset != 0) |
522 | { | 533 | { |
523 | enum machine_mode address_mode; | 534 | enum machine_mode address_mode; |
524 | @@ -5993,6 +6000,12 @@ | 535 | @@ -6106,6 +6113,12 @@ |
525 | mode = DECL_MODE (field); | 536 | mode = DECL_MODE (field); |
526 | else if (DECL_MODE (field) == BLKmode) | 537 | else if (DECL_MODE (field) == BLKmode) |
527 | blkmode_bitfield = true; | 538 | blkmode_bitfield = true; |
@@ -534,7 +545,7 @@ | |||
534 | 545 | ||
535 | *punsignedp = DECL_UNSIGNED (field); | 546 | *punsignedp = DECL_UNSIGNED (field); |
536 | } | 547 | } |
537 | @@ -8848,6 +8861,7 @@ | 548 | @@ -8978,6 +8991,7 @@ |
538 | HOST_WIDE_INT bitsize, bitpos; | 549 | HOST_WIDE_INT bitsize, bitpos; |
539 | tree offset; | 550 | tree offset; |
540 | int volatilep = 0, must_force_mem; | 551 | int volatilep = 0, must_force_mem; |
@@ -542,7 +553,7 @@ | |||
542 | tree tem = get_inner_reference (exp, &bitsize, &bitpos, &offset, | 553 | tree tem = get_inner_reference (exp, &bitsize, &bitpos, &offset, |
543 | &mode1, &unsignedp, &volatilep, true); | 554 | &mode1, &unsignedp, &volatilep, true); |
544 | rtx orig_op0, memloc; | 555 | rtx orig_op0, memloc; |
545 | @@ -8857,6 +8871,11 @@ | 556 | @@ -8987,6 +9001,11 @@ |
546 | infinitely recurse. */ | 557 | infinitely recurse. */ |
547 | gcc_assert (tem != exp); | 558 | gcc_assert (tem != exp); |
548 | 559 | ||
@@ -554,7 +565,7 @@ | |||
554 | /* If TEM's type is a union of variable size, pass TARGET to the inner | 565 | /* If TEM's type is a union of variable size, pass TARGET to the inner |
555 | computation, since it will need a temporary and TARGET is known | 566 | computation, since it will need a temporary and TARGET is known |
556 | to have to do. This occurs in unchecked conversion in Ada. */ | 567 | to have to do. This occurs in unchecked conversion in Ada. */ |
557 | @@ -8873,6 +8892,14 @@ | 568 | @@ -9003,6 +9022,14 @@ |
558 | || modifier == EXPAND_STACK_PARM) | 569 | || modifier == EXPAND_STACK_PARM) |
559 | ? modifier : EXPAND_NORMAL); | 570 | ? modifier : EXPAND_NORMAL); |
560 | 571 | ||
@@ -569,7 +580,7 @@ | |||
569 | mode2 | 580 | mode2 |
570 | = CONSTANT_P (op0) ? TYPE_MODE (TREE_TYPE (tem)) : GET_MODE (op0); | 581 | = CONSTANT_P (op0) ? TYPE_MODE (TREE_TYPE (tem)) : GET_MODE (op0); |
571 | 582 | ||
572 | @@ -8998,6 +9025,9 @@ | 583 | @@ -9128,6 +9155,9 @@ |
573 | && GET_MODE_CLASS (mode) != MODE_COMPLEX_FLOAT | 584 | && GET_MODE_CLASS (mode) != MODE_COMPLEX_FLOAT |
574 | && modifier != EXPAND_CONST_ADDRESS | 585 | && modifier != EXPAND_CONST_ADDRESS |
575 | && modifier != EXPAND_INITIALIZER) | 586 | && modifier != EXPAND_INITIALIZER) |
@@ -579,7 +590,7 @@ | |||
579 | /* If the field isn't aligned enough to fetch as a memref, | 590 | /* If the field isn't aligned enough to fetch as a memref, |
580 | fetch it as a bit field. */ | 591 | fetch it as a bit field. */ |
581 | || (mode1 != BLKmode | 592 | || (mode1 != BLKmode |
582 | @@ -9058,7 +9088,7 @@ | 593 | @@ -9188,7 +9218,7 @@ |
583 | if (MEM_P (op0) && REG_P (XEXP (op0, 0))) | 594 | if (MEM_P (op0) && REG_P (XEXP (op0, 0))) |
584 | mark_reg_pointer (XEXP (op0, 0), MEM_ALIGN (op0)); | 595 | mark_reg_pointer (XEXP (op0, 0), MEM_ALIGN (op0)); |
585 | 596 | ||
@@ -588,11 +599,11 @@ | |||
588 | (modifier == EXPAND_STACK_PARM | 599 | (modifier == EXPAND_STACK_PARM |
589 | ? NULL_RTX : target), | 600 | ? NULL_RTX : target), |
590 | ext_mode, ext_mode); | 601 | ext_mode, ext_mode); |
591 | 602 | Index: gcc-4_5-branch/gcc/expr.h | |
592 | === modified file 'gcc/expr.h' | 603 | =================================================================== |
593 | --- old/gcc/expr.h 2010-02-19 09:53:51 +0000 | 604 | --- gcc-4_5-branch.orig/gcc/expr.h 2012-03-06 11:53:32.000000000 -0800 |
594 | +++ new/gcc/expr.h 2010-11-04 12:43:52 +0000 | 605 | +++ gcc-4_5-branch/gcc/expr.h 2012-03-06 13:05:59.668590163 -0800 |
595 | @@ -802,7 +802,7 @@ | 606 | @@ -804,7 +804,7 @@ |
596 | extern void store_bit_field (rtx, unsigned HOST_WIDE_INT, | 607 | extern void store_bit_field (rtx, unsigned HOST_WIDE_INT, |
597 | unsigned HOST_WIDE_INT, enum machine_mode, rtx); | 608 | unsigned HOST_WIDE_INT, enum machine_mode, rtx); |
598 | extern rtx extract_bit_field (rtx, unsigned HOST_WIDE_INT, | 609 | extern rtx extract_bit_field (rtx, unsigned HOST_WIDE_INT, |
@@ -601,11 +612,11 @@ | |||
601 | enum machine_mode, enum machine_mode); | 612 | enum machine_mode, enum machine_mode); |
602 | extern rtx extract_low_bits (enum machine_mode, enum machine_mode, rtx); | 613 | extern rtx extract_low_bits (enum machine_mode, enum machine_mode, rtx); |
603 | extern rtx expand_mult (enum machine_mode, rtx, rtx, rtx, int); | 614 | extern rtx expand_mult (enum machine_mode, rtx, rtx, rtx, int); |
604 | 615 | Index: gcc-4_5-branch/gcc/fold-const.c | |
605 | === modified file 'gcc/fold-const.c' | 616 | =================================================================== |
606 | --- old/gcc/fold-const.c 2010-10-04 00:50:43 +0000 | 617 | --- gcc-4_5-branch.orig/gcc/fold-const.c 2012-03-06 13:05:56.880590028 -0800 |
607 | +++ new/gcc/fold-const.c 2010-11-04 12:43:52 +0000 | 618 | +++ gcc-4_5-branch/gcc/fold-const.c 2012-03-06 13:36:03.276677454 -0800 |
608 | @@ -4208,11 +4208,16 @@ | 619 | @@ -4215,11 +4215,16 @@ |
609 | 620 | ||
610 | /* See if we can find a mode to refer to this field. We should be able to, | 621 | /* See if we can find a mode to refer to this field. We should be able to, |
611 | but fail if we can't. */ | 622 | but fail if we can't. */ |
@@ -627,11 +638,11 @@ | |||
627 | if (nmode == VOIDmode) | 638 | if (nmode == VOIDmode) |
628 | return 0; | 639 | return 0; |
629 | 640 | ||
630 | 641 | Index: gcc-4_5-branch/gcc/stmt.c | |
631 | === modified file 'gcc/stmt.c' | 642 | =================================================================== |
632 | --- old/gcc/stmt.c 2010-08-13 11:53:46 +0000 | 643 | --- gcc-4_5-branch.orig/gcc/stmt.c 2012-03-06 13:05:54.568589917 -0800 |
633 | +++ new/gcc/stmt.c 2010-11-04 12:43:52 +0000 | 644 | +++ gcc-4_5-branch/gcc/stmt.c 2012-03-06 13:36:34.948678986 -0800 |
634 | @@ -1751,7 +1751,7 @@ | 645 | @@ -1754,7 +1754,7 @@ |
635 | xbitpos for the destination store (right justified). */ | 646 | xbitpos for the destination store (right justified). */ |
636 | store_bit_field (dst, bitsize, xbitpos % BITS_PER_WORD, word_mode, | 647 | store_bit_field (dst, bitsize, xbitpos % BITS_PER_WORD, word_mode, |
637 | extract_bit_field (src, bitsize, | 648 | extract_bit_field (src, bitsize, |
@@ -640,10 +651,10 @@ | |||
640 | NULL_RTX, word_mode, word_mode)); | 651 | NULL_RTX, word_mode, word_mode)); |
641 | } | 652 | } |
642 | 653 | ||
643 | 654 | Index: gcc-4_5-branch/gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c | |
644 | === added file 'gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c' | 655 | =================================================================== |
645 | --- old/gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c 1970-01-01 00:00:00 +0000 | 656 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
646 | +++ new/gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c 2010-11-04 12:43:52 +0000 | 657 | +++ gcc-4_5-branch/gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c 2012-03-06 13:05:59.672590164 -0800 |
647 | @@ -0,0 +1,17 @@ | 658 | @@ -0,0 +1,17 @@ |
648 | +/* { dg-do compile } */ | 659 | +/* { dg-do compile } */ |
649 | +/* { dg-options "-O2 -fstrict-volatile-bitfields" } */ | 660 | +/* { dg-options "-O2 -fstrict-volatile-bitfields" } */ |
@@ -662,10 +673,10 @@ | |||
662 | +} | 673 | +} |
663 | + | 674 | + |
664 | +/* { dg-final { scan-assembler "mov(b|zbl).*bits" } } */ | 675 | +/* { dg-final { scan-assembler "mov(b|zbl).*bits" } } */ |
665 | 676 | Index: gcc-4_5-branch/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c | |
666 | === added file 'gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c' | 677 | =================================================================== |
667 | --- old/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c 1970-01-01 00:00:00 +0000 | 678 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
668 | +++ new/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c 2010-11-04 12:43:52 +0000 | 679 | +++ gcc-4_5-branch/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c 2012-03-06 13:05:59.672590164 -0800 |
669 | @@ -0,0 +1,17 @@ | 680 | @@ -0,0 +1,17 @@ |
670 | +/* { dg-do compile } */ | 681 | +/* { dg-do compile } */ |
671 | +/* { dg-options "-O2 -fno-strict-volatile-bitfields" } */ | 682 | +/* { dg-options "-O2 -fno-strict-volatile-bitfields" } */ |
@@ -684,4 +695,3 @@ | |||
684 | +} | 695 | +} |
685 | + | 696 | + |
686 | +/* { dg-final { scan-assembler "movl.*bits" } } */ | 697 | +/* { dg-final { scan-assembler "movl.*bits" } } */ |
687 | |||
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99475.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99475.patch index ec0eebdf0..337b05580 100644 --- a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99475.patch +++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99475.patch | |||
@@ -99,7 +99,7 @@ | |||
99 | Index: gcc-4_5-branch/gcc/config/arm/arm-ldmstm.ml | 99 | Index: gcc-4_5-branch/gcc/config/arm/arm-ldmstm.ml |
100 | =================================================================== | 100 | =================================================================== |
101 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 101 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
102 | +++ gcc-4_5-branch/gcc/config/arm/arm-ldmstm.ml 2011-06-16 18:46:26.355282255 -0700 | 102 | +++ gcc-4_5-branch/gcc/config/arm/arm-ldmstm.ml 2012-03-06 12:51:19.980547615 -0800 |
103 | @@ -0,0 +1,333 @@ | 103 | @@ -0,0 +1,333 @@ |
104 | +(* Auto-generate ARM ldm/stm patterns | 104 | +(* Auto-generate ARM ldm/stm patterns |
105 | + Copyright (C) 2010 Free Software Foundation, Inc. | 105 | + Copyright (C) 2010 Free Software Foundation, Inc. |
@@ -436,8 +436,8 @@ Index: gcc-4_5-branch/gcc/config/arm/arm-ldmstm.ml | |||
436 | + patterns (); | 436 | + patterns (); |
437 | Index: gcc-4_5-branch/gcc/config/arm/arm-protos.h | 437 | Index: gcc-4_5-branch/gcc/config/arm/arm-protos.h |
438 | =================================================================== | 438 | =================================================================== |
439 | --- gcc-4_5-branch.orig/gcc/config/arm/arm-protos.h 2011-06-16 18:46:18.000000000 -0700 | 439 | --- gcc-4_5-branch.orig/gcc/config/arm/arm-protos.h 2012-03-06 12:47:54.000000000 -0800 |
440 | +++ gcc-4_5-branch/gcc/config/arm/arm-protos.h 2011-06-16 18:46:26.355282255 -0700 | 440 | +++ gcc-4_5-branch/gcc/config/arm/arm-protos.h 2012-03-06 12:51:19.980547615 -0800 |
441 | @@ -99,14 +99,11 @@ | 441 | @@ -99,14 +99,11 @@ |
442 | extern int label_mentioned_p (rtx); | 442 | extern int label_mentioned_p (rtx); |
443 | extern RTX_CODE minmax_code (rtx); | 443 | extern RTX_CODE minmax_code (rtx); |
@@ -460,8 +460,8 @@ Index: gcc-4_5-branch/gcc/config/arm/arm-protos.h | |||
460 | extern enum machine_mode arm_select_dominance_cc_mode (rtx, rtx, | 460 | extern enum machine_mode arm_select_dominance_cc_mode (rtx, rtx, |
461 | Index: gcc-4_5-branch/gcc/config/arm/arm.c | 461 | Index: gcc-4_5-branch/gcc/config/arm/arm.c |
462 | =================================================================== | 462 | =================================================================== |
463 | --- gcc-4_5-branch.orig/gcc/config/arm/arm.c 2011-06-16 18:46:23.000000000 -0700 | 463 | --- gcc-4_5-branch.orig/gcc/config/arm/arm.c 2012-03-06 12:47:56.000000000 -0800 |
464 | +++ gcc-4_5-branch/gcc/config/arm/arm.c 2011-06-16 18:46:26.365282255 -0700 | 464 | +++ gcc-4_5-branch/gcc/config/arm/arm.c 2012-03-06 12:51:19.988547639 -0800 |
465 | @@ -753,6 +753,12 @@ | 465 | @@ -753,6 +753,12 @@ |
466 | "hi", "ls", "ge", "lt", "gt", "le", "al", "nv" | 466 | "hi", "ls", "ge", "lt", "gt", "le", "al", "nv" |
467 | }; | 467 | }; |
@@ -475,7 +475,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c | |||
475 | #define ARM_LSL_NAME (TARGET_UNIFIED_ASM ? "lsl" : "asl") | 475 | #define ARM_LSL_NAME (TARGET_UNIFIED_ASM ? "lsl" : "asl") |
476 | #define streq(string1, string2) (strcmp (string1, string2) == 0) | 476 | #define streq(string1, string2) (strcmp (string1, string2) == 0) |
477 | 477 | ||
478 | @@ -9668,24 +9674,125 @@ | 478 | @@ -9647,24 +9653,125 @@ |
479 | return 0; | 479 | return 0; |
480 | } | 480 | } |
481 | 481 | ||
@@ -612,7 +612,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c | |||
612 | 612 | ||
613 | /* Loop over the operands and check that the memory references are | 613 | /* Loop over the operands and check that the memory references are |
614 | suitable (i.e. immediate offsets from the same base register). At | 614 | suitable (i.e. immediate offsets from the same base register). At |
615 | @@ -9723,32 +9830,30 @@ | 615 | @@ -9702,32 +9809,30 @@ |
616 | if (i == 0) | 616 | if (i == 0) |
617 | { | 617 | { |
618 | base_reg = REGNO (reg); | 618 | base_reg = REGNO (reg); |
@@ -659,7 +659,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c | |||
659 | } | 659 | } |
660 | else | 660 | else |
661 | /* Not a suitable memory address. */ | 661 | /* Not a suitable memory address. */ |
662 | @@ -9757,167 +9862,90 @@ | 662 | @@ -9736,167 +9841,90 @@ |
663 | 663 | ||
664 | /* All the useful information has now been extracted from the | 664 | /* All the useful information has now been extracted from the |
665 | operands into unsorted_regs and unsorted_offsets; additionally, | 665 | operands into unsorted_regs and unsorted_offsets; additionally, |
@@ -888,7 +888,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c | |||
888 | 888 | ||
889 | /* Loop over the operands and check that the memory references are | 889 | /* Loop over the operands and check that the memory references are |
890 | suitable (i.e. immediate offsets from the same base register). At | 890 | suitable (i.e. immediate offsets from the same base register). At |
891 | @@ -9952,32 +9980,32 @@ | 891 | @@ -9931,32 +9959,32 @@ |
892 | && (GET_CODE (offset = XEXP (XEXP (operands[nops + i], 0), 1)) | 892 | && (GET_CODE (offset = XEXP (XEXP (operands[nops + i], 0), 1)) |
893 | == CONST_INT))) | 893 | == CONST_INT))) |
894 | { | 894 | { |
@@ -937,7 +937,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c | |||
937 | } | 937 | } |
938 | else | 938 | else |
939 | /* Not a suitable memory address. */ | 939 | /* Not a suitable memory address. */ |
940 | @@ -9986,111 +10014,65 @@ | 940 | @@ -9965,111 +9993,65 @@ |
941 | 941 | ||
942 | /* All the useful information has now been extracted from the | 942 | /* All the useful information has now been extracted from the |
943 | operands into unsorted_regs and unsorted_offsets; additionally, | 943 | operands into unsorted_regs and unsorted_offsets; additionally, |
@@ -1087,7 +1087,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c | |||
1087 | 1087 | ||
1088 | /* XScale has load-store double instructions, but they have stricter | 1088 | /* XScale has load-store double instructions, but they have stricter |
1089 | alignment requirements than load-store multiple, so we cannot | 1089 | alignment requirements than load-store multiple, so we cannot |
1090 | @@ -10127,18 +10109,10 @@ | 1090 | @@ -10106,18 +10088,10 @@ |
1091 | start_sequence (); | 1091 | start_sequence (); |
1092 | 1092 | ||
1093 | for (i = 0; i < count; i++) | 1093 | for (i = 0; i < count; i++) |
@@ -1109,7 +1109,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c | |||
1109 | 1109 | ||
1110 | seq = get_insns (); | 1110 | seq = get_insns (); |
1111 | end_sequence (); | 1111 | end_sequence (); |
1112 | @@ -10147,41 +10121,40 @@ | 1112 | @@ -10126,41 +10100,40 @@ |
1113 | } | 1113 | } |
1114 | 1114 | ||
1115 | result = gen_rtx_PARALLEL (VOIDmode, | 1115 | result = gen_rtx_PARALLEL (VOIDmode, |
@@ -1170,7 +1170,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c | |||
1170 | the pros/cons of ldm/stm usage for XScale. */ | 1170 | the pros/cons of ldm/stm usage for XScale. */ |
1171 | if (low_irq_latency || (arm_tune_xscale && count <= 2 && ! optimize_size)) | 1171 | if (low_irq_latency || (arm_tune_xscale && count <= 2 && ! optimize_size)) |
1172 | { | 1172 | { |
1173 | @@ -10190,18 +10163,10 @@ | 1173 | @@ -10169,18 +10142,10 @@ |
1174 | start_sequence (); | 1174 | start_sequence (); |
1175 | 1175 | ||
1176 | for (i = 0; i < count; i++) | 1176 | for (i = 0; i < count; i++) |
@@ -1192,7 +1192,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c | |||
1192 | 1192 | ||
1193 | seq = get_insns (); | 1193 | seq = get_insns (); |
1194 | end_sequence (); | 1194 | end_sequence (); |
1195 | @@ -10210,29 +10175,319 @@ | 1195 | @@ -10189,29 +10154,319 @@ |
1196 | } | 1196 | } |
1197 | 1197 | ||
1198 | result = gen_rtx_PARALLEL (VOIDmode, | 1198 | result = gen_rtx_PARALLEL (VOIDmode, |
@@ -1522,7 +1522,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c | |||
1522 | } | 1522 | } |
1523 | 1523 | ||
1524 | int | 1524 | int |
1525 | @@ -10268,20 +10523,21 @@ | 1525 | @@ -10247,20 +10502,21 @@ |
1526 | for (i = 0; in_words_to_go >= 2; i+=4) | 1526 | for (i = 0; in_words_to_go >= 2; i+=4) |
1527 | { | 1527 | { |
1528 | if (in_words_to_go > 4) | 1528 | if (in_words_to_go > 4) |
@@ -1554,8 +1554,8 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.c | |||
1554 | dstbase, &dstoffset)); | 1554 | dstbase, &dstoffset)); |
1555 | Index: gcc-4_5-branch/gcc/config/arm/arm.h | 1555 | Index: gcc-4_5-branch/gcc/config/arm/arm.h |
1556 | =================================================================== | 1556 | =================================================================== |
1557 | --- gcc-4_5-branch.orig/gcc/config/arm/arm.h 2011-06-16 18:46:20.000000000 -0700 | 1557 | --- gcc-4_5-branch.orig/gcc/config/arm/arm.h 2012-03-06 12:47:55.000000000 -0800 |
1558 | +++ gcc-4_5-branch/gcc/config/arm/arm.h 2011-06-16 18:46:26.375282255 -0700 | 1558 | +++ gcc-4_5-branch/gcc/config/arm/arm.h 2012-03-06 12:51:19.988547639 -0800 |
1559 | @@ -1143,6 +1143,9 @@ | 1559 | @@ -1143,6 +1143,9 @@ |
1560 | ((MODE) == TImode || (MODE) == EImode || (MODE) == OImode \ | 1560 | ((MODE) == TImode || (MODE) == EImode || (MODE) == OImode \ |
1561 | || (MODE) == CImode || (MODE) == XImode) | 1561 | || (MODE) == CImode || (MODE) == XImode) |
@@ -1577,8 +1577,8 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.h | |||
1577 | #endif /* ! GCC_ARM_H */ | 1577 | #endif /* ! GCC_ARM_H */ |
1578 | Index: gcc-4_5-branch/gcc/config/arm/arm.md | 1578 | Index: gcc-4_5-branch/gcc/config/arm/arm.md |
1579 | =================================================================== | 1579 | =================================================================== |
1580 | --- gcc-4_5-branch.orig/gcc/config/arm/arm.md 2011-06-16 18:46:23.000000000 -0700 | 1580 | --- gcc-4_5-branch.orig/gcc/config/arm/arm.md 2012-03-06 12:47:56.000000000 -0800 |
1581 | +++ gcc-4_5-branch/gcc/config/arm/arm.md 2011-06-16 18:46:26.375282255 -0700 | 1581 | +++ gcc-4_5-branch/gcc/config/arm/arm.md 2012-03-06 12:51:19.992547622 -0800 |
1582 | @@ -6282,7 +6282,7 @@ | 1582 | @@ -6282,7 +6282,7 @@ |
1583 | 1583 | ||
1584 | ;; load- and store-multiple insns | 1584 | ;; load- and store-multiple insns |
@@ -1969,7 +1969,7 @@ Index: gcc-4_5-branch/gcc/config/arm/arm.md | |||
1969 | Index: gcc-4_5-branch/gcc/config/arm/ldmstm.md | 1969 | Index: gcc-4_5-branch/gcc/config/arm/ldmstm.md |
1970 | =================================================================== | 1970 | =================================================================== |
1971 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 1971 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
1972 | +++ gcc-4_5-branch/gcc/config/arm/ldmstm.md 2011-06-16 18:46:26.375282255 -0700 | 1972 | +++ gcc-4_5-branch/gcc/config/arm/ldmstm.md 2012-03-06 12:51:19.992547622 -0800 |
1973 | @@ -0,0 +1,1191 @@ | 1973 | @@ -0,0 +1,1191 @@ |
1974 | +/* ARM ldm/stm instruction patterns. This file was automatically generated | 1974 | +/* ARM ldm/stm instruction patterns. This file was automatically generated |
1975 | + using arm-ldmstm.ml. Please do not edit manually. | 1975 | + using arm-ldmstm.ml. Please do not edit manually. |
@@ -3164,8 +3164,8 @@ Index: gcc-4_5-branch/gcc/config/arm/ldmstm.md | |||
3164 | + | 3164 | + |
3165 | Index: gcc-4_5-branch/gcc/config/arm/predicates.md | 3165 | Index: gcc-4_5-branch/gcc/config/arm/predicates.md |
3166 | =================================================================== | 3166 | =================================================================== |
3167 | --- gcc-4_5-branch.orig/gcc/config/arm/predicates.md 2011-06-16 18:46:18.000000000 -0700 | 3167 | --- gcc-4_5-branch.orig/gcc/config/arm/predicates.md 2012-03-06 12:47:54.000000000 -0800 |
3168 | +++ gcc-4_5-branch/gcc/config/arm/predicates.md 2011-06-16 18:46:26.375282255 -0700 | 3168 | +++ gcc-4_5-branch/gcc/config/arm/predicates.md 2012-03-06 12:51:19.992547622 -0800 |
3169 | @@ -211,6 +211,11 @@ | 3169 | @@ -211,6 +211,11 @@ |
3170 | (and (match_code "ior,xor,and") | 3170 | (and (match_code "ior,xor,and") |
3171 | (match_test "mode == GET_MODE (op)"))) | 3171 | (match_test "mode == GET_MODE (op)"))) |
@@ -3314,8 +3314,8 @@ Index: gcc-4_5-branch/gcc/config/arm/predicates.md | |||
3314 | return true; | 3314 | return true; |
3315 | Index: gcc-4_5-branch/gcc/config/i386/i386.md | 3315 | Index: gcc-4_5-branch/gcc/config/i386/i386.md |
3316 | =================================================================== | 3316 | =================================================================== |
3317 | --- gcc-4_5-branch.orig/gcc/config/i386/i386.md 2011-06-16 18:46:21.000000000 -0700 | 3317 | --- gcc-4_5-branch.orig/gcc/config/i386/i386.md 2012-03-06 12:47:55.000000000 -0800 |
3318 | +++ gcc-4_5-branch/gcc/config/i386/i386.md 2011-06-16 18:46:26.385282255 -0700 | 3318 | +++ gcc-4_5-branch/gcc/config/i386/i386.md 2012-03-06 12:51:19.996547605 -0800 |
3319 | @@ -4960,6 +4960,7 @@ | 3319 | @@ -4960,6 +4960,7 @@ |
3320 | (set (match_operand:SSEMODEI24 2 "register_operand" "") | 3320 | (set (match_operand:SSEMODEI24 2 "register_operand" "") |
3321 | (fix:SSEMODEI24 (match_dup 0)))] | 3321 | (fix:SSEMODEI24 (match_dup 0)))] |
@@ -3324,7 +3324,7 @@ Index: gcc-4_5-branch/gcc/config/i386/i386.md | |||
3324 | && peep2_reg_dead_p (2, operands[0])" | 3324 | && peep2_reg_dead_p (2, operands[0])" |
3325 | [(set (match_dup 2) (fix:SSEMODEI24 (match_dup 1)))] | 3325 | [(set (match_dup 2) (fix:SSEMODEI24 (match_dup 1)))] |
3326 | "") | 3326 | "") |
3327 | @@ -20057,15 +20058,14 @@ | 3327 | @@ -20089,15 +20090,14 @@ |
3328 | ;; leal (%edx,%eax,4), %eax | 3328 | ;; leal (%edx,%eax,4), %eax |
3329 | 3329 | ||
3330 | (define_peephole2 | 3330 | (define_peephole2 |
@@ -3345,7 +3345,7 @@ Index: gcc-4_5-branch/gcc/config/i386/i386.md | |||
3345 | (clobber (reg:CC FLAGS_REG))])] | 3345 | (clobber (reg:CC FLAGS_REG))])] |
3346 | "INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 3 | 3346 | "INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 3 |
3347 | /* Validate MODE for lea. */ | 3347 | /* Validate MODE for lea. */ |
3348 | @@ -20074,31 +20074,27 @@ | 3348 | @@ -20106,31 +20106,27 @@ |
3349 | || GET_MODE (operands[0]) == HImode)) | 3349 | || GET_MODE (operands[0]) == HImode)) |
3350 | || GET_MODE (operands[0]) == SImode | 3350 | || GET_MODE (operands[0]) == SImode |
3351 | || (TARGET_64BIT && GET_MODE (operands[0]) == DImode)) | 3351 | || (TARGET_64BIT && GET_MODE (operands[0]) == DImode)) |
@@ -3391,8 +3391,8 @@ Index: gcc-4_5-branch/gcc/config/i386/i386.md | |||
3391 | 3391 | ||
3392 | Index: gcc-4_5-branch/gcc/genoutput.c | 3392 | Index: gcc-4_5-branch/gcc/genoutput.c |
3393 | =================================================================== | 3393 | =================================================================== |
3394 | --- gcc-4_5-branch.orig/gcc/genoutput.c 2011-06-16 17:59:04.000000000 -0700 | 3394 | --- gcc-4_5-branch.orig/gcc/genoutput.c 2012-03-06 11:53:32.000000000 -0800 |
3395 | +++ gcc-4_5-branch/gcc/genoutput.c 2011-06-16 18:46:26.385282255 -0700 | 3395 | +++ gcc-4_5-branch/gcc/genoutput.c 2012-03-06 12:51:20.000547582 -0800 |
3396 | @@ -266,6 +266,8 @@ | 3396 | @@ -266,6 +266,8 @@ |
3397 | 3397 | ||
3398 | printf (" %d,\n", d->strict_low); | 3398 | printf (" %d,\n", d->strict_low); |
@@ -3404,8 +3404,8 @@ Index: gcc-4_5-branch/gcc/genoutput.c | |||
3404 | printf(" },\n"); | 3404 | printf(" },\n"); |
3405 | Index: gcc-4_5-branch/gcc/genrecog.c | 3405 | Index: gcc-4_5-branch/gcc/genrecog.c |
3406 | =================================================================== | 3406 | =================================================================== |
3407 | --- gcc-4_5-branch.orig/gcc/genrecog.c 2011-06-16 17:59:04.000000000 -0700 | 3407 | --- gcc-4_5-branch.orig/gcc/genrecog.c 2012-03-06 11:53:32.000000000 -0800 |
3408 | +++ gcc-4_5-branch/gcc/genrecog.c 2011-06-16 18:46:26.395282255 -0700 | 3408 | +++ gcc-4_5-branch/gcc/genrecog.c 2012-03-06 12:51:20.000547582 -0800 |
3409 | @@ -1782,20 +1782,11 @@ | 3409 | @@ -1782,20 +1782,11 @@ |
3410 | int odepth = strlen (oldpos); | 3410 | int odepth = strlen (oldpos); |
3411 | int ndepth = strlen (newpos); | 3411 | int ndepth = strlen (newpos); |
@@ -3429,8 +3429,8 @@ Index: gcc-4_5-branch/gcc/genrecog.c | |||
3429 | { | 3429 | { |
3430 | Index: gcc-4_5-branch/gcc/recog.c | 3430 | Index: gcc-4_5-branch/gcc/recog.c |
3431 | =================================================================== | 3431 | =================================================================== |
3432 | --- gcc-4_5-branch.orig/gcc/recog.c 2011-06-16 18:46:02.000000000 -0700 | 3432 | --- gcc-4_5-branch.orig/gcc/recog.c 2012-03-06 12:47:48.000000000 -0800 |
3433 | +++ gcc-4_5-branch/gcc/recog.c 2011-06-16 18:46:26.395282255 -0700 | 3433 | +++ gcc-4_5-branch/gcc/recog.c 2012-03-06 13:04:05.780584592 -0800 |
3434 | @@ -2082,6 +2082,7 @@ | 3434 | @@ -2082,6 +2082,7 @@ |
3435 | recog_data.operand_loc, | 3435 | recog_data.operand_loc, |
3436 | recog_data.constraints, | 3436 | recog_data.constraints, |
@@ -3508,7 +3508,7 @@ Index: gcc-4_5-branch/gcc/recog.c | |||
3508 | 3508 | ||
3509 | gcc_assert (peep2_insn_data[ofs].insn != NULL_RTX); | 3509 | gcc_assert (peep2_insn_data[ofs].insn != NULL_RTX); |
3510 | 3510 | ||
3511 | @@ -2996,12 +3006,8 @@ | 3511 | @@ -2997,12 +3007,8 @@ |
3512 | gcc_assert (from < MAX_INSNS_PER_PEEP2 + 1); | 3512 | gcc_assert (from < MAX_INSNS_PER_PEEP2 + 1); |
3513 | gcc_assert (to < MAX_INSNS_PER_PEEP2 + 1); | 3513 | gcc_assert (to < MAX_INSNS_PER_PEEP2 + 1); |
3514 | 3514 | ||
@@ -3523,17 +3523,17 @@ Index: gcc-4_5-branch/gcc/recog.c | |||
3523 | 3523 | ||
3524 | gcc_assert (peep2_insn_data[from].insn != NULL_RTX); | 3524 | gcc_assert (peep2_insn_data[from].insn != NULL_RTX); |
3525 | REG_SET_TO_HARD_REG_SET (live, peep2_insn_data[from].live_before); | 3525 | REG_SET_TO_HARD_REG_SET (live, peep2_insn_data[from].live_before); |
3526 | @@ -3010,8 +3016,7 @@ | 3526 | @@ -3016,8 +3022,7 @@ |
3527 | { | 3527 | *def_rec; def_rec++) |
3528 | HARD_REG_SET this_live; | 3528 | SET_HARD_REG_BIT (live, DF_REF_REGNO (*def_rec)); |
3529 | 3529 | ||
3530 | - if (++from >= MAX_INSNS_PER_PEEP2 + 1) | 3530 | - if (++from >= MAX_INSNS_PER_PEEP2 + 1) |
3531 | - from = 0; | 3531 | - from = 0; |
3532 | + from = peep2_buf_position (from + 1); | 3532 | + from = peep2_buf_position (from + 1); |
3533 | gcc_assert (peep2_insn_data[from].insn != NULL_RTX); | 3533 | } |
3534 | REG_SET_TO_HARD_REG_SET (this_live, peep2_insn_data[from].live_before); | 3534 | |
3535 | IOR_HARD_REG_SET (live, this_live); | 3535 | cl = (class_str[0] == 'r' ? GENERAL_REGS |
3536 | @@ -3104,19 +3109,234 @@ | 3536 | @@ -3107,19 +3112,234 @@ |
3537 | COPY_REG_SET (peep2_insn_data[MAX_INSNS_PER_PEEP2].live_before, live); | 3537 | COPY_REG_SET (peep2_insn_data[MAX_INSNS_PER_PEEP2].live_before, live); |
3538 | } | 3538 | } |
3539 | 3539 | ||
@@ -3771,7 +3771,7 @@ Index: gcc-4_5-branch/gcc/recog.c | |||
3771 | df_analyze (); | 3771 | df_analyze (); |
3772 | 3772 | ||
3773 | /* Initialize the regsets we're going to use. */ | 3773 | /* Initialize the regsets we're going to use. */ |
3774 | @@ -3126,214 +3346,59 @@ | 3774 | @@ -3129,214 +3349,59 @@ |
3775 | 3775 | ||
3776 | FOR_EACH_BB_REVERSE (bb) | 3776 | FOR_EACH_BB_REVERSE (bb) |
3777 | { | 3777 | { |
@@ -4028,7 +4028,7 @@ Index: gcc-4_5-branch/gcc/recog.c | |||
4028 | } | 4028 | } |
4029 | } | 4029 | } |
4030 | 4030 | ||
4031 | @@ -3341,7 +3406,7 @@ | 4031 | @@ -3344,7 +3409,7 @@ |
4032 | for (i = 0; i < MAX_INSNS_PER_PEEP2 + 1; ++i) | 4032 | for (i = 0; i < MAX_INSNS_PER_PEEP2 + 1; ++i) |
4033 | BITMAP_FREE (peep2_insn_data[i].live_before); | 4033 | BITMAP_FREE (peep2_insn_data[i].live_before); |
4034 | BITMAP_FREE (live); | 4034 | BITMAP_FREE (live); |
@@ -4039,8 +4039,8 @@ Index: gcc-4_5-branch/gcc/recog.c | |||
4039 | #endif /* HAVE_peephole2 */ | 4039 | #endif /* HAVE_peephole2 */ |
4040 | Index: gcc-4_5-branch/gcc/recog.h | 4040 | Index: gcc-4_5-branch/gcc/recog.h |
4041 | =================================================================== | 4041 | =================================================================== |
4042 | --- gcc-4_5-branch.orig/gcc/recog.h 2011-06-16 17:59:04.000000000 -0700 | 4042 | --- gcc-4_5-branch.orig/gcc/recog.h 2012-03-06 11:53:32.000000000 -0800 |
4043 | +++ gcc-4_5-branch/gcc/recog.h 2011-06-16 18:46:26.405282255 -0700 | 4043 | +++ gcc-4_5-branch/gcc/recog.h 2012-03-06 12:51:20.000547582 -0800 |
4044 | @@ -194,6 +194,9 @@ | 4044 | @@ -194,6 +194,9 @@ |
4045 | /* Gives the constraint string for operand N. */ | 4045 | /* Gives the constraint string for operand N. */ |
4046 | const char *constraints[MAX_RECOG_OPERANDS]; | 4046 | const char *constraints[MAX_RECOG_OPERANDS]; |
@@ -4062,8 +4062,8 @@ Index: gcc-4_5-branch/gcc/recog.h | |||
4062 | 4062 | ||
4063 | Index: gcc-4_5-branch/gcc/reload.c | 4063 | Index: gcc-4_5-branch/gcc/reload.c |
4064 | =================================================================== | 4064 | =================================================================== |
4065 | --- gcc-4_5-branch.orig/gcc/reload.c 2011-06-16 17:59:04.000000000 -0700 | 4065 | --- gcc-4_5-branch.orig/gcc/reload.c 2012-03-06 11:53:32.000000000 -0800 |
4066 | +++ gcc-4_5-branch/gcc/reload.c 2011-06-16 18:46:26.405282255 -0700 | 4066 | +++ gcc-4_5-branch/gcc/reload.c 2012-03-06 12:51:20.004547561 -0800 |
4067 | @@ -3631,7 +3631,7 @@ | 4067 | @@ -3631,7 +3631,7 @@ |
4068 | || modified[j] != RELOAD_WRITE) | 4068 | || modified[j] != RELOAD_WRITE) |
4069 | && j != i | 4069 | && j != i |