Deleted Added
full compact
reload.c (132727) reload.c (146906)
1/* Search an insn for pseudo regs that must be in hard regs and are not.
2 Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
3 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
4
5This file is part of GCC.
6
7GCC is free software; you can redistribute it and/or modify it under
8the terms of the GNU General Public License as published by the Free

--- 2130 unchanged lines hidden (view full) ---

2139 GET_MODE (SUBREG_REG (y)),
2140 SUBREG_BYTE (y),
2141 GET_MODE (y));
2142 }
2143 else
2144 j = REGNO (y);
2145
2146 /* On a WORDS_BIG_ENDIAN machine, point to the last register of a
1/* Search an insn for pseudo regs that must be in hard regs and are not.
2 Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
3 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
4
5This file is part of GCC.
6
7GCC is free software; you can redistribute it and/or modify it under
8the terms of the GNU General Public License as published by the Free

--- 2130 unchanged lines hidden (view full) ---

2139 GET_MODE (SUBREG_REG (y)),
2140 SUBREG_BYTE (y),
2141 GET_MODE (y));
2142 }
2143 else
2144 j = REGNO (y);
2145
2146 /* On a WORDS_BIG_ENDIAN machine, point to the last register of a
2147 multiple hard register group, so that for example (reg:DI 0) and
2148 (reg:SI 1) will be considered the same register. */
2147 multiple hard register group of scalar integer registers, so that
2148 for example (reg:DI 0) and (reg:SI 1) will be considered the same
2149 register. */
2149 if (WORDS_BIG_ENDIAN && GET_MODE_SIZE (GET_MODE (x)) > UNITS_PER_WORD
2150 if (WORDS_BIG_ENDIAN && GET_MODE_SIZE (GET_MODE (x)) > UNITS_PER_WORD
2151 && SCALAR_INT_MODE_P (GET_MODE (x))
2150 && i < FIRST_PSEUDO_REGISTER)
2151 i += HARD_REGNO_NREGS (i, GET_MODE (x)) - 1;
2152 if (WORDS_BIG_ENDIAN && GET_MODE_SIZE (GET_MODE (y)) > UNITS_PER_WORD
2152 && i < FIRST_PSEUDO_REGISTER)
2153 i += HARD_REGNO_NREGS (i, GET_MODE (x)) - 1;
2154 if (WORDS_BIG_ENDIAN && GET_MODE_SIZE (GET_MODE (y)) > UNITS_PER_WORD
2155 && SCALAR_INT_MODE_P (GET_MODE (y))
2153 && j < FIRST_PSEUDO_REGISTER)
2154 j += HARD_REGNO_NREGS (j, GET_MODE (y)) - 1;
2155
2156 return i == j;
2157 }
2158 /* If two operands must match, because they are really a single
2159 operand of an assembler insn, then two postincrements are invalid
2160 because the assembler insn would increment only once.

--- 895 unchanged lines hidden (view full) ---

3056 bad = 1;
3057
3058 did_match = this_alternative_win[m];
3059 }
3060 else
3061 {
3062 /* Operands don't match. */
3063 rtx value;
2156 && j < FIRST_PSEUDO_REGISTER)
2157 j += HARD_REGNO_NREGS (j, GET_MODE (y)) - 1;
2158
2159 return i == j;
2160 }
2161 /* If two operands must match, because they are really a single
2162 operand of an assembler insn, then two postincrements are invalid
2163 because the assembler insn would increment only once.

--- 895 unchanged lines hidden (view full) ---

3059 bad = 1;
3060
3061 did_match = this_alternative_win[m];
3062 }
3063 else
3064 {
3065 /* Operands don't match. */
3066 rtx value;
3067 int loc1, loc2;
3064 /* Retroactively mark the operand we had to match
3065 as a loser, if it wasn't already. */
3066 if (this_alternative_win[m])
3067 losers++;
3068 this_alternative_win[m] = 0;
3069 if (this_alternative[m] == (int) NO_REGS)
3070 bad = 1;
3071 /* But count the pair only once in the total badness of
3068 /* Retroactively mark the operand we had to match
3069 as a loser, if it wasn't already. */
3070 if (this_alternative_win[m])
3071 losers++;
3072 this_alternative_win[m] = 0;
3073 if (this_alternative[m] == (int) NO_REGS)
3074 bad = 1;
3075 /* But count the pair only once in the total badness of
3072 this alternative, if the pair can be a dummy reload. */
3076 this alternative, if the pair can be a dummy reload.
3077 The pointers in operand_loc are not swapped; swap
3078 them by hand if necessary. */
3079 if (swapped && i == commutative)
3080 loc1 = commutative + 1;
3081 else if (swapped && i == commutative + 1)
3082 loc1 = commutative;
3083 else
3084 loc1 = i;
3085 if (swapped && m == commutative)
3086 loc2 = commutative + 1;
3087 else if (swapped && m == commutative + 1)
3088 loc2 = commutative;
3089 else
3090 loc2 = m;
3073 value
3074 = find_dummy_reload (recog_data.operand[i],
3075 recog_data.operand[m],
3091 value
3092 = find_dummy_reload (recog_data.operand[i],
3093 recog_data.operand[m],
3076 recog_data.operand_loc[i],
3077 recog_data.operand_loc[m],
3094 recog_data.operand_loc[loc1],
3095 recog_data.operand_loc[loc2],
3078 operand_mode[i], operand_mode[m],
3079 this_alternative[m], -1,
3080 this_alternative_earlyclobber[m]);
3081
3082 if (value != 0)
3083 losers--;
3084 }
3085 /* This can be fixed with reloads if the operand

--- 3992 unchanged lines hidden ---
3096 operand_mode[i], operand_mode[m],
3097 this_alternative[m], -1,
3098 this_alternative_earlyclobber[m]);
3099
3100 if (value != 0)
3101 losers--;
3102 }
3103 /* This can be fixed with reloads if the operand

--- 3992 unchanged lines hidden ---