patches/binutils/2.15/230-gccpr15247-fix.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Sep 04 17:27:16 2009 +0200 (2009-09-04)
changeset 1512 439a6b292917
parent 402 197e1b49586e
permissions -rw-r--r--
TODO: update

Add TODO list for m4, autoconf, automake and libtool.
Building our own versions would remove burden from the users
who have older versions on their distributions, and are not
ready/able/allowed to upgrade.
yann@402
     1
See
yann@402
     2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15247
yann@402
     3
yann@402
     4
Fixes spurious error
yann@402
     5
/tmp/ccvNi4ou.s: Assembler messages:
yann@402
     6
/tmp/ccvNi4ou.s:2310: Error: Illegal operands: There are only 32 single precision f registers; [0-31]
yann@402
     7
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
yann@402
     8
yann@402
     9
when compiling glibc's dosincos.c with gcc-3.4.0
yann@402
    10
yann@402
    11
===================================================================
yann@402
    12
RCS file: /cvs/src/src/opcodes/sparc-opc.c,v
yann@402
    13
retrieving revision 1.9
yann@402
    14
retrieving revision 1.10
yann@402
    15
diff -u -r1.9 -r1.10
yann@402
    16
--- src/opcodes/sparc-opc.c	2004/01/18 23:46:32	1.9
yann@402
    17
+++ src/opcodes/sparc-opc.c	2004/04/20 10:23:51	1.10
yann@402
    18
@@ -1273,110 +1273,72 @@
yann@402
    19
 #define FM_DF 2		/* v9 */
yann@402
    20
 #define FM_QF 3		/* v9 */
yann@402
    21
 
yann@402
    22
-#define fmovicc(opcode, fpsize, cond, flags) /* v9 */ \
yann@402
    23
-{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z,f,g", flags, v9 }, \
yann@402
    24
-{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z,f,g", flags, v9 }
yann@402
    25
-
yann@402
    26
-#define fmovfcc(opcode, fpsize, fcond, flags) /* v9 */ \
yann@402
    27
-{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags, v9 }, \
yann@402
    28
-{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags, v9 }, \
yann@402
    29
-{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags, v9 }, \
yann@402
    30
-{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags, v9 }
yann@402
    31
+#define fmoviccx(opcode, fpsize, args, cond, flags) /* v9 */ \
yann@402
    32
+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z," args, flags, v9 }, \
yann@402
    33
+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z," args, flags, v9 }
yann@402
    34
+
yann@402
    35
+#define fmovfccx(opcode, fpsize, args, fcond, flags) /* v9 */ \
yann@402
    36
+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags, v9 }, \
yann@402
    37
+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags, v9 }, \
yann@402
    38
+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags, v9 }, \
yann@402
    39
+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags, v9 }
yann@402
    40
 
yann@402
    41
 /* FIXME: use fmovicc/fmovfcc? */ /* v9 */
yann@402
    42
-#define fmovcc(opcode, fpsize, cond, fcond, flags) /* v9 */ \
yann@402
    43
-{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z,f,g", flags | F_FLOAT, v9 }, \
yann@402
    44
-{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags | F_FLOAT, v9 }, \
yann@402
    45
-{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z,f,g", flags | F_FLOAT, v9 }, \
yann@402
    46
-{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags | F_FLOAT, v9 }, \
yann@402
    47
-{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags | F_FLOAT, v9 }, \
yann@402
    48
-{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags | F_FLOAT, v9 }
yann@402
    49
-
yann@402
    50
-/* v9 */ fmovcc  ("fmovda",	FM_DF, CONDA, FCONDA, 0),
yann@402
    51
-/* v9 */ fmovcc  ("fmovqa",	FM_QF, CONDA, FCONDA, 0),
yann@402
    52
-/* v9 */ fmovcc  ("fmovsa",	FM_SF, CONDA, FCONDA, 0),
yann@402
    53
-/* v9 */ fmovicc ("fmovdcc",	FM_DF, CONDCC, 0),
yann@402
    54
-/* v9 */ fmovicc ("fmovqcc",	FM_QF, CONDCC, 0),
yann@402
    55
-/* v9 */ fmovicc ("fmovscc",	FM_SF, CONDCC, 0),
yann@402
    56
-/* v9 */ fmovicc ("fmovdcs",	FM_DF, CONDCS, 0),
yann@402
    57
-/* v9 */ fmovicc ("fmovqcs",	FM_QF, CONDCS, 0),
yann@402
    58
-/* v9 */ fmovicc ("fmovscs",	FM_SF, CONDCS, 0),
yann@402
    59
-/* v9 */ fmovcc  ("fmovde",	FM_DF, CONDE, FCONDE, 0),
yann@402
    60
-/* v9 */ fmovcc  ("fmovqe",	FM_QF, CONDE, FCONDE, 0),
yann@402
    61
-/* v9 */ fmovcc  ("fmovse",	FM_SF, CONDE, FCONDE, 0),
yann@402
    62
-/* v9 */ fmovcc  ("fmovdg",	FM_DF, CONDG, FCONDG, 0),
yann@402
    63
-/* v9 */ fmovcc  ("fmovqg",	FM_QF, CONDG, FCONDG, 0),
yann@402
    64
-/* v9 */ fmovcc  ("fmovsg",	FM_SF, CONDG, FCONDG, 0),
yann@402
    65
-/* v9 */ fmovcc  ("fmovdge",	FM_DF, CONDGE, FCONDGE, 0),
yann@402
    66
-/* v9 */ fmovcc  ("fmovqge",	FM_QF, CONDGE, FCONDGE, 0),
yann@402
    67
-/* v9 */ fmovcc  ("fmovsge",	FM_SF, CONDGE, FCONDGE, 0),
yann@402
    68
-/* v9 */ fmovicc ("fmovdgeu",	FM_DF, CONDGEU, F_ALIAS),
yann@402
    69
-/* v9 */ fmovicc ("fmovqgeu",	FM_QF, CONDGEU, F_ALIAS),
yann@402
    70
-/* v9 */ fmovicc ("fmovsgeu",	FM_SF, CONDGEU, F_ALIAS),
yann@402
    71
-/* v9 */ fmovicc ("fmovdgu",	FM_DF, CONDGU, 0),
yann@402
    72
-/* v9 */ fmovicc ("fmovqgu",	FM_QF, CONDGU, 0),
yann@402
    73
-/* v9 */ fmovicc ("fmovsgu",	FM_SF, CONDGU, 0),
yann@402
    74
-/* v9 */ fmovcc  ("fmovdl",	FM_DF, CONDL, FCONDL, 0),
yann@402
    75
-/* v9 */ fmovcc  ("fmovql",	FM_QF, CONDL, FCONDL, 0),
yann@402
    76
-/* v9 */ fmovcc  ("fmovsl",	FM_SF, CONDL, FCONDL, 0),
yann@402
    77
-/* v9 */ fmovcc  ("fmovdle",	FM_DF, CONDLE, FCONDLE, 0),
yann@402
    78
-/* v9 */ fmovcc  ("fmovqle",	FM_QF, CONDLE, FCONDLE, 0),
yann@402
    79
-/* v9 */ fmovcc  ("fmovsle",	FM_SF, CONDLE, FCONDLE, 0),
yann@402
    80
-/* v9 */ fmovicc ("fmovdleu",	FM_DF, CONDLEU, 0),
yann@402
    81
-/* v9 */ fmovicc ("fmovqleu",	FM_QF, CONDLEU, 0),
yann@402
    82
-/* v9 */ fmovicc ("fmovsleu",	FM_SF, CONDLEU, 0),
yann@402
    83
-/* v9 */ fmovfcc ("fmovdlg",	FM_DF, FCONDLG, 0),
yann@402
    84
-/* v9 */ fmovfcc ("fmovqlg",	FM_QF, FCONDLG, 0),
yann@402
    85
-/* v9 */ fmovfcc ("fmovslg",	FM_SF, FCONDLG, 0),
yann@402
    86
-/* v9 */ fmovicc ("fmovdlu",	FM_DF, CONDLU, F_ALIAS),
yann@402
    87
-/* v9 */ fmovicc ("fmovqlu",	FM_QF, CONDLU, F_ALIAS),
yann@402
    88
-/* v9 */ fmovicc ("fmovslu",	FM_SF, CONDLU, F_ALIAS),
yann@402
    89
-/* v9 */ fmovcc  ("fmovdn",	FM_DF, CONDN, FCONDN, 0),
yann@402
    90
-/* v9 */ fmovcc  ("fmovqn",	FM_QF, CONDN, FCONDN, 0),
yann@402
    91
-/* v9 */ fmovcc  ("fmovsn",	FM_SF, CONDN, FCONDN, 0),
yann@402
    92
-/* v9 */ fmovcc  ("fmovdne",	FM_DF, CONDNE, FCONDNE, 0),
yann@402
    93
-/* v9 */ fmovcc  ("fmovqne",	FM_QF, CONDNE, FCONDNE, 0),
yann@402
    94
-/* v9 */ fmovcc  ("fmovsne",	FM_SF, CONDNE, FCONDNE, 0),
yann@402
    95
-/* v9 */ fmovicc ("fmovdneg",	FM_DF, CONDNEG, 0),
yann@402
    96
-/* v9 */ fmovicc ("fmovqneg",	FM_QF, CONDNEG, 0),
yann@402
    97
-/* v9 */ fmovicc ("fmovsneg",	FM_SF, CONDNEG, 0),
yann@402
    98
-/* v9 */ fmovcc  ("fmovdnz",	FM_DF, CONDNZ, FCONDNZ, F_ALIAS),
yann@402
    99
-/* v9 */ fmovcc  ("fmovqnz",	FM_QF, CONDNZ, FCONDNZ, F_ALIAS),
yann@402
   100
-/* v9 */ fmovcc  ("fmovsnz",	FM_SF, CONDNZ, FCONDNZ, F_ALIAS),
yann@402
   101
-/* v9 */ fmovfcc ("fmovdo",	FM_DF, FCONDO, 0),
yann@402
   102
-/* v9 */ fmovfcc ("fmovqo",	FM_QF, FCONDO, 0),
yann@402
   103
-/* v9 */ fmovfcc ("fmovso",	FM_SF, FCONDO, 0),
yann@402
   104
-/* v9 */ fmovicc ("fmovdpos",	FM_DF, CONDPOS, 0),
yann@402
   105
-/* v9 */ fmovicc ("fmovqpos",	FM_QF, CONDPOS, 0),
yann@402
   106
-/* v9 */ fmovicc ("fmovspos",	FM_SF, CONDPOS, 0),
yann@402
   107
-/* v9 */ fmovfcc ("fmovdu",	FM_DF, FCONDU, 0),
yann@402
   108
-/* v9 */ fmovfcc ("fmovqu",	FM_QF, FCONDU, 0),
yann@402
   109
-/* v9 */ fmovfcc ("fmovsu",	FM_SF, FCONDU, 0),
yann@402
   110
-/* v9 */ fmovfcc ("fmovdue",	FM_DF, FCONDUE, 0),
yann@402
   111
-/* v9 */ fmovfcc ("fmovque",	FM_QF, FCONDUE, 0),
yann@402
   112
-/* v9 */ fmovfcc ("fmovsue",	FM_SF, FCONDUE, 0),
yann@402
   113
-/* v9 */ fmovfcc ("fmovdug",	FM_DF, FCONDUG, 0),
yann@402
   114
-/* v9 */ fmovfcc ("fmovqug",	FM_QF, FCONDUG, 0),
yann@402
   115
-/* v9 */ fmovfcc ("fmovsug",	FM_SF, FCONDUG, 0),
yann@402
   116
-/* v9 */ fmovfcc ("fmovduge",	FM_DF, FCONDUGE, 0),
yann@402
   117
-/* v9 */ fmovfcc ("fmovquge",	FM_QF, FCONDUGE, 0),
yann@402
   118
-/* v9 */ fmovfcc ("fmovsuge",	FM_SF, FCONDUGE, 0),
yann@402
   119
-/* v9 */ fmovfcc ("fmovdul",	FM_DF, FCONDUL, 0),
yann@402
   120
-/* v9 */ fmovfcc ("fmovqul",	FM_QF, FCONDUL, 0),
yann@402
   121
-/* v9 */ fmovfcc ("fmovsul",	FM_SF, FCONDUL, 0),
yann@402
   122
-/* v9 */ fmovfcc ("fmovdule",	FM_DF, FCONDULE, 0),
yann@402
   123
-/* v9 */ fmovfcc ("fmovqule",	FM_QF, FCONDULE, 0),
yann@402
   124
-/* v9 */ fmovfcc ("fmovsule",	FM_SF, FCONDULE, 0),
yann@402
   125
-/* v9 */ fmovicc ("fmovdvc",	FM_DF, CONDVC, 0),
yann@402
   126
-/* v9 */ fmovicc ("fmovqvc",	FM_QF, CONDVC, 0),
yann@402
   127
-/* v9 */ fmovicc ("fmovsvc",	FM_SF, CONDVC, 0),
yann@402
   128
-/* v9 */ fmovicc ("fmovdvs",	FM_DF, CONDVS, 0),
yann@402
   129
-/* v9 */ fmovicc ("fmovqvs",	FM_QF, CONDVS, 0),
yann@402
   130
-/* v9 */ fmovicc ("fmovsvs",	FM_SF, CONDVS, 0),
yann@402
   131
-/* v9 */ fmovcc  ("fmovdz",	FM_DF, CONDZ, FCONDZ, F_ALIAS),
yann@402
   132
-/* v9 */ fmovcc  ("fmovqz",	FM_QF, CONDZ, FCONDZ, F_ALIAS),
yann@402
   133
-/* v9 */ fmovcc  ("fmovsz",	FM_SF, CONDZ, FCONDZ, F_ALIAS),
yann@402
   134
-
yann@402
   135
+#define fmovccx(opcode, fpsize, args, cond, fcond, flags) /* v9 */ \
yann@402
   136
+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z," args, flags | F_FLOAT, v9 }, \
yann@402
   137
+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags | F_FLOAT, v9 }, \
yann@402
   138
+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z," args, flags | F_FLOAT, v9 }, \
yann@402
   139
+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags | F_FLOAT, v9 }, \
yann@402
   140
+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags | F_FLOAT, v9 }, \
yann@402
   141
+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags | F_FLOAT, v9 }
yann@402
   142
+
yann@402
   143
+#define fmovicc(suffix, cond, flags) /* v9 */ \
yann@402
   144
+fmoviccx("fmovd" suffix, FM_DF, "B,H", cond, flags),		\
yann@402
   145
+fmoviccx("fmovq" suffix, FM_QF, "R,J", cond, flags),		\
yann@402
   146
+fmoviccx("fmovs" suffix, FM_SF, "f,g", cond, flags)
yann@402
   147
+
yann@402
   148
+#define fmovfcc(suffix, fcond, flags) /* v9 */ \
yann@402
   149
+fmovfccx("fmovd" suffix, FM_DF, "B,H", fcond, flags),		\
yann@402
   150
+fmovfccx("fmovq" suffix, FM_QF, "R,J", fcond, flags),		\
yann@402
   151
+fmovfccx("fmovs" suffix, FM_SF, "f,g", fcond, flags)
yann@402
   152
+
yann@402
   153
+#define fmovcc(suffix, cond, fcond, flags) /* v9 */ \
yann@402
   154
+fmovccx("fmovd" suffix, FM_DF, "B,H", cond, fcond, flags),	\
yann@402
   155
+fmovccx("fmovq" suffix, FM_QF, "R,J", cond, fcond, flags),	\
yann@402
   156
+fmovccx("fmovs" suffix, FM_SF, "f,g", cond, fcond, flags)
yann@402
   157
+
yann@402
   158
+/* v9 */ fmovcc  ("a", CONDA, FCONDA, 0),
yann@402
   159
+/* v9 */ fmovicc ("cc", CONDCC, 0),
yann@402
   160
+/* v9 */ fmovicc ("cs", CONDCS, 0),
yann@402
   161
+/* v9 */ fmovcc  ("e", CONDE, FCONDE, 0),
yann@402
   162
+/* v9 */ fmovcc  ("g", CONDG, FCONDG, 0),
yann@402
   163
+/* v9 */ fmovcc  ("ge", CONDGE, FCONDGE, 0),
yann@402
   164
+/* v9 */ fmovicc ("geu", CONDGEU, F_ALIAS),
yann@402
   165
+/* v9 */ fmovicc ("gu", CONDGU, 0),
yann@402
   166
+/* v9 */ fmovcc  ("l", CONDL, FCONDL, 0),
yann@402
   167
+/* v9 */ fmovcc  ("le", CONDLE, FCONDLE, 0),
yann@402
   168
+/* v9 */ fmovicc ("leu", CONDLEU, 0),
yann@402
   169
+/* v9 */ fmovfcc ("lg", FCONDLG, 0),
yann@402
   170
+/* v9 */ fmovicc ("lu", CONDLU, F_ALIAS),
yann@402
   171
+/* v9 */ fmovcc  ("n", CONDN, FCONDN, 0),
yann@402
   172
+/* v9 */ fmovcc  ("ne", CONDNE, FCONDNE, 0),
yann@402
   173
+/* v9 */ fmovicc ("neg", CONDNEG, 0),
yann@402
   174
+/* v9 */ fmovcc  ("nz", CONDNZ, FCONDNZ, F_ALIAS),
yann@402
   175
+/* v9 */ fmovfcc ("o", FCONDO, 0),
yann@402
   176
+/* v9 */ fmovicc ("pos", CONDPOS, 0),
yann@402
   177
+/* v9 */ fmovfcc ("u", FCONDU, 0),
yann@402
   178
+/* v9 */ fmovfcc ("ue", FCONDUE, 0),
yann@402
   179
+/* v9 */ fmovfcc ("ug", FCONDUG, 0),
yann@402
   180
+/* v9 */ fmovfcc ("uge", FCONDUGE, 0),
yann@402
   181
+/* v9 */ fmovfcc ("ul", FCONDUL, 0),
yann@402
   182
+/* v9 */ fmovfcc ("ule", FCONDULE, 0),
yann@402
   183
+/* v9 */ fmovicc ("vc", CONDVC, 0),
yann@402
   184
+/* v9 */ fmovicc ("vs", CONDVS, 0),
yann@402
   185
+/* v9 */ fmovcc  ("z", CONDZ, FCONDZ, F_ALIAS),
yann@402
   186
+
yann@402
   187
+#undef fmoviccx /* v9 */
yann@402
   188
+#undef fmovfccx /* v9 */
yann@402
   189
+#undef fmovccx /* v9 */
yann@402
   190
 #undef fmovicc /* v9 */
yann@402
   191
 #undef fmovfcc /* v9 */
yann@402
   192
 #undef fmovcc /* v9 */