patches/binutils/2.15/780-gccpr15247-fix.patch
changeset 747 d3e603e7c17c
parent 746 b150d6f590fc
child 748 61cd4eb6034d
     1.1 --- a/patches/binutils/2.15/780-gccpr15247-fix.patch	Mon Jul 28 21:08:01 2008 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,192 +0,0 @@
     1.4 -See
     1.5 -http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15247
     1.6 -
     1.7 -Fixes spurious error
     1.8 -/tmp/ccvNi4ou.s: Assembler messages:
     1.9 -/tmp/ccvNi4ou.s:2310: Error: Illegal operands: There are only 32 single precision f registers; [0-31]
    1.10 -make[2]: *** [/home/dank/wk/crosstool-0.28-rc10/build/sparc64-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/math/dosincos.o] Error 1
    1.11 -
    1.12 -when compiling glibc's dosincos.c with gcc-3.4.0
    1.13 -
    1.14 -===================================================================
    1.15 -RCS file: /cvs/src/src/opcodes/sparc-opc.c,v
    1.16 -retrieving revision 1.9
    1.17 -retrieving revision 1.10
    1.18 -diff -u -r1.9 -r1.10
    1.19 ---- src/opcodes/sparc-opc.c	2004/01/18 23:46:32	1.9
    1.20 -+++ src/opcodes/sparc-opc.c	2004/04/20 10:23:51	1.10
    1.21 -@@ -1273,110 +1273,72 @@
    1.22 - #define FM_DF 2		/* v9 */
    1.23 - #define FM_QF 3		/* v9 */
    1.24 - 
    1.25 --#define fmovicc(opcode, fpsize, cond, flags) /* v9 */ \
    1.26 --{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z,f,g", flags, v9 }, \
    1.27 --{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z,f,g", flags, v9 }
    1.28 --
    1.29 --#define fmovfcc(opcode, fpsize, fcond, flags) /* v9 */ \
    1.30 --{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags, v9 }, \
    1.31 --{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags, v9 }, \
    1.32 --{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags, v9 }, \
    1.33 --{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags, v9 }
    1.34 -+#define fmoviccx(opcode, fpsize, args, cond, flags) /* v9 */ \
    1.35 -+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z," args, flags, v9 }, \
    1.36 -+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z," args, flags, v9 }
    1.37 -+
    1.38 -+#define fmovfccx(opcode, fpsize, args, fcond, flags) /* v9 */ \
    1.39 -+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags, v9 }, \
    1.40 -+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags, v9 }, \
    1.41 -+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags, v9 }, \
    1.42 -+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags, v9 }
    1.43 - 
    1.44 - /* FIXME: use fmovicc/fmovfcc? */ /* v9 */
    1.45 --#define fmovcc(opcode, fpsize, cond, fcond, flags) /* v9 */ \
    1.46 --{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z,f,g", flags | F_FLOAT, v9 }, \
    1.47 --{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags | F_FLOAT, v9 }, \
    1.48 --{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z,f,g", flags | F_FLOAT, v9 }, \
    1.49 --{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags | F_FLOAT, v9 }, \
    1.50 --{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags | F_FLOAT, v9 }, \
    1.51 --{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags | F_FLOAT, v9 }
    1.52 --
    1.53 --/* v9 */ fmovcc  ("fmovda",	FM_DF, CONDA, FCONDA, 0),
    1.54 --/* v9 */ fmovcc  ("fmovqa",	FM_QF, CONDA, FCONDA, 0),
    1.55 --/* v9 */ fmovcc  ("fmovsa",	FM_SF, CONDA, FCONDA, 0),
    1.56 --/* v9 */ fmovicc ("fmovdcc",	FM_DF, CONDCC, 0),
    1.57 --/* v9 */ fmovicc ("fmovqcc",	FM_QF, CONDCC, 0),
    1.58 --/* v9 */ fmovicc ("fmovscc",	FM_SF, CONDCC, 0),
    1.59 --/* v9 */ fmovicc ("fmovdcs",	FM_DF, CONDCS, 0),
    1.60 --/* v9 */ fmovicc ("fmovqcs",	FM_QF, CONDCS, 0),
    1.61 --/* v9 */ fmovicc ("fmovscs",	FM_SF, CONDCS, 0),
    1.62 --/* v9 */ fmovcc  ("fmovde",	FM_DF, CONDE, FCONDE, 0),
    1.63 --/* v9 */ fmovcc  ("fmovqe",	FM_QF, CONDE, FCONDE, 0),
    1.64 --/* v9 */ fmovcc  ("fmovse",	FM_SF, CONDE, FCONDE, 0),
    1.65 --/* v9 */ fmovcc  ("fmovdg",	FM_DF, CONDG, FCONDG, 0),
    1.66 --/* v9 */ fmovcc  ("fmovqg",	FM_QF, CONDG, FCONDG, 0),
    1.67 --/* v9 */ fmovcc  ("fmovsg",	FM_SF, CONDG, FCONDG, 0),
    1.68 --/* v9 */ fmovcc  ("fmovdge",	FM_DF, CONDGE, FCONDGE, 0),
    1.69 --/* v9 */ fmovcc  ("fmovqge",	FM_QF, CONDGE, FCONDGE, 0),
    1.70 --/* v9 */ fmovcc  ("fmovsge",	FM_SF, CONDGE, FCONDGE, 0),
    1.71 --/* v9 */ fmovicc ("fmovdgeu",	FM_DF, CONDGEU, F_ALIAS),
    1.72 --/* v9 */ fmovicc ("fmovqgeu",	FM_QF, CONDGEU, F_ALIAS),
    1.73 --/* v9 */ fmovicc ("fmovsgeu",	FM_SF, CONDGEU, F_ALIAS),
    1.74 --/* v9 */ fmovicc ("fmovdgu",	FM_DF, CONDGU, 0),
    1.75 --/* v9 */ fmovicc ("fmovqgu",	FM_QF, CONDGU, 0),
    1.76 --/* v9 */ fmovicc ("fmovsgu",	FM_SF, CONDGU, 0),
    1.77 --/* v9 */ fmovcc  ("fmovdl",	FM_DF, CONDL, FCONDL, 0),
    1.78 --/* v9 */ fmovcc  ("fmovql",	FM_QF, CONDL, FCONDL, 0),
    1.79 --/* v9 */ fmovcc  ("fmovsl",	FM_SF, CONDL, FCONDL, 0),
    1.80 --/* v9 */ fmovcc  ("fmovdle",	FM_DF, CONDLE, FCONDLE, 0),
    1.81 --/* v9 */ fmovcc  ("fmovqle",	FM_QF, CONDLE, FCONDLE, 0),
    1.82 --/* v9 */ fmovcc  ("fmovsle",	FM_SF, CONDLE, FCONDLE, 0),
    1.83 --/* v9 */ fmovicc ("fmovdleu",	FM_DF, CONDLEU, 0),
    1.84 --/* v9 */ fmovicc ("fmovqleu",	FM_QF, CONDLEU, 0),
    1.85 --/* v9 */ fmovicc ("fmovsleu",	FM_SF, CONDLEU, 0),
    1.86 --/* v9 */ fmovfcc ("fmovdlg",	FM_DF, FCONDLG, 0),
    1.87 --/* v9 */ fmovfcc ("fmovqlg",	FM_QF, FCONDLG, 0),
    1.88 --/* v9 */ fmovfcc ("fmovslg",	FM_SF, FCONDLG, 0),
    1.89 --/* v9 */ fmovicc ("fmovdlu",	FM_DF, CONDLU, F_ALIAS),
    1.90 --/* v9 */ fmovicc ("fmovqlu",	FM_QF, CONDLU, F_ALIAS),
    1.91 --/* v9 */ fmovicc ("fmovslu",	FM_SF, CONDLU, F_ALIAS),
    1.92 --/* v9 */ fmovcc  ("fmovdn",	FM_DF, CONDN, FCONDN, 0),
    1.93 --/* v9 */ fmovcc  ("fmovqn",	FM_QF, CONDN, FCONDN, 0),
    1.94 --/* v9 */ fmovcc  ("fmovsn",	FM_SF, CONDN, FCONDN, 0),
    1.95 --/* v9 */ fmovcc  ("fmovdne",	FM_DF, CONDNE, FCONDNE, 0),
    1.96 --/* v9 */ fmovcc  ("fmovqne",	FM_QF, CONDNE, FCONDNE, 0),
    1.97 --/* v9 */ fmovcc  ("fmovsne",	FM_SF, CONDNE, FCONDNE, 0),
    1.98 --/* v9 */ fmovicc ("fmovdneg",	FM_DF, CONDNEG, 0),
    1.99 --/* v9 */ fmovicc ("fmovqneg",	FM_QF, CONDNEG, 0),
   1.100 --/* v9 */ fmovicc ("fmovsneg",	FM_SF, CONDNEG, 0),
   1.101 --/* v9 */ fmovcc  ("fmovdnz",	FM_DF, CONDNZ, FCONDNZ, F_ALIAS),
   1.102 --/* v9 */ fmovcc  ("fmovqnz",	FM_QF, CONDNZ, FCONDNZ, F_ALIAS),
   1.103 --/* v9 */ fmovcc  ("fmovsnz",	FM_SF, CONDNZ, FCONDNZ, F_ALIAS),
   1.104 --/* v9 */ fmovfcc ("fmovdo",	FM_DF, FCONDO, 0),
   1.105 --/* v9 */ fmovfcc ("fmovqo",	FM_QF, FCONDO, 0),
   1.106 --/* v9 */ fmovfcc ("fmovso",	FM_SF, FCONDO, 0),
   1.107 --/* v9 */ fmovicc ("fmovdpos",	FM_DF, CONDPOS, 0),
   1.108 --/* v9 */ fmovicc ("fmovqpos",	FM_QF, CONDPOS, 0),
   1.109 --/* v9 */ fmovicc ("fmovspos",	FM_SF, CONDPOS, 0),
   1.110 --/* v9 */ fmovfcc ("fmovdu",	FM_DF, FCONDU, 0),
   1.111 --/* v9 */ fmovfcc ("fmovqu",	FM_QF, FCONDU, 0),
   1.112 --/* v9 */ fmovfcc ("fmovsu",	FM_SF, FCONDU, 0),
   1.113 --/* v9 */ fmovfcc ("fmovdue",	FM_DF, FCONDUE, 0),
   1.114 --/* v9 */ fmovfcc ("fmovque",	FM_QF, FCONDUE, 0),
   1.115 --/* v9 */ fmovfcc ("fmovsue",	FM_SF, FCONDUE, 0),
   1.116 --/* v9 */ fmovfcc ("fmovdug",	FM_DF, FCONDUG, 0),
   1.117 --/* v9 */ fmovfcc ("fmovqug",	FM_QF, FCONDUG, 0),
   1.118 --/* v9 */ fmovfcc ("fmovsug",	FM_SF, FCONDUG, 0),
   1.119 --/* v9 */ fmovfcc ("fmovduge",	FM_DF, FCONDUGE, 0),
   1.120 --/* v9 */ fmovfcc ("fmovquge",	FM_QF, FCONDUGE, 0),
   1.121 --/* v9 */ fmovfcc ("fmovsuge",	FM_SF, FCONDUGE, 0),
   1.122 --/* v9 */ fmovfcc ("fmovdul",	FM_DF, FCONDUL, 0),
   1.123 --/* v9 */ fmovfcc ("fmovqul",	FM_QF, FCONDUL, 0),
   1.124 --/* v9 */ fmovfcc ("fmovsul",	FM_SF, FCONDUL, 0),
   1.125 --/* v9 */ fmovfcc ("fmovdule",	FM_DF, FCONDULE, 0),
   1.126 --/* v9 */ fmovfcc ("fmovqule",	FM_QF, FCONDULE, 0),
   1.127 --/* v9 */ fmovfcc ("fmovsule",	FM_SF, FCONDULE, 0),
   1.128 --/* v9 */ fmovicc ("fmovdvc",	FM_DF, CONDVC, 0),
   1.129 --/* v9 */ fmovicc ("fmovqvc",	FM_QF, CONDVC, 0),
   1.130 --/* v9 */ fmovicc ("fmovsvc",	FM_SF, CONDVC, 0),
   1.131 --/* v9 */ fmovicc ("fmovdvs",	FM_DF, CONDVS, 0),
   1.132 --/* v9 */ fmovicc ("fmovqvs",	FM_QF, CONDVS, 0),
   1.133 --/* v9 */ fmovicc ("fmovsvs",	FM_SF, CONDVS, 0),
   1.134 --/* v9 */ fmovcc  ("fmovdz",	FM_DF, CONDZ, FCONDZ, F_ALIAS),
   1.135 --/* v9 */ fmovcc  ("fmovqz",	FM_QF, CONDZ, FCONDZ, F_ALIAS),
   1.136 --/* v9 */ fmovcc  ("fmovsz",	FM_SF, CONDZ, FCONDZ, F_ALIAS),
   1.137 --
   1.138 -+#define fmovccx(opcode, fpsize, args, cond, fcond, flags) /* v9 */ \
   1.139 -+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z," args, flags | F_FLOAT, v9 }, \
   1.140 -+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags | F_FLOAT, v9 }, \
   1.141 -+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z," args, flags | F_FLOAT, v9 }, \
   1.142 -+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags | F_FLOAT, v9 }, \
   1.143 -+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags | F_FLOAT, v9 }, \
   1.144 -+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags | F_FLOAT, v9 }
   1.145 -+
   1.146 -+#define fmovicc(suffix, cond, flags) /* v9 */ \
   1.147 -+fmoviccx("fmovd" suffix, FM_DF, "B,H", cond, flags),		\
   1.148 -+fmoviccx("fmovq" suffix, FM_QF, "R,J", cond, flags),		\
   1.149 -+fmoviccx("fmovs" suffix, FM_SF, "f,g", cond, flags)
   1.150 -+
   1.151 -+#define fmovfcc(suffix, fcond, flags) /* v9 */ \
   1.152 -+fmovfccx("fmovd" suffix, FM_DF, "B,H", fcond, flags),		\
   1.153 -+fmovfccx("fmovq" suffix, FM_QF, "R,J", fcond, flags),		\
   1.154 -+fmovfccx("fmovs" suffix, FM_SF, "f,g", fcond, flags)
   1.155 -+
   1.156 -+#define fmovcc(suffix, cond, fcond, flags) /* v9 */ \
   1.157 -+fmovccx("fmovd" suffix, FM_DF, "B,H", cond, fcond, flags),	\
   1.158 -+fmovccx("fmovq" suffix, FM_QF, "R,J", cond, fcond, flags),	\
   1.159 -+fmovccx("fmovs" suffix, FM_SF, "f,g", cond, fcond, flags)
   1.160 -+
   1.161 -+/* v9 */ fmovcc  ("a", CONDA, FCONDA, 0),
   1.162 -+/* v9 */ fmovicc ("cc", CONDCC, 0),
   1.163 -+/* v9 */ fmovicc ("cs", CONDCS, 0),
   1.164 -+/* v9 */ fmovcc  ("e", CONDE, FCONDE, 0),
   1.165 -+/* v9 */ fmovcc  ("g", CONDG, FCONDG, 0),
   1.166 -+/* v9 */ fmovcc  ("ge", CONDGE, FCONDGE, 0),
   1.167 -+/* v9 */ fmovicc ("geu", CONDGEU, F_ALIAS),
   1.168 -+/* v9 */ fmovicc ("gu", CONDGU, 0),
   1.169 -+/* v9 */ fmovcc  ("l", CONDL, FCONDL, 0),
   1.170 -+/* v9 */ fmovcc  ("le", CONDLE, FCONDLE, 0),
   1.171 -+/* v9 */ fmovicc ("leu", CONDLEU, 0),
   1.172 -+/* v9 */ fmovfcc ("lg", FCONDLG, 0),
   1.173 -+/* v9 */ fmovicc ("lu", CONDLU, F_ALIAS),
   1.174 -+/* v9 */ fmovcc  ("n", CONDN, FCONDN, 0),
   1.175 -+/* v9 */ fmovcc  ("ne", CONDNE, FCONDNE, 0),
   1.176 -+/* v9 */ fmovicc ("neg", CONDNEG, 0),
   1.177 -+/* v9 */ fmovcc  ("nz", CONDNZ, FCONDNZ, F_ALIAS),
   1.178 -+/* v9 */ fmovfcc ("o", FCONDO, 0),
   1.179 -+/* v9 */ fmovicc ("pos", CONDPOS, 0),
   1.180 -+/* v9 */ fmovfcc ("u", FCONDU, 0),
   1.181 -+/* v9 */ fmovfcc ("ue", FCONDUE, 0),
   1.182 -+/* v9 */ fmovfcc ("ug", FCONDUG, 0),
   1.183 -+/* v9 */ fmovfcc ("uge", FCONDUGE, 0),
   1.184 -+/* v9 */ fmovfcc ("ul", FCONDUL, 0),
   1.185 -+/* v9 */ fmovfcc ("ule", FCONDULE, 0),
   1.186 -+/* v9 */ fmovicc ("vc", CONDVC, 0),
   1.187 -+/* v9 */ fmovicc ("vs", CONDVS, 0),
   1.188 -+/* v9 */ fmovcc  ("z", CONDZ, FCONDZ, F_ALIAS),
   1.189 -+
   1.190 -+#undef fmoviccx /* v9 */
   1.191 -+#undef fmovfccx /* v9 */
   1.192 -+#undef fmovccx /* v9 */
   1.193 - #undef fmovicc /* v9 */
   1.194 - #undef fmovfcc /* v9 */
   1.195 - #undef fmovcc /* v9 */