Changeset 7d2671a for patches


Ignore:
Timestamp:
Mar 1, 2009, 7:28:34 PM (16 years ago)
Author:
Jim Gifford <clfs@…>
Branches:
clfs-1.2, clfs-2.1, clfs-3.0.0-systemd, clfs-3.0.0-sysvinit, master, systemd, sysvinit
Children:
cc361c5
Parents:
4635005
Message:

Updated GCC Branch Update Patch to -3

File:
1 moved

Legend:

Unmodified
Added
Removed
  • patches/gcc-4.3.3-branch_update-3.patch

    r4635005 r7d2671a  
    11Submitted By: Jim Gifford (jim at cross-lfs dot org)
    2 Date: 02-22-2009
     2Date: 03-01-2009
    33Initial Package Version: 4.3.3
    44Origin: Upstream
     
    77             rechecked periodically.
    88
     9diff -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.
     21diff -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)
    932diff -Naur gcc-4.3.3.orig/gcc/alias.c gcc-4.3.3/gcc/alias.c
    1033--- gcc-4.3.3.orig/gcc/alias.c  2008-03-19 03:06:52.000000000 -0700
     
    144167diff -Naur gcc-4.3.3.orig/gcc/ChangeLog gcc-4.3.3/gcc/ChangeLog
    145168--- 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+
    148218+2009-02-21  Uros Bizjak  <ubizjak@gmail.com>
    149219+
     
    250320+       Backport from mainline
    251321+       2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
    252 +           Richard Guenther  <rguenther@suse.de>
     322+                   Richard Guenther  <rguenther@suse.de>
    253323+
    254324+       PR tree-optimization/39100
     
    408478 
    409479        * GCC 4.3.3 released.
    410 @@ -5,8 +264,7 @@
     480@@ -5,8 +311,7 @@
    411481 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
    412482 
     
    418488 2009-01-19  Richard Guenther  <rguenther@suse.de>
    419489 
    420 @@ -41,7 +299,8 @@
     490@@ -41,7 +346,8 @@
    421491       
    422492 2009-01-11  Matthias Klose  <doko@ubuntu.com>
     
    428498 
    429499        * config/i386/i386.md (*strmovsi_1): Simplify asm alternatives.
    430 @@ -509,8 +768,8 @@
     500@@ -509,8 +815,8 @@
    431501        PR tree-optimization/37102
    432502        * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args 
     
    439509 
    440510 2008-10-08  Simon Martin  <simartin@users.sourceforge.net>
    441 @@ -986,8 +1245,10 @@
     511@@ -986,8 +1292,10 @@
    442512 
    443513        (MFC_MIN_DMA_LIST_ELEMENTS): New define.
     
    454524diff -Naur gcc-4.3.3.orig/gcc/config/alpha/alpha.c gcc-4.3.3/gcc/config/alpha/alpha.c
    455525--- 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-01-27 03:39:42.241832000 -0800
     526+++ gcc-4.3.3/gcc/config/alpha/alpha.c  2009-02-28 09:22:52.585822000 -0800
    457527@@ -1,6 +1,7 @@
    458528 /* Subroutines used for code generation on the DEC Alpha.
     
    545615
    546616 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 @@
    548659   if (alpha_compare.fp_p)
    549660     {
     
    554665          /* When we are not as concerned about non-finite values, and we
    555666             are comparing against zero, we can branch directly.  */
    556 @@ -6794,7 +6799,7 @@
     667@@ -6794,7 +6803,7 @@
    557668   tree op0 = fold_convert (vtype, op[0]);
    558669   tree op1 = fold_convert (vtype, op[1]);
     
    563674 
    564675 static tree
    565 @@ -8242,6 +8247,11 @@
     676@@ -8242,6 +8251,11 @@
    566677   if (GET_CODE (insn) == CALL_INSN)
    567678     output_asm_insn (get_insn_template (CODE_FOR_nop, NULL), NULL);
     
    575686   alpha_write_linkage (file, fnname, decl);
    576687 #endif
    577 @@ -8281,6 +8291,8 @@
     688@@ -8281,6 +8295,8 @@
    578689   HOST_WIDE_INT hi, lo;
    579690   rtx this, insn, funexp;
     
    584695   emit_insn (gen_prologue_ldgp ());
    585696   emit_note (NOTE_INSN_PROLOGUE_END);
    586 @@ -9268,12 +9280,68 @@
     697@@ -9268,12 +9284,68 @@
    587698       i = next;
    588699     }
     
    11531264    get us switched to various sections of interest.  These are used
    11541265    in all places where we simply want to switch to a section, and
     1266diff -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)),
    11551330diff -Naur gcc-4.3.3.orig/gcc/cp/ChangeLog gcc-4.3.3/gcc/cp/ChangeLog
    11561331--- gcc-4.3.3.orig/gcc/cp/ChangeLog     2009-01-24 02:15:39.000000000 -0800
     
    14941669diff -Naur gcc-4.3.3.orig/gcc/DATESTAMP gcc-4.3.3/gcc/DATESTAMP
    14951670--- gcc-4.3.3.orig/gcc/DATESTAMP        2009-01-23 16:16:35.000000000 -0800
    1496 +++ gcc-4.3.3/gcc/DATESTAMP     2009-02-22 16:16:27.324527000 -0800
     1671+++ gcc-4.3.3/gcc/DATESTAMP     2009-02-28 16:16:39.911584000 -0800
    14971672@@ -1 +1 @@
    14981673-20090124
    1499 +20090223
     1674+20090301
    15001675diff -Naur gcc-4.3.3.orig/gcc/doc/invoke.texi gcc-4.3.3/gcc/doc/invoke.texi
    15011676--- gcc-4.3.3.orig/gcc/doc/invoke.texi  2008-11-21 08:21:50.000000000 -0800
     
    18432018diff -Naur gcc-4.3.3.orig/gcc/real.c gcc-4.3.3/gcc/real.c
    18442019--- 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 -0800
     2020+++ gcc-4.3.3/gcc/real.c        2009-02-25 14:08:55.493777000 -0800
    18462021@@ -905,15 +905,23 @@
    18472022       /* Sign of zero doesn't matter for compares.  */
     
    18692044     case CLASS2 (rvc_normal, rvc_inf):
    18702045       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 
     2079diff -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 
     2094diff -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':
     2165diff -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);
    18712185diff -Naur gcc-4.3.3.orig/gcc/regrename.c gcc-4.3.3/gcc/regrename.c
    18722186--- gcc-4.3.3.orig/gcc/regrename.c      2008-11-25 13:26:19.000000000 -0800
     
    18812195            *recog_data.operand_loc[i] = old_operands[i];
    18822196          if (recog_data.n_dups)
     2197diff -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);
    18832217diff -Naur gcc-4.3.3.orig/gcc/testsuite/ChangeLog gcc-4.3.3/gcc/testsuite/ChangeLog
    18842218--- 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+
    18872247+2009-02-21  Kaz Kojima  <kkojima@gcc.gnu.org>
    18882248+
     
    21862546 
    21872547        * GCC 4.3.3 released.
    2188 @@ -89,7 +387,7 @@
     2548@@ -89,7 +413,7 @@
    21892549 
    21902550        Backport from mainline:
     
    21952555        PR tree-optimization/38529
    21962556        * gcc.dg/vect/pr38529.c: New test.
    2197 @@ -426,8 +724,8 @@
     2557@@ -426,8 +750,8 @@
    21982558 
    21992559 2008-11-14  Paul Thomas  <pault@gcc.gnu.org>
     
    25862946+  p = &a;
    25872947+  s.p = &a;
     2948+}
     2949diff -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+}
     2973diff -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+}
     2994diff -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+}
     3015diff -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;
    25883128+}
    25893129diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.dg/dfp/pr39035.c gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/pr39035.c
     
    33333873+__thread int a __attribute__((tls_model(1))); /* { dg-error "tls_model argument not a string" } */
    33343874+__thread int b __attribute__((tls_model("unknown"))); /* { dg-error "tls_model argument must be one of" } */
     3875diff -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+}
    33353895diff -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
    33363896--- gcc-4.3.3.orig/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c    1969-12-31 16:00:00.000000000 -0800
     
    33523912+/* { dg-final { scan-tree-dump-times "\\\*q" 1 "fre" } } */
    33533913+/* { dg-final { cleanup-tree-dump "fre" } } */
     3914diff -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+}
     3940diff -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+}
    33543967diff -Naur gcc-4.3.3.orig/gcc/testsuite/gcc.target/i386/pr38931.c gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr38931.c
    33553968--- gcc-4.3.3.orig/gcc/testsuite/gcc.target/i386/pr38931.c      1969-12-31 16:00:00.000000000 -0800
     
    34064019+      f ();
    34074020+    }
     4021+}
     4022diff -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;
    34084059+}
    34094060diff -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
     
    41834834diff -Naur gcc-4.3.3.orig/gcc/tree-ssa-forwprop.c gcc-4.3.3/gcc/tree-ssa-forwprop.c
    41844835--- 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 @@
    41874885      array elements, then the result is converted into the proper
    41884886      type for the arithmetic.  */
     
    42434941diff -Naur gcc-4.3.3.orig/gcc/version.c gcc-4.3.3/gcc/version.c
    42444942--- 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-02-22 22:23:11.339429250 -0800
     4943+++ gcc-4.3.3/gcc/version.c     2009-03-01 11:24:23.858345020 -0800
    42464944@@ -14,4 +14,4 @@
    42474945    Makefile.  */
     
    42494947 const char version_string[] = BASEVER DATESTAMP DEVPHASE REVISION;
    42504948-const char pkgversion_string[] = PKGVERSION;
    4251 +const char pkgversion_string[] = "(GCC for Cross-LFS 4.3.3.20090223) ";
     4949+const char pkgversion_string[] = "(GCC for Cross-LFS 4.3.3.20090301) ";
    42524950diff -Naur gcc-4.3.3.orig/libjava/classpath/doc/cp-tools.info gcc-4.3.3/libjava/classpath/doc/cp-tools.info
    42534951--- 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.