- Timestamp:
- Mar 1, 2009, 7:28:34 PM (16 years ago)
- Branches:
- clfs-1.2, clfs-2.1, clfs-3.0.0-systemd, clfs-3.0.0-sysvinit, master, systemd, sysvinit
- Children:
- cc361c5
- Parents:
- 4635005
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
patches/gcc-4.3.3-branch_update-3.patch
r4635005 r7d2671a 1 1 Submitted By: Jim Gifford (jim at cross-lfs dot org) 2 Date: 0 2-22-20092 Date: 03-01-2009 3 3 Initial Package Version: 4.3.3 4 4 Origin: Upstream … … 7 7 rechecked periodically. 8 8 9 diff -Naur gcc-4.3.3.orig/gcc/ada/ChangeLog gcc-4.3.3/gcc/ada/ChangeLog 10 --- gcc-4.3.3.orig/gcc/ada/ChangeLog 2009-01-24 02:15:46.000000000 -0800 11 +++ gcc-4.3.3/gcc/ada/ChangeLog 2009-02-28 09:30:26.328421000 -0800 12 @@ -1,3 +1,8 @@ 13 +2009-02-28 Eric Botcazou <ebotcazou@adacore.com> 14 + 15 + * Makefile.in (cygwin/mingw): Revert accidental EH_MECHANISM change 16 + in r130816. 17 + 18 2009-01-24 Release Manager 19 20 * GCC 4.3.3 released. 21 diff -Naur gcc-4.3.3.orig/gcc/ada/Makefile.in gcc-4.3.3/gcc/ada/Makefile.in 22 --- gcc-4.3.3.orig/gcc/ada/Makefile.in 2008-02-13 11:04:53.000000000 -0800 23 +++ gcc-4.3.3/gcc/ada/Makefile.in 2009-02-28 09:30:26.328421000 -0800 24 @@ -1353,7 +1353,6 @@ 25 mlib-tgt-specific.adb<mlib-tgt-mingw.adb \ 26 indepsw.adb<indepsw-mingw.adb 27 28 - EH_MECHANISM=-gcc 29 GMEM_LIB = gmemlib 30 PREFIX_OBJS = $(PREFIX_REAL_OBJS) 31 EXTRA_GNATTOOLS = ../../gnatdll$(exeext) 9 32 diff -Naur gcc-4.3.3.orig/gcc/alias.c gcc-4.3.3/gcc/alias.c 10 33 --- gcc-4.3.3.orig/gcc/alias.c 2008-03-19 03:06:52.000000000 -0700 … … 144 167 diff -Naur gcc-4.3.3.orig/gcc/ChangeLog gcc-4.3.3/gcc/ChangeLog 145 168 --- gcc-4.3.3.orig/gcc/ChangeLog 2009-01-24 02:16:13.000000000 -0800 146 +++ gcc-4.3.3/gcc/ChangeLog 2009-02-21 03:08:24.357177000 -0800 147 @@ -1,3 +1,262 @@ 169 +++ gcc-4.3.3/gcc/ChangeLog 2009-02-28 10:33:27.113860000 -0800 170 @@ -1,3 +1,309 @@ 171 +2009-02-28 Martin Jambor <mjambor@suse.cz> 172 + 173 + Backport from mainline: 174 + 2008-12-02 Martin Jambor <mjambor@suse.cz> 175 + 176 + PR middle-end/37861 177 + * tree-ssa-forwprop.c 178 + (forward_propagate_addr_into_variable_array_index): Check that the 179 + offset is not computed from a MULT_EXPR if element size is one. 180 + 181 +2009-02-28 Uros Bizjak <ubizjak@gmail.com> 182 + 183 + Backport from mainline: 184 + 2009-02-26 Uros Bizjak <ubizjak@gmail.com> 185 + 186 + * config/alpha/alpha.h (alpha_expand_mov): Return false if 187 + force_const_mem returns NULL_RTX. 188 + 189 +2009-02-26 Uros Bizjak <ubizjak@gmail.com> 190 + 191 + Backport from mainline: 192 + 2009-02-02 Jakub Jelinek <jakub@redhat.com> 193 + 194 + PR inline-asm/39058 195 + * recog.h (asm_operand_ok): Add constraints argument. 196 + * recog.c (asm_operand_ok): Likewise. If it is set, for digits 197 + recurse on matching constraint. 198 + (check_asm_operands): Pass constraints as 3rd argument to 199 + asm_operand_ok. Don't look up matching constraint here. 200 + * stmt.c (expand_asm_operands): Pass NULL as 3rd argument 201 + to asm_operand_ok. 202 + 203 +2009-02-25 Janis Johnson <janis187@us.ibm.com> 204 + 205 + Backport from mainline: 206 + 2008-10-29 Joseph Myers <joseph@codesourcery.com> 207 + 208 + PR middle-end/36578 209 + * convert.c (convert_to_real): Do not optimize conversions of 210 + binary arithmetic operations between binary and decimal 211 + floating-point types. Consider mode of target type in determining 212 + decimal type for arithmetic. Unless 213 + flag_unsafe_math_optimizations, do not optimize binary conversions 214 + where this may change rounding behavior. 215 + * real.c (real_can_shorten_arithmetic): New. 216 + * real.h (real_can_shorten_arithmetic): Declare. 217 + 148 218 +2009-02-21 Uros Bizjak <ubizjak@gmail.com> 149 219 + … … 250 320 + Backport from mainline 251 321 + 2009-02-05 Daniel Berlin <dberlin@dberlin.org> 252 + Richard Guenther <rguenther@suse.de>322 + Richard Guenther <rguenther@suse.de> 253 323 + 254 324 + PR tree-optimization/39100 … … 408 478 409 479 * GCC 4.3.3 released. 410 @@ -5,8 + 264,7 @@480 @@ -5,8 +311,7 @@ 411 481 2009-01-20 Joseph Myers <joseph@codesourcery.com> 412 482 … … 418 488 2009-01-19 Richard Guenther <rguenther@suse.de> 419 489 420 @@ -41,7 + 299,8 @@490 @@ -41,7 +346,8 @@ 421 491 422 492 2009-01-11 Matthias Klose <doko@ubuntu.com> … … 428 498 429 499 * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives. 430 @@ -509,8 + 768,8 @@500 @@ -509,8 +815,8 @@ 431 501 PR tree-optimization/37102 432 502 * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args … … 439 509 440 510 2008-10-08 Simon Martin <simartin@users.sourceforge.net> 441 @@ -986,8 +12 45,10 @@511 @@ -986,8 +1292,10 @@ 442 512 443 513 (MFC_MIN_DMA_LIST_ELEMENTS): New define. … … 454 524 diff -Naur gcc-4.3.3.orig/gcc/config/alpha/alpha.c gcc-4.3.3/gcc/config/alpha/alpha.c 455 525 --- gcc-4.3.3.orig/gcc/config/alpha/alpha.c 2008-09-08 16:16:55.000000000 -0700 456 +++ gcc-4.3.3/gcc/config/alpha/alpha.c 2009-0 1-27 03:39:42.241832000 -0800526 +++ gcc-4.3.3/gcc/config/alpha/alpha.c 2009-02-28 09:22:52.585822000 -0800 457 527 @@ -1,6 +1,7 @@ 458 528 /* Subroutines used for code generation on the DEC Alpha. … … 545 615 546 616 static rtx alpha_emit_set_const (rtx, enum machine_mode, HOST_WIDE_INT, 547 @@ -2452,7 +2457,7 @@ 617 @@ -2118,6 +2123,8 @@ 618 bool 619 alpha_expand_mov (enum machine_mode mode, rtx *operands) 620 { 621 + rtx tmp; 622 + 623 /* If the output is not a register, the input must be. */ 624 if (GET_CODE (operands[0]) == MEM 625 && ! reg_or_0_operand (operands[1], mode)) 626 @@ -2126,8 +2133,6 @@ 627 /* Allow legitimize_address to perform some simplifications. */ 628 if (mode == Pmode && symbolic_operand (operands[1], mode)) 629 { 630 - rtx tmp; 631 - 632 tmp = alpha_legitimize_address (operands[1], operands[0], mode); 633 if (tmp) 634 { 635 @@ -2152,14 +2157,18 @@ 636 } 637 638 /* Otherwise we've nothing left but to drop the thing to memory. */ 639 - operands[1] = force_const_mem (mode, operands[1]); 640 + tmp = force_const_mem (mode, operands[1]); 641 + 642 + if (tmp == NULL_RTX) 643 + return false; 644 + 645 if (reload_in_progress) 646 { 647 - emit_move_insn (operands[0], XEXP (operands[1], 0)); 648 - operands[1] = replace_equiv_address (operands[1], operands[0]); 649 + emit_move_insn (operands[0], XEXP (tmp, 0)); 650 + operands[1] = replace_equiv_address (tmp, operands[0]); 651 } 652 else 653 - operands[1] = validize_mem (operands[1]); 654 + operands[1] = validize_mem (tmp); 655 return false; 656 } 657 658 @@ -2452,7 +2461,7 @@ 548 659 if (alpha_compare.fp_p) 549 660 { … … 554 665 /* When we are not as concerned about non-finite values, and we 555 666 are comparing against zero, we can branch directly. */ 556 @@ -6794,7 +6 799,7 @@667 @@ -6794,7 +6803,7 @@ 557 668 tree op0 = fold_convert (vtype, op[0]); 558 669 tree op1 = fold_convert (vtype, op[1]); … … 563 674 564 675 static tree 565 @@ -8242,6 +82 47,11 @@676 @@ -8242,6 +8251,11 @@ 566 677 if (GET_CODE (insn) == CALL_INSN) 567 678 output_asm_insn (get_insn_template (CODE_FOR_nop, NULL), NULL); … … 575 686 alpha_write_linkage (file, fnname, decl); 576 687 #endif 577 @@ -8281,6 +829 1,8 @@688 @@ -8281,6 +8295,8 @@ 578 689 HOST_WIDE_INT hi, lo; 579 690 rtx this, insn, funexp; … … 584 695 emit_insn (gen_prologue_ldgp ()); 585 696 emit_note (NOTE_INSN_PROLOGUE_END); 586 @@ -9268,12 +928 0,68 @@697 @@ -9268,12 +9284,68 @@ 587 698 i = next; 588 699 } … … 1153 1264 get us switched to various sections of interest. These are used 1154 1265 in all places where we simply want to switch to a section, and 1266 diff -Naur gcc-4.3.3.orig/gcc/convert.c gcc-4.3.3/gcc/convert.c 1267 --- gcc-4.3.3.orig/gcc/convert.c 2007-09-06 18:24:09.000000000 -0700 1268 +++ gcc-4.3.3/gcc/convert.c 2009-02-25 14:08:55.493777000 -0800 1269 @@ -261,18 +261,22 @@ 1270 tree arg1 = strip_float_extensions (TREE_OPERAND (expr, 1)); 1271 1272 if (FLOAT_TYPE_P (TREE_TYPE (arg0)) 1273 - && FLOAT_TYPE_P (TREE_TYPE (arg1))) 1274 + && FLOAT_TYPE_P (TREE_TYPE (arg1)) 1275 + && DECIMAL_FLOAT_TYPE_P (itype) == DECIMAL_FLOAT_TYPE_P (type)) 1276 { 1277 tree newtype = type; 1278 1279 if (TYPE_MODE (TREE_TYPE (arg0)) == SDmode 1280 - || TYPE_MODE (TREE_TYPE (arg1)) == SDmode) 1281 + || TYPE_MODE (TREE_TYPE (arg1)) == SDmode 1282 + || TYPE_MODE (type) == SDmode) 1283 newtype = dfloat32_type_node; 1284 if (TYPE_MODE (TREE_TYPE (arg0)) == DDmode 1285 - || TYPE_MODE (TREE_TYPE (arg1)) == DDmode) 1286 + || TYPE_MODE (TREE_TYPE (arg1)) == DDmode 1287 + || TYPE_MODE (type) == DDmode) 1288 newtype = dfloat64_type_node; 1289 if (TYPE_MODE (TREE_TYPE (arg0)) == TDmode 1290 - || TYPE_MODE (TREE_TYPE (arg1)) == TDmode) 1291 + || TYPE_MODE (TREE_TYPE (arg1)) == TDmode 1292 + || TYPE_MODE (type) == TDmode) 1293 newtype = dfloat128_type_node; 1294 if (newtype == dfloat32_type_node 1295 || newtype == dfloat64_type_node 1296 @@ -290,7 +294,32 @@ 1297 newtype = TREE_TYPE (arg0); 1298 if (TYPE_PRECISION (TREE_TYPE (arg1)) > TYPE_PRECISION (newtype)) 1299 newtype = TREE_TYPE (arg1); 1300 - if (TYPE_PRECISION (newtype) < TYPE_PRECISION (itype)) 1301 + /* Sometimes this transformation is safe (cannot 1302 + change results through affecting double rounding 1303 + cases) and sometimes it is not. If NEWTYPE is 1304 + wider than TYPE, e.g. (float)((long double)double 1305 + + (long double)double) converted to 1306 + (float)(double + double), the transformation is 1307 + unsafe regardless of the details of the types 1308 + involved; double rounding can arise if the result 1309 + of NEWTYPE arithmetic is a NEWTYPE value half way 1310 + between two representable TYPE values but the 1311 + exact value is sufficiently different (in the 1312 + right direction) for this difference to be 1313 + visible in ITYPE arithmetic. If NEWTYPE is the 1314 + same as TYPE, however, the transformation may be 1315 + safe depending on the types involved: it is safe 1316 + if the ITYPE has strictly more than twice as many 1317 + mantissa bits as TYPE, can represent infinities 1318 + and NaNs if the TYPE can, and has sufficient 1319 + exponent range for the product or ratio of two 1320 + values representable in the TYPE to be within the 1321 + range of normal values of ITYPE. */ 1322 + if (TYPE_PRECISION (newtype) < TYPE_PRECISION (itype) 1323 + && (flag_unsafe_math_optimizations 1324 + || (TYPE_PRECISION (newtype) == TYPE_PRECISION (type) 1325 + && real_can_shorten_arithmetic (TYPE_MODE (itype), 1326 + TYPE_MODE (type))))) 1327 { 1328 expr = build2 (TREE_CODE (expr), newtype, 1329 fold (convert_to_real (newtype, arg0)), 1155 1330 diff -Naur gcc-4.3.3.orig/gcc/cp/ChangeLog gcc-4.3.3/gcc/cp/ChangeLog 1156 1331 --- gcc-4.3.3.orig/gcc/cp/ChangeLog 2009-01-24 02:15:39.000000000 -0800 … … 1494 1669 diff -Naur gcc-4.3.3.orig/gcc/DATESTAMP gcc-4.3.3/gcc/DATESTAMP 1495 1670 --- gcc-4.3.3.orig/gcc/DATESTAMP 2009-01-23 16:16:35.000000000 -0800 1496 +++ gcc-4.3.3/gcc/DATESTAMP 2009-02-2 2 16:16:27.324527000 -08001671 +++ gcc-4.3.3/gcc/DATESTAMP 2009-02-28 16:16:39.911584000 -0800 1497 1672 @@ -1 +1 @@ 1498 1673 -20090124 1499 +20090 2231674 +20090301 1500 1675 diff -Naur gcc-4.3.3.orig/gcc/doc/invoke.texi gcc-4.3.3/gcc/doc/invoke.texi 1501 1676 --- gcc-4.3.3.orig/gcc/doc/invoke.texi 2008-11-21 08:21:50.000000000 -0800 … … 1843 2018 diff -Naur gcc-4.3.3.orig/gcc/real.c gcc-4.3.3/gcc/real.c 1844 2019 --- gcc-4.3.3.orig/gcc/real.c 2008-10-22 04:33:04.000000000 -0700 1845 +++ gcc-4.3.3/gcc/real.c 2009-02- 09 10:51:31.855521000 -08002020 +++ gcc-4.3.3/gcc/real.c 2009-02-25 14:08:55.493777000 -0800 1846 2021 @@ -905,15 +905,23 @@ 1847 2022 /* Sign of zero doesn't matter for compares. */ … … 1869 2044 case CLASS2 (rvc_normal, rvc_inf): 1870 2045 return (b->sign ? 1 : -1); 2046 @@ -1266,6 +1274,31 @@ 2047 *r = u; 2048 return true; 2049 } 2050 + 2051 +/* Return true if arithmetic on values in IMODE that were promoted 2052 + from values in TMODE is equivalent to direct arithmetic on values 2053 + in TMODE. */ 2054 + 2055 +bool 2056 +real_can_shorten_arithmetic (enum machine_mode imode, enum machine_mode tmode) 2057 +{ 2058 + const struct real_format *tfmt, *ifmt; 2059 + tfmt = REAL_MODE_FORMAT (tmode); 2060 + ifmt = REAL_MODE_FORMAT (imode); 2061 + /* These conditions are conservative rather than trying to catch the 2062 + exact boundary conditions; the main case to allow is IEEE float 2063 + and double. */ 2064 + return (ifmt->b == tfmt->b 2065 + && ifmt->p > 2 * tfmt->p 2066 + && ifmt->emin < 2 * tfmt->emin - tfmt->p - 2 2067 + && ifmt->emin < tfmt->emin - tfmt->emax - tfmt->p - 2 2068 + && ifmt->emax > 2 * tfmt->emax + 2 2069 + && ifmt->emax > tfmt->emax - tfmt->emin + tfmt->p + 2 2070 + && ifmt->round_towards_zero == tfmt->round_towards_zero 2071 + && ifmt->has_nans >= tfmt->has_nans 2072 + && ifmt->has_inf >= tfmt->has_inf 2073 + && ifmt->has_signed_zero >= tfmt->has_signed_zero); 2074 +} 2075 2076 2077 /* Render R as an integer. */ 2078 2079 diff -Naur gcc-4.3.3.orig/gcc/real.h gcc-4.3.3/gcc/real.h 2080 --- gcc-4.3.3.orig/gcc/real.h 2008-08-19 09:37:13.000000000 -0700 2081 +++ gcc-4.3.3/gcc/real.h 2009-02-25 14:08:55.493777000 -0800 2082 @@ -413,6 +413,11 @@ 2083 /* Replace R by 1/R in the given machine mode, if the result is exact. */ 2084 extern bool exact_real_inverse (enum machine_mode, REAL_VALUE_TYPE *); 2085 2086 +/* Return true if arithmetic on values in IMODE that were promoted 2087 + from values in TMODE is equivalent to direct arithmetic on values 2088 + in TMODE. */ 2089 +bool real_can_shorten_arithmetic (enum machine_mode, enum machine_mode); 2090 + 2091 /* In tree.c: wrap up a REAL_VALUE_TYPE in a tree node. */ 2092 extern tree build_real (tree, REAL_VALUE_TYPE); 2093 2094 diff -Naur gcc-4.3.3.orig/gcc/recog.c gcc-4.3.3/gcc/recog.c 2095 --- gcc-4.3.3.orig/gcc/recog.c 2008-06-07 14:13:29.000000000 -0700 2096 +++ gcc-4.3.3/gcc/recog.c 2009-02-25 23:06:48.803473000 -0800 2097 @@ -1,6 +1,6 @@ 2098 /* Subroutines used by or related to instruction recognition. 2099 Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998 2100 - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 2101 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 2102 Free Software Foundation, Inc. 2103 2104 This file is part of GCC. 2105 @@ -147,10 +147,7 @@ 2106 const char *c = constraints[i]; 2107 if (c[0] == '%') 2108 c++; 2109 - if (ISDIGIT ((unsigned char) c[0]) && c[1] == '\0') 2110 - c = constraints[c[0] - '0']; 2111 - 2112 - if (! asm_operand_ok (operands[i], c)) 2113 + if (! asm_operand_ok (operands[i], c, constraints)) 2114 return 0; 2115 } 2116 2117 @@ -1506,7 +1503,7 @@ 2118 Return > 0 if ok, = 0 if bad, < 0 if inconclusive. */ 2119 2120 int 2121 -asm_operand_ok (rtx op, const char *constraint) 2122 +asm_operand_ok (rtx op, const char *constraint, const char **constraints) 2123 { 2124 int result = 0; 2125 2126 @@ -1534,15 +1531,29 @@ 2127 2128 case '0': case '1': case '2': case '3': case '4': 2129 case '5': case '6': case '7': case '8': case '9': 2130 - /* For best results, our caller should have given us the 2131 - proper matching constraint, but we can't actually fail 2132 - the check if they didn't. Indicate that results are 2133 - inconclusive. */ 2134 - do 2135 - constraint++; 2136 - while (ISDIGIT (*constraint)); 2137 - if (! result) 2138 - result = -1; 2139 + /* If caller provided constraints pointer, look up 2140 + the maching constraint. Otherwise, our caller should have 2141 + given us the proper matching constraint, but we can't 2142 + actually fail the check if they didn't. Indicate that 2143 + results are inconclusive. */ 2144 + if (constraints) 2145 + { 2146 + char *end; 2147 + unsigned long match; 2148 + 2149 + match = strtoul (constraint, &end, 10); 2150 + if (!result) 2151 + result = asm_operand_ok (op, constraints[match], NULL); 2152 + constraint = (const char *) end; 2153 + } 2154 + else 2155 + { 2156 + do 2157 + constraint++; 2158 + while (ISDIGIT (*constraint)); 2159 + if (! result) 2160 + result = -1; 2161 + } 2162 continue; 2163 2164 case 'p': 2165 diff -Naur gcc-4.3.3.orig/gcc/recog.h gcc-4.3.3/gcc/recog.h 2166 --- gcc-4.3.3.orig/gcc/recog.h 2007-07-26 01:37:01.000000000 -0700 2167 +++ gcc-4.3.3/gcc/recog.h 2009-02-25 23:06:48.803473000 -0800 2168 @@ -1,6 +1,6 @@ 2169 /* Declarations for interface to insn recognizer and insn-output.c. 2170 Copyright (C) 1987, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2171 - 2005, 2006, 2007 Free Software Foundation, Inc. 2172 + 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. 2173 2174 This file is part of GCC. 2175 2176 @@ -71,7 +71,7 @@ 2177 extern void init_recog (void); 2178 extern void init_recog_no_volatile (void); 2179 extern int check_asm_operands (rtx); 2180 -extern int asm_operand_ok (rtx, const char *); 2181 +extern int asm_operand_ok (rtx, const char *, const char **); 2182 extern bool validate_change (rtx, rtx *, rtx, bool); 2183 extern bool validate_unshare_change (rtx, rtx *, rtx, bool); 2184 extern bool canonicalize_change_group (rtx insn, rtx x); 1871 2185 diff -Naur gcc-4.3.3.orig/gcc/regrename.c gcc-4.3.3/gcc/regrename.c 1872 2186 --- gcc-4.3.3.orig/gcc/regrename.c 2008-11-25 13:26:19.000000000 -0800 … … 1881 2195 *recog_data.operand_loc[i] = old_operands[i]; 1882 2196 if (recog_data.n_dups) 2197 diff -Naur gcc-4.3.3.orig/gcc/stmt.c gcc-4.3.3/gcc/stmt.c 2198 --- gcc-4.3.3.orig/gcc/stmt.c 2008-05-09 11:12:13.000000000 -0700 2199 +++ gcc-4.3.3/gcc/stmt.c 2009-02-25 23:06:48.803473000 -0800 2200 @@ -1,6 +1,6 @@ 2201 /* Expands front end tree to back end RTL for GCC 2202 Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 2203 - 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 2204 + 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 2205 Free Software Foundation, Inc. 2206 2207 This file is part of GCC. 2208 @@ -895,7 +895,7 @@ 2209 else if (MEM_P (op)) 2210 op = validize_mem (op); 2211 2212 - if (asm_operand_ok (op, constraint) <= 0) 2213 + if (asm_operand_ok (op, constraint, NULL) <= 0) 2214 { 2215 if (allows_reg && TYPE_MODE (type) != BLKmode) 2216 op = force_reg (TYPE_MODE (type), op); 1883 2217 diff -Naur gcc-4.3.3.orig/gcc/testsuite/ChangeLog gcc-4.3.3/gcc/testsuite/ChangeLog 1884 2218 --- gcc-4.3.3.orig/gcc/testsuite/ChangeLog 2009-01-24 02:15:24.000000000 -0800 1885 +++ gcc-4.3.3/gcc/testsuite/ChangeLog 2009-02-21 05:04:37.075689000 -0800 1886 @@ -1,3 +1,301 @@ 2219 +++ gcc-4.3.3/gcc/testsuite/ChangeLog 2009-02-25 23:06:48.803473000 -0800 2220 @@ -1,3 +1,327 @@ 2221 +2009-02-26 Uros Bizjak <ubizjak@gmail.com> 2222 + 2223 + Backport from mainline: 2224 + 2009-02-02 Jakub Jelinek <jakub@redhat.com> 2225 + 2226 + PR inline-asm/39058 2227 + * gcc.target/i386/pr39058.c: New test. 2228 + 2229 +2009-02-25 Janis Johnson <janis187@us.ibm.com> 2230 + 2231 + Backport from mainline: 2232 + 2008-10-29 Joseph Myers <joseph@codesourcery.com> 2233 + 2234 + PR middle-end/36578 2235 + * gcc.dg/dfp/convert-bfp-13.c, gcc.dg/dfp/convert-bfp-14.c, 2236 + gcc.dg/dfp/convert-dfp-fold-2.c, gcc.target/i386/pr36578-1.c, 2237 + gcc.target/i386/pr36578-2.c: New tests. 2238 + 2239 +2009-02-25 H.J. Lu <hongjiu.lu@intel.com> 2240 + 2241 + Backport from mainline: 2242 + 2008-02-25 H.J. Lu <hongjiu.lu@intel.com> 2243 + 2244 + PR rtl-optimization/39241 2245 + * gcc.dg/torture/pr39241.c: New. 2246 + 1887 2247 +2009-02-21 Kaz Kojima <kkojima@gcc.gnu.org> 1888 2248 + … … 2186 2546 2187 2547 * GCC 4.3.3 released. 2188 @@ -89,7 + 387,7 @@2548 @@ -89,7 +413,7 @@ 2189 2549 2190 2550 Backport from mainline: … … 2195 2555 PR tree-optimization/38529 2196 2556 * gcc.dg/vect/pr38529.c: New test. 2197 @@ -426,8 +7 24,8 @@2557 @@ -426,8 +750,8 @@ 2198 2558 2199 2559 2008-11-14 Paul Thomas <pault@gcc.gnu.org> … … 2586 2946 + p = &a; 2587 2947 + s.p = &a; 2948 +} 2949 diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/dfp/convert-bfp-13.c gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/convert-bfp-13.c 2950 --- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/dfp/convert-bfp-13.c 1969-12-31 16:00:00.000000000 -0800 2951 +++ gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/convert-bfp-13.c 2009-02-25 14:08:55.493777000 -0800 2952 @@ -0,0 +1,20 @@ 2953 +/* Test for bug where fold changed binary operation to decimal 2954 + depending on typedefs. */ 2955 +/* { dg-options "-std=gnu99" } */ 2956 + 2957 +extern void abort (void); 2958 +extern void exit (int); 2959 + 2960 +volatile double d = 1.2345675; 2961 + 2962 +typedef const volatile _Decimal32 d32; 2963 + 2964 +int 2965 +main (void) 2966 +{ 2967 + _Decimal32 a = (d * d); 2968 + d32 b = (d * d); 2969 + if (a != b) 2970 + abort (); 2971 + exit (0); 2972 +} 2973 diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/dfp/convert-bfp-14.c gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/convert-bfp-14.c 2974 --- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/dfp/convert-bfp-14.c 1969-12-31 16:00:00.000000000 -0800 2975 +++ gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/convert-bfp-14.c 2009-02-25 14:08:55.493777000 -0800 2976 @@ -0,0 +1,17 @@ 2977 +/* Test for bug where fold narrowed decimal floating-point 2978 + operations. */ 2979 +/* { dg-options "-std=gnu99" } */ 2980 + 2981 +extern void abort (void); 2982 +extern void exit (int); 2983 + 2984 +volatile _Decimal32 f = 1.23456DF; 2985 +volatile _Decimal64 d = 1.23456DD; 2986 + 2987 +int 2988 +main (void) 2989 +{ 2990 + if ((double)((_Decimal64)f * (_Decimal64)f) != (double)(d * d)) 2991 + abort (); 2992 + exit (0); 2993 +} 2994 diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/dfp/convert-dfp-fold-2.c gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/convert-dfp-fold-2.c 2995 --- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/dfp/convert-dfp-fold-2.c 1969-12-31 16:00:00.000000000 -0800 2996 +++ gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/convert-dfp-fold-2.c 2009-02-25 14:08:55.493777000 -0800 2997 @@ -0,0 +1,17 @@ 2998 +/* Test for bug where fold narrowed decimal floating-point 2999 + operations. */ 3000 +/* { dg-options "-std=gnu99" } */ 3001 + 3002 +extern void abort (void); 3003 +extern void exit (int); 3004 + 3005 +volatile _Decimal32 f = 1.23456DF; 3006 +volatile _Decimal64 d = 1.23456DD; 3007 + 3008 +int 3009 +main (void) 3010 +{ 3011 + if ((_Decimal128)((_Decimal64)f * (_Decimal64)f) != (_Decimal128)(d * d)) 3012 + abort (); 3013 + exit (0); 3014 +} 3015 diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/dfp/pr39034.c gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/pr39034.c 3016 --- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/dfp/pr39034.c 1969-12-31 16:00:00.000000000 -0800 3017 +++ gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/pr39034.c 2009-02-25 14:08:55.493777000 -0800 3018 @@ -0,0 +1,110 @@ 3019 +/* { dg-do run } */ 3020 +/* { dg-options "-std=gnu99 -O" } */ 3021 + 3022 +/* DFP TR 24732 == WG14 / N1176, N1312 */ 3023 + 3024 +extern void abort (void); 3025 +int failures = 0; 3026 + 3027 +#ifdef DBG 3028 +#include <stdio.h> 3029 +#define FAILURE(MSG) { printf ("line %d: %s\n", __LINE__, MSG); failures++; } 3030 +#else 3031 +#define FAILURE(MSG) failures++; 3032 +#endif 3033 + 3034 + 3035 +/* Test runtime computations. */ 3036 + 3037 +void 3038 +runtime32 (void) 3039 +{ 3040 + volatile float v1 = 28.f, v2 = 3.f, v3 = 9.f, v4 = 31.f, v5 = 3.f, v6 = 10.f; 3041 + float b32 = (float)((v1/v2-v3) - (v4/v5-v6)); 3042 + _Decimal32 d32 = (float)((v1/v2-v3) - (v4/v5-v6)); 3043 + 3044 + if (b32) 3045 + FAILURE ("runtime: b32 should be zero") 3046 + if (d32) 3047 + FAILURE ("runtime: d32 should be zero") 3048 +} 3049 + 3050 +void 3051 +runtime64 (void) 3052 +{ 3053 + volatile double v1 = 28., v2 = 3., v3 = 9., v4 = 31., v5 = 3., v6 = 10.; 3054 + double b64 = (double)((v1/v2-v3) - (v4/v5-v6)); 3055 + _Decimal64 d64 = (double)((v1/v2-v3) - (v4/v5-v6)); 3056 + 3057 + if (b64) 3058 + FAILURE ("runtime: b64 should be zero") 3059 + if (d64) 3060 + FAILURE ("runtime: d64 should be zero") 3061 +} 3062 + 3063 +void 3064 +runtime128 (void) 3065 +{ 3066 + volatile long double v1 = 28.l, v2 = 3.l, v3 = 9.l, 3067 + v4 = 31.l, v5 = 3.l, v6 = 10.l; 3068 + long double b128 = (long double)((v1/v2-v3) - (v4/v5-v6)); 3069 + _Decimal128 d128 = (long double)((v1/v2-v3) - (v4/v5-v6)); 3070 + 3071 + if (b128) 3072 + FAILURE ("runtime: b128 should be zero") 3073 + if (d128) 3074 + FAILURE ("runtime: d128 should be zero") 3075 +} 3076 + 3077 +/* Test constant folding. */ 3078 + 3079 +void 3080 +fold32 (void) 3081 +{ 3082 + double d32 = (float)((28.f/3.f-9.f) - (31.f/3.f-10.f)); 3083 + _Decimal32 b32 = (float)((28.f/3.f-9.f) - (31.f/3.f-10.f)); 3084 + 3085 + if (b32) 3086 + FAILURE ("fold: b32 should be zero") 3087 + if (d32) 3088 + FAILURE ("fold: d32 should be zero") 3089 +} 3090 + 3091 +void 3092 +fold64 (void) 3093 +{ 3094 + double b64 = (double)((28./3.-9.) - (31./3.-10.)); 3095 + _Decimal64 d64 = (double)((28./3.-9.) - (31./3.-10.)); 3096 + 3097 + if (b64) 3098 + FAILURE ("fold: b64 should be zero") 3099 + if (d64) 3100 + FAILURE ("fold: d64 should be zero") 3101 +} 3102 + 3103 +void 3104 +fold128 (void) 3105 +{ 3106 + long double b128 = (long double)((28./3.-9.) - (31./3.-10.)); 3107 + _Decimal128 d128 = (long double)((28./3.-9.) - (31./3.-10.)); 3108 + 3109 + if (b128) 3110 + FAILURE ("fold: b128 should be zero") 3111 + if (d128) 3112 + FAILURE ("fold: d128 should be zero") 3113 +} 3114 + 3115 +int 3116 +main () 3117 +{ 3118 + runtime32 (); 3119 + runtime64 (); 3120 + runtime128 (); 3121 + fold32 (); 3122 + fold64 (); 3123 + fold128 (); 3124 + 3125 + if (failures != 0) 3126 + abort (); 3127 + return 0; 2588 3128 +} 2589 3129 diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/dfp/pr39035.c gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/pr39035.c … … 3333 3873 +__thread int a __attribute__((tls_model(1))); /* { dg-error "tls_model argument not a string" } */ 3334 3874 +__thread int b __attribute__((tls_model("unknown"))); /* { dg-error "tls_model argument must be one of" } */ 3875 diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/torture/pr39241.c gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr39241.c 3876 --- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/torture/pr39241.c 1969-12-31 16:00:00.000000000 -0800 3877 +++ gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr39241.c 2009-02-25 10:55:14.218944000 -0800 3878 @@ -0,0 +1,16 @@ 3879 +/* { dg-do compile } */ 3880 +/* { dg-options "-w" } */ 3881 + 3882 +static inline int 3883 +foo (float f) 3884 +{ 3885 + return *((int *) &f) - 1; 3886 +} 3887 + 3888 +float 3889 +bar (float x, float y, float *z) 3890 +{ 3891 + float c = y < 0.002f ? 0.002f : y; 3892 + float d = x < c ? c : x; 3893 + return z[foo (c)] + z[foo (d * 255.0f)]; 3894 +} 3335 3895 diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c gcc-4.3.3/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c 3336 3896 --- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c 1969-12-31 16:00:00.000000000 -0800 … … 3352 3912 +/* { dg-final { scan-tree-dump-times "\\\*q" 1 "fre" } } */ 3353 3913 +/* { dg-final { cleanup-tree-dump "fre" } } */ 3914 diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.target/i386/pr36578-1.c gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr36578-1.c 3915 --- gcc-4.3.3.orig/gcc/testsuite/gcc.target/i386/pr36578-1.c 1969-12-31 16:00:00.000000000 -0800 3916 +++ gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr36578-1.c 2009-02-25 14:08:55.493777000 -0800 3917 @@ -0,0 +1,22 @@ 3918 +/* Test for unsafe floating-point conversions. PR 36578. */ 3919 +/* { dg-do run } */ 3920 +/* { dg-options "-msse2 -mfpmath=sse" } */ 3921 + 3922 +#include "sse2-check.h" 3923 + 3924 +extern void abort (void); 3925 +extern void exit (int); 3926 +extern int printf(const char *, ...); 3927 + 3928 +volatile double d1 = 1.0; 3929 +volatile double d2 = 0x1.00001p-53; 3930 +volatile double d3; 3931 + 3932 +static void 3933 +sse2_test (void) 3934 +{ 3935 + d3 = (double)((long double)d1 + (long double)d2); 3936 + if (d3 != d1) 3937 + abort (); 3938 + exit (0); 3939 +} 3940 diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.target/i386/pr36578-2.c gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr36578-2.c 3941 --- gcc-4.3.3.orig/gcc/testsuite/gcc.target/i386/pr36578-2.c 1969-12-31 16:00:00.000000000 -0800 3942 +++ gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr36578-2.c 2009-02-25 14:08:55.493777000 -0800 3943 @@ -0,0 +1,23 @@ 3944 +/* Test for unsafe floating-point conversions. */ 3945 +/* { dg-do run } */ 3946 +/* { dg-options "-msse2 -mfpmath=sse" } */ 3947 + 3948 +#include "sse2-check.h" 3949 + 3950 +extern void abort (void); 3951 +extern void exit (int); 3952 +extern int printf(const char *, ...); 3953 + 3954 +volatile double d1 = 0x1.000001p0; 3955 +volatile double d2 = 0x1p-54; 3956 +volatile float f = 0x1.000002p0f; 3957 +volatile float f2; 3958 + 3959 +static void 3960 +sse2_test (void) 3961 +{ 3962 + f2 = (float)((long double)d1 + (long double)d2); 3963 + if (f != f2) 3964 + abort (); 3965 + exit (0); 3966 +} 3354 3967 diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.target/i386/pr38931.c gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr38931.c 3355 3968 --- gcc-4.3.3.orig/gcc/testsuite/gcc.target/i386/pr38931.c 1969-12-31 16:00:00.000000000 -0800 … … 3406 4019 + f (); 3407 4020 + } 4021 +} 4022 diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.target/i386/pr39058.c gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr39058.c 4023 --- gcc-4.3.3.orig/gcc/testsuite/gcc.target/i386/pr39058.c 1969-12-31 16:00:00.000000000 -0800 4024 +++ gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr39058.c 2009-02-25 23:06:48.803473000 -0800 4025 @@ -0,0 +1,34 @@ 4026 +/* PR inline-asm/39058 */ 4027 +/* { dg-options "-O2" } */ 4028 + 4029 +double 4030 +f1 () 4031 +{ 4032 + double x; 4033 + asm ("" : "=r,r" (x) : "0,0" (x)); 4034 + return x; 4035 +} 4036 + 4037 +double 4038 +f2 () 4039 +{ 4040 + double x; 4041 + asm ("" : "=r" (x) : "0" (x)); 4042 + return x; 4043 +} 4044 + 4045 +double 4046 +f3 () 4047 +{ 4048 + double x, y; 4049 + asm ("" : "=r,r" (x), "=r,r" (y) : "%0,0" (x), "r,r" (0)); 4050 + return x; 4051 +} 4052 + 4053 +double 4054 +f4 () 4055 +{ 4056 + double x, y; 4057 + asm ("" : "=r" (x), "=r" (y) : "0" (x), "r" (0)); 4058 + return x; 3408 4059 +} 3409 4060 diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.target/ia64/sibcall-opt-1.c gcc-4.3.3/gcc/testsuite/gcc.target/ia64/sibcall-opt-1.c … … 4183 4834 diff -Naur gcc-4.3.3.orig/gcc/tree-ssa-forwprop.c gcc-4.3.3/gcc/tree-ssa-forwprop.c 4184 4835 --- gcc-4.3.3.orig/gcc/tree-ssa-forwprop.c 2008-03-14 09:34:11.000000000 -0700 4185 +++ gcc-4.3.3/gcc/tree-ssa-forwprop.c 2009-01-30 14:14:39.201534000 -0800 4186 @@ -677,6 +677,7 @@ 4836 +++ gcc-4.3.3/gcc/tree-ssa-forwprop.c 2009-02-28 10:33:27.113860000 -0800 4837 @@ -487,28 +487,36 @@ 4838 forward_propagate_addr_into_variable_array_index (tree offset, 4839 tree def_rhs, tree use_stmt) 4840 { 4841 - tree index; 4842 + tree index, offset_def; 4843 4844 - /* Try to find an expression for a proper index. This is either 4845 - a multiplication expression by the element size or just the 4846 - ssa name we came along in case the element size is one. */ 4847 + /* Get the offset's defining statement. */ 4848 + offset_def = SSA_NAME_DEF_STMT (offset); 4849 + 4850 + /* Try to find an expression for a proper index. This is either a 4851 + multiplication expression by the element size or just the ssa name we came 4852 + along in case the element size is one. In that case, however, we do not 4853 + allow multiplications because they can be computing index to a higher 4854 + level dimension (PR 37861). */ 4855 if (integer_onep (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (def_rhs))))) 4856 - index = offset; 4857 - else 4858 { 4859 - /* Get the offset's defining statement. */ 4860 - offset = SSA_NAME_DEF_STMT (offset); 4861 + if (TREE_CODE (offset_def) == GIMPLE_MODIFY_STMT 4862 + && TREE_CODE (GIMPLE_STMT_OPERAND (offset_def, 1)) == MULT_EXPR) 4863 + return false; 4864 4865 + index = offset; 4866 + } 4867 + else 4868 + { 4869 /* The statement which defines OFFSET before type conversion 4870 must be a simple GIMPLE_MODIFY_STMT. */ 4871 - if (TREE_CODE (offset) != GIMPLE_MODIFY_STMT) 4872 + if (TREE_CODE (offset_def) != GIMPLE_MODIFY_STMT) 4873 return false; 4874 4875 /* The RHS of the statement which defines OFFSET must be a 4876 multiplication of an object by the size of the array elements. 4877 This implicitly verifies that the size of the array elements 4878 is constant. */ 4879 - offset = GIMPLE_STMT_OPERAND (offset, 1); 4880 + offset = GIMPLE_STMT_OPERAND (offset_def, 1); 4881 if (TREE_CODE (offset) != MULT_EXPR 4882 || TREE_CODE (TREE_OPERAND (offset, 1)) != INTEGER_CST 4883 || !simple_cst_equal (TREE_OPERAND (offset, 1), 4884 @@ -677,6 +685,7 @@ 4187 4885 array elements, then the result is converted into the proper 4188 4886 type for the arithmetic. */ … … 4243 4941 diff -Naur gcc-4.3.3.orig/gcc/version.c gcc-4.3.3/gcc/version.c 4244 4942 --- gcc-4.3.3.orig/gcc/version.c 2007-08-21 08:35:30.000000000 -0700 4245 +++ gcc-4.3.3/gcc/version.c 2009-0 2-22 22:23:11.339429250 -08004943 +++ gcc-4.3.3/gcc/version.c 2009-03-01 11:24:23.858345020 -0800 4246 4944 @@ -14,4 +14,4 @@ 4247 4945 Makefile. */ … … 4249 4947 const char version_string[] = BASEVER DATESTAMP DEVPHASE REVISION; 4250 4948 -const char pkgversion_string[] = PKGVERSION; 4251 +const char pkgversion_string[] = "(GCC for Cross-LFS 4.3.3.20090 223) ";4949 +const char pkgversion_string[] = "(GCC for Cross-LFS 4.3.3.20090301) "; 4252 4950 diff -Naur gcc-4.3.3.orig/libjava/classpath/doc/cp-tools.info gcc-4.3.3/libjava/classpath/doc/cp-tools.info 4253 4951 --- gcc-4.3.3.orig/libjava/classpath/doc/cp-tools.info 2009-01-24 04:05:54.000000000 -0800
Note:
See TracChangeset
for help on using the changeset viewer.