diff options
Diffstat (limited to 'meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99380.patch')
| -rw-r--r-- | meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99380.patch | 516 |
1 files changed, 252 insertions, 264 deletions
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 c66c11f82c..b7b6d88a04 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 | |||
