[r26]: gcc-4.2.4.patch  Maximize  Restore  History

Download this file

83 lines (76 with data), 2.5 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
diff -urN gcc-orig/configure gcc-new/configure
--- gcc-orig/configure 2007-09-15 02:42:24.000000000 +0200
+++ gcc-new/configure 2009-08-29 18:40:43.390625000 +0200
@@ -1644,6 +1644,9 @@
*-*-lynxos*)
noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj}"
;;
+ msp430-*-*)
+ noconfigdirs="$noconfigdirs target-libstdc++-v3 target-libssp"
+ ;;
*-*-*)
noconfigdirs="$noconfigdirs ${libgcj}"
;;
diff -urN gcc-orig/gcc/config.gcc gcc-new/gcc/config.gcc
--- gcc-orig/gcc/config.gcc 2008-03-13 20:11:44.000000000 +0100
+++ gcc-new/gcc/config.gcc 2009-08-29 17:27:47.031250000 +0200
@@ -785,6 +785,12 @@
tm_file="avr/avr.h dbxelf.h"
use_fixproto=yes
;;
+msp430-*-*)
+ tm_file="msp430/msp430.h dbxelf.h"
+ c_target_objs=`cat ${srcdir}/config/msp430/objs-extra`
+ cxx_target_objs=`cat ${srcdir}/config/msp430/objs-extra`
+ use_fixproto=yes
+ ;;
bfin*-elf*)
tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h"
tmake_file=bfin/t-bfin-elf
diff -urN gcc-orig/gcc/configure gcc-new/gcc/configure
--- gcc-orig/gcc/configure 2008-03-12 01:56:34.000000000 +0100
+++ gcc-new/gcc/configure 2009-08-30 14:16:41.765625000 +0200
@@ -1396,6 +1396,7 @@
gcc_version=`cat $srcdir/BASE-VER`
+echo $gcc_version | sed s/\\\([0-9]\\\)\.\\\([0-9]\\\)\.\\\([0-9]\\\)/\#define\ GCC_VERSION_INT\ 0x\\1\\2\\3/g > $srcdir/_gccver.h
# Determine the host, build, and target systems
ac_aux_dir=
diff -urN gcc-orig/gcc/loop-invariant.c gcc-new/gcc/loop-invariant.c
--- gcc-orig/gcc/loop-invariant.c 2007-09-01 17:28:30.000000000 +0200
+++ gcc-new/gcc/loop-invariant.c 2009-08-29 17:28:34.500000000 +0200
@@ -800,6 +800,26 @@
/* Record registers used in INSN that have a unique invariant definition. */
+static void record_clobber_uses_workaround(rtx insn, struct invariant *inv, struct df_ref *use)
+{
+ rtx pat = PATTERN(insn);
+ if (GET_CODE(pat) == PARALLEL)
+ {
+ int len = XVECLEN(pat, 0);
+ int idx = 0;
+
+ for (idx = 0; idx < len; idx++)
+ {
+ rtx subexp = XVECEXP(pat, 0, idx);
+ if (GET_CODE(subexp) == CLOBBER)
+ {
+ if (XEXP (subexp, 0) == *DF_REF_REAL_LOC (use))
+ record_use (inv->def, &XEXP (subexp, 0), DF_REF_INSN (use));
+ }
+ }
+ }
+}
+
static void
record_uses (rtx insn)
{
@@ -810,7 +830,10 @@
{
inv = invariant_for_use (use);
if (inv)
- record_use (inv->def, DF_REF_LOC (use), DF_REF_INSN (use));
+ {
+ record_use (inv->def, DF_REF_LOC (use), DF_REF_INSN (use));
+ record_clobber_uses_workaround(insn, inv, use);
+ }
}
}

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

JavaScript is required for this form.





No, thanks