diff --git gcc-4.4.5.orig/configure gcc-4.4.5/configure
index 2925c1a..994f6b5 100755
old
|
new
|
case "${target}" in |
2360 | 2360 | avr-*-*) |
2361 | 2361 | noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj} target-libssp" |
2362 | 2362 | ;; |
| 2363 | msp430-*-*) |
| 2364 | noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3 ${libgcj} target-libssp" |
| 2365 | ;; |
2363 | 2366 | bfin-*-*) |
2364 | 2367 | noconfigdirs="$noconfigdirs gdb" |
2365 | 2368 | if test x${is_cross_compiler} != xno ; then |
diff --git gcc-4.4.5.orig/gcc/config.gcc gcc-4.4.5/gcc/config.gcc
index 6f72224..bb06db3 100644
old
|
new
|
avr-*-rtems*) |
810 | 810 | avr-*-*) |
811 | 811 | tm_file="avr/avr.h dbxelf.h" |
812 | 812 | ;; |
| 813 | msp430-*-*) |
| 814 | tm_file="msp430/msp430.h dbxelf.h" |
| 815 | c_target_objs=`cat ${srcdir}/config/msp430/objs-extra` |
| 816 | cxx_target_objs=`cat ${srcdir}/config/msp430/objs-extra` |
| 817 | use_fixproto=yes |
| 818 | ;; |
813 | 819 | bfin*-elf*) |
814 | 820 | tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h" |
815 | 821 | tmake_file=bfin/t-bfin-elf |
diff --git gcc-4.4.5.orig/gcc/configure gcc-4.4.5/gcc/configure
index 64cdd91..d881a06 100755
old
|
new
|
ac_compiler_gnu=$ac_cv_c_compiler_gnu |
1595 | 1595 | |
1596 | 1596 | |
1597 | 1597 | gcc_version=`cat $srcdir/BASE-VER` |
| 1598 | echo $gcc_version | sed s/\\\([0-9]\\\)\.\\\([0-9]\\\)\.\\\([0-9]\\\)/\#define\ GCC_VERSION_INT\ 0x\\1\\2\\3/g > $srcdir/_gccver.h |
1598 | 1599 | |
1599 | 1600 | # Determine the host, build, and target systems |
1600 | 1601 | ac_aux_dir= |
… |
… |
esac |
23819 | 23820 | case "$target" in |
23820 | 23821 | i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \ |
23821 | 23822 | | x86_64*-*-* | hppa*-*-* | arm*-*-* \ |
| 23823 | | msp430-*-* \ |
23822 | 23824 | | xstormy16*-*-* | cris-*-* | crisv32-*-* | xtensa*-*-* | bfin-*-* | score*-*-* \ |
23823 | 23825 | | spu-*-* | fido*-*-* | m32c-*-*) |
23824 | 23826 | insn="nop" |
diff --git gcc-4.4.5.orig/gcc/dse.c gcc-4.4.5/gcc/dse.c
index 3d347ce..844fd51 100644
old
|
new
|
replace_inc_dec (rtx *r, void *d) |
826 | 826 | case POST_INC: |
827 | 827 | { |
828 | 828 | rtx r1 = XEXP (x, 0); |
829 | | rtx c = gen_int_mode (Pmode, data->size); |
| 829 | rtx c = gen_int_mode (data->size, Pmode); |
830 | 830 | emit_insn_before (gen_rtx_SET (Pmode, r1, |
831 | 831 | gen_rtx_PLUS (Pmode, r1, c)), |
832 | 832 | data->insn); |
… |
… |
replace_inc_dec (rtx *r, void *d) |
837 | 837 | case POST_DEC: |
838 | 838 | { |
839 | 839 | rtx r1 = XEXP (x, 0); |
840 | | rtx c = gen_int_mode (Pmode, -data->size); |
| 840 | rtx c = gen_int_mode (-data->size, Pmode); |
841 | 841 | emit_insn_before (gen_rtx_SET (Pmode, r1, |
842 | 842 | gen_rtx_PLUS (Pmode, r1, c)), |
843 | 843 | data->insn); |
diff --git gcc-4.4.5.orig/gcc/emit-rtl.c gcc-4.4.5/gcc/emit-rtl.c
index a91e7fd..0574d52 100644
old
|
new
|
set_mem_attributes_minus_bitpos (rtx ref, tree t, int objectp, |
1686 | 1686 | base = get_base_address (base); |
1687 | 1687 | if (base && DECL_P (base) |
1688 | 1688 | && TREE_READONLY (base) |
1689 | | && (TREE_STATIC (base) || DECL_EXTERNAL (base))) |
| 1689 | && (TREE_STATIC (base) || DECL_EXTERNAL (base)) |
| 1690 | && !TREE_THIS_VOLATILE (base)) |
1690 | 1691 | { |
1691 | 1692 | tree base_type = TREE_TYPE (base); |
1692 | 1693 | gcc_assert (!(base_type && TYPE_NEEDS_CONSTRUCTING (base_type)) |
diff --git gcc-4.4.5.orig/gcc/expr.c gcc-4.4.5/gcc/expr.c
index b6bc529..9e93287 100644
old
|
new
|
move_by_pieces (rtx to, rtx from, unsigned HOST_WIDE_INT len, |
955 | 955 | data.autinc_from = 1; |
956 | 956 | data.explicit_inc_from = -1; |
957 | 957 | } |
958 | | if (USE_LOAD_POST_INCREMENT (mode) && ! data.autinc_from) |
| 958 | if (USE_LOAD_POST_INCREMENT (mode) && !data.reverse && !data.autinc_from) |
959 | 959 | { |
960 | 960 | data.from_addr = copy_addr_to_reg (from_addr); |
961 | 961 | data.autinc_from = 1; |
diff --git gcc-4.4.5.orig/gcc/loop-invariant.c gcc-4.4.5/gcc/loop-invariant.c
index 7eaabf7..0d0585e 100644
old
|
new
|
move_invariant_reg (struct loop *loop, unsigned invno) |
1171 | 1171 | rtx reg, set, dest, note; |
1172 | 1172 | struct use *use; |
1173 | 1173 | bitmap_iterator bi; |
| 1174 | int n_validated; |
1174 | 1175 | |
1175 | 1176 | if (inv->reg) |
1176 | 1177 | return true; |
1177 | 1178 | if (!repr->move) |
1178 | 1179 | return false; |
| 1180 | n_validated = num_validated_changes (); |
1179 | 1181 | /* If this is a representative of the class of equivalent invariants, |
1180 | 1182 | really move the invariant. Otherwise just replace its use with |
1181 | 1183 | the register used for the representative. */ |
… |
… |
move_invariant_reg (struct loop *loop, unsigned invno) |
1200 | 1202 | reg = gen_reg_rtx_and_attrs (dest); |
1201 | 1203 | |
1202 | 1204 | /* Try replacing the destination by a new pseudoregister. */ |
1203 | | if (!validate_change (inv->insn, &SET_DEST (set), reg, false)) |
| 1205 | validate_change (inv->insn, &SET_DEST (set), reg, true); |
| 1206 | |
| 1207 | /* Replace the uses we know to be dominated. It saves work for copy |
| 1208 | propagation, and also it is necessary so that dependent invariants |
| 1209 | are computed right. */ |
| 1210 | /* Note that we must test the changes for validity, lest we might |
| 1211 | rip apart a match_dup between a use and a clobber. */ |
| 1212 | if (inv->def) |
| 1213 | for (use = inv->def->uses; use; use = use->next) |
| 1214 | validate_change (use->insn, use->pos, reg, true); |
| 1215 | if (!apply_change_group ()) |
1204 | 1216 | goto fail; |
1205 | 1217 | df_insn_rescan (inv->insn); |
1206 | 1218 | |
… |
… |
move_invariant_reg (struct loop *loop, unsigned invno) |
1221 | 1233 | } |
1222 | 1234 | else |
1223 | 1235 | { |
1224 | | if (!move_invariant_reg (loop, repr->invno)) |
1225 | | goto fail; |
| 1236 | /* Replace the uses we know to be dominated. It saves work for copy |
| 1237 | propagation, and also it is necessary so that dependent invariants |
| 1238 | are computed right. */ |
1226 | 1239 | reg = repr->reg; |
| 1240 | if (inv->def) |
| 1241 | for (use = inv->def->uses; use; use = use->next) |
| 1242 | validate_change (use->insn, use->pos, reg, true); |
| 1243 | |
| 1244 | if (verify_changes (n_validated) |
| 1245 | && move_invariant_reg (loop, repr->invno)) |
| 1246 | confirm_change_group (); |
| 1247 | else |
| 1248 | { |
| 1249 | cancel_changes (n_validated); |
| 1250 | goto fail; |
| 1251 | } |
| 1252 | |
1227 | 1253 | set = single_set (inv->insn); |
1228 | 1254 | emit_insn_after (gen_move_insn (SET_DEST (set), reg), inv->insn); |
1229 | 1255 | delete_insn (inv->insn); |
… |
… |
move_invariant_reg (struct loop *loop, unsigned invno) |
1232 | 1258 | |
1233 | 1259 | inv->reg = reg; |
1234 | 1260 | |
1235 | | /* Replace the uses we know to be dominated. It saves work for copy |
1236 | | propagation, and also it is necessary so that dependent invariants |
1237 | | are computed right. */ |
1238 | 1261 | if (inv->def) |
1239 | | { |
1240 | | for (use = inv->def->uses; use; use = use->next) |
1241 | | { |
1242 | | *use->pos = reg; |
1243 | | df_insn_rescan (use->insn); |
1244 | | } |
1245 | | } |
| 1262 | for (use = inv->def->uses; use; use = use->next) |
| 1263 | df_insn_rescan (use->insn); |
1246 | 1264 | |
1247 | 1265 | return true; |
1248 | 1266 | |
diff --git gcc-4.4.5.orig/libgcc/config.host gcc-4.4.5/libgcc/config.host
index 55af651..23aa200 100644
old
|
new
|
avr-*-*) |
224 | 224 | # Make HImode functions for AVR |
225 | 225 | tmake_file=${cpu_type}/t-avr |
226 | 226 | ;; |
| 227 | msp430-*-*) |
| 228 | ;; |
227 | 229 | bfin*-elf*) |
228 | 230 | ;; |
229 | 231 | bfin*-uclinux*) |