]> git.pld-linux.org Git - packages/crossppc-gcc.git/commitdiff
- updated. auto/th/gcc-4_2_0-7
authorPaweł Sikora <pluto@pld-linux.org>
Mon, 25 Jun 2007 21:58:51 +0000 (21:58 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    gcc-branch.diff -> 1.5

gcc-branch.diff

index 37a8af1a17e9b3f59b1c2497abd56392fa65e614..e6d6b353f39f858e125451c75193881b9ab4575f 100644 (file)
@@ -1,9 +1,934 @@
 Index: configure
 ===================================================================
---- configure  (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ configure  (.../branches/gcc-4_2-branch)   (wersja 125589)
-@@ -7337,6 +7337,12 @@
- #line 7338 "configure"
+--- configure  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ configure  (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -4769,12 +4769,14 @@
+   else
+     CC_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
++else
++  CC_FOR_TARGET="$ac_cv_prog_CC_FOR_TARGET"
+ fi
+  if test -n "$with_build_time_tools"; then
+   for ncn_progname in c++ g++ cxx gxx; do
+     echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:4778: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:4780: checking for ${ncn_progname} in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_CXX_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       echo "$ac_t""yes" 1>&6
+@@ -4791,7 +4793,7 @@
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4795: checking for $ac_word" >&5
++echo "configure:4797: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CXX_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4822,7 +4824,7 @@
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4826: checking for $ac_word" >&5
++echo "configure:4828: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CXX_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4860,12 +4862,14 @@
+   else
+     CXX_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
++else
++  CXX_FOR_TARGET="$ac_cv_prog_CXX_FOR_TARGET"
+ fi
+  if test -n "$with_build_time_tools"; then
+   for ncn_progname in gcc; do
+     echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:4869: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:4873: checking for ${ncn_progname} in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_GCC_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       echo "$ac_t""yes" 1>&6
+@@ -4882,7 +4886,7 @@
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4886: checking for $ac_word" >&5
++echo "configure:4890: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GCC_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4913,7 +4917,7 @@
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4917: checking for $ac_word" >&5
++echo "configure:4921: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GCC_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4946,12 +4950,14 @@
+   
+ if test -z "$ac_cv_prog_GCC_FOR_TARGET" ; then
+   GCC_FOR_TARGET="${CC_FOR_TARGET}"
++else
++  GCC_FOR_TARGET="$ac_cv_prog_GCC_FOR_TARGET"
+ fi
+  if test -n "$with_build_time_tools"; then
+   for ncn_progname in gcj; do
+     echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:4955: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:4961: checking for ${ncn_progname} in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_GCJ_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       echo "$ac_t""yes" 1>&6
+@@ -4968,7 +4974,7 @@
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4972: checking for $ac_word" >&5
++echo "configure:4978: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GCJ_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4999,7 +5005,7 @@
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5003: checking for $ac_word" >&5
++echo "configure:5009: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GCJ_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5037,12 +5043,14 @@
+   else
+     GCJ_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
++else
++  GCJ_FOR_TARGET="$ac_cv_prog_GCJ_FOR_TARGET"
+ fi
+  if test -n "$with_build_time_tools"; then
+   for ncn_progname in gfortran; do
+     echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5046: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:5054: checking for ${ncn_progname} in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_GFORTRAN_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       echo "$ac_t""yes" 1>&6
+@@ -5059,7 +5067,7 @@
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5063: checking for $ac_word" >&5
++echo "configure:5071: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GFORTRAN_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5090,7 +5098,7 @@
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5094: checking for $ac_word" >&5
++echo "configure:5102: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_GFORTRAN_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5128,6 +5136,8 @@
+   else
+     GFORTRAN_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
++else
++  GFORTRAN_FOR_TARGET="$ac_cv_prog_GFORTRAN_FOR_TARGET"
+ fi
+@@ -5197,7 +5207,7 @@
+ if test -z "$ac_cv_path_AR_FOR_TARGET" ; then
+   if test -n "$with_build_time_tools"; then
+     echo $ac_n "checking for ar in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5201: checking for ar in $with_build_time_tools" >&5
++echo "configure:5211: checking for ar in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/ar; then
+       AR_FOR_TARGET=`cd $with_build_time_tools && pwd`/ar
+       ac_cv_path_AR_FOR_TARGET=$AR_FOR_TARGET
+@@ -5208,14 +5218,14 @@
+   elif test $build != $host && test $have_gcc_for_target = yes; then
+     AR_FOR_TARGET=`$GCC_FOR_TARGET --print-prog-name=ar`
+     test $AR_FOR_TARGET=ar && AR_FOR_TARGET=
+-    ac_cv_path_AR_FOR_TARGET=$AR_FOR_TARGET
++    test -n "$AR_FOR_TARGET" && ac_cv_path_AR_FOR_TARGET=$AR_FOR_TARGET
+   fi
+ fi
+ if test -z "$ac_cv_path_AR_FOR_TARGET" ; then
+   # Extract the first word of "ar", so it can be a program name with args.
+ set dummy ar; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5219: checking for $ac_word" >&5
++echo "configure:5229: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_AR_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5252,7 +5262,7 @@
+    if test -n "$with_build_time_tools"; then
+   for ncn_progname in ar; do
+     echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5256: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:5266: checking for ${ncn_progname} in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_AR_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       echo "$ac_t""yes" 1>&6
+@@ -5269,7 +5279,7 @@
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5273: checking for $ac_word" >&5
++echo "configure:5283: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_AR_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5300,7 +5310,7 @@
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5304: checking for $ac_word" >&5
++echo "configure:5314: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_AR_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5338,6 +5348,8 @@
+   else
+     AR_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
++else
++  AR_FOR_TARGET="$ac_cv_prog_AR_FOR_TARGET"
+ fi
+ else
+@@ -5350,7 +5362,7 @@
+ if test -z "$ac_cv_path_AS_FOR_TARGET" ; then
+   if test -n "$with_build_time_tools"; then
+     echo $ac_n "checking for as in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5354: checking for as in $with_build_time_tools" >&5
++echo "configure:5366: checking for as in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/as; then
+       AS_FOR_TARGET=`cd $with_build_time_tools && pwd`/as
+       ac_cv_path_AS_FOR_TARGET=$AS_FOR_TARGET
+@@ -5361,14 +5373,14 @@
+   elif test $build != $host && test $have_gcc_for_target = yes; then
+     AS_FOR_TARGET=`$GCC_FOR_TARGET --print-prog-name=as`
+     test $AS_FOR_TARGET=as && AS_FOR_TARGET=
+-    ac_cv_path_AS_FOR_TARGET=$AS_FOR_TARGET
++    test -n "$AS_FOR_TARGET" && ac_cv_path_AS_FOR_TARGET=$AS_FOR_TARGET
+   fi
+ fi
+ if test -z "$ac_cv_path_AS_FOR_TARGET" ; then
+   # Extract the first word of "as", so it can be a program name with args.
+ set dummy as; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5372: checking for $ac_word" >&5
++echo "configure:5384: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_AS_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5405,7 +5417,7 @@
+    if test -n "$with_build_time_tools"; then
+   for ncn_progname in as; do
+     echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5409: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:5421: checking for ${ncn_progname} in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_AS_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       echo "$ac_t""yes" 1>&6
+@@ -5422,7 +5434,7 @@
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5426: checking for $ac_word" >&5
++echo "configure:5438: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_AS_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5453,7 +5465,7 @@
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5457: checking for $ac_word" >&5
++echo "configure:5469: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_AS_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5491,6 +5503,8 @@
+   else
+     AS_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
++else
++  AS_FOR_TARGET="$ac_cv_prog_AS_FOR_TARGET"
+ fi
+ else
+@@ -5503,7 +5517,7 @@
+ if test -z "$ac_cv_path_DLLTOOL_FOR_TARGET" ; then
+   if test -n "$with_build_time_tools"; then
+     echo $ac_n "checking for dlltool in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5507: checking for dlltool in $with_build_time_tools" >&5
++echo "configure:5521: checking for dlltool in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/dlltool; then
+       DLLTOOL_FOR_TARGET=`cd $with_build_time_tools && pwd`/dlltool
+       ac_cv_path_DLLTOOL_FOR_TARGET=$DLLTOOL_FOR_TARGET
+@@ -5514,14 +5528,14 @@
+   elif test $build != $host && test $have_gcc_for_target = yes; then
+     DLLTOOL_FOR_TARGET=`$GCC_FOR_TARGET --print-prog-name=dlltool`
+     test $DLLTOOL_FOR_TARGET=dlltool && DLLTOOL_FOR_TARGET=
+-    ac_cv_path_DLLTOOL_FOR_TARGET=$DLLTOOL_FOR_TARGET
++    test -n "$DLLTOOL_FOR_TARGET" && ac_cv_path_DLLTOOL_FOR_TARGET=$DLLTOOL_FOR_TARGET
+   fi
+ fi
+ if test -z "$ac_cv_path_DLLTOOL_FOR_TARGET" ; then
+   # Extract the first word of "dlltool", so it can be a program name with args.
+ set dummy dlltool; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5525: checking for $ac_word" >&5
++echo "configure:5539: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5558,7 +5572,7 @@
+    if test -n "$with_build_time_tools"; then
+   for ncn_progname in dlltool; do
+     echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5562: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:5576: checking for ${ncn_progname} in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_DLLTOOL_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       echo "$ac_t""yes" 1>&6
+@@ -5575,7 +5589,7 @@
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5579: checking for $ac_word" >&5
++echo "configure:5593: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5606,7 +5620,7 @@
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5610: checking for $ac_word" >&5
++echo "configure:5624: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5644,6 +5658,8 @@
+   else
+     DLLTOOL_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
++else
++  DLLTOOL_FOR_TARGET="$ac_cv_prog_DLLTOOL_FOR_TARGET"
+ fi
+ else
+@@ -5656,7 +5672,7 @@
+ if test -z "$ac_cv_path_LD_FOR_TARGET" ; then
+   if test -n "$with_build_time_tools"; then
+     echo $ac_n "checking for ld in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5660: checking for ld in $with_build_time_tools" >&5
++echo "configure:5676: checking for ld in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/ld; then
+       LD_FOR_TARGET=`cd $with_build_time_tools && pwd`/ld
+       ac_cv_path_LD_FOR_TARGET=$LD_FOR_TARGET
+@@ -5667,14 +5683,14 @@
+   elif test $build != $host && test $have_gcc_for_target = yes; then
+     LD_FOR_TARGET=`$GCC_FOR_TARGET --print-prog-name=ld`
+     test $LD_FOR_TARGET=ld && LD_FOR_TARGET=
+-    ac_cv_path_LD_FOR_TARGET=$LD_FOR_TARGET
++    test -n "$LD_FOR_TARGET" && ac_cv_path_LD_FOR_TARGET=$LD_FOR_TARGET
+   fi
+ fi
+ if test -z "$ac_cv_path_LD_FOR_TARGET" ; then
+   # Extract the first word of "ld", so it can be a program name with args.
+ set dummy ld; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5678: checking for $ac_word" >&5
++echo "configure:5694: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_LD_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5711,7 +5727,7 @@
+    if test -n "$with_build_time_tools"; then
+   for ncn_progname in ld; do
+     echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5715: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:5731: checking for ${ncn_progname} in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_LD_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       echo "$ac_t""yes" 1>&6
+@@ -5728,7 +5744,7 @@
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5732: checking for $ac_word" >&5
++echo "configure:5748: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_LD_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5759,7 +5775,7 @@
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5763: checking for $ac_word" >&5
++echo "configure:5779: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_LD_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5797,6 +5813,8 @@
+   else
+     LD_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
++else
++  LD_FOR_TARGET="$ac_cv_prog_LD_FOR_TARGET"
+ fi
+ else
+@@ -5809,7 +5827,7 @@
+ if test -z "$ac_cv_path_LIPO_FOR_TARGET" ; then
+   if test -n "$with_build_time_tools"; then
+     echo $ac_n "checking for lipo in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5813: checking for lipo in $with_build_time_tools" >&5
++echo "configure:5831: checking for lipo in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/lipo; then
+       LIPO_FOR_TARGET=`cd $with_build_time_tools && pwd`/lipo
+       ac_cv_path_LIPO_FOR_TARGET=$LIPO_FOR_TARGET
+@@ -5820,14 +5838,14 @@
+   elif test $build != $host && test $have_gcc_for_target = yes; then
+     LIPO_FOR_TARGET=`$GCC_FOR_TARGET --print-prog-name=lipo`
+     test $LIPO_FOR_TARGET=lipo && LIPO_FOR_TARGET=
+-    ac_cv_path_LIPO_FOR_TARGET=$LIPO_FOR_TARGET
++    test -n "$LIPO_FOR_TARGET" && ac_cv_path_LIPO_FOR_TARGET=$LIPO_FOR_TARGET
+   fi
+ fi
+ if test -z "$ac_cv_path_LIPO_FOR_TARGET" ; then
+   # Extract the first word of "lipo", so it can be a program name with args.
+ set dummy lipo; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5831: checking for $ac_word" >&5
++echo "configure:5849: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_LIPO_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5864,7 +5882,7 @@
+    if test -n "$with_build_time_tools"; then
+   for ncn_progname in lipo; do
+     echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5868: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:5886: checking for ${ncn_progname} in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_LIPO_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       echo "$ac_t""yes" 1>&6
+@@ -5881,7 +5899,7 @@
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5885: checking for $ac_word" >&5
++echo "configure:5903: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_LIPO_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5912,7 +5930,7 @@
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5916: checking for $ac_word" >&5
++echo "configure:5934: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_LIPO_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -5950,6 +5968,8 @@
+   else
+     LIPO_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
++else
++  LIPO_FOR_TARGET="$ac_cv_prog_LIPO_FOR_TARGET"
+ fi
+ else
+@@ -5962,7 +5982,7 @@
+ if test -z "$ac_cv_path_NM_FOR_TARGET" ; then
+   if test -n "$with_build_time_tools"; then
+     echo $ac_n "checking for nm in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:5966: checking for nm in $with_build_time_tools" >&5
++echo "configure:5986: checking for nm in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/nm; then
+       NM_FOR_TARGET=`cd $with_build_time_tools && pwd`/nm
+       ac_cv_path_NM_FOR_TARGET=$NM_FOR_TARGET
+@@ -5973,14 +5993,14 @@
+   elif test $build != $host && test $have_gcc_for_target = yes; then
+     NM_FOR_TARGET=`$GCC_FOR_TARGET --print-prog-name=nm`
+     test $NM_FOR_TARGET=nm && NM_FOR_TARGET=
+-    ac_cv_path_NM_FOR_TARGET=$NM_FOR_TARGET
++    test -n "$NM_FOR_TARGET" && ac_cv_path_NM_FOR_TARGET=$NM_FOR_TARGET
+   fi
+ fi
+ if test -z "$ac_cv_path_NM_FOR_TARGET" ; then
+   # Extract the first word of "nm", so it can be a program name with args.
+ set dummy nm; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:5984: checking for $ac_word" >&5
++echo "configure:6004: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_NM_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6017,7 +6037,7 @@
+    if test -n "$with_build_time_tools"; then
+   for ncn_progname in nm; do
+     echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6021: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:6041: checking for ${ncn_progname} in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_NM_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       echo "$ac_t""yes" 1>&6
+@@ -6034,7 +6054,7 @@
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6038: checking for $ac_word" >&5
++echo "configure:6058: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_NM_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6065,7 +6085,7 @@
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6069: checking for $ac_word" >&5
++echo "configure:6089: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_NM_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6103,6 +6123,8 @@
+   else
+     NM_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
++else
++  NM_FOR_TARGET="$ac_cv_prog_NM_FOR_TARGET"
+ fi
+ else
+@@ -6115,7 +6137,7 @@
+ if test -z "$ac_cv_path_OBJDUMP_FOR_TARGET" ; then
+   if test -n "$with_build_time_tools"; then
+     echo $ac_n "checking for objdump in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6119: checking for objdump in $with_build_time_tools" >&5
++echo "configure:6141: checking for objdump in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/objdump; then
+       OBJDUMP_FOR_TARGET=`cd $with_build_time_tools && pwd`/objdump
+       ac_cv_path_OBJDUMP_FOR_TARGET=$OBJDUMP_FOR_TARGET
+@@ -6126,14 +6148,14 @@
+   elif test $build != $host && test $have_gcc_for_target = yes; then
+     OBJDUMP_FOR_TARGET=`$GCC_FOR_TARGET --print-prog-name=objdump`
+     test $OBJDUMP_FOR_TARGET=objdump && OBJDUMP_FOR_TARGET=
+-    ac_cv_path_OBJDUMP_FOR_TARGET=$OBJDUMP_FOR_TARGET
++    test -n "$OBJDUMP_FOR_TARGET" && ac_cv_path_OBJDUMP_FOR_TARGET=$OBJDUMP_FOR_TARGET
+   fi
+ fi
+ if test -z "$ac_cv_path_OBJDUMP_FOR_TARGET" ; then
+   # Extract the first word of "objdump", so it can be a program name with args.
+ set dummy objdump; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6137: checking for $ac_word" >&5
++echo "configure:6159: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_OBJDUMP_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6170,7 +6192,7 @@
+    if test -n "$with_build_time_tools"; then
+   for ncn_progname in objdump; do
+     echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6174: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:6196: checking for ${ncn_progname} in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_OBJDUMP_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       echo "$ac_t""yes" 1>&6
+@@ -6187,7 +6209,7 @@
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6191: checking for $ac_word" >&5
++echo "configure:6213: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6218,7 +6240,7 @@
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6222: checking for $ac_word" >&5
++echo "configure:6244: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6256,6 +6278,8 @@
+   else
+     OBJDUMP_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
++else
++  OBJDUMP_FOR_TARGET="$ac_cv_prog_OBJDUMP_FOR_TARGET"
+ fi
+ else
+@@ -6268,7 +6292,7 @@
+ if test -z "$ac_cv_path_RANLIB_FOR_TARGET" ; then
+   if test -n "$with_build_time_tools"; then
+     echo $ac_n "checking for ranlib in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6272: checking for ranlib in $with_build_time_tools" >&5
++echo "configure:6296: checking for ranlib in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/ranlib; then
+       RANLIB_FOR_TARGET=`cd $with_build_time_tools && pwd`/ranlib
+       ac_cv_path_RANLIB_FOR_TARGET=$RANLIB_FOR_TARGET
+@@ -6279,14 +6303,14 @@
+   elif test $build != $host && test $have_gcc_for_target = yes; then
+     RANLIB_FOR_TARGET=`$GCC_FOR_TARGET --print-prog-name=ranlib`
+     test $RANLIB_FOR_TARGET=ranlib && RANLIB_FOR_TARGET=
+-    ac_cv_path_RANLIB_FOR_TARGET=$RANLIB_FOR_TARGET
++    test -n "$RANLIB_FOR_TARGET" && ac_cv_path_RANLIB_FOR_TARGET=$RANLIB_FOR_TARGET
+   fi
+ fi
+ if test -z "$ac_cv_path_RANLIB_FOR_TARGET" ; then
+   # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6290: checking for $ac_word" >&5
++echo "configure:6314: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_RANLIB_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6323,7 +6347,7 @@
+    if test -n "$with_build_time_tools"; then
+   for ncn_progname in ranlib; do
+     echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6327: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:6351: checking for ${ncn_progname} in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_RANLIB_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       echo "$ac_t""yes" 1>&6
+@@ -6340,7 +6364,7 @@
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6344: checking for $ac_word" >&5
++echo "configure:6368: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_RANLIB_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6371,7 +6395,7 @@
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6375: checking for $ac_word" >&5
++echo "configure:6399: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_RANLIB_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6409,6 +6433,8 @@
+   else
+     RANLIB_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
++else
++  RANLIB_FOR_TARGET="$ac_cv_prog_RANLIB_FOR_TARGET"
+ fi
+ else
+@@ -6421,7 +6447,7 @@
+ if test -z "$ac_cv_path_STRIP_FOR_TARGET" ; then
+   if test -n "$with_build_time_tools"; then
+     echo $ac_n "checking for strip in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6425: checking for strip in $with_build_time_tools" >&5
++echo "configure:6451: checking for strip in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/strip; then
+       STRIP_FOR_TARGET=`cd $with_build_time_tools && pwd`/strip
+       ac_cv_path_STRIP_FOR_TARGET=$STRIP_FOR_TARGET
+@@ -6432,14 +6458,14 @@
+   elif test $build != $host && test $have_gcc_for_target = yes; then
+     STRIP_FOR_TARGET=`$GCC_FOR_TARGET --print-prog-name=strip`
+     test $STRIP_FOR_TARGET=strip && STRIP_FOR_TARGET=
+-    ac_cv_path_STRIP_FOR_TARGET=$STRIP_FOR_TARGET
++    test -n "$STRIP_FOR_TARGET" && ac_cv_path_STRIP_FOR_TARGET=$STRIP_FOR_TARGET
+   fi
+ fi
+ if test -z "$ac_cv_path_STRIP_FOR_TARGET" ; then
+   # Extract the first word of "strip", so it can be a program name with args.
+ set dummy strip; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6443: checking for $ac_word" >&5
++echo "configure:6469: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_STRIP_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6476,7 +6502,7 @@
+    if test -n "$with_build_time_tools"; then
+   for ncn_progname in strip; do
+     echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6480: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:6506: checking for ${ncn_progname} in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_STRIP_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       echo "$ac_t""yes" 1>&6
+@@ -6493,7 +6519,7 @@
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6497: checking for $ac_word" >&5
++echo "configure:6523: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_STRIP_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6524,7 +6550,7 @@
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6528: checking for $ac_word" >&5
++echo "configure:6554: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_STRIP_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6562,6 +6588,8 @@
+   else
+     STRIP_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
++else
++  STRIP_FOR_TARGET="$ac_cv_prog_STRIP_FOR_TARGET"
+ fi
+ else
+@@ -6574,7 +6602,7 @@
+ if test -z "$ac_cv_path_WINDRES_FOR_TARGET" ; then
+   if test -n "$with_build_time_tools"; then
+     echo $ac_n "checking for windres in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6578: checking for windres in $with_build_time_tools" >&5
++echo "configure:6606: checking for windres in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/windres; then
+       WINDRES_FOR_TARGET=`cd $with_build_time_tools && pwd`/windres
+       ac_cv_path_WINDRES_FOR_TARGET=$WINDRES_FOR_TARGET
+@@ -6585,14 +6613,14 @@
+   elif test $build != $host && test $have_gcc_for_target = yes; then
+     WINDRES_FOR_TARGET=`$GCC_FOR_TARGET --print-prog-name=windres`
+     test $WINDRES_FOR_TARGET=windres && WINDRES_FOR_TARGET=
+-    ac_cv_path_WINDRES_FOR_TARGET=$WINDRES_FOR_TARGET
++    test -n "$WINDRES_FOR_TARGET" && ac_cv_path_WINDRES_FOR_TARGET=$WINDRES_FOR_TARGET
+   fi
+ fi
+ if test -z "$ac_cv_path_WINDRES_FOR_TARGET" ; then
+   # Extract the first word of "windres", so it can be a program name with args.
+ set dummy windres; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6596: checking for $ac_word" >&5
++echo "configure:6624: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_WINDRES_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6629,7 +6657,7 @@
+    if test -n "$with_build_time_tools"; then
+   for ncn_progname in windres; do
+     echo $ac_n "checking for ${ncn_progname} in $with_build_time_tools""... $ac_c" 1>&6
+-echo "configure:6633: checking for ${ncn_progname} in $with_build_time_tools" >&5
++echo "configure:6661: checking for ${ncn_progname} in $with_build_time_tools" >&5
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_WINDRES_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       echo "$ac_t""yes" 1>&6
+@@ -6646,7 +6674,7 @@
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6650: checking for $ac_word" >&5
++echo "configure:6678: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_WINDRES_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6677,7 +6705,7 @@
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:6681: checking for $ac_word" >&5
++echo "configure:6709: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_WINDRES_FOR_TARGET'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -6715,6 +6743,8 @@
+   else
+     WINDRES_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
++else
++  WINDRES_FOR_TARGET="$ac_cv_prog_WINDRES_FOR_TARGET"
+ fi
+ else
+@@ -6725,7 +6755,7 @@
+ RAW_CXX_FOR_TARGET="$CXX_FOR_TARGET"
+ echo $ac_n "checking where to find the target ar""... $ac_c" 1>&6
+-echo "configure:6729: checking where to find the target ar" >&5
++echo "configure:6759: checking where to find the target ar" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$AR_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -6758,7 +6788,7 @@
+   fi
+ fi
+ echo $ac_n "checking where to find the target as""... $ac_c" 1>&6
+-echo "configure:6762: checking where to find the target as" >&5
++echo "configure:6792: checking where to find the target as" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$AS_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -6791,7 +6821,7 @@
+   fi
+ fi
+ echo $ac_n "checking where to find the target cc""... $ac_c" 1>&6
+-echo "configure:6795: checking where to find the target cc" >&5
++echo "configure:6825: checking where to find the target cc" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$CC_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -6824,7 +6854,7 @@
+   fi
+ fi
+ echo $ac_n "checking where to find the target c++""... $ac_c" 1>&6
+-echo "configure:6828: checking where to find the target c++" >&5
++echo "configure:6858: checking where to find the target c++" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$CXX_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -6860,7 +6890,7 @@
+   fi
+ fi
+ echo $ac_n "checking where to find the target c++ for libstdc++""... $ac_c" 1>&6
+-echo "configure:6864: checking where to find the target c++ for libstdc++" >&5
++echo "configure:6894: checking where to find the target c++ for libstdc++" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$RAW_CXX_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -6896,7 +6926,7 @@
+   fi
+ fi
+ echo $ac_n "checking where to find the target dlltool""... $ac_c" 1>&6
+-echo "configure:6900: checking where to find the target dlltool" >&5
++echo "configure:6930: checking where to find the target dlltool" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$DLLTOOL_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -6929,7 +6959,7 @@
+   fi
+ fi
+ echo $ac_n "checking where to find the target gcc""... $ac_c" 1>&6
+-echo "configure:6933: checking where to find the target gcc" >&5
++echo "configure:6963: checking where to find the target gcc" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$GCC_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -6962,7 +6992,7 @@
+   fi
+ fi
+ echo $ac_n "checking where to find the target gcj""... $ac_c" 1>&6
+-echo "configure:6966: checking where to find the target gcj" >&5
++echo "configure:6996: checking where to find the target gcj" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$GCJ_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -6998,7 +7028,7 @@
+   fi
+ fi
+ echo $ac_n "checking where to find the target gfortran""... $ac_c" 1>&6
+-echo "configure:7002: checking where to find the target gfortran" >&5
++echo "configure:7032: checking where to find the target gfortran" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$GFORTRAN_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -7034,7 +7064,7 @@
+   fi
+ fi
+ echo $ac_n "checking where to find the target ld""... $ac_c" 1>&6
+-echo "configure:7038: checking where to find the target ld" >&5
++echo "configure:7068: checking where to find the target ld" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$LD_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -7067,7 +7097,7 @@
+   fi
+ fi
+ echo $ac_n "checking where to find the target lipo""... $ac_c" 1>&6
+-echo "configure:7071: checking where to find the target lipo" >&5
++echo "configure:7101: checking where to find the target lipo" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$LIPO_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -7090,7 +7120,7 @@
+   fi
+ fi
+ echo $ac_n "checking where to find the target nm""... $ac_c" 1>&6
+-echo "configure:7094: checking where to find the target nm" >&5
++echo "configure:7124: checking where to find the target nm" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$NM_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -7123,7 +7153,7 @@
+   fi
+ fi
+ echo $ac_n "checking where to find the target objdump""... $ac_c" 1>&6
+-echo "configure:7127: checking where to find the target objdump" >&5
++echo "configure:7157: checking where to find the target objdump" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$OBJDUMP_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -7156,7 +7186,7 @@
+   fi
+ fi
+ echo $ac_n "checking where to find the target ranlib""... $ac_c" 1>&6
+-echo "configure:7160: checking where to find the target ranlib" >&5
++echo "configure:7190: checking where to find the target ranlib" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$RANLIB_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -7189,7 +7219,7 @@
+   fi
+ fi
+ echo $ac_n "checking where to find the target strip""... $ac_c" 1>&6
+-echo "configure:7193: checking where to find the target strip" >&5
++echo "configure:7223: checking where to find the target strip" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$STRIP_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -7222,7 +7252,7 @@
+   fi
+ fi
+ echo $ac_n "checking where to find the target windres""... $ac_c" 1>&6
+-echo "configure:7226: checking where to find the target windres" >&5
++echo "configure:7256: checking where to find the target windres" >&5
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$WINDRES_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+@@ -7283,7 +7313,7 @@
+ echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
+-echo "configure:7287: checking whether to enable maintainer-specific portions of Makefiles" >&5
++echo "configure:7317: checking whether to enable maintainer-specific portions of Makefiles" >&5
+ # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
+ if test "${enable_maintainer_mode+set}" = set; then
+   enableval="$enable_maintainer_mode"
+@@ -7332,16 +7362,22 @@
+   # Pass -fkeep-inline-functions for stage 1 if the GCC version supports it.
+   CFLAGS="$CFLAGS -fkeep-inline-functions"
+   echo $ac_n "checking whether -fkeep-inline-functions is supported""... $ac_c" 1>&6
+-echo "configure:7336: checking whether -fkeep-inline-functions is supported" >&5
++echo "configure:7366: checking whether -fkeep-inline-functions is supported" >&5
+   cat > conftest.$ac_ext <<EOF
+-#line 7338 "configure"
++#line 7368 "configure"
  #include "confdefs.h"
  
 +#if (__GNUC__ < 3) \
@@ -15,10 +940,145 @@ Index: configure
  int main() {
  
  ; return 0; }
+ EOF
+-if { (eval echo configure:7345: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:7381: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+   rm -rf conftest*
+   echo "$ac_t""yes" 1>&6; stage1_cflags="$stage1_cflags -fkeep-inline-functions"
+ else
+Index: libgomp/ChangeLog
+===================================================================
+--- libgomp/ChangeLog  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libgomp/ChangeLog  (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1,3 +1,10 @@
++2007-06-21  Jakub Jelinek  <jakub@redhat.com>
++
++      PR middle-end/32362
++      * testsuite/libgomp.c/pr32362-1.c: New test.
++      * testsuite/libgomp.c/pr32362-2.c: New test.
++      * testsuite/libgomp.c/pr32362-3.c: New test.
++
+ 2007-05-13  Release Manager
+       * GCC 4.2.0 released.
+Index: libgomp/testsuite/libgomp.c/pr32362-1.c
+===================================================================
+--- libgomp/testsuite/libgomp.c/pr32362-1.c    (.../tags/gcc_4_2_0_release)    (revision 0)
++++ libgomp/testsuite/libgomp.c/pr32362-1.c    (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -0,0 +1,32 @@
++/* PR middle-end/32362 */
++/* { dg-do run } */
++/* { dg-options "-O2" } */
++
++#include <omp.h>
++#include <stdlib.h>
++
++int
++main ()
++{
++  int n[4] = { -1, -1, -1, -1 };
++  static int a = 2, b = 4;
++  omp_set_num_threads (4);
++  omp_set_dynamic (0);
++  omp_set_nested (1);
++#pragma omp parallel private(b)
++  {
++    b = omp_get_thread_num ();
++#pragma omp parallel firstprivate(a)
++    {
++      a = (omp_get_thread_num () + a) + 1;
++      if (b == omp_get_thread_num ())
++      n[omp_get_thread_num ()] = a + (b << 4);
++    }
++  }
++  if (n[0] != 3)
++    abort ();
++  if (n[3] != -1
++      && (n[1] != 0x14 || n[2] != 0x25 || n[3] != 0x36))
++    abort ();
++  return 0;
++}
+Index: libgomp/testsuite/libgomp.c/pr32362-3.c
+===================================================================
+--- libgomp/testsuite/libgomp.c/pr32362-3.c    (.../tags/gcc_4_2_0_release)    (revision 0)
++++ libgomp/testsuite/libgomp.c/pr32362-3.c    (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -0,0 +1,34 @@
++/* PR middle-end/32362 */
++/* { dg-do run } */
++/* { dg-options "-O2" } */
++
++#include <omp.h>
++#include <stdlib.h>
++
++int a = 2;
++
++int
++main ()
++{
++  int n[4] = { -1, -1, -1, -1 };
++  int b = 4;
++  omp_set_num_threads (4);
++  omp_set_dynamic (0);
++  omp_set_nested (1);
++#pragma omp parallel private(b)
++  {
++    b = omp_get_thread_num ();
++#pragma omp parallel firstprivate(a)
++    {
++      a = (omp_get_thread_num () + a) + 1;
++      if (b == omp_get_thread_num ())
++      n[omp_get_thread_num ()] = a + (b << 4);
++    }
++  }
++  if (n[0] != 3)
++    abort ();
++  if (n[3] != -1
++      && (n[1] != 0x14 || n[2] != 0x25 || n[3] != 0x36))
++    abort ();
++  return 0;
++}
+Index: libgomp/testsuite/libgomp.c/pr32362-2.c
+===================================================================
+--- libgomp/testsuite/libgomp.c/pr32362-2.c    (.../tags/gcc_4_2_0_release)    (revision 0)
++++ libgomp/testsuite/libgomp.c/pr32362-2.c    (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -0,0 +1,33 @@
++/* PR middle-end/32362 */
++/* { dg-do run } */
++/* { dg-options "-O2" } */
++
++#include <omp.h>
++#include <stdlib.h>
++
++int a = 2, b = 4;
++
++int
++main ()
++{
++  int n[4] = { -1, -1, -1, -1 };
++  omp_set_num_threads (4);
++  omp_set_dynamic (0);
++  omp_set_nested (1);
++#pragma omp parallel private(b)
++  {
++    b = omp_get_thread_num ();
++#pragma omp parallel firstprivate(a)
++    {
++      a = (omp_get_thread_num () + a) + 1;
++      if (b == omp_get_thread_num ())
++      n[omp_get_thread_num ()] = a + (b << 4);
++    }
++  }
++  if (n[0] != 3)
++    abort ();
++  if (n[3] != -1
++      && (n[1] != 0x14 || n[2] != 0x25 || n[3] != 0x36))
++    abort ();
++  return 0;
++}
 Index: gcc/tree-vrp.c
 ===================================================================
---- gcc/tree-vrp.c     (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/tree-vrp.c     (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/tree-vrp.c     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/tree-vrp.c     (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -195,7 +195,28 @@
              || operand_equal_p (val, TYPE_MIN_VALUE (TREE_TYPE (val)), 0)));
  }
@@ -150,7 +1210,16 @@ Index: gcc/tree-vrp.c
    else
      set_value_range_to_varying (&vr0);
  
-@@ -2393,7 +2409,10 @@
+@@ -2091,6 +2107,8 @@
+             && is_gimple_val (new_max)
+             && tree_int_cst_equal (new_min, orig_min)
+             && tree_int_cst_equal (new_max, orig_max)
++            && (!is_overflow_infinity (new_min)
++                || !is_overflow_infinity (new_max))
+             && compare_values (new_min, new_max) <= 0
+             && compare_values (new_min, new_max) >= -1)
+           {
+@@ -2393,7 +2411,10 @@
         its type may be different from _Bool.  Convert VAL to EXPR's
         type.  */
        val = fold_convert (TREE_TYPE (expr), val);
@@ -162,7 +1231,7 @@ Index: gcc/tree-vrp.c
      }
    else
      set_value_range_to_varying (vr);
-@@ -2424,7 +2443,7 @@
+@@ -2424,7 +2445,7 @@
    else if (TREE_CODE_CLASS (code) == tcc_comparison)
      extract_range_from_comparison (vr, expr);
    else if (is_gimple_min_invariant (expr))
@@ -171,7 +1240,7 @@ Index: gcc/tree-vrp.c
    else
      set_value_range_to_varying (vr);
  
-@@ -2545,6 +2564,13 @@
+@@ -2545,6 +2566,13 @@
              if (compare_values (min, max) == 1)
                return;
            }
@@ -185,7 +1254,7 @@ Index: gcc/tree-vrp.c
        }
        else
        {
-@@ -2557,13 +2583,62 @@
+@@ -2557,13 +2585,62 @@
              if (compare_values (min, max) == 1)
                return;
            }
@@ -248,7 +1317,7 @@ Index: gcc/tree-vrp.c
  /* Given two numeric value ranges VR0, VR1 and a comparison code COMP:
     
     - Return BOOLEAN_TRUE_NODE if VR0 COMP VR1 always returns true for
-@@ -4156,7 +4231,7 @@
+@@ -4156,7 +4233,7 @@
        t = retval = NULL_TREE;
        EXECUTE_IF_SET_IN_BITMAP (e2, 0, i2, bi2)
        {
@@ -257,7 +1326,7 @@ Index: gcc/tree-vrp.c
  
          value_range_t vr2 = *(vr_value[i2]);
  
-@@ -4773,7 +4848,8 @@
+@@ -4773,7 +4850,8 @@
              if (vrp_val_is_max (vr_result.max))
                goto varying;
  
@@ -267,7 +1336,7 @@ Index: gcc/tree-vrp.c
                vr_result.min = TYPE_MIN_VALUE (TREE_TYPE (vr_result.min));
              else if (supports_overflow_infinity (TREE_TYPE (vr_result.min)))
                vr_result.min =
-@@ -4791,7 +4867,8 @@
+@@ -4791,7 +4869,8 @@
              if (vrp_val_is_min (vr_result.min))
                goto varying;
  
@@ -277,7 +1346,7 @@ Index: gcc/tree-vrp.c
                vr_result.max = TYPE_MAX_VALUE (TREE_TYPE (vr_result.max));
              else if (supports_overflow_infinity (TREE_TYPE (vr_result.max)))
                vr_result.max =
-@@ -4971,6 +5048,8 @@
+@@ -4971,6 +5050,8 @@
        {
          tree one = build_int_cst (TREE_TYPE (op0), 1);
          max = fold_build2 (MINUS_EXPR, TREE_TYPE (op0), max, one);
@@ -286,7 +1355,7 @@ Index: gcc/tree-vrp.c
        }
      }
    else if (cond_code == GE_EXPR || cond_code == GT_EXPR)
-@@ -4984,6 +5063,8 @@
+@@ -4984,6 +5065,8 @@
        {
          tree one = build_int_cst (TREE_TYPE (op0), 1);
          min = fold_build2 (PLUS_EXPR, TREE_TYPE (op0), min, one);
@@ -297,15 +1366,38 @@ Index: gcc/tree-vrp.c
  
 Index: gcc/DATESTAMP
 ===================================================================
---- gcc/DATESTAMP      (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/DATESTAMP      (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/DATESTAMP      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/DATESTAMP      (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1 +1 @@
 -20070514
-+20070609
++20070625
+Index: gcc/reload.c
+===================================================================
+--- gcc/reload.c       (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/reload.c       (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1180,7 +1180,7 @@
+   /* If IN appears in OUT, we can't share any input-only reload for IN.  */
+   if (in != 0 && out != 0 && MEM_P (out)
+-      && (REG_P (in) || MEM_P (in))
++      && (REG_P (in) || MEM_P (in) || GET_CODE (in) == PLUS)
+       && reg_overlap_mentioned_for_reload_p (in, XEXP (out, 0)))
+     dont_share = 1;
+@@ -6540,7 +6540,8 @@
+       if (REG_P (in))
+       return 0;
+       else if (GET_CODE (in) == PLUS)
+-      return (reg_overlap_mentioned_for_reload_p (x, XEXP (in, 0))
++      return (rtx_equal_p (x, in)
++              || reg_overlap_mentioned_for_reload_p (x, XEXP (in, 0))
+               || reg_overlap_mentioned_for_reload_p (x, XEXP (in, 1)));
+       else return (reg_overlap_mentioned_for_reload_p (XEXP (x, 0), in)
+                  || reg_overlap_mentioned_for_reload_p (XEXP (x, 1), in));
 Index: gcc/pointer-set.c
 ===================================================================
---- gcc/pointer-set.c  (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/pointer-set.c  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/pointer-set.c  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/pointer-set.c  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -22,13 +22,12 @@
  #include "system.h"
  #include "pointer-set.h"
@@ -529,8 +1621,8 @@ Index: gcc/pointer-set.c
 +}
 Index: gcc/pointer-set.h
 ===================================================================
---- gcc/pointer-set.h  (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/pointer-set.h  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/pointer-set.h  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/pointer-set.h  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -22,11 +22,21 @@
  #define POINTER_SET_H
  
@@ -556,8 +1648,8 @@ Index: gcc/pointer-set.h
  #endif  /* POINTER_SET_H  */
 Index: gcc/fold-const.c
 ===================================================================
---- gcc/fold-const.c   (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/fold-const.c   (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/fold-const.c   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/fold-const.c   (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -4450,13 +4450,24 @@
        {
          low = range_successor (high1);
@@ -617,17 +1709,117 @@ Index: gcc/fold-const.c
      }
  
    /* We don't know sign of `t', so be conservative and return false.  */
+Index: gcc/omp-low.c
+===================================================================
+--- gcc/omp-low.c      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/omp-low.c      (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1505,9 +1505,9 @@
+   for (up = ctx->outer, t = NULL; up && t == NULL; up = up->outer)
+     t = maybe_lookup_decl (decl, up);
+-  gcc_assert (t);
++  gcc_assert (t || is_global_var (decl));
+-  return t;
++  return t ? t : decl;
+ }
 Index: gcc/DEV-PHASE
 ===================================================================
---- gcc/DEV-PHASE      (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/DEV-PHASE      (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/DEV-PHASE      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/DEV-PHASE      (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1 @@
 +prerelease
 Index: gcc/ChangeLog
 ===================================================================
---- gcc/ChangeLog      (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/ChangeLog      (.../branches/gcc-4_2-branch)   (wersja 125589)
-@@ -1,3 +1,201 @@
+--- gcc/ChangeLog      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/ChangeLog      (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1,3 +1,285 @@
++2007-06-21  H.J. Lu  <hongjiu.lu@intel.com>
++
++      * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_VEC_EXT_V16QI.
++      (ix86_init_mmx_sse_builtins): Add __builtin_ia32_vec_ext_v16qi.
++      (ix86_expand_builtin): Handle IX86_BUILTIN_VEC_EXT_V16QI.
++
++2007-06-21  Jakub Jelinek  <jakub@redhat.com>
++
++      PR middle-end/32362
++      * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL,
++      but decl is a global var, instead return decl.
++      * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses
++      even for is_global_var decls, if they are private in some outer
++      context.
++
++2007-06-21  Uros Bizjak  <ubizjak@gmail.com>
++
++      PR target/32389
++      * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
++      * config/i386/i386.c (assign_386_stack_local): Assert that
++      SLOT_VIRTUAL is valid only before virtual regs are instantiated.
++      (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
++      Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
++      * config/i386/i386.md (truncdfsf2, truncxfsf2, truncxfdf2): Ditto.
++
++2007-06-20  Jakub Jelinek  <jakub@redhat.com>
++
++      PR inline-asm/32109
++      * gimplify.c (gimplify_asm_expr): Issue error if type is addressable
++      and !allows_mem.
++
++      PR middle-end/32285
++      * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments
++      if ACCUMULATE_OUTGOING_ARGS.
++
++2007-06-20  Kaz Kojima  <kkojima@gcc.gnu.org>
++
++      PR rtl-optimization/28011
++      Backport from mainline.
++      * reload.c (push_reload): Set dont_share if IN appears in OUT
++      also when IN is a PLUS rtx.
++      (reg_overlap_mentioned_for_reload_p): Return true if X and IN
++      are same PLUS rtx.
++
++2007-06-19  Richard Guenther  <rguenther@suse.de>
++      Michael Matz  <matz@suse.de>
++
++      PR tree-optimization/30252
++      * tree-ssa-structalias.c (solution_set_add): Make sure to
++      preserve all relevant vars.
++      (handle_ptr_arith): Make sure to only handle positive
++      offsets.
++      (push_fields_onto_fieldstack): Create fields for empty
++      bases.
++
++2007-06-19  Jakub Jelinek  <jakub@redhat.com>
++
++      PR tree-optimization/32353
++      * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL.
++
++2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
++
++      * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the
++      return mode from the builtin itself.
++      (sparc_fold_builtin): Fix cast of zero constant.
++
++2007-06-15  Diego Novillo  <dnovillo@google.com>
++
++      PR 32327
++      * tree-ssa-operands.c (build_ssa_operands): Initially assume
++      that the statement does not take any addresses.
++
++2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
++
++      * config/sparc/sparc.c (sparc_override_options): Initialize
++      fpu mask correctly.
++
++2007-06-09  Ian Lance Taylor  <iant@google.com>
++
++      PR tree-optimization/32169
++      * tree-vrp.c (extract_range_from_unary_expr): For NOP_EXPR and
++      CONVERT_EXPR, check whether min and max both converted to an
++      overflow infinity representation.
++
 +2007-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
 +
 +      PR target/32163
@@ -829,7 +2021,7 @@ Index: gcc/ChangeLog
  2007-05-13  Release Manager
  
        * GCC 4.2.0 released.
-@@ -307,7 +505,8 @@
+@@ -307,7 +589,8 @@
  2007-04-03  Stuart Hastings  <stuart@apple.com>
  
        PR 31281
@@ -839,10 +2031,48 @@ Index: gcc/ChangeLog
        * cse.c (record_jump_equiv): Bail out on CCmode comparisons.
  
  2007-04-03  Jakub Jelinek  <jakub@redhat.com>
+Index: gcc/testsuite/gcc.c-torture/execute/20070614-1.c
+===================================================================
+--- gcc/testsuite/gcc.c-torture/execute/20070614-1.c   (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.c-torture/execute/20070614-1.c   (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -0,0 +1,33 @@
++extern void abort (void);
++
++_Complex v = 3.0 + 1.0iF;
++
++void
++foo (_Complex z, int *x)
++{
++  if (z != v)
++    abort ();
++}
++
++_Complex bar (_Complex z) __attribute__ ((pure));
++_Complex
++bar (_Complex z)
++{
++  return v;
++}
++
++int
++baz (void)
++{
++  int a, i;
++  for (i = 0; i < 6; i++)
++    foo (bar (1.0iF * i), &a);
++  return 0;
++}
++
++int
++main ()
++{
++  baz ();
++  return 0;
++}
 Index: gcc/testsuite/gcc.c-torture/execute/vrp-7.c
 ===================================================================
---- gcc/testsuite/gcc.c-torture/execute/vrp-7.c        (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gcc.c-torture/execute/vrp-7.c        (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gcc.c-torture/execute/vrp-7.c        (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.c-torture/execute/vrp-7.c        (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,20 @@
 +
 +void abort (void);
@@ -866,8 +2096,8 @@ Index: gcc/testsuite/gcc.c-torture/execute/vrp-7.c
 +}
 Index: gcc/testsuite/gcc.c-torture/execute/20070517-1.c
 ===================================================================
---- gcc/testsuite/gcc.c-torture/execute/20070517-1.c   (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gcc.c-torture/execute/20070517-1.c   (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gcc.c-torture/execute/20070517-1.c   (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.c-torture/execute/20070517-1.c   (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,41 @@
 +/* PR rtl-optimization/31691 */
 +/* Origin: Chi-Hua Chen <stephaniechc-gccbug@yahoo.com> */
@@ -910,10 +2140,32 @@ Index: gcc/testsuite/gcc.c-torture/execute/20070517-1.c
 +  example(10);
 +  return 0;
 +}
+Index: gcc/testsuite/gcc.c-torture/compile/pr32169.c
+===================================================================
+--- gcc/testsuite/gcc.c-torture/compile/pr32169.c      (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.c-torture/compile/pr32169.c      (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -0,0 +1,17 @@
++void f(char);
++static inline
++void * __memset_generic(char c)
++{
++  f(c);
++}
++int prepare_startup_playback_urb(
++     int b,
++     int c
++)
++{
++  char d;
++  if (b)
++    __memset_generic(c == ( 1) ? 0x80 : 0);
++  else
++    __memset_generic (c == ( 1) ? 0x80 : 0);
++}
 Index: gcc/testsuite/gcc.c-torture/compile/pr31953.c
 ===================================================================
---- gcc/testsuite/gcc.c-torture/compile/pr31953.c      (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gcc.c-torture/compile/pr31953.c      (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gcc.c-torture/compile/pr31953.c      (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.c-torture/compile/pr31953.c      (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,14 @@
 +struct WView
 +{
@@ -929,10 +2181,171 @@ Index: gcc/testsuite/gcc.c-torture/compile/pr31953.c
 +      view->hexedit_mode = !view->hexedit_mode;
 +    }
 +}
+Index: gcc/testsuite/gcc.target/sparc/combined-2.c
+===================================================================
+--- gcc/testsuite/gcc.target/sparc/combined-2.c        (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/testsuite/gcc.target/sparc/combined-2.c        (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1,7 +1,7 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mcpu=ultrasparc -mvis" } */
+-typedef char pixel __attribute__((vector_size(4)));
+-typedef char vec8 __attribute__((vector_size(8)));
++typedef unsigned char pixel __attribute__((vector_size(4)));
++typedef unsigned char vec8 __attribute__((vector_size(8)));
+ typedef short vec16 __attribute__((vector_size(8)));
+ vec16 foo (pixel a, pixel b) {
+Index: gcc/testsuite/gcc.target/sparc/fpmul.c
+===================================================================
+--- gcc/testsuite/gcc.target/sparc/fpmul.c     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/testsuite/gcc.target/sparc/fpmul.c     (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -2,9 +2,9 @@
+ /* { dg-options "-mcpu=ultrasparc -mvis" } */
+ typedef int vec32 __attribute__((vector_size(8)));
+ typedef short vec16 __attribute__((vector_size(8)));
+-typedef char pixel __attribute__((vector_size(4)));
++typedef unsigned char pixel __attribute__((vector_size(4)));
+ typedef short pixel16 __attribute__((vector_size(4)));
+-typedef char vec8 __attribute__((vector_size(8)));
++typedef unsigned char vec8 __attribute__((vector_size(8)));
+ vec16 foo1 (pixel a, vec16 b) {
+   return __builtin_vis_fmul8x16 (a, b);
+Index: gcc/testsuite/gcc.target/sparc/pdist.c
+===================================================================
+--- gcc/testsuite/gcc.target/sparc/pdist.c     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/testsuite/gcc.target/sparc/pdist.c     (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1,8 +1,7 @@
+ /* { dg-do compile } */
+ /* { dg-options "-mcpu=ultrasparc -mvis" } */
+-
+ typedef long long int64_t;
+-typedef char vec8 __attribute__((vector_size(8)));
++typedef unsigned char vec8 __attribute__((vector_size(8)));
+ int64_t foo (vec8 a, vec8 b) {
+   int64_t d = 0;
+Index: gcc/testsuite/gcc.target/sparc/fexpand.c
+===================================================================
+--- gcc/testsuite/gcc.target/sparc/fexpand.c   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/testsuite/gcc.target/sparc/fexpand.c   (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1,7 +1,7 @@
+ /* { dg-do compile } */
+ /* { dg-options "-mcpu=ultrasparc -mvis" } */
+ typedef short vec16 __attribute__((vector_size(8)));
+-typedef char vec8 __attribute__((vector_size(4)));
++typedef unsigned char vec8 __attribute__((vector_size(4)));
+ vec16 foo (vec8 a) {
+   return __builtin_vis_fexpand (a);
+Index: gcc/testsuite/gcc.target/sparc/fnot.c
+===================================================================
+--- gcc/testsuite/gcc.target/sparc/fnot.c      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/testsuite/gcc.target/sparc/fnot.c      (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1,8 +1,8 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O -mcpu=ultrasparc -mvis" } */
+-typedef char  vec8 __attribute__((vector_size(8)));
++typedef unsigned char vec8 __attribute__((vector_size(8)));
+ typedef short vec16 __attribute__((vector_size(8)));
+-typedef int   vec32 __attribute__((vector_size(8)));
++typedef int vec32 __attribute__((vector_size(8)));
+ extern vec8 foo1_8(void);
+ extern void foo2_8(vec8);
+@@ -21,7 +21,7 @@
+ #endif
+ extern vec16 foo1_16(void);
+-extern void foo2_16(vec8);
++extern void foo2_16(vec16);
+ vec16 fun16(void)
+@@ -38,7 +38,7 @@
+ #endif
+ extern vec32 foo1_32(void);
+-extern void foo2_32(vec8);
++extern void foo2_32(vec32);
+ vec32 fun32(void)
+ {
+Index: gcc/testsuite/gcc.target/sparc/mfpu.c
+===================================================================
+--- gcc/testsuite/gcc.target/sparc/mfpu.c      (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.target/sparc/mfpu.c      (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -0,0 +1,11 @@
++/* Reported by Peter A. Krauss <peter.a.krauss@web.de> */
++
++/* { dg-do compile } */
++/* { dg-options "-mfpu" } */
++
++float square(float x)
++{
++  return x * x;
++}
++
++/* { dg-final { scan-assembler "fmuls" } } */
+Index: gcc/testsuite/gcc.target/sparc/noresult.c
+===================================================================
+--- gcc/testsuite/gcc.target/sparc/noresult.c  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/testsuite/gcc.target/sparc/noresult.c  (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1,7 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-options "-mcpu=ultrasparc -mvis" } */
+ typedef short vec16 __attribute__((vector_size(8)));
+-typedef char vec8 __attribute__((vector_size(4)));
+ void foo (vec16 a) {
+   __builtin_vis_fpack16 (a);
+Index: gcc/testsuite/gcc.target/sparc/fpmerge.c
+===================================================================
+--- gcc/testsuite/gcc.target/sparc/fpmerge.c   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/testsuite/gcc.target/sparc/fpmerge.c   (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1,7 +1,7 @@
+ /* { dg-do compile } */
+ /* { dg-options "-mcpu=ultrasparc -mvis" } */
+-typedef char pixel __attribute__((vector_size(8)));
+-typedef char vec8 __attribute__((vector_size(4)));
++typedef unsigned char pixel __attribute__((vector_size(8)));
++typedef unsigned char vec8 __attribute__((vector_size(4)));
+ pixel foo (vec8 a, vec8 b) {
+   return __builtin_vis_fpmerge (a, b);
+Index: gcc/testsuite/gcc.target/sparc/align.c
+===================================================================
+--- gcc/testsuite/gcc.target/sparc/align.c     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/testsuite/gcc.target/sparc/align.c     (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1,10 +1,9 @@
+ /* { dg-do compile } */
+ /* { dg-options "-mcpu=ultrasparc -mvis" } */
+-
+ typedef long long int64_t;
+ typedef int vec32 __attribute__((vector_size(8)));
+ typedef short vec16 __attribute__((vector_size(8)));
+-typedef char vec8 __attribute__((vector_size(8)));
++typedef unsigned char vec8 __attribute__((vector_size(8)));
+ vec16 foo1 (vec16 a, vec16 b) {
+   return __builtin_vis_faligndatav4hi (a, b);
+Index: gcc/testsuite/gcc.target/sparc/fpack16.c
+===================================================================
+--- gcc/testsuite/gcc.target/sparc/fpack16.c   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/testsuite/gcc.target/sparc/fpack16.c   (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1,7 +1,7 @@
+ /* { dg-do compile } */
+ /* { dg-options "-mcpu=ultrasparc -mvis" } */
+ typedef short vec16 __attribute__((vector_size(8)));
+-typedef char vec8 __attribute__((vector_size(4)));
++typedef unsigned char vec8 __attribute__((vector_size(4)));
+ vec8 foo (vec16 a) {
+   return __builtin_vis_fpack16 (a);
 Index: gcc/testsuite/gcc.target/i386/sse2-vec-3.c
 ===================================================================
---- gcc/testsuite/gcc.target/i386/sse2-vec-3.c (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gcc.target/i386/sse2-vec-3.c (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gcc.target/i386/sse2-vec-3.c (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.target/i386/sse2-vec-3.c (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,37 @@
 +/* { dg-do run { target i?86-*-* x86_64-*-* } } */
 +/* { dg-options "-O2 -msse2" } */
@@ -971,10 +2384,25 @@ Index: gcc/testsuite/gcc.target/i386/sse2-vec-3.c
 +    if (res[i] != val1.i [masks[i]])
 +      abort ();
 +}
+Index: gcc/testsuite/gcc.target/i386/pr32389.c
+===================================================================
+--- gcc/testsuite/gcc.target/i386/pr32389.c    (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.target/i386/pr32389.c    (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -0,0 +1,10 @@
++/* Testcase by Mike Frysinger <vapier@gentoo.org>  */
++
++/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
++/* { dg-options "-msse" } */
++
++double f1();
++int f2() {
++  __builtin_ia32_stmxcsr();
++  return f1();
++}
 Index: gcc/testsuite/gcc.target/i386/pr31167.c
 ===================================================================
---- gcc/testsuite/gcc.target/i386/pr31167.c    (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gcc.target/i386/pr31167.c    (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gcc.target/i386/pr31167.c    (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.target/i386/pr31167.c    (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,20 @@
 +/* { dg-do compile { target x86_64-*-* } } */
 +/* { dg-options "-O" } */
@@ -998,8 +2426,8 @@ Index: gcc/testsuite/gcc.target/i386/pr31167.c
 +}
 Index: gcc/testsuite/gcc.target/i386/sse2-vec-4.c
 ===================================================================
---- gcc/testsuite/gcc.target/i386/sse2-vec-4.c (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gcc.target/i386/sse2-vec-4.c (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gcc.target/i386/sse2-vec-4.c (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.target/i386/sse2-vec-4.c (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,41 @@
 +/* { dg-do run { target i?86-*-* x86_64-*-* } } */
 +/* { dg-options "-O2 -msse2" } */
@@ -1044,8 +2472,8 @@ Index: gcc/testsuite/gcc.target/i386/sse2-vec-4.c
 +}
 Index: gcc/testsuite/gcc.target/i386/sse2-check.h
 ===================================================================
---- gcc/testsuite/gcc.target/i386/sse2-check.h (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gcc.target/i386/sse2-check.h (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gcc.target/i386/sse2-check.h (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.target/i386/sse2-check.h (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,20 @@
 +#include <stdio.h>
 +#include <stdlib.h>
@@ -1069,8 +2497,8 @@ Index: gcc/testsuite/gcc.target/i386/sse2-check.h
 +}
 Index: gcc/testsuite/gcc.target/i386/sse2-vec-1.c
 ===================================================================
---- gcc/testsuite/gcc.target/i386/sse2-vec-1.c (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gcc.target/i386/sse2-vec-1.c (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gcc.target/i386/sse2-vec-1.c (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.target/i386/sse2-vec-1.c (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,35 @@
 +/* { dg-do run { target i?86-*-* x86_64-*-* } } */
 +/* { dg-options "-O2 -msse2" } */
@@ -1109,8 +2537,8 @@ Index: gcc/testsuite/gcc.target/i386/sse2-vec-1.c
 +}
 Index: gcc/testsuite/gcc.target/i386/sse2-vec-5.c
 ===================================================================
---- gcc/testsuite/gcc.target/i386/sse2-vec-5.c (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gcc.target/i386/sse2-vec-5.c (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gcc.target/i386/sse2-vec-5.c (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.target/i386/sse2-vec-5.c (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,49 @@
 +/* { dg-do run { target i?86-*-* x86_64-*-* } } */
 +/* { dg-options "-O2 -msse2" } */
@@ -1163,8 +2591,8 @@ Index: gcc/testsuite/gcc.target/i386/sse2-vec-5.c
 +}
 Index: gcc/testsuite/gcc.target/i386/sse2-vec-2.c
 ===================================================================
---- gcc/testsuite/gcc.target/i386/sse2-vec-2.c (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gcc.target/i386/sse2-vec-2.c (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gcc.target/i386/sse2-vec-2.c (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.target/i386/sse2-vec-2.c (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,35 @@
 +/* { dg-do run { target i?86-*-* x86_64-*-* } } */
 +/* { dg-options "-O2 -msse2" } */
@@ -1203,8 +2631,8 @@ Index: gcc/testsuite/gcc.target/i386/sse2-vec-2.c
 +}
 Index: gcc/testsuite/gcc.target/i386/sse2-vec-6.c
 ===================================================================
---- gcc/testsuite/gcc.target/i386/sse2-vec-6.c (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gcc.target/i386/sse2-vec-6.c (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gcc.target/i386/sse2-vec-6.c (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.target/i386/sse2-vec-6.c (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,69 @@
 +/* { dg-do run { target i?86-*-* x86_64-*-* } } */
 +/* { dg-options "-O2 -msse2" } */
@@ -1277,8 +2705,8 @@ Index: gcc/testsuite/gcc.target/i386/sse2-vec-6.c
 +}
 Index: gcc/testsuite/gcc.dg/Wstrict-overflow-18.c
 ===================================================================
---- gcc/testsuite/gcc.dg/Wstrict-overflow-18.c (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gcc.dg/Wstrict-overflow-18.c (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gcc.dg/Wstrict-overflow-18.c (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.dg/Wstrict-overflow-18.c (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,22 @@
 +/* { dg-do compile } */
 +/* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow" } */
@@ -1304,8 +2732,8 @@ Index: gcc/testsuite/gcc.dg/Wstrict-overflow-18.c
 +}
 Index: gcc/testsuite/gcc.dg/Wstrict-overflow-19.c
 ===================================================================
---- gcc/testsuite/gcc.dg/Wstrict-overflow-19.c (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gcc.dg/Wstrict-overflow-19.c (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gcc.dg/Wstrict-overflow-19.c (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gcc.dg/Wstrict-overflow-19.c (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,15 @@
 +/* { dg-do compile } */
 +/* { dg-options "-fstrict-overflow -O2 -Wstrict-overflow" } */
@@ -1324,9 +2752,75 @@ Index: gcc/testsuite/gcc.dg/Wstrict-overflow-19.c
 +}
 Index: gcc/testsuite/ChangeLog
 ===================================================================
---- gcc/testsuite/ChangeLog    (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/testsuite/ChangeLog    (.../branches/gcc-4_2-branch)   (wersja 125589)
-@@ -1,3 +1,124 @@
+--- gcc/testsuite/ChangeLog    (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/testsuite/ChangeLog    (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1,3 +1,190 @@
++2007-06-21  Uros Bizjak  <ubizjak@gmail.com>
++
++      PR target/32389
++      * gcc.target/i386/pr32389.c New test.
++
++2007-06-20  Daniel Franke  <franke.daniel@gmail.com>
++
++      Backport from trunk:
++      PR fortran/32002
++      * gfortran.dg/compliant_elemental_intrinsics_2.f90: New test.
++
++2007-06-20  Jakub Jelinek  <jakub@redhat.com>
++
++      PR inline-asm/32109
++      * g++.dg/ext/asm10.C: New test.
++
++      PR middle-end/32285
++      * gcc.c-torture/execute/20070614-1.c: New test.
++
++2007-06-20  Paul Thomas  <pault@gcc.gnu.org>
++
++      PR fortran/32302
++      * gfortran.dg/common_resize_1.f90: New test.
++
++2007-06-19  Richard Guenther  <rguenther@suse.de>
++      Michael Matz  <matz@suse.de>
++
++      PR tree-optimization/30252
++      * g++.dg/opt/pr30252.C: New testcase.
++
++2007-06-19  Jakub Jelinek  <jakub@redhat.com>
++
++      PR tree-optimization/32353
++      * g++.dg/opt/nrv13.C: New test.
++
++2007-06-15  Mark Mitchell  <mark@codesourcery.com>
++
++      * g++.dg/lookup/anon6.C: New test.
++
++2007-06-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
++
++      * gcc.target/sparc/align.c: Use 'unsigned char' as element type.
++      * gcc.target/sparc/combined-2.c: Likewise.
++      * gcc.target/sparc/fexpand.c : Likewise.
++      * gcc.target/sparc/fnot.c: Likewise.  Fix a couple of prototypes.
++      * gcc.target/sparc/fpack16.c : Likewise.
++      * gcc.target/sparc/fpmerge.c : Likewise.
++      * gcc.target/sparc/fpmul.c : Likewise.
++      * gcc.target/sparc/noresult.c : Likewise.
++      * gcc.target/sparc/pdist.c: Likewise.
++
++2007-06-15  Diego Novillo  <dnovillo@google.com>
++
++      PR 32327
++      * g++.dg/tree-ssa/pr32327-1.C: New test.
++      * g++.dg/tree-ssa/pr32327.C: New test.
++
++2007-06-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
++
++      * gcc.target/sparc/mfpu.c: New test.
++
++2007-06-09  Ian Lance Taylor  <iant@google.com>
++
++      PR tree-optimization/32169
++      * gcc.c-torture/compile/pr32169.c: New test.
++
 +2007-06-08  Dirk Mueller  <dmueller@suse.de>
 +
 +      PR c++/31809
@@ -1453,8 +2947,8 @@ Index: gcc/testsuite/ChangeLog
        * GCC 4.2.0 released.
 Index: gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_bitops.f90
 ===================================================================
---- gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_bitops.f90        (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_bitops.f90        (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_bitops.f90        (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_bitops.f90        (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -8,7 +8,8 @@
     i = 2
     j = 3
@@ -1472,10 +2966,174 @@ Index: gcc/testsuite/gfortran.fortran-torture/execute/intrinsic_bitops.f90
 +   if (ishftc (a, 1, bit_size(a)) .ne. 10) call abort
 +   if (ishftc (1, 1, 32) .ne. 2) call abort
  end program
+Index: gcc/testsuite/g++.dg/tree-ssa/pr32327-1.C
+===================================================================
+--- gcc/testsuite/g++.dg/tree-ssa/pr32327-1.C  (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/g++.dg/tree-ssa/pr32327-1.C  (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -0,0 +1,70 @@
++// { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } }
++// { dg-options "-O2" }
++
++// Endian sensitive.  This is a little-endian redux.
++
++typedef long long int64;
++typedef unsigned long long uint64;
++typedef __SIZE_TYPE__ size_t;
++
++extern "C" {
++extern void *memcpy (void *__restrict __dest,
++      __const void *__restrict __src, size_t __n) /*throw ()*/;
++extern void abort (void);
++}
++
++inline uint64 Swap64(uint64 ull) {
++ uint64 b0 = (ull >>  0) & 0xff;
++ uint64 b1 = (ull >>  8) & 0xff;
++ uint64 b2 = (ull >> 16) & 0xff;
++ uint64 b3 = (ull >> 24) & 0xff;
++ uint64 b4 = (ull >> 32) & 0xff;
++ uint64 b5 = (ull >> 40) & 0xff;
++ uint64 b6 = (ull >> 48) & 0xff;
++ uint64 b7 = (ull >> 56) & 0xff;
++ return (b0 << 56) | (b1 << 48) | (b2 << 40) | (b3 << 32) |
++        (b4 << 24) | (b5 << 16) | (b6 <<  8) | (b7 <<  0);
++}
++
++inline void KeyFromUint64(uint64 ull, unsigned char* key) {
++ uint64 ull_swap = Swap64(ull);
++ memcpy(key, &ull_swap, sizeof(uint64));
++}
++
++inline int64 int64_from_double(const double& source) {
++ int64 dest;
++ memcpy(&dest, &source, sizeof(dest));
++ return dest;
++}
++
++void KeyFromDouble(double x, unsigned char* key) __attribute__ ((noinline));
++void KeyFromDouble(double x, unsigned char* key) {
++ int64 n = int64_from_double(x);
++ if (n >= 0) {
++   n += 1ull << 63;
++ } else {
++   n = -n;
++ }
++ KeyFromUint64(n, key);
++}
++
++
++void TestKeyFromDouble(uint64 ull) {
++ double d;
++ memcpy(&d, &ull, sizeof(d));
++
++ unsigned char key[sizeof(uint64)];
++ unsigned char expected_key[sizeof(uint64)] = { 0x81, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
++
++ KeyFromDouble(d, key);
++
++ for (size_t i = 0; i < sizeof(key); ++i) {
++   if ((key[i] & 0xff) != expected_key[i])
++     abort ();
++ }
++}
++
++int main() {
++ TestKeyFromDouble(0x0123456789abcdefull);
++ return 0;
++}
+Index: gcc/testsuite/g++.dg/tree-ssa/pr32327.C
+===================================================================
+--- gcc/testsuite/g++.dg/tree-ssa/pr32327.C    (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/g++.dg/tree-ssa/pr32327.C    (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -0,0 +1,84 @@
++// { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } }
++// { dg-options "-O2" }
++
++typedef unsigned long long uint64;
++typedef __SIZE_TYPE__ size_t;
++
++extern "C" {
++extern void *memcpy (void *__restrict __dest,
++      __const void *__restrict __src, size_t __n) /*throw ()*/;
++extern void abort (void);
++}
++
++extern void foo (void* p);
++
++inline uint64
++ghtonll(uint64 x)
++{
++ // __r is allocated the same stack slot as dest below
++ union { unsigned long long int __ll;
++         unsigned long int __l[2]; } __w, __r;
++ __w.__ll = x;
++ __r.__l[0] = (
++   {
++     register unsigned int __v;
++     __asm__ __volatile__ ("bswap %0" : "=r" (__v) :
++                           "0" ((unsigned int) (__w.__l[1])));
++     __v; });
++
++ __r.__l[1] = (
++   {
++     register unsigned int __v;
++     __asm__ __volatile__ ("bswap %0" : "=r" (__v) :
++                           "0" ((unsigned int) (__w.__l[0])));
++     __v; });
++
++ return __r.__ll;
++}
++
++inline uint64
++double_2_uint64 (const double *source)
++{
++ uint64 dest;  // allocated the same stack slot as __r above
++ memcpy(&dest, source, sizeof(dest));
++ return dest;
++}
++
++inline void
++KeyFromUint64(uint64 fp) {
++ uint64 norder;
++ norder = ghtonll (fp);
++ foo((char*)(&norder));
++}
++
++void
++KeyFromDouble(double x) {
++ uint64 n = double_2_uint64 (&x);
++ if (n >= 42) {
++   n += 1;
++ }
++
++ KeyFromUint64(n);
++}
++
++#define NUM           0x0123456789abcdefll
++#define EXPECTED      0xe0bc9a7856347243ll
++
++void foo (void *x)
++{
++  if (*((uint64 *)x) != (uint64) EXPECTED)
++    abort ();
++}
++
++int main ()
++{
++  if (sizeof (double) != sizeof (uint64))
++    return 0;
++
++  if (sizeof (uint64) == sizeof (unsigned long int))
++    return 0;
++
++  KeyFromDouble ((double)NUM);
++
++  return 0;
++}
 Index: gcc/testsuite/g++.dg/conversion/enum1.C
 ===================================================================
---- gcc/testsuite/g++.dg/conversion/enum1.C    (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/g++.dg/conversion/enum1.C    (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/g++.dg/conversion/enum1.C    (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/g++.dg/conversion/enum1.C    (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,10 @@
 +// { dg-do run }
 +// { dg-options "-O2 -finline-functions" }
@@ -1487,10 +3145,29 @@ Index: gcc/testsuite/g++.dg/conversion/enum1.C
 +bool valid(E v) { return v >= E_MIN && v <= E_MAX; }
 +
 +int main() { return valid(E(2)); }
+Index: gcc/testsuite/g++.dg/ext/asm10.C
+===================================================================
+--- gcc/testsuite/g++.dg/ext/asm10.C   (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/g++.dg/ext/asm10.C   (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -0,0 +1,14 @@
++// PR inline-asm/32109
++// { dg-do compile }
++// { dg-options "-O2" }
++
++struct A { int i[3]; ~A (); };
++struct A a;
++struct B { struct A c; int i; B (); } b;
++
++B::B ()
++{
++  __asm ("" : : "r" (a));     // { dg-error "impossible constraint|non-memory input" }
++  __asm ("" : : "r" (b.c));   // { dg-error "impossible constraint|non-memory input" }
++  __asm ("" : : "r" (c));     // { dg-error "impossible constraint|non-memory input" }
++}
 Index: gcc/testsuite/g++.dg/gomp/pr31769.C
 ===================================================================
---- gcc/testsuite/g++.dg/gomp/pr31769.C        (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/g++.dg/gomp/pr31769.C        (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/g++.dg/gomp/pr31769.C        (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/g++.dg/gomp/pr31769.C        (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,61 @@
 +// PR tree-optimization/31769
 +// { dg-options "-O2 -fopenmp" }
@@ -1553,10 +3230,241 @@ Index: gcc/testsuite/g++.dg/gomp/pr31769.C
 +  {
 +  }
 +}
+Index: gcc/testsuite/g++.dg/opt/pr30252.C
+===================================================================
+--- gcc/testsuite/g++.dg/opt/pr30252.C (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/g++.dg/opt/pr30252.C (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -0,0 +1,226 @@
++/* { dg-do run } */
++/* { dg-options "-O -fstrict-aliasing" } */
++
++extern "C" void abort (void);
++namespace sigc {
++  template <class T_type>
++  struct type_trait
++  {
++    typedef T_type& pass;
++    typedef const T_type& take;
++    typedef T_type* pointer;
++  };
++  template <class T_base, class T_derived>
++  struct is_base_and_derived
++  {
++    struct big {
++      char memory[64];
++    };
++    static big is_base_class_(...);
++    static char is_base_class_(typename type_trait<T_base>::pointer);
++    static const bool value =
++    sizeof(is_base_class_(reinterpret_cast<typename type_trait<T_derived>::pointer>(0))) ==
++    sizeof(char);
++  };
++  struct nil;
++  struct functor_base {};
++  template <class T_functor, bool I_derives_functor_base=is_base_and_derived<functor_base,T_functor>::value>
++  struct functor_trait
++  {
++  };
++  template <class T_functor>
++  struct functor_trait<T_functor,true>
++  {
++    typedef typename T_functor::result_type result_type;
++    typedef T_functor functor_type;
++  };
++  template <class T_arg1, class T_return>
++  class pointer_functor1 : public functor_base
++  {
++    typedef T_return (*function_type)(T_arg1);
++    function_type func_ptr_;
++  public:
++    typedef T_return result_type;
++    explicit pointer_functor1(function_type _A_func): func_ptr_(_A_func) {}
++    T_return operator()(typename type_trait<T_arg1>::take _A_a1) const
++    { return func_ptr_(_A_a1); }
++  };
++  template <class T_arg1, class T_return>
++  inline pointer_functor1<T_arg1, T_return>
++  ptr_fun1(T_return (*_A_func)(T_arg1))
++  { return pointer_functor1<T_arg1, T_return>(_A_func); }
++  struct adaptor_base : public functor_base {};
++  template <class T_functor,
++    class T_arg1=void,
++    bool I_derives_adaptor_base=is_base_and_derived<adaptor_base,T_functor>::value>
++  struct deduce_result_type
++  { typedef typename functor_trait<T_functor>::result_type type; };
++  template <class T_functor>
++  struct adaptor_functor : public adaptor_base
++  {
++    template <class T_arg1=void>
++    struct deduce_result_type
++    { typedef typename sigc::deduce_result_type<T_functor, T_arg1>::type type; };
++    typedef typename functor_trait<T_functor>::result_type result_type;
++    result_type
++    operator()() const;
++    template <class T_arg1>
++    typename deduce_result_type<T_arg1>::type
++    operator()(T_arg1 _A_arg1) const
++    { return functor_(_A_arg1); }
++    explicit adaptor_functor(const T_functor& _A_functor)
++      : functor_(_A_functor)
++    {}
++    mutable T_functor functor_;
++  };
++  template <class T_functor>
++  typename adaptor_functor<T_functor>::result_type
++  adaptor_functor<T_functor>::operator()() const
++  { return functor_(); }
++  template <class T_functor, bool I_isadaptor = is_base_and_derived<adaptor_base, T_functor>::value> struct adaptor_trait;
++  template <class T_functor>
++  struct adaptor_trait<T_functor, true>
++  {
++    typedef T_functor adaptor_type;
++  };
++  template <class T_functor>
++  struct adaptor_trait<T_functor, false>
++  {
++    typedef typename functor_trait<T_functor>::functor_type functor_type;
++    typedef adaptor_functor<functor_type> adaptor_type;
++  };
++  template <class T_functor>
++  struct adapts : public adaptor_base
++  {
++    typedef typename adaptor_trait<T_functor>::adaptor_type adaptor_type;
++    explicit adapts(const T_functor& _A_functor)
++      : functor_(_A_functor)
++    {}
++    mutable adaptor_type functor_;
++  };
++  template <class T_type>
++  struct reference_wrapper
++  {
++  };
++  template <class T_type>
++  struct unwrap_reference
++  {
++    typedef T_type type;
++  };
++  template <class T_type>
++  class bound_argument
++  {
++  public:
++    bound_argument(const T_type& _A_argument)
++      : visited_(_A_argument)
++    {}
++    inline T_type& invoke()
++    { return visited_; }
++    T_type visited_;
++  };
++  template <class T_wrapped>
++  class bound_argument< reference_wrapper<T_wrapped> >
++  {
++  };
++  template <int I_location, class T_functor, class T_type1=nil>
++  struct bind_functor;
++  template <class T_functor, class T_type1>
++  struct bind_functor<-1, T_functor, T_type1> : public adapts<T_functor>
++  {
++    typedef typename adapts<T_functor>::adaptor_type adaptor_type;
++    typedef typename adaptor_type::result_type result_type;
++    result_type
++    operator()()
++    {
++      return this->functor_.template operator()<typename type_trait<typename unwrap_reference<T_type1>::type>::pass> (bound1_.invoke());
++    }
++    bind_functor(typename type_trait<T_functor>::take _A_func, typename type_trait<T_type1>::take _A_bound1)
++      : adapts<T_functor>(_A_func), bound1_(_A_bound1)
++    {}
++    bound_argument<T_type1> bound1_;
++  };
++  template <class T_type1, class T_functor>
++  inline bind_functor<-1, T_functor,
++                    T_type1>
++  bind(const T_functor& _A_func, T_type1 _A_b1)
++  { return bind_functor<-1, T_functor,
++      T_type1>
++      (_A_func, _A_b1);
++  }
++  namespace internal {
++    struct slot_rep;
++    typedef void* (*hook)(slot_rep *);
++    struct slot_rep
++    {
++      hook call_;
++    };
++  }
++  class slot_base : public functor_base
++  {
++  public:
++    typedef internal::slot_rep rep_type;
++    explicit slot_base(rep_type* rep)
++      : rep_(rep)
++    {
++    }
++    mutable rep_type *rep_;
++  };
++  namespace internal {
++    template <class T_functor>
++    struct typed_slot_rep : public slot_rep
++    {
++      typedef typename adaptor_trait<T_functor>::adaptor_type adaptor_type;
++      adaptor_type functor_;
++      inline typed_slot_rep(const T_functor& functor)
++      : functor_(functor)
++      {
++      }
++    };
++    template<class T_functor>
++    struct slot_call0
++    {
++      static void *call_it(slot_rep* rep)
++      {
++      typedef typed_slot_rep<T_functor> typed_slot;
++      typed_slot *typed_rep = static_cast<typed_slot*>(rep);
++      return (typed_rep->functor_)();
++      }
++      static hook address()
++      {
++      return &call_it;
++      }
++    };
++  }
++
++  class slot0 : public slot_base
++  {
++  public:
++    typedef void * (*call_type)(rep_type*);
++    inline void *operator()() const
++    {
++      return slot_base::rep_->call_ (slot_base::rep_);
++    }
++    template <class T_functor>
++    slot0(const T_functor& _A_func)
++      : slot_base(new internal::typed_slot_rep<T_functor>(_A_func))
++    {
++      slot_base::rep_->call_ = internal::slot_call0<T_functor>::address();
++    }
++  };
++}
++struct A
++{
++  static void *foo (void *p) { return p; }
++  typedef sigc::slot0 C;
++  C bar();
++};
++A::C A::bar ()
++{
++  return sigc::bind (sigc::ptr_fun1 (&A::foo), (void*)0);
++}
++int main (void)
++{
++  A a;
++  if (a.bar ()() != 0)
++    abort ();
++}
 Index: gcc/testsuite/g++.dg/opt/static5.C
 ===================================================================
---- gcc/testsuite/g++.dg/opt/static5.C (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/g++.dg/opt/static5.C (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/g++.dg/opt/static5.C (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/g++.dg/opt/static5.C (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,29 @@
 +// PR c++/31809
 +// { dg-do run }
@@ -1587,10 +3495,73 @@ Index: gcc/testsuite/g++.dg/opt/static5.C
 +    abort ();
 +  return 0;
 +}
+Index: gcc/testsuite/g++.dg/opt/nrv13.C
+===================================================================
+--- gcc/testsuite/g++.dg/opt/nrv13.C   (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/g++.dg/opt/nrv13.C   (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -0,0 +1,42 @@
++// PR tree-optimization/32353
++// { dg-do run }
++// { dg-options "-O2" }
++
++extern "C" void abort ();
++
++struct A
++{
++  int f;
++  A (int x) : f (x) {}
++};
++
++A
++foo (const A &x, const A &y)
++{
++  A r (0);
++  r = x.f == -111 ? y : (y.f == -111 || x.f > y.f) ? x : y;
++  A s (0);
++  r = r.f == -111 ? s : (r.f > s.f) ? r : s;
++  return r;
++}
++
++int
++main ()
++{
++  if (foo (A (0), A (1)).f != 1)
++    abort ();
++  if (foo (A (1), A (9)).f != 9)
++    abort ();
++  if (foo (A (9), A (1)).f != 9)
++    abort ();
++  if (foo (A (-4), A (-5)).f != 0)
++    abort ();
++  if (foo (A (-111), A (-111)).f != 0)
++    abort ();
++  if (foo (A (2), A (-111)).f != 2)
++    abort ();
++  if (foo (A (-111), A (6)).f != 6)
++    abort ();
++  if (foo (A (-111), A (-4)).f != 0)
++    abort ();
++}
+Index: gcc/testsuite/g++.dg/lookup/anon6.C
+===================================================================
+--- gcc/testsuite/g++.dg/lookup/anon6.C        (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/g++.dg/lookup/anon6.C        (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -0,0 +1,11 @@
++extern int v1; // { dg-error "declared" }
++static union { int v1; }; // { dg-error "redeclaration" } 
++
++static union { int v2; }; // { dg-error "declared" }
++extern int v2; // { dg-error "redeclaration" } 
++
++int v3; // { dg-error "declared" }
++static union { int v3; }; // { dg-error "redeclaration" } 
++
++static union { int v4; }; // { dg-error "declared" }
++static union { int v4; }; // { dg-error "redeclaration" } 
 Index: gcc/testsuite/gfortran.dg/char_length_5.f90
 ===================================================================
---- gcc/testsuite/gfortran.dg/char_length_5.f90        (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gfortran.dg/char_length_5.f90        (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gfortran.dg/char_length_5.f90        (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gfortran.dg/char_length_5.f90        (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,61 @@
 +! { dg-do run }
 +! Tests the fix for PR31867, in which the interface evaluation
@@ -1655,8 +3626,8 @@ Index: gcc/testsuite/gfortran.dg/char_length_5.f90
 +! { dg-final { cleanup-modules "util_mod" } }
 Index: gcc/testsuite/gfortran.dg/array_reference_1.f90
 ===================================================================
---- gcc/testsuite/gfortran.dg/array_reference_1.f90    (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gfortran.dg/array_reference_1.f90    (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gfortran.dg/array_reference_1.f90    (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gfortran.dg/array_reference_1.f90    (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,35 @@
 +! { dg-do run }
 +! Tests the fix for PR31994, aka 31867, in which the offset
@@ -1695,8 +3666,8 @@ Index: gcc/testsuite/gfortran.dg/array_reference_1.f90
 +END program main
 Index: gcc/testsuite/gfortran.dg/reshape_transpose_1.f90
 ===================================================================
---- gcc/testsuite/gfortran.dg/reshape_transpose_1.f90  (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gfortran.dg/reshape_transpose_1.f90  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gfortran.dg/reshape_transpose_1.f90  (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gfortran.dg/reshape_transpose_1.f90  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,18 @@
 +! { dg-do run }
 +! PR 31196 - reshape of transposed derived types generated
@@ -1716,10 +3687,191 @@ Index: gcc/testsuite/gfortran.dg/reshape_transpose_1.f90
 +  write (unit=line2, fmt="(4I4)") (/ 1, 3, 2, 4 /)
 +  if (line1 /= line2) call abort
 +END program main
+Index: gcc/testsuite/gfortran.dg/common_resize_1.f
+===================================================================
+--- gcc/testsuite/gfortran.dg/common_resize_1.f        (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gfortran.dg/common_resize_1.f        (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -0,0 +1,176 @@
++c { dg-do run }
++c { dg-options "-std=legacy" }
++c
++c Tests the fix for PR32302, in which the resizing of 'aux32' would cause
++c misalignment for double precision types and a wrong result would be obtained
++c at any level of optimization except none.
++c
++c Contributed by Dale Ranta <dir@lanl.gov> 
++c
++      subroutine unpki(ixp,nwcon,nmel)
++      parameter(lnv=32)
++      implicit double precision (a-h,o-z)                                    dp
++c
++c     unpack connection data
++c
++      common/aux32/kka(lnv),kkb(lnv),kkc(lnv),
++     1 kk1(lnv),kk2(lnv),kk3(lnv),dxy(lnv),
++     2 dyx(lnv),dyz(lnv),dzy(lnv),dzx(lnv),
++     3 dxz(lnv),vx17(lnv),vx28(lnv),vx35(lnv),
++     4 vx46(lnv),vy17(lnv),vy28(lnv),
++     5 vy35(lnv),vy46(lnv),vz17(lnv),vz28(lnv),vz35(lnv),vz46(lnv)
++      common/aux33/ix1(lnv),ix2(lnv),ix3(lnv),ix4(lnv),ix5(lnv),
++     1             ix6(lnv),ix7(lnv),ix8(lnv),mxt(lnv)
++      dimension ixp(nwcon,*)
++c
++      return
++      end
++      subroutine prtal
++      parameter(lnv=32)
++      implicit double precision (a-h,o-z)                                    dp
++      common/aux8/
++     & x1(lnv),x2(lnv),x3(lnv),x4(lnv),
++     & x5(lnv),x6(lnv),x7(lnv),x8(lnv),
++     & y1(lnv),y2(lnv),y3(lnv),y4(lnv),
++     & y5(lnv),y6(lnv),y7(lnv),y8(lnv),
++     & z1(lnv),z2(lnv),z3(lnv),z4(lnv),
++     & z5(lnv),z6(lnv),z7(lnv),z8(lnv)
++      common/aux9/vlrho(lnv),det(lnv)
++      common/aux10/
++     1 px1(lnv),px2(lnv),px3(lnv),px4(lnv),
++     & px5(lnv),px6(lnv),px7(lnv),px8(lnv),
++     2 py1(lnv),py2(lnv),py3(lnv),py4(lnv),
++     & py5(lnv),py6(lnv),py7(lnv),py8(lnv),
++     3 pz1(lnv),pz2(lnv),pz3(lnv),pz4(lnv),
++     & pz5(lnv),pz6(lnv),pz7(lnv),pz8(lnv),
++     4 vx1(lnv),vx2(lnv),vx3(lnv),vx4(lnv),
++     5 vx5(lnv),vx6(lnv),vx7(lnv),vx8(lnv),
++     6 vy1(lnv),vy2(lnv),vy3(lnv),vy4(lnv),
++     7 vy5(lnv),vy6(lnv),vy7(lnv),vy8(lnv),
++     8 vz1(lnv),vz2(lnv),vz3(lnv),vz4(lnv),
++     9 vz5(lnv),vz6(lnv),vz7(lnv),vz8(lnv)
++      common/aux32/    ! { dg-warning "shall be of the same size" }
++     a a17(lnv),a28(lnv),dett(lnv),
++     1 aj1(lnv),aj2(lnv),aj3(lnv),aj4(lnv),
++     2 aj5(lnv),aj6(lnv),aj7(lnv),aj8(lnv),
++     3 aj9(lnv),x17(lnv),x28(lnv),x35(lnv),
++     4 x46(lnv),y17(lnv),y28(lnv),y35(lnv),
++     5 y46(lnv),z17(lnv),z28(lnv),z35(lnv),z46(lnv)
++      common/aux33/    ! { dg-warning "shall be of the same size" }
++     a ix1(lnv),ix2(lnv),ix3(lnv),ix4(lnv),ix5(lnv),
++     1             ix6(lnv),ix7(lnv),ix8(lnv),mxt(lnv),nmel
++      common/aux36/lft,llt
++      common/failu/sieu(lnv),failu(lnv)
++      common/sand1/ihf,ibemf,ishlf,itshf
++      dimension aj5968(lnv),aj6749(lnv),aj4857(lnv),aji1(lnv),aji2(lnv),
++     1          aji3(lnv),aji4(lnv),aji5(lnv),
++     1          aji6(lnv),aji7(lnv),aji8(lnv),aji9(lnv),aj12(lnv),
++     2          aj45(lnv),aj78(lnv),b17(lnv),b28(lnv),c17(lnv),c28(lnv)
++c
++      equivalence (x17,aj5968),(x28,aj6749),(x35,aj4857),(x46,aji1),
++     1 (y17,aji2),(y28,aji3),(y35,aji4),(y46,aji5),(z17,aji6),
++     2 (z28,aji7),(z35,aji8),(z46,aji9),(aj1,aj12),(aj2,aj45),
++     3 (aj3,aj78),(px1,b17),(px2,b28),(px3,c17),(px4,c28)
++      data o64th/0.0156250/
++c
++c     jacobian matrix
++c
++      do 10 i=lft,llt
++      x17(i)=x7(i)-x1(i)
++      x28(i)=x8(i)-x2(i)
++      x35(i)=x5(i)-x3(i)
++      x46(i)=x6(i)-x4(i)
++      y17(i)=y7(i)-y1(i)
++      y28(i)=y8(i)-y2(i)
++      y35(i)=y5(i)-y3(i)
++      y46(i)=y6(i)-y4(i)
++      z17(i)=z7(i)-z1(i)
++      z28(i)=z8(i)-z2(i)
++      z35(i)=z5(i)-z3(i)
++   10 z46(i)=z6(i)-z4(i)
++      do 20 i=lft,llt
++      aj1(i)=x17(i)+x28(i)-x35(i)-x46(i)
++      aj2(i)=y17(i)+y28(i)-y35(i)-y46(i)
++      aj3(i)=z17(i)+z28(i)-z35(i)-z46(i)
++      a17(i)=x17(i)+x46(i)
++      a28(i)=x28(i)+x35(i)
++      b17(i)=y17(i)+y46(i)
++      b28(i)=y28(i)+y35(i)
++      c17(i)=z17(i)+z46(i)
++   20 c28(i)=z28(i)+z35(i)
++      do 30 i=lft,llt
++      aj4(i)=a17(i)+a28(i)
++      aj5(i)=b17(i)+b28(i)
++      aj6(i)=c17(i)+c28(i)
++      aj7(i)=a17(i)-a28(i)
++      aj8(i)=b17(i)-b28(i)
++   30 aj9(i)=c17(i)-c28(i)
++c
++c     jacobian
++c
++      do 40 i=lft,llt
++      aj5968(i)=aj5(i)*aj9(i)-aj6(i)*aj8(i)
++      aj6749(i)=aj6(i)*aj7(i)-aj4(i)*aj9(i)
++   40 aj4857(i)=aj4(i)*aj8(i)-aj5(i)*aj7(i)
++      if (ihf.ne.1) then
++      do 50 i=lft,llt
++   50 det(i)=o64th*(aj1(i)*aj5968(i)+aj2(i)*aj6749(i)+aj3(i)*aj4857(i))
++      else
++      do 55 i=lft,llt
++      det(i)=o64th*(aj1(i)*aj5968(i)+aj2(i)*aj6749(i)+aj3(i)*aj4857(i))
++     1       *failu(i) + (1. - failu(i))
++   55 continue
++      endif
++      do 60 i=lft,llt
++   60 dett(i)=o64th/det(i)
++
++      if (det(lft) .ne. 1d0) call abort ()
++      if (det(llt) .ne. 1d0) call abort ()
++
++      return
++c
++      end
++      program main
++      parameter(lnv=32)
++      implicit double precision (a-h,o-z)                                    dp
++      common/aux8/
++     & x1(lnv),x2(lnv),x3(lnv),x4(lnv),
++     & x5(lnv),x6(lnv),x7(lnv),x8(lnv),
++     & y1(lnv),y2(lnv),y3(lnv),y4(lnv),
++     & y5(lnv),y6(lnv),y7(lnv),y8(lnv),
++     & z1(lnv),z2(lnv),z3(lnv),z4(lnv),
++     & z5(lnv),z6(lnv),z7(lnv),z8(lnv)
++      common/aux36/lft,llt
++      common/sand1/ihf,ibemf,ishlf,itshf
++      lft=1
++      llt=1
++      x1(1)=0
++      x2(1)=1
++      x3(1)=1
++      x4(1)=0
++      x5(1)=0
++      x6(1)=1
++      x7(1)=1
++      x8(1)=0
++
++      y1(1)=0
++      y2(1)=0
++      y3(1)=1
++      y4(1)=1
++      y5(1)=0
++      y6(1)=0
++      y7(1)=1
++      y8(1)=1
++
++      z1(1)=0
++      z2(1)=0
++      z3(1)=0
++      z4(1)=0
++      z5(1)=1
++      z6(1)=1
++      z7(1)=1
++      z8(1)=1
++      call prtal
++      stop
++      end
++
 Index: gcc/testsuite/gfortran.dg/fmt_colon.f90
 ===================================================================
---- gcc/testsuite/gfortran.dg/fmt_colon.f90    (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gfortran.dg/fmt_colon.f90    (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gfortran.dg/fmt_colon.f90    (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gfortran.dg/fmt_colon.f90    (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,14 @@
 +! { dg-do run }
 +! PR31395 Colon edit descriptor is ignored.
@@ -1735,11 +3887,11 @@ Index: gcc/testsuite/gfortran.dg/fmt_colon.f90
 + 20 format('i =',I2:' this should print',I2)
 +    if (astring.ne."i = 1 this should print 1") call abort
 +END PROGRAM test
-\ brakuje znaku koÅ„ca linii na koÅ„cu pliku 
+\ No newline at end of file
 Index: gcc/testsuite/gfortran.dg/char_result_13.f90
 ===================================================================
---- gcc/testsuite/gfortran.dg/char_result_13.f90       (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gfortran.dg/char_result_13.f90       (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gfortran.dg/char_result_13.f90       (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gfortran.dg/char_result_13.f90       (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,13 @@
 +! { dg-do compile }
 +! tests the fix for PR31540, in which the character lengths in
@@ -1754,10 +3906,59 @@ Index: gcc/testsuite/gfortran.dg/char_result_13.f90
 +        character ((129+7)) pfname2
 +        return
 +        end
+Index: gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f90
+===================================================================
+--- gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f90     (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f90     (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -0,0 +1,44 @@
++! { dg-compile }
++!
++! Testcases from PR32002.
++!
++PROGRAM test_pr32002
++
++  CALL test_1()                       ! scalar/vector
++  CALL test_2()                       ! vector/vector
++  CALL test_3()                       ! matrix/vector
++  CALL test_4()                       ! matrix/matrix
++
++CONTAINS
++  ELEMENTAL FUNCTION f(x)
++    INTEGER, INTENT(in) :: x
++    INTEGER :: f
++    f = x
++  END FUNCTION
++
++  SUBROUTINE test_1()
++    INTEGER :: a = 0, b(2) = 0
++    a = f(b)                          ! { dg-error "Incompatible ranks" }
++    b = f(a)                          ! ok, set all array elements to f(a)
++  END SUBROUTINE
++
++  SUBROUTINE test_2()
++    INTEGER :: a(2) = 0, b(3) = 0
++    a = f(b)                          ! { dg-error "different shape" }
++    a = f(b(1:2))                     ! ok, slice, stride 1
++    a = f(b(1:3:2))                   ! ok, slice, stride 2
++  END SUBROUTINE
++
++  SUBROUTINE test_3()
++    INTEGER :: a(4) = 0, b(2,2) = 0
++    a = f(b)                          ! { dg-error "Incompatible ranks" }
++    a = f(RESHAPE(b, (/ 4 /)))        ! ok, same shape
++  END SUBROUTINE
++
++  SUBROUTINE test_4()
++    INTEGER :: a(2,2) = 0, b(3,3) = 0
++    a = f(b)                          ! { dg-error "different shape" }
++    a = f(b(1:3, 1:2))                ! { dg-error "different shape" }
++    a = f(b(1:3:2, 1:3:2))            ! ok, same shape
++  END SUBROUTINE
++END PROGRAM
 Index: gcc/testsuite/gfortran.dg/altreturn_5.f90
 ===================================================================
---- gcc/testsuite/gfortran.dg/altreturn_5.f90  (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gfortran.dg/altreturn_5.f90  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gfortran.dg/altreturn_5.f90  (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gfortran.dg/altreturn_5.f90  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,30 @@
 +! { dg-do run }
 +! Tests the fix for PR31483, in which dummy argument procedures
@@ -1789,11 +3990,11 @@ Index: gcc/testsuite/gfortran.dg/altreturn_5.f90
 +      CALL PHLOAD (R, 2, res)
 +      if (res .ne. "two") call abort ()
 +      END
-\ brakuje znaku koÅ„ca linii na koÅ„cu pliku 
+\ No newline at end of file
 Index: gcc/testsuite/gfortran.dg/substr_4.f
 ===================================================================
---- gcc/testsuite/gfortran.dg/substr_4.f       (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gfortran.dg/substr_4.f       (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gfortran.dg/substr_4.f       (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gfortran.dg/substr_4.f       (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,69 @@
 +! { dg-do run }
 +      subroutine test_lower
@@ -1866,8 +4067,8 @@ Index: gcc/testsuite/gfortran.dg/substr_4.f
 +      end program test
 Index: gcc/testsuite/gfortran.dg/fmt_t_3.f90
 ===================================================================
---- gcc/testsuite/gfortran.dg/fmt_t_3.f90      (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gfortran.dg/fmt_t_3.f90      (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gfortran.dg/fmt_t_3.f90      (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gfortran.dg/fmt_t_3.f90      (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,15 @@
 +! { dg-do run }
 +! PR31051 bug with x and t format descriptors.
@@ -1886,8 +4087,8 @@ Index: gcc/testsuite/gfortran.dg/fmt_t_3.f90
 +end program t
 Index: gcc/testsuite/gfortran.dg/backspace_8.f
 ===================================================================
---- gcc/testsuite/gfortran.dg/backspace_8.f    (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gfortran.dg/backspace_8.f    (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gfortran.dg/backspace_8.f    (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gfortran.dg/backspace_8.f    (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,18 @@
 +C { dg-do run }
 +C PR libfortran/31618 - backspace after an error didn't work.
@@ -1909,8 +4110,8 @@ Index: gcc/testsuite/gfortran.dg/backspace_8.f
 +      end
 Index: gcc/testsuite/gfortran.dg/func_assign.f90
 ===================================================================
---- gcc/testsuite/gfortran.dg/func_assign.f90  (.../tags/gcc_4_2_0_release)    (wersja 0)
-+++ gcc/testsuite/gfortran.dg/func_assign.f90  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gfortran.dg/func_assign.f90  (.../tags/gcc_4_2_0_release)    (revision 0)
++++ gcc/testsuite/gfortran.dg/func_assign.f90  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -0,0 +1,33 @@
 +! { dg-do compile }
 +!
@@ -1947,19 +4148,89 @@ Index: gcc/testsuite/gfortran.dg/func_assign.f90
 +end
 Index: gcc/testsuite/gfortran.dg/unf_io_convert_3.f90
 ===================================================================
---- gcc/testsuite/gfortran.dg/unf_io_convert_3.f90     (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/testsuite/gfortran.dg/unf_io_convert_3.f90     (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/testsuite/gfortran.dg/unf_io_convert_3.f90     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/testsuite/gfortran.dg/unf_io_convert_3.f90     (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,4 +1,4 @@
 -! { dg-do run}
 +! { dg-do run }
  ! { dg-require-effective-target fortran_large_real }
  program main
    integer,parameter :: k = selected_real_kind (precision (0.0_8) + 1)
+Index: gcc/cp/class.c
+===================================================================
+--- gcc/cp/class.c     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/cp/class.c     (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -5350,22 +5350,34 @@
+       }
+       else if (TREE_CODE (TREE_TYPE (instance)) == REFERENCE_TYPE)
+       {
++        /* We only need one hash table because it is always left empty.  */
++        static htab_t ht;
++        if (!ht)
++          ht = htab_create (37, 
++                            htab_hash_pointer,
++                            htab_eq_pointer,
++                            /*htab_del=*/NULL);
++
+         /* Reference variables should be references to objects.  */
+         if (nonnull)
+           *nonnull = 1;
+-        /* DECL_VAR_MARKED_P is used to prevent recursion; a
++        /* Enter the INSTANCE in a table to prevent recursion; a
+            variable's initializer may refer to the variable
+            itself.  */
+         if (TREE_CODE (instance) == VAR_DECL
+             && DECL_INITIAL (instance)
+-            && !DECL_VAR_MARKED_P (instance))
++            && !htab_find (ht, instance))
+           {
+             tree type;
+-            DECL_VAR_MARKED_P (instance) = 1;
++            void **slot;
++
++            slot = htab_find_slot (ht, instance, INSERT);
++            *slot = instance;
+             type = fixed_type_or_null (DECL_INITIAL (instance),
+                                        nonnull, cdtorp);
+-            DECL_VAR_MARKED_P (instance) = 0;
++            htab_clear_slot (ht, slot);
++
+             return type;
+           }
+       }
 Index: gcc/cp/decl.c
 ===================================================================
---- gcc/cp/decl.c      (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/cp/decl.c      (.../branches/gcc-4_2-branch)   (wersja 125589)
-@@ -5368,7 +5368,18 @@
+--- gcc/cp/decl.c      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/cp/decl.c      (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -2161,8 +2161,24 @@
+     }
+   else if (toplevel_bindings_p () || DECL_NAMESPACE_SCOPE_P (newdecl))
+     {
+-      /* Objects declared at top level:  */
+-      /* If at least one is a reference, it's ok.  */
++      /* The objects have been declared at namespace scope.  If either
++       is a member of an anonymous union, then this is an invalid
++       redeclaration.  For example:
++
++         int i;
++         union { int i; };
++
++         is invalid.  */
++      if (DECL_ANON_UNION_VAR_P (newdecl)
++        || DECL_ANON_UNION_VAR_P (olddecl))
++      return "redeclaration of %q#D";
++      /* If at least one declaration is a reference, there is no
++       conflict.  For example:
++
++         int i = 3;
++         extern int i;
++
++       is valid.  */
+       if (DECL_EXTERNAL (newdecl) || DECL_EXTERNAL (olddecl))
+       return NULL;
+       /* Reject two definitions.  */
+@@ -5368,7 +5384,18 @@
             initializer.  It is not legal to redeclare a static data
             member, so this issue does not arise in that case.  */
          if (var_definition_p && TREE_STATIC (decl))
@@ -1979,11 +4250,50 @@ Index: gcc/cp/decl.c
        }
      }
  
+Index: gcc/cp/cp-tree.h
+===================================================================
+--- gcc/cp/cp-tree.h   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/cp/cp-tree.h   (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -107,7 +107,7 @@
+       DECL_IMPLICIT_TYPEDEF_P (in a TYPE_DECL)
+    3: DECL_IN_AGGR_P.
+    4: DECL_C_BIT_FIELD (in a FIELD_DECL)
+-      DECL_VAR_MARKED_P (in a VAR_DECL)
++      DECL_ANON_UNION_VAR_P (in a VAR_DECL)
+       DECL_SELF_REFERENCE_P (in a TYPE_DECL)
+       DECL_INVALID_OVERRIDER_P (in a FUNCTION_DECL)
+    5: DECL_INTERFACE_KNOWN.
+@@ -2111,10 +2111,10 @@
+   (DECL_LANG_SPECIFIC (VAR_TEMPL_TYPE_OR_FUNCTION_DECL_CHECK (NODE)) \
+    ->decl_flags.u.template_info)
+-/* For a VAR_DECL, indicates that the variable has been processed.
+-   This flag is set and unset throughout the code; it is always
+-   used for a temporary purpose.  */
+-#define DECL_VAR_MARKED_P(NODE) \
++/* For a VAR_DECL, indicates that the variable is actually a
++   non-static data member of anonymous union that has been promoted to
++   variable status.  */
++#define DECL_ANON_UNION_VAR_P(NODE) \
+   (DECL_LANG_FLAG_4 (VAR_DECL_CHECK (NODE)))
+ /* Template information for a RECORD_TYPE or UNION_TYPE.  */
 Index: gcc/cp/ChangeLog
 ===================================================================
---- gcc/cp/ChangeLog   (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/cp/ChangeLog   (.../branches/gcc-4_2-branch)   (wersja 125589)
-@@ -1,3 +1,18 @@
+--- gcc/cp/ChangeLog   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/cp/ChangeLog   (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1,3 +1,29 @@
++2007-06-15  Mark Mitchell  <mark@codesourcery.com>
++
++      * cp-tree.h (DECL_VAR_MARKED_P): Remove.
++      (DECL_ANON_UNION_VAR_P): New macro.
++      * class.c (fixed_type_or_null): Tidy.  Use a hash table, rather
++      than DECL_VAR_MARKED_P, to keep track of which variables we have
++      seen.
++      * decl.c (redeclaration_error_message): Complain about redeclaring
++      anonymous union members at namespace scope.
++      * decl2.c (build_anon_union_vars): Set DECL_ANON_UNION_VAR_P.
++
 +2007-06-08  Dirk Mueller  <dmueller@suse.de>
 +
 +      PR c++/31809
@@ -2002,10 +4312,22 @@ Index: gcc/cp/ChangeLog
  2007-05-13  Release Manager
  
        * GCC 4.2.0 released.
+Index: gcc/cp/decl2.c
+===================================================================
+--- gcc/cp/decl2.c     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/cp/decl2.c     (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1056,6 +1056,7 @@
+         tree base;
+         decl = build_decl (VAR_DECL, DECL_NAME (field), TREE_TYPE (field));
++        DECL_ANON_UNION_VAR_P (decl) = 1;
+         base = get_base_address (object);
+         TREE_PUBLIC (decl) = TREE_PUBLIC (base);
 Index: gcc/fortran/trans-expr.c
 ===================================================================
---- gcc/fortran/trans-expr.c   (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/fortran/trans-expr.c   (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/fortran/trans-expr.c   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/fortran/trans-expr.c   (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -255,6 +255,10 @@
      gfc_conv_string_parameter (se);
    else
@@ -2060,8 +4382,8 @@ Index: gcc/fortran/trans-expr.c
    fntype = TREE_TYPE (TREE_TYPE (se->expr));
 Index: gcc/fortran/trans-array.c
 ===================================================================
---- gcc/fortran/trans-array.c  (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/fortran/trans-array.c  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/fortran/trans-array.c  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/fortran/trans-array.c  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -4422,6 +4422,8 @@
  
        if (se->direct_byref)
@@ -2106,8 +4428,8 @@ Index: gcc/fortran/trans-array.c
          tmp = gfc_conv_descriptor_offset (parm);
 Index: gcc/fortran/gfortran.texi
 ===================================================================
---- gcc/fortran/gfortran.texi  (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/fortran/gfortran.texi  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/fortran/gfortran.texi  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/fortran/gfortran.texi  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -611,7 +611,7 @@
  to change the representation of data for unformatted files.
  The syntax for the @env{GFORTRAN_CONVERT_UNIT} variable is:
@@ -2130,11 +4452,50 @@ Index: gcc/fortran/gfortran.texi
  @c =====================================================================
  @c PART II: LANGUAGE REFERENCE
  @c =====================================================================
+Index: gcc/fortran/trans-common.c
+===================================================================
+--- gcc/fortran/trans-common.c (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/fortran/trans-common.c (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -359,14 +359,15 @@
+       tree size = TYPE_SIZE_UNIT (union_type);
+       if (tree_int_cst_lt (DECL_SIZE_UNIT (decl), size))
+         {
+-          /* Named common blocks of the same name shall be of the same size
+-             in all scoping units of a program in which they appear, but
+-             blank common blocks may be of different sizes.  */
+-          if (strcmp (com->name, BLANK_COMMON_NAME))
++        /* Named common blocks of the same name shall be of the same size
++           in all scoping units of a program in which they appear, but
++           blank common blocks may be of different sizes.  */
++        if (strcmp (com->name, BLANK_COMMON_NAME))
+           gfc_warning ("Named COMMON block '%s' at %L shall be of the "
+                        "same size", com->name, &com->where);
+-          DECL_SIZE_UNIT (decl) = size;
+-        }
++        DECL_SIZE_UNIT (decl) = size;
++        TREE_TYPE (decl) = union_type;
++      }
+      }
+   /* If this common block has been declared in a previous program unit,
 Index: gcc/fortran/ChangeLog
 ===================================================================
---- gcc/fortran/ChangeLog      (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/fortran/ChangeLog      (.../branches/gcc-4_2-branch)   (wersja 125589)
-@@ -1,3 +1,30 @@
+--- gcc/fortran/ChangeLog      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/fortran/ChangeLog      (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1,3 +1,43 @@
++2007-07-20  Daniel Franke  <franke.daniel@gmail.com>
++
++      Backport from trunk:
++      PR fortran/32002
++      * resolve.c (resolve_actual_arglist): Resolve actual argument after
++      being identified as variable.
++
++2007-06-20  Paul Thomas  <pault@gcc.gnu.org>
++
++      PR fortran/32302
++      * trans-common.c (build_common_decl): If resizing of common
++      decl is needed, update the TREE_TYPE.
++
 +2007-05-31  Paul Thomas  <pault@gcc.gnu.org>
 +
 +      PR fortran/31483
@@ -2167,9 +4528,23 @@ Index: gcc/fortran/ChangeLog
        * GCC 4.2.0 released.
 Index: gcc/fortran/resolve.c
 ===================================================================
---- gcc/fortran/resolve.c      (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/fortran/resolve.c      (.../branches/gcc-4_2-branch)   (wersja 125589)
-@@ -5742,6 +5742,11 @@
+--- gcc/fortran/resolve.c      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/fortran/resolve.c      (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1006,6 +1006,13 @@
+         e->ref->u.ar.as = sym->as;
+       }
++      /* Expressions are assigned a default ts.type of BT_PROCEDURE in
++       primary.c (match_actual_arg). If above code determines that it
++       is a  variable instead, it needs to be resolved as it was not
++       done at the beginning of this function.  */
++      if (gfc_resolve_expr (e) != SUCCESS)
++      return FAILURE;
++
+     argument_list:
+       /* Check argument list functions %VAL, %LOC and %REF.  There is
+        nothing to do for %REF.  */
+@@ -5742,6 +5749,11 @@
    if (sym->ts.type == BT_CHARACTER)
      {
        gfc_charlen *cl = sym->ts.cl;
@@ -2183,8 +4558,8 @@ Index: gcc/fortran/resolve.c
          if (sym->attr.proc == PROC_ST_FUNCTION)
 Index: gcc/fortran/primary.c
 ===================================================================
---- gcc/fortran/primary.c      (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/fortran/primary.c      (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/fortran/primary.c      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/fortran/primary.c      (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -2415,7 +2415,8 @@
  
      case FL_PROCEDURE:
@@ -2197,15 +4572,92 @@ Index: gcc/fortran/primary.c
             type may still have to be resolved.  */
 Index: gcc/BASE-VER
 ===================================================================
---- gcc/BASE-VER       (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/BASE-VER       (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/BASE-VER       (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/BASE-VER       (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1 +1 @@
 -4.2.0
 +4.2.1
+Index: gcc/gimplify.c
+===================================================================
+--- gcc/gimplify.c     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/gimplify.c     (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -4053,6 +4053,19 @@
+       parse_input_constraint (&constraint, 0, 0, noutputs, 0,
+                             oconstraints, &allows_mem, &allows_reg);
++      /* If we can't make copies, we can only accept memory.  */
++      if (TREE_ADDRESSABLE (TREE_TYPE (TREE_VALUE (link))))
++      {
++        if (allows_mem)
++          allows_reg = 0;
++        else
++          {
++            error ("impossible constraint in %<asm%>");
++            error ("non-memory input %d must stay in memory", i);
++            return GS_ERROR;
++          }
++      }
++
+       /* If the operand is a memory input, it should be an lvalue.  */
+       if (!allows_reg && allows_mem)
+       {
+@@ -4802,7 +4815,20 @@
+   else if (flags & GOVD_SHARED)
+     {
+       if (is_global_var (decl))
+-      return 0;
++      {
++        struct gimplify_omp_ctx *ctx = gimplify_omp_ctxp->outer_context;
++        while (ctx != NULL)
++          {
++            splay_tree_node on
++              = splay_tree_lookup (ctx->variables, (splay_tree_key) decl);
++            if (on && (on->value & (GOVD_FIRSTPRIVATE | GOVD_LASTPRIVATE
++                                    | GOVD_PRIVATE | GOVD_REDUCTION)) != 0)
++              break;
++            ctx = ctx->outer_context;
++          }
++        if (ctx == NULL)
++          return 0;
++      }
+       code = OMP_CLAUSE_SHARED;
+     }
+   else if (flags & GOVD_PRIVATE)
+Index: gcc/calls.c
+===================================================================
+--- gcc/calls.c        (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/calls.c        (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1238,13 +1238,25 @@
+   /* If this is a libcall, then precompute all arguments so that we do not
+      get extraneous instructions emitted as part of the libcall sequence.  */
+-  if ((flags & ECF_LIBCALL_BLOCK) == 0)
++
++  /* If we preallocated the stack space, and some arguments must be passed
++     on the stack, then we must precompute any parameter which contains a
++     function call which will store arguments on the stack.
++     Otherwise, evaluating the parameter may clobber previous parameters
++     which have already been stored into the stack.  (we have code to avoid
++     such case by saving the outgoing stack arguments, but it results in
++     worse code)  */
++  if ((flags & ECF_LIBCALL_BLOCK) == 0 && !ACCUMULATE_OUTGOING_ARGS)
+     return;
+   for (i = 0; i < num_actuals; i++)
+     {
+       enum machine_mode mode;
++      if ((flags & ECF_LIBCALL_BLOCK) == 0
++        && TREE_CODE (args[i].tree_value) != CALL_EXPR)
++      continue;
++
+       /* If this is an addressable type, we cannot pre-evaluate it.  */
+       gcc_assert (!TREE_ADDRESSABLE (TREE_TYPE (args[i].tree_value)));
 Index: gcc/except.c
 ===================================================================
---- gcc/except.c       (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/except.c       (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/except.c       (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/except.c       (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1005,7 +1005,11 @@
      for (prev_try = VEC_index (eh_region, cfun->eh->region_array, outer_region);
           prev_try && prev_try->type != ERT_TRY;
@@ -2221,8 +4673,8 @@ Index: gcc/except.c
       duplicate entire subtrees, all of the referenced regions will have
 Index: gcc/combine.c
 ===================================================================
---- gcc/combine.c      (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/combine.c      (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/combine.c      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/combine.c      (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -5341,14 +5341,14 @@
        }
        else if (GET_MODE (op0) == compare_mode && op1 == const0_rtx)
@@ -2245,8 +4697,8 @@ Index: gcc/combine.c
    else
 Index: gcc/Makefile.in
 ===================================================================
---- gcc/Makefile.in    (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/Makefile.in    (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/Makefile.in    (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/Makefile.in    (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1839,7 +1839,7 @@
  tree-ssa-structalias.o: tree-ssa-structalias.c tree-ssa-structalias.h \
     $(SYSTEM_H) $(CONFIG_H) $(GGC_H) $(TREE_H) $(TREE_FLOW_H) \
@@ -2258,8 +4710,8 @@ Index: gcc/Makefile.in
     toplev.h $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
 Index: gcc/tree-ssa-structalias.c
 ===================================================================
---- gcc/tree-ssa-structalias.c (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/tree-ssa-structalias.c (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/tree-ssa-structalias.c (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/tree-ssa-structalias.c (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -51,10 +51,11 @@
  #include "params.h"
  #include "tree-ssa-structalias.h"
@@ -2797,18 +5249,48 @@ Index: gcc/tree-ssa-structalias.c
    constraint_t found;
  
    if (vec == NULL)
-@@ -684,7 +714,7 @@
+@@ -678,30 +708,47 @@
+   bitmap result = BITMAP_ALLOC (&iteration_obstack);
+   unsigned int i;
+   bitmap_iterator bi;
++  unsigned HOST_WIDE_INT min = -1, max = 0;
++  /* Compute set of vars we can reach from set + offset.  */
++
+   EXECUTE_IF_SET_IN_BITMAP (set, 0, i, bi)
+     {
++      if (get_varinfo (i)->is_artificial_var
++        || get_varinfo (i)->has_union
++        || get_varinfo (i)->is_unknown_size_var)
++      continue;
++
++      if (get_varinfo (i)->offset + offset < min)
++      min = get_varinfo (i)->offset + offset;
++      if (get_varinfo (i)->offset + get_varinfo (i)->size + offset > max)
++      {
++        max = get_varinfo (i)->offset + get_varinfo (i)->size + offset;
++        if (max > get_varinfo (i)->fullsize)
++          max = get_varinfo (i)->fullsize;
++      }
++    }
++
++  EXECUTE_IF_SET_IN_BITMAP (set, 0, i, bi)
++    {
        /* If this is a properly sized variable, only add offset if it's
         less than end.  Otherwise, it is globbed to a single
         variable.  */
 -      
+-      if ((get_varinfo (i)->offset + offset) < get_varinfo (i)->fullsize)
 +
-       if ((get_varinfo (i)->offset + offset) < get_varinfo (i)->fullsize)
++      if (get_varinfo (i)->offset + get_varinfo (i)->size - 1 >= min
++        && get_varinfo (i)->offset < max)
        {
-         unsigned HOST_WIDE_INT fieldoffset = get_varinfo (i)->offset + offset;
-@@ -693,15 +723,15 @@
-           continue;
-         bitmap_set_bit (result, v->id);
+-        unsigned HOST_WIDE_INT fieldoffset = get_varinfo (i)->offset + offset;
+-        varinfo_t v = first_vi_for_offset (get_varinfo (i), fieldoffset);
+-        if (!v)
+-          continue;
+-        bitmap_set_bit (result, v->id);
++        bitmap_set_bit (result, i);
        }
 -      else if (get_varinfo (i)->is_artificial_var 
 +      else if (get_varinfo (i)->is_artificial_var
@@ -2825,7 +5307,7 @@ Index: gcc/tree-ssa-structalias.c
    BITMAP_FREE (result);
  }
  
-@@ -727,397 +757,149 @@
+@@ -727,397 +774,149 @@
      }
  }
  
@@ -3308,7 +5790,7 @@ Index: gcc/tree-ssa-structalias.c
      {
        return false;
      }
-@@ -1125,41 +907,15 @@
+@@ -1125,41 +924,15 @@
      {
        bool r = false;
  
@@ -3357,7 +5839,7 @@ Index: gcc/tree-ssa-structalias.c
        return r;
      }
  }
-@@ -1168,46 +924,51 @@
+@@ -1168,46 +941,51 @@
  /* Return true if {DEST.SRC} is an existing graph edge in GRAPH.  */
  
  static bool
@@ -3438,7 +5920,7 @@ Index: gcc/tree-ssa-structalias.c
    for (i = 0; VEC_iterate (constraint_t, constraints, i, c); i++)
      {
        struct constraint_expr lhs = c->lhs;
-@@ -1217,31 +978,92 @@
+@@ -1217,31 +995,92 @@
  
        if (lhs.type == DEREF)
        {
@@ -3546,7 +6028,7 @@ Index: gcc/tree-ssa-structalias.c
        }
      }
  }
-@@ -1260,20 +1082,20 @@
+@@ -1260,20 +1099,20 @@
  struct scc_info
  {
    sbitmap visited;
@@ -3572,7 +6054,7 @@ Index: gcc/tree-ssa-structalias.c
     The algorithm can be found in "On finding the strongly connected
     connected components in a directed graph" by Esko Nuutila and Eljas
     Soisalon-Soininen, in Information Processing Letters volume 49,
-@@ -1284,188 +1106,144 @@
+@@ -1284,188 +1123,144 @@
  {
    unsigned int i;
    bitmap_iterator bi;
@@ -3864,7 +6346,7 @@ Index: gcc/tree-ssa-structalias.c
  /* Information needed to compute the topological ordering of a graph.  */
  
  struct topo_info
-@@ -1509,37 +1287,24 @@
+@@ -1509,37 +1304,24 @@
  topo_visit (constraint_graph_t graph, struct topo_info *ti,
            unsigned int n)
  {
@@ -3906,7 +6388,7 @@ Index: gcc/tree-ssa-structalias.c
  type_safe (unsigned int n, unsigned HOST_WIDE_INT *offset)
  {
    varinfo_t ninfo = get_varinfo (n);
-@@ -1582,10 +1347,10 @@
+@@ -1582,10 +1364,10 @@
          v = first_vi_for_offset (get_varinfo (j), fieldoffset);
          if (!v)
            continue;
@@ -3919,7 +6401,7 @@ Index: gcc/tree-ssa-structalias.c
              bitmap_set_bit (sol, rhs);
              if (!TEST_BIT (changed, t))
                {
-@@ -1596,7 +1361,7 @@
+@@ -1596,7 +1378,7 @@
        }
        else if (0 && dump_file && !(get_varinfo (j)->is_special_var))
        fprintf (dump_file, "Untypesafe usage in do_da_constraint.\n");
@@ -3928,7 +6410,7 @@ Index: gcc/tree-ssa-structalias.c
      }
  }
  
-@@ -1607,7 +1372,7 @@
+@@ -1607,7 +1389,7 @@
  do_sd_constraint (constraint_graph_t graph, constraint_t c,
                  bitmap delta)
  {
@@ -3937,7 +6419,7 @@ Index: gcc/tree-ssa-structalias.c
    bool flag = false;
    bitmap sol = get_varinfo (lhs)->solution;
    unsigned int j;
-@@ -1620,7 +1385,7 @@
+@@ -1620,7 +1402,7 @@
         bitmap_set_bit (sol, anything_id);
       goto done;
     }
@@ -3946,7 +6428,7 @@ Index: gcc/tree-ssa-structalias.c
       an edge in the graph from j to x, and union Sol(j) into Sol(x).  */
    EXECUTE_IF_SET_IN_BITMAP (delta, 0, j, bi)
      {
-@@ -1634,18 +1399,18 @@
+@@ -1634,18 +1416,18 @@
          v = first_vi_for_offset (get_varinfo (j), fieldoffset);
          if (!v)
            continue;
@@ -3968,7 +6450,7 @@ Index: gcc/tree-ssa-structalias.c
      }
  
  done:
-@@ -1658,15 +1423,15 @@
+@@ -1658,15 +1440,15 @@
          SET_BIT (changed, lhs);
          changed_count++;
        }
@@ -3987,7 +6469,7 @@ Index: gcc/tree-ssa-structalias.c
    unsigned HOST_WIDE_INT roff = c->rhs.offset;
    bitmap sol = get_varinfo (rhs)->solution;
    unsigned int j;
-@@ -1685,8 +1450,8 @@
+@@ -1685,8 +1467,8 @@
         v = first_vi_for_offset (get_varinfo (j), fieldoffset);
         if (!v)
           continue;
@@ -3998,7 +6480,7 @@ Index: gcc/tree-ssa-structalias.c
         if (!bitmap_bit_p (get_varinfo (t)->solution, anything_id))
           {
             bitmap_set_bit (get_varinfo (t)->solution, anything_id);
-@@ -1705,40 +1470,39 @@
+@@ -1705,40 +1487,39 @@
    EXECUTE_IF_SET_IN_BITMAP (delta, 0, j, bi)
      {
        unsigned HOST_WIDE_INT loff = c->lhs.offset;
@@ -4055,7 +6537,7 @@ Index: gcc/tree-ssa-structalias.c
  static void
  do_complex_constraint (constraint_graph_t graph, constraint_t c, bitmap delta)
  {
-@@ -1752,33 +1516,62 @@
+@@ -1752,33 +1533,62 @@
        else
        {
          /* *x = y */
@@ -4126,7 +6608,7 @@ Index: gcc/tree-ssa-structalias.c
    return si;
  }
  
-@@ -1786,209 +1579,430 @@
+@@ -1786,209 +1596,430 @@
  
  static void
  free_scc_info (struct scc_info *si)
@@ -4705,7 +7187,7 @@ Index: gcc/tree-ssa-structalias.c
  /* Solve the constraint graph GRAPH using our worklist solver.
     This is based on the PW* family of solvers from the "Efficient Field
     Sensitive Pointer Analysis for C" paper.
-@@ -2001,17 +2015,28 @@
+@@ -2001,17 +2032,28 @@
  {
    unsigned int size = VEC_length (varinfo_t, varmap);
    unsigned int i;
@@ -4742,7 +7224,7 @@ Index: gcc/tree-ssa-structalias.c
    while (changed_count > 0)
      {
        unsigned int i;
-@@ -2019,41 +2044,45 @@
+@@ -2019,41 +2061,45 @@
        stats.iterations++;
  
        bitmap_obstack_initialize (&iteration_obstack);
@@ -4804,7 +7286,7 @@ Index: gcc/tree-ssa-structalias.c
              solution = get_varinfo (i)->solution;
              solution_empty = bitmap_empty_p (solution);
  
-@@ -2065,52 +2094,38 @@
+@@ -2065,52 +2111,38 @@
                     is a constraint where the lhs side is receiving
                     some set from elsewhere.  */
                  if (!solution_empty || c->lhs.type != DEREF)
@@ -4875,7 +7357,7 @@ Index: gcc/tree-ssa-structalias.c
                              changed_count++;
                            }
                        }
-@@ -2122,74 +2137,37 @@
+@@ -2122,74 +2154,37 @@
        bitmap_obstack_release (&iteration_obstack);
      }
  
@@ -4968,7 +7450,7 @@ Index: gcc/tree-ssa-structalias.c
  }
  
  /* Return a printable name for DECL  */
-@@ -2210,7 +2188,7 @@
+@@ -2210,7 +2205,7 @@
  
    if (TREE_CODE (decl) == SSA_NAME)
      {
@@ -4977,7 +7459,7 @@ Index: gcc/tree-ssa-structalias.c
                              alias_get_name (SSA_NAME_VAR (decl)),
                              SSA_NAME_VERSION (decl));
      }
-@@ -2226,21 +2204,17 @@
+@@ -2226,21 +2221,17 @@
    return res;
  }
  
@@ -5007,7 +7489,7 @@ Index: gcc/tree-ssa-structalias.c
  }
  
  /* Get a constraint expression from an SSA_VAR_P node.  */
-@@ -2254,14 +2228,14 @@
+@@ -2254,14 +2245,14 @@
  
    /* For parameters, get at the points-to set for the actual parm
       decl.  */
@@ -5026,7 +7508,7 @@ Index: gcc/tree-ssa-structalias.c
    /* If we determine the result is "anything", and we know this is readonly,
       say it points to readonly memory instead.  */
    if (cexpr.var == anything_id && TREE_READONLY (t))
-@@ -2269,7 +2243,7 @@
+@@ -2269,7 +2260,7 @@
        cexpr.type = ADDRESSOF;
        cexpr.var = readonly_id;
      }
@@ -5035,7 +7517,7 @@ Index: gcc/tree-ssa-structalias.c
    cexpr.offset = 0;
    return cexpr;
  }
-@@ -2290,7 +2264,13 @@
+@@ -2290,7 +2281,13 @@
      get_varinfo (lhs.var)->directly_dereferenced = true;
    if (rhs.type == DEREF)
      get_varinfo (rhs.var)->directly_dereferenced = true;
@@ -5050,7 +7532,7 @@ Index: gcc/tree-ssa-structalias.c
    /* ANYTHING == ANYTHING is pointless.  */
    if (lhs.var == anything_id && rhs.var == anything_id)
      return;
-@@ -2302,7 +2282,7 @@
+@@ -2302,7 +2299,7 @@
        t->lhs = t->rhs;
        t->rhs = rhs;
        process_constraint (t);
@@ -5059,7 +7541,7 @@ Index: gcc/tree-ssa-structalias.c
    /* This can happen in our IR with things like n->a = *p */
    else if (rhs.type == DEREF && lhs.type == DEREF && rhs.var != anything_id)
      {
-@@ -2312,33 +2292,19 @@
+@@ -2312,33 +2309,19 @@
        tree pointedtotype = TREE_TYPE (pointertype);
        tree tmpvar = create_tmp_var_raw (pointedtotype, "doubledereftmp");
        struct constraint_expr tmplhs = get_constraint_exp_from_ssa_var (tmpvar);
@@ -5097,7 +7579,7 @@ Index: gcc/tree-ssa-structalias.c
        VEC_safe_push (constraint_t, heap, constraints, t);
      }
  }
-@@ -2350,10 +2316,12 @@
+@@ -2350,10 +2333,12 @@
  could_have_pointers (tree t)
  {
    tree type = TREE_TYPE (t);
@@ -5112,7 +7594,7 @@ Index: gcc/tree-ssa-structalias.c
    return false;
  }
  
-@@ -2367,9 +2335,9 @@
+@@ -2367,9 +2352,9 @@
    if (TREE_CODE (DECL_FIELD_OFFSET (fdecl)) != INTEGER_CST
        || TREE_CODE (DECL_FIELD_BIT_OFFSET (fdecl)) != INTEGER_CST)
      return -1;
@@ -5125,7 +7607,7 @@ Index: gcc/tree-ssa-structalias.c
  }
  
  
-@@ -2388,7 +2356,7 @@
+@@ -2388,7 +2373,7 @@
      return true;
    if (accesspos < fieldpos && (accesspos + accesssize > fieldpos))
      return true;
@@ -5134,7 +7616,7 @@ Index: gcc/tree-ssa-structalias.c
    return false;
  }
  
-@@ -2411,20 +2379,20 @@
+@@ -2411,20 +2396,20 @@
    while (!SSA_VAR_P (forzero) && !CONSTANT_CLASS_P (forzero))
      forzero = TREE_OPERAND (forzero, 0);
  
@@ -5159,7 +7641,7 @@ Index: gcc/tree-ssa-structalias.c
       here.  */
    if (TREE_CODE (t) == STRING_CST)
      return;
-@@ -2438,21 +2406,21 @@
+@@ -2438,21 +2423,21 @@
    /* This can also happen due to weird offsetof type macros.  */
    if (TREE_CODE (t) != ADDR_EXPR && result->type == ADDRESSOF)
      result->type = SCALAR;
@@ -5184,7 +7666,7 @@ Index: gcc/tree-ssa-structalias.c
          varinfo_t curr;
          for (curr = get_varinfo (result->var); curr; curr = curr->next)
            {
-@@ -2495,6 +2463,7 @@
+@@ -2495,6 +2480,7 @@
  {
    struct constraint_expr *c;
    unsigned int i = 0;
@@ -5192,7 +7674,7 @@ Index: gcc/tree-ssa-structalias.c
    for (i = 0; VEC_iterate (ce_s, *constraints, i, c); i++)
      {
        if (c->type == SCALAR)
-@@ -2576,6 +2545,7 @@
+@@ -2576,6 +2562,7 @@
              tree pttype = TREE_TYPE (TREE_TYPE (t));
  
              get_constraint_for (exp, results);
@@ -5200,7 +7682,7 @@ Index: gcc/tree-ssa-structalias.c
              /* Make sure we capture constraints to all elements
                 of an array.  */
              if ((handled_component_p (exp)
-@@ -2588,7 +2558,7 @@
+@@ -2588,7 +2575,7 @@
  
                  if (VEC_length (ce_s, *results) == 0)
                    return;
@@ -5209,7 +7691,7 @@ Index: gcc/tree-ssa-structalias.c
                  gcc_assert (VEC_length (ce_s, *results) == 1);
                  origrhs = VEC_last (ce_s, *results);
                  tmp = *origrhs;
-@@ -2619,12 +2589,12 @@
+@@ -2619,12 +2606,12 @@
                      VEC_safe_push (ce_s, heap, *results, &tmp);
                    }
                }
@@ -5224,7 +7706,7 @@ Index: gcc/tree-ssa-structalias.c
                    c->type = ADDRESSOF;
                }
              return;
-@@ -2638,9 +2608,9 @@
+@@ -2638,9 +2625,9 @@
              {
                varinfo_t vi;
                tree heapvar = heapvar_lookup (t);
@@ -5236,7 +7718,7 @@ Index: gcc/tree-ssa-structalias.c
                    heapvar = create_tmp_var_raw (ptr_type_node, "HEAP");
                    DECL_EXTERNAL (heapvar) = 1;
                    if (referenced_vars)
-@@ -2650,7 +2620,7 @@
+@@ -2650,7 +2637,7 @@
  
                temp.var = create_variable_info_for (heapvar,
                                                     alias_get_name (heapvar));
@@ -5245,7 +7727,7 @@ Index: gcc/tree-ssa-structalias.c
                vi = get_varinfo (temp.var);
                vi->is_artificial_var = 1;
                vi->is_heap_var = 1;
-@@ -2712,7 +2682,7 @@
+@@ -2712,7 +2699,7 @@
          case NON_LVALUE_EXPR:
            {
              tree op = TREE_OPERAND (t, 0);
@@ -5254,7 +7736,7 @@ Index: gcc/tree-ssa-structalias.c
              /* Cast from non-pointer to pointers are bad news for us.
                 Anything else, we see through */
              if (!(POINTER_TYPE_P (TREE_TYPE (t))
-@@ -2738,7 +2708,7 @@
+@@ -2738,7 +2725,7 @@
        {
        switch (TREE_CODE (t))
          {
@@ -5263,7 +7745,7 @@ Index: gcc/tree-ssa-structalias.c
            {
              get_constraint_for (PHI_RESULT (t), results);
              return;
-@@ -2782,8 +2752,8 @@
+@@ -2782,8 +2769,8 @@
  
  
  /* Handle the structure copy case where we have a simple structure copy
@@ -5274,7 +7756,7 @@ Index: gcc/tree-ssa-structalias.c
     For each field of the lhs variable (lhsfield)
       For each field of the rhs variable at lhsfield.offset (rhsfield)
         add the constraint lhsfield = rhsfield
-@@ -2808,7 +2778,7 @@
+@@ -2808,7 +2795,7 @@
        struct constraint_expr temprhs = rhs;
        unsigned HOST_WIDE_INT fieldoffset;
  
@@ -5283,7 +7765,7 @@ Index: gcc/tree-ssa-structalias.c
        q = get_varinfo (temprhs.var);
        fieldoffset = p->offset - pstart;
        q = first_vi_for_offset (q, q->offset + fieldoffset);
-@@ -2823,8 +2793,8 @@
+@@ -2823,8 +2810,8 @@
  
  /* Handle the structure copy case where we have a  structure copy between a
     aggregate on the LHS and a dereference of a pointer on the RHS
@@ -5294,7 +7776,7 @@ Index: gcc/tree-ssa-structalias.c
     For each field of the lhs variable (lhsfield)
         rhs.offset = lhsfield->offset
         add the constraint lhsfield = rhs
-@@ -2849,12 +2819,12 @@
+@@ -2849,12 +2836,12 @@
  
  
        if (templhs.type == SCALAR)
@@ -5310,7 +7792,7 @@ Index: gcc/tree-ssa-structalias.c
        temprhs.offset += fieldoffset;
        process_constraint (new_constraint (templhs, temprhs));
      }
-@@ -2862,7 +2832,7 @@
+@@ -2862,7 +2849,7 @@
  
  /* Handle the structure copy case where we have a structure copy
     between a aggregate on the RHS and a dereference of a pointer on
@@ -5319,7 +7801,7 @@ Index: gcc/tree-ssa-structalias.c
  
     For each field of the rhs variable (rhsfield)
         lhs.offset = rhsfield->offset
-@@ -2888,12 +2858,12 @@
+@@ -2888,12 +2875,12 @@
  
  
        if (temprhs.type == SCALAR)
@@ -5335,7 +7817,7 @@ Index: gcc/tree-ssa-structalias.c
        templhs.offset += fieldoffset;
        process_constraint (new_constraint (templhs, temprhs));
      }
-@@ -2901,7 +2871,7 @@
+@@ -2901,7 +2888,7 @@
  
  /* Sometimes, frontends like to give us bad type information.  This
     function will collapse all the fields from VAR to the end of VAR,
@@ -5344,7 +7826,7 @@ Index: gcc/tree-ssa-structalias.c
     We return the variable they were collapsed into.  */
  
  static unsigned int
-@@ -2913,16 +2883,16 @@
+@@ -2913,16 +2900,16 @@
    for (field = currvar->next; field; field = field->next)
      {
        if (dump_file)
@@ -5364,7 +7846,7 @@ Index: gcc/tree-ssa-structalias.c
    return currvar->id;
  }
  
-@@ -2944,7 +2914,7 @@
+@@ -2944,7 +2931,7 @@
    gcc_assert (VEC_length (ce_s, rhsc) == 1);
    lhs = *(VEC_last (ce_s, lhsc));
    rhs = *(VEC_last (ce_s, rhsc));
@@ -5373,7 +7855,7 @@ Index: gcc/tree-ssa-structalias.c
    VEC_free (ce_s, heap, lhsc);
    VEC_free (ce_s, heap, rhsc);
  
-@@ -2955,7 +2925,7 @@
+@@ -2955,7 +2942,7 @@
        lhs = rhs;
        rhs = tmp;
      }
@@ -5382,7 +7864,7 @@ Index: gcc/tree-ssa-structalias.c
    /*  This is fairly conservative for the RHS == ADDRESSOF case, in that it's
        possible it's something we could handle.  However, most cases falling
        into this are dealing with transparent unions, which are slightly
-@@ -3021,11 +2991,11 @@
+@@ -3021,11 +3008,11 @@
        else
        lhssize = TREE_INT_CST_LOW (lhstypesize);
  
@@ -5397,7 +7879,7 @@ Index: gcc/tree-ssa-structalias.c
              lhs.var = collapse_rest_of_var (lhs.var);
              rhs.var = collapse_rest_of_var (rhs.var);
              lhs.offset = 0;
-@@ -3042,7 +3012,7 @@
+@@ -3042,7 +3029,7 @@
        else
        {
          tree pointedtotype = lhstype;
@@ -5406,7 +7888,7 @@ Index: gcc/tree-ssa-structalias.c
  
          gcc_assert (rhs.type == DEREF && lhs.type == DEREF);
          tmpvar = create_tmp_var_raw (pointedtotype, "structcopydereftmp");
-@@ -3052,6 +3022,7 @@
+@@ -3052,6 +3039,7 @@
      }
  }
  
@@ -5414,7 +7896,7 @@ Index: gcc/tree-ssa-structalias.c
  /* Update related alias information kept in AI.  This is used when
     building name tags, alias sets and deciding grouping heuristics.
     STMT is the statement to process.  This function also updates
-@@ -3261,7 +3232,6 @@
+@@ -3261,7 +3249,6 @@
      }
  }
  
@@ -5422,7 +7904,28 @@ Index: gcc/tree-ssa-structalias.c
  /* Handle pointer arithmetic EXPR when creating aliasing constraints.
     Expressions of the type PTR + CST can be handled in two ways:
  
-@@ -3307,6 +3277,7 @@
+@@ -3288,7 +3275,7 @@
+   unsigned int i = 0;
+   unsigned int j = 0;
+   VEC (ce_s, heap) *temp = NULL;
+-  unsigned int rhsoffset = 0;
++  unsigned HOST_WIDE_INT rhsoffset = 0;
+   if (TREE_CODE (expr) != PLUS_EXPR
+       && TREE_CODE (expr) != MINUS_EXPR)
+@@ -3299,14 +3286,18 @@
+   get_constraint_for (op0, &temp);
+   if (POINTER_TYPE_P (TREE_TYPE (op0))
+-      && TREE_CODE (op1) == INTEGER_CST
++      && host_integerp (op1, 1)
+       && TREE_CODE (expr) == PLUS_EXPR)
+     {
++      if ((TREE_INT_CST_LOW (op1) * BITS_PER_UNIT) / BITS_PER_UNIT
++        != TREE_INT_CST_LOW (op1))
++      return false;
+       rhsoffset = TREE_INT_CST_LOW (op1) * BITS_PER_UNIT;
+     }
    else
      return false;
  
@@ -5430,7 +7933,7 @@ Index: gcc/tree-ssa-structalias.c
    for (i = 0; VEC_iterate (ce_s, lhsc, i, c); i++)
      for (j = 0; VEC_iterate (ce_s, temp, j, c2); j++)
        {
-@@ -3360,12 +3331,12 @@
+@@ -3360,12 +3351,12 @@
        {
          int i;
          unsigned int j;
@@ -5445,7 +7948,7 @@ Index: gcc/tree-ssa-structalias.c
              tree rhstype;
              tree strippedrhs = PHI_ARG_DEF (t, i);
  
-@@ -3401,7 +3372,6 @@
+@@ -3401,7 +3392,6 @@
      {
        tree lhsop;
        tree rhsop;
@@ -5453,7 +7956,7 @@ Index: gcc/tree-ssa-structalias.c
        tree arglist;
        varinfo_t fi;
        int i = 1;
-@@ -3423,17 +3393,16 @@
+@@ -3423,17 +3413,16 @@
         we should still be able to handle.  */
        if (decl)
        {
@@ -5473,7 +7976,7 @@ Index: gcc/tree-ssa-structalias.c
        arglist = TREE_OPERAND (rhsop, 1);
        
        for (;arglist; arglist = TREE_CHAIN (arglist))
-@@ -3463,13 +3432,14 @@
+@@ -3463,13 +3452,14 @@
            }
          i++;
        }
@@ -5489,7 +7992,7 @@ Index: gcc/tree-ssa-structalias.c
          get_constraint_for (lhsop, &lhsc);
          if (TREE_CODE (decl) != FUNCTION_DECL)
            {
-@@ -3485,7 +3455,7 @@
+@@ -3485,7 +3475,7 @@
            }
          for (j = 0; VEC_iterate (ce_s, lhsc, j, lhsp); j++)
            process_constraint (new_constraint (*lhsp, rhs));
@@ -5498,7 +8001,7 @@ Index: gcc/tree-ssa-structalias.c
      }
    /* Otherwise, just a regular assignment statement.  */
    else if (TREE_CODE (t) == MODIFY_EXPR)
-@@ -3494,7 +3464,7 @@
+@@ -3494,7 +3484,7 @@
        tree rhsop = TREE_OPERAND (t, 1);
        int i;
  
@@ -5507,7 +8010,7 @@ Index: gcc/tree-ssa-structalias.c
           || TREE_CODE (TREE_TYPE (lhsop)) == COMPLEX_TYPE)
          && (AGGREGATE_TYPE_P (TREE_TYPE (rhsop))
              || TREE_CODE (TREE_TYPE (lhsop)) == COMPLEX_TYPE))
-@@ -3513,7 +3483,7 @@
+@@ -3513,7 +3503,7 @@
                {
                  /* RHS that consist of unary operations,
                     exceptional types, or bare decls/constants, get
@@ -5516,7 +8019,7 @@ Index: gcc/tree-ssa-structalias.c
                  case tcc_reference:
                  case tcc_declaration:
                  case tcc_constant:
-@@ -3528,7 +3498,7 @@
+@@ -3528,7 +3518,7 @@
                          {
                            struct constraint_expr *c2;
                            unsigned int k;
@@ -5525,7 +8028,7 @@ Index: gcc/tree-ssa-structalias.c
                            for (k = 0; VEC_iterate (ce_s, rhsc, k, c2); k++)
                              process_constraint (new_constraint (*c, *c2));
                          }
-@@ -3570,7 +3540,7 @@
+@@ -3570,7 +3560,7 @@
                              }
                          }
                      }
@@ -5534,7 +8037,7 @@ Index: gcc/tree-ssa-structalias.c
            }
        }
      }
-@@ -3578,7 +3548,7 @@
+@@ -3578,7 +3568,7 @@
    /* After promoting variables and computing aliasing we will
       need to re-scan most statements.  FIXME: Try to minimize the
       number of statements re-scanned.  It's not really necessary to
@@ -5543,7 +8046,7 @@ Index: gcc/tree-ssa-structalias.c
    mark_stmt_modified (origt);
    VEC_free (ce_s, heap, rhsc);
    VEC_free (ce_s, heap, lhsc);
-@@ -3591,7 +3561,7 @@
+@@ -3591,7 +3581,7 @@
     first field that overlaps with OFFSET.
     Return NULL if we can't find one.  */
  
@@ -5552,7 +8055,7 @@ Index: gcc/tree-ssa-structalias.c
  first_vi_for_offset (varinfo_t start, unsigned HOST_WIDE_INT offset)
  {
    varinfo_t curr = start;
-@@ -3617,7 +3587,7 @@
+@@ -3617,7 +3607,7 @@
  {
    varinfo_t prev = base;
    varinfo_t curr = base->next;
@@ -5561,7 +8064,7 @@ Index: gcc/tree-ssa-structalias.c
    field->next = curr;
    prev->next = field;
  }
-@@ -3630,7 +3600,7 @@
+@@ -3630,7 +3620,7 @@
  {
    varinfo_t prev = base;
    varinfo_t curr = base->next;
@@ -5570,7 +8073,7 @@ Index: gcc/tree-ssa-structalias.c
    if (curr == NULL)
      {
        prev->next = field;
-@@ -3652,13 +3622,13 @@
+@@ -3652,13 +3642,13 @@
  
  /* qsort comparison function for two fieldoff's PA and PB */
  
@@ -5586,7 +8089,7 @@ Index: gcc/tree-ssa-structalias.c
    if (foa->offset != fob->offset)
      return foa->offset - fob->offset;
  
-@@ -3671,8 +3641,8 @@
+@@ -3671,8 +3661,8 @@
  void
  sort_fieldstack (VEC(fieldoff_s,heap) *fieldstack)
  {
@@ -5597,7 +8100,7 @@ Index: gcc/tree-ssa-structalias.c
         sizeof (fieldoff_s),
         fieldoff_compare);
  }
-@@ -3686,12 +3656,12 @@
+@@ -3686,12 +3676,13 @@
     TYPE.  */
  
  int
@@ -5608,11 +8111,12 @@ Index: gcc/tree-ssa-structalias.c
    tree field;
    int count = 0;
 -  
++  unsigned HOST_WIDE_INT minoffset = -1;
 +
    if (TREE_CODE (type) == COMPLEX_TYPE)
      {
        fieldoff_s *real_part, *img_part;
-@@ -3700,13 +3670,13 @@
+@@ -3700,13 +3691,13 @@
        real_part->size = TYPE_SIZE (TREE_TYPE (type));
        real_part->offset = offset;
        real_part->decl = NULL_TREE;
@@ -5628,7 +8132,7 @@ Index: gcc/tree-ssa-structalias.c
        return 2;
      }
  
-@@ -3733,12 +3703,12 @@
+@@ -3733,12 +3724,12 @@
        {
          bool push = false;
          int pushed = 0;
@@ -5644,7 +8148,7 @@ Index: gcc/tree-ssa-structalias.c
          if (!AGGREGATE_TYPE_P (TREE_TYPE (type))) /* var_can_have_subvars */
            push = true;
          else if (!(pushed = push_fields_onto_fieldstack
-@@ -3772,12 +3742,12 @@
+@@ -3772,12 +3763,12 @@
        {
        bool push = false;
        int pushed = 0;
@@ -5660,7 +8164,7 @@ Index: gcc/tree-ssa-structalias.c
        if (!var_can_have_subvars (field))
          push = true;
        else if (!(pushed = push_fields_onto_fieldstack
-@@ -3789,7 +3759,7 @@
+@@ -3789,7 +3780,7 @@
             see if we didn't push any subfields and the size is
             nonzero, push the field onto the stack */
          push = true;
@@ -5669,7 +8173,33 @@ Index: gcc/tree-ssa-structalias.c
        if (push)
          {
            fieldoff_s *pair;
-@@ -3848,15 +3818,15 @@
+@@ -3803,8 +3794,25 @@
+         }
+       else
+         count += pushed;
++
++      if (bitpos_of_field (field) < minoffset)
++        minoffset = bitpos_of_field (field);
+       }
++  /* We need to create a fake subvar for empty bases.  But _only_ for non-empty
++     classes.  */
++  if (minoffset != 0 && count != 0)
++    {
++      fieldoff_s *pair;
++
++      pair = VEC_safe_push (fieldoff_s, heap, *fieldstack, NULL);
++      pair->type = void_type_node;
++      pair->size = build_int_cst (size_type_node, minoffset);
++      pair->decl = NULL;
++      pair->offset = offset;
++      count++;
++    }
++
+   return count;
+ }
+@@ -3848,15 +3856,15 @@
    unsigned int i = 0;
    tree t;
  
@@ -5688,7 +8218,7 @@ Index: gcc/tree-ssa-structalias.c
    if (!t)
      *is_varargs = true;
    return i;
-@@ -3870,19 +3840,19 @@
+@@ -3870,19 +3878,19 @@
  {
    unsigned int index = VEC_length (varinfo_t, varmap);
    varinfo_t vi;
@@ -5711,7 +8241,7 @@ Index: gcc/tree-ssa-structalias.c
    VEC_safe_push (varinfo_t, heap, varmap, vi);
  
    stats.total_vars++;
-@@ -3898,12 +3868,12 @@
+@@ -3898,12 +3906,12 @@
        return index;
      }
  
@@ -5726,7 +8256,7 @@ Index: gcc/tree-ssa-structalias.c
        varinfo_t argvi;
        const char *newname;
        char *tempname;
-@@ -3912,13 +3882,13 @@
+@@ -3912,13 +3920,13 @@
  
        if (arg)
        argdecl = arg;
@@ -5742,7 +8272,7 @@ Index: gcc/tree-ssa-structalias.c
        argvi->decl = argdecl;
        VEC_safe_push (varinfo_t, heap, varmap, argvi);
        argvi->offset = i;
-@@ -3929,7 +3899,7 @@
+@@ -3929,7 +3937,7 @@
        stats.total_vars ++;
        if (arg)
        {
@@ -5751,7 +8281,7 @@ Index: gcc/tree-ssa-structalias.c
          arg = TREE_CHAIN (arg);
        }
      }
-@@ -3948,13 +3918,13 @@
+@@ -3948,13 +3956,13 @@
  
        if (DECL_RESULT (decl))
        resultdecl = DECL_RESULT (decl);
@@ -5767,7 +8297,7 @@ Index: gcc/tree-ssa-structalias.c
        resultvi->decl = resultdecl;
        VEC_safe_push (varinfo_t, heap, varmap, resultvi);
        resultvi->offset = i;
-@@ -3964,13 +3934,13 @@
+@@ -3964,13 +3972,13 @@
        insert_into_field_list_sorted (vi, resultvi);
        stats.total_vars ++;
        if (DECL_RESULT (decl))
@@ -5784,7 +8314,7 @@ Index: gcc/tree-ssa-structalias.c
     FIELDSTACK is assumed to be sorted by offset.  */
  
  static bool
-@@ -4057,12 +4027,12 @@
+@@ -4057,12 +4065,12 @@
    bool hasunion;
    bool is_global = DECL_P (decl) ? is_global_var (decl) : false;
    VEC (fieldoff_s,heap) *fieldstack = NULL;
@@ -5799,7 +8329,7 @@ Index: gcc/tree-ssa-structalias.c
    if (var_can_have_subvars (decl) && use_field_sensitive && !hasunion)
      {
        push_fields_onto_fieldstack (decltype, &fieldstack, 0, &hasunion);
-@@ -4072,12 +4042,12 @@
+@@ -4072,12 +4080,12 @@
          notokay = true;
        }
      }
@@ -5814,7 +8344,7 @@ Index: gcc/tree-ssa-structalias.c
    vi->decl = decl;
    vi->offset = 0;
    vi->has_union = hasunion;
-@@ -4095,8 +4065,8 @@
+@@ -4095,8 +4103,8 @@
        vi->fullsize = TREE_INT_CST_LOW (declsize);
        vi->size = vi->fullsize;
      }
@@ -5825,7 +8355,7 @@ Index: gcc/tree-ssa-structalias.c
    VEC_safe_push (varinfo_t, heap, varmap, vi);
    if (is_global && (!flag_whole_program || !in_ipa_mode))
      {
-@@ -4122,9 +4092,9 @@
+@@ -4122,9 +4130,9 @@
      }
  
    stats.total_vars++;
@@ -5838,7 +8368,7 @@ Index: gcc/tree-ssa-structalias.c
        && var_can_have_subvars (decl)
        && VEC_length (fieldoff_s, fieldstack) <= MAX_FIELDS_FOR_FIELD_SENSITIVE)
      {
-@@ -4148,7 +4118,7 @@
+@@ -4148,7 +4156,7 @@
         without creating varinfos for the fields anyway, so sorting them is a
         waste to boot.  */
        if (!notokay)
@@ -5847,7 +8377,7 @@ Index: gcc/tree-ssa-structalias.c
          sort_fieldstack (fieldstack);
          /* Due to some C++ FE issues, like PR 22488, we might end up
             what appear to be overlapping fields even though they,
-@@ -4156,8 +4126,8 @@
+@@ -4156,8 +4164,8 @@
             we will simply disable field-sensitivity for these cases.  */
          notokay = check_for_overlaps (fieldstack);
        }
@@ -5858,7 +8388,7 @@ Index: gcc/tree-ssa-structalias.c
        if (VEC_length (fieldoff_s, fieldstack) != 0)
        fo = VEC_index (fieldoff_s, fieldstack, 0);
  
-@@ -4169,11 +4139,11 @@
+@@ -4169,11 +4177,11 @@
          VEC_free (fieldoff_s, heap, fieldstack);
          return index;
        }
@@ -5873,7 +8403,7 @@ Index: gcc/tree-ssa-structalias.c
           i--)
        {
          varinfo_t newvi;
-@@ -4184,15 +4154,15 @@
+@@ -4184,15 +4192,15 @@
          if (dump_file)
            {
              if (fo->decl)
@@ -5892,7 +8422,7 @@ Index: gcc/tree-ssa-structalias.c
          newvi->offset = fo->offset;
          newvi->size = TREE_INT_CST_LOW (fo->size);
          newvi->fullsize = vi->fullsize;
-@@ -4228,14 +4198,22 @@
+@@ -4228,14 +4236,22 @@
  {
    varinfo_t vi = get_varinfo (var);
    unsigned int i;
@@ -5921,7 +8451,7 @@ Index: gcc/tree-ssa-structalias.c
  }
  
  /* Print the points-to solution for VAR to stdout.  */
-@@ -4266,7 +4244,7 @@
+@@ -4266,7 +4282,7 @@
        if (!could_have_pointers (t))
        continue;
        
@@ -5930,7 +8460,7 @@ Index: gcc/tree-ssa-structalias.c
  
        /* With flag_argument_noalias greater than two means that the incoming
           argument cannot alias anything except for itself so create a HEAP
-@@ -4276,11 +4254,10 @@
+@@ -4276,11 +4292,10 @@
        {
          varinfo_t vi;
          tree heapvar = heapvar_lookup (t);
@@ -5943,7 +8473,7 @@ Index: gcc/tree-ssa-structalias.c
          
          if (heapvar == NULL_TREE)
            {
-@@ -4291,11 +4268,11 @@
+@@ -4291,11 +4306,11 @@
                add_referenced_var (heapvar);
              heapvar_insert (t, heapvar);
            }
@@ -5958,7 +8488,17 @@ Index: gcc/tree-ssa-structalias.c
          rhs.type = ADDRESSOF;
          rhs.offset = 0;
            for (p = get_varinfo (lhs.var); p; p = p->next)
-@@ -4409,8 +4386,8 @@
+@@ -4366,7 +4381,8 @@
+           bitmap_set_bit (into, DECL_UID (sv->var));
+       }
+       else if (TREE_CODE (vi->decl) == VAR_DECL 
+-             || TREE_CODE (vi->decl) == PARM_DECL)
++             || TREE_CODE (vi->decl) == PARM_DECL
++             || TREE_CODE (vi->decl) == RESULT_DECL)
+       {
+         if (var_can_have_subvars (vi->decl)
+             && get_subvars_for_var (vi->decl))
+@@ -4409,8 +4425,8 @@
  bool
  find_what_p_points_to (tree p)
  {
@@ -5968,7 +8508,7 @@ Index: gcc/tree-ssa-structalias.c
  
    if (!have_alias_info)
      return false;
-@@ -4422,10 +4399,10 @@
+@@ -4422,10 +4438,10 @@
        && default_def (SSA_NAME_VAR (p)) == p)
      lookup_p = SSA_NAME_VAR (p);
  
@@ -5982,7 +8522,7 @@ Index: gcc/tree-ssa-structalias.c
        if (vi->is_artificial_var)
        return false;
  
-@@ -4447,7 +4424,7 @@
+@@ -4447,7 +4463,7 @@
  
          /* This variable may have been collapsed, let's get the real
             variable.  */
@@ -5991,7 +8531,7 @@ Index: gcc/tree-ssa-structalias.c
          
          /* Translate artificial variables into SSA_NAME_PTR_INFO
             attributes.  */
-@@ -4506,13 +4483,16 @@
+@@ -4506,13 +4522,16 @@
      {
        fprintf (outfile, "Stats:\n");
        fprintf (outfile, "Total vars:               %d\n", stats.total_vars);
@@ -6009,7 +8549,7 @@ Index: gcc/tree-ssa-structalias.c
      }
  
    for (i = 0; i < VEC_length (varinfo_t, varmap); i++)
-@@ -4540,8 +4520,8 @@
+@@ -4540,8 +4559,8 @@
    /* Create the NULL variable, used to represent that a variable points
       to NULL.  */
    nothing_tree = create_tmp_var_raw (void_type_node, "NULL");
@@ -6020,7 +8560,7 @@ Index: gcc/tree-ssa-structalias.c
    var_nothing->is_artificial_var = 1;
    var_nothing->offset = 0;
    var_nothing->size = ~0;
-@@ -4553,8 +4533,8 @@
+@@ -4553,8 +4572,8 @@
    /* Create the ANYTHING variable, used to represent that a variable
       points to some unknown piece of memory.  */
    anything_tree = create_tmp_var_raw (void_type_node, "ANYTHING");
@@ -6031,7 +8571,7 @@ Index: gcc/tree-ssa-structalias.c
    var_anything->is_artificial_var = 1;
    var_anything->size = ~0;
    var_anything->offset = 0;
-@@ -4573,7 +4553,6 @@
+@@ -4573,7 +4592,6 @@
    rhs.type = ADDRESSOF;
    rhs.var = anything_id;
    rhs.offset = 0;
@@ -6039,7 +8579,7 @@ Index: gcc/tree-ssa-structalias.c
  
    /* This specifically does not use process_constraint because
       process_constraint ignores all anything = anything constraints, since all
-@@ -4583,14 +4562,14 @@
+@@ -4583,14 +4601,14 @@
    /* Create the READONLY variable, used to represent that a variable
       points to readonly memory.  */
    readonly_tree = create_tmp_var_raw (void_type_node, "READONLY");
@@ -6056,7 +8596,7 @@ Index: gcc/tree-ssa-structalias.c
    readonly_id = 2;
    VEC_safe_push (varinfo_t, heap, varmap, var_readonly);
  
-@@ -4610,8 +4589,8 @@
+@@ -4610,8 +4628,8 @@
    /* Create the INTEGER variable, used to represent that a variable points
       to an INTEGER.  */
    integer_tree = create_tmp_var_raw (void_type_node, "INTEGER");
@@ -6067,7 +8607,7 @@ Index: gcc/tree-ssa-structalias.c
    var_integer->is_artificial_var = 1;
    var_integer->size = ~0;
    var_integer->fullsize = ~0;
-@@ -4634,8 +4613,8 @@
+@@ -4634,8 +4652,8 @@
    /* Create the ESCAPED_VARS variable used to represent variables that
       escape this function.  */
    escaped_vars_tree = create_tmp_var_raw (void_type_node, "ESCAPED_VARS");
@@ -6078,7 +8618,7 @@ Index: gcc/tree-ssa-structalias.c
    var_escaped_vars->is_artificial_var = 1;
    var_escaped_vars->size = ~0;
    var_escaped_vars->fullsize = ~0;
-@@ -4660,21 +4639,19 @@
+@@ -4660,21 +4678,19 @@
  static void
  init_alias_vars (void)
  {
@@ -6105,7 +8645,7 @@ Index: gcc/tree-ssa-structalias.c
    init_base_vars ();
  }
  
-@@ -4777,6 +4754,43 @@
+@@ -4777,6 +4793,43 @@
    VEC_free (ce_s, heap, rhsc);
  }
  
@@ -6149,7 +8689,7 @@ Index: gcc/tree-ssa-structalias.c
  /* Create points-to sets for the current function.  See the comments
     at the start of the file for an algorithmic overview.  */
  
-@@ -4784,11 +4798,13 @@
+@@ -4784,11 +4837,13 @@
  compute_points_to_sets (struct alias_info *ai)
  {
    basic_block bb;
@@ -6164,7 +8704,7 @@ Index: gcc/tree-ssa-structalias.c
    intra_create_variable_infos ();
  
    /* Now walk all statements and derive aliases.  */
-@@ -4824,36 +4840,42 @@
+@@ -4824,36 +4879,42 @@
        }
      }
  
@@ -6217,7 +8757,7 @@ Index: gcc/tree-ssa-structalias.c
  /* Delete created points-to sets.  */
  
  void
-@@ -4861,33 +4883,27 @@
+@@ -4861,33 +4922,27 @@
  {
    varinfo_t v;
    int i;
@@ -6264,7 +8804,7 @@ Index: gcc/tree-ssa-structalias.c
    have_alias_info = false;
  }
  
-@@ -4905,6 +4921,7 @@
+@@ -4905,6 +4960,7 @@
  static unsigned int
  ipa_pta_execute (void)
  {
@@ -6272,7 +8812,7 @@ Index: gcc/tree-ssa-structalias.c
    struct cgraph_node *node;
    in_ipa_mode = 1;
    init_alias_heapvars ();
-@@ -4994,6 +5011,7 @@
+@@ -4994,6 +5050,7 @@
    in_ipa_mode = 0;
    delete_alias_heapvars ();
    delete_points_to_sets ();
@@ -6280,7 +8820,7 @@ Index: gcc/tree-ssa-structalias.c
    return 0;
  }
    
-@@ -5018,8 +5036,9 @@
+@@ -5018,8 +5075,9 @@
  void
  init_alias_heapvars (void)
  {
@@ -6292,7 +8832,7 @@ Index: gcc/tree-ssa-structalias.c
    nonlocal_all = NULL_TREE;
  }
  
-@@ -5028,7 +5047,7 @@
+@@ -5028,7 +5086,7 @@
  {
    nonlocal_all = NULL_TREE;
    htab_delete (heapvar_for_stmt);
@@ -6301,10 +8841,121 @@ Index: gcc/tree-ssa-structalias.c
 -
    
  #include "gt-tree-ssa-structalias.h"
+Index: gcc/config/sparc/sparc.c
+===================================================================
+--- gcc/config/sparc/sparc.c   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/sparc/sparc.c   (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -703,7 +703,7 @@
+       error ("-mcmodel= is not supported on 32 bit systems");
+     }
+-  fpu = TARGET_FPU; /* save current -mfpu status */
++  fpu = target_flags & MASK_FPU; /* save current -mfpu status */
+   /* Set the default CPU.  */
+   for (def = &cpu_default[0]; def->name; ++def)
+@@ -7968,8 +7968,10 @@
+    Expand builtin functions for sparc intrinsics.  */
+ static rtx
+-sparc_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
+-                    enum machine_mode tmode, int ignore ATTRIBUTE_UNUSED)
++sparc_expand_builtin (tree exp, rtx target,
++                    rtx subtarget ATTRIBUTE_UNUSED,
++                    enum machine_mode tmode ATTRIBUTE_UNUSED,
++                    int ignore ATTRIBUTE_UNUSED)
+ {
+   tree arglist;
+   tree fndecl = TREE_OPERAND (TREE_OPERAND (exp, 0), 0);
+@@ -7978,14 +7980,13 @@
+   enum machine_mode mode[4];
+   int arg_count = 0;
+-  mode[arg_count] = tmode;
+-
+-  if (target == 0
+-      || GET_MODE (target) != tmode
+-      || ! (*insn_data[icode].operand[0].predicate) (target, tmode))
+-    op[arg_count] = gen_reg_rtx (tmode);
++  mode[0] = insn_data[icode].operand[0].mode;
++  if (!target
++      || GET_MODE (target) != mode[0]
++      || ! (*insn_data[icode].operand[0].predicate) (target, mode[0]))
++    op[0] = gen_reg_rtx (mode[0]);
+   else
+-    op[arg_count] = target;
++    op[0] = target;
+   for (arglist = TREE_OPERAND (exp, 1); arglist;
+        arglist = TREE_CHAIN (arglist))
+@@ -8101,11 +8102,11 @@
+ {
+   tree arg0, arg1, arg2;
+   tree rtype = TREE_TYPE (TREE_TYPE (fndecl));
+-  
+-  if (ignore && DECL_FUNCTION_CODE (fndecl) != CODE_FOR_alignaddrsi_vis
++  if (ignore
++      && DECL_FUNCTION_CODE (fndecl) != CODE_FOR_alignaddrsi_vis
+       && DECL_FUNCTION_CODE (fndecl) != CODE_FOR_alignaddrdi_vis)
+-    return build_int_cst (rtype, 0);
++    return fold_convert (rtype, integer_zero_node);
+   switch (DECL_FUNCTION_CODE (fndecl))
+     {
+@@ -8219,6 +8220,7 @@
+     default:
+       break;
+     }
++
+   return NULL_TREE;
+ }
\f
+Index: gcc/config/i386/i386.h
+===================================================================
+--- gcc/config/i386/i386.h     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/i386/i386.h     (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -2164,7 +2164,8 @@
+ enum ix86_stack_slot
+ {
+-  SLOT_TEMP = 0,
++  SLOT_VIRTUAL = 0,
++  SLOT_TEMP,
+   SLOT_CW_STORED,
+   SLOT_CW_TRUNC,
+   SLOT_CW_FLOOR,
 Index: gcc/config/i386/i386.md
 ===================================================================
---- gcc/config/i386/i386.md    (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/i386/i386.md    (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/i386/i386.md    (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/i386/i386.md    (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -3716,7 +3716,7 @@
+     ;
+   else
+     {
+-      rtx temp = assign_386_stack_local (SFmode, SLOT_TEMP);
++      rtx temp = assign_386_stack_local (SFmode, SLOT_VIRTUAL);
+       emit_insn (gen_truncdfsf2_with_temp (operands[0], operands[1], temp));
+       DONE;
+     }
+@@ -3868,7 +3868,7 @@
+       DONE;
+     }
+   else
+-    operands[2] = assign_386_stack_local (SFmode, SLOT_TEMP);
++    operands[2] = assign_386_stack_local (SFmode, SLOT_VIRTUAL);
+ })
+ (define_insn "*truncxfsf2_mixed"
+@@ -3966,7 +3966,7 @@
+       DONE;
+     }
+   else
+-    operands[2] = assign_386_stack_local (DFmode, SLOT_TEMP);
++    operands[2] = assign_386_stack_local (DFmode, SLOT_VIRTUAL);
+ })
+ (define_insn "*truncxfdf2_mixed"
 @@ -4749,7 +4749,7 @@
  (define_insn "*addti3_1"
    [(set (match_operand:TI 0 "nonimmediate_operand" "=r,o")
@@ -6361,8 +9012,8 @@ Index: gcc/config/i386/i386.md
    [(parallel
 Index: gcc/config/i386/sse.md
 ===================================================================
---- gcc/config/i386/sse.md     (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/i386/sse.md     (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/i386/sse.md     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/i386/sse.md     (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -2055,11 +2055,11 @@
            (match_dup 1))
          (parallel [(const_int 0)
@@ -6391,9 +9042,27 @@ Index: gcc/config/i386/sse.md
  ;; Not sure this is ever used, but it doesn't hurt to have it. -aoliva
 Index: gcc/config/i386/i386.c
 ===================================================================
---- gcc/config/i386/i386.c     (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/i386/i386.c     (.../branches/gcc-4_2-branch)   (wersja 125589)
-@@ -15539,13 +15539,13 @@
+--- gcc/config/i386/i386.c     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/i386/i386.c     (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -13478,6 +13478,9 @@
+   gcc_assert (n < MAX_386_STACK_LOCALS);
++  /* Virtual slot is valid only before vregs are instantiated.  */
++  gcc_assert ((n == SLOT_VIRTUAL) == !virtuals_instantiated);
++
+   for (s = ix86_stack_locals; s; s = s->next)
+     if (s->mode == mode && s->n == n)
+       return s->rtl;
+@@ -14567,6 +14570,7 @@
+   IX86_BUILTIN_VEC_EXT_V4SF,
+   IX86_BUILTIN_VEC_EXT_V4SI,
+   IX86_BUILTIN_VEC_EXT_V8HI,
++  IX86_BUILTIN_VEC_EXT_V16QI,
+   IX86_BUILTIN_VEC_EXT_V2SI,
+   IX86_BUILTIN_VEC_EXT_V4HI,
+   IX86_BUILTIN_VEC_SET_V8HI,
+@@ -15539,13 +15543,13 @@
    /* Access to the vec_extract patterns.  */
    ftype = build_function_type_list (double_type_node, V2DF_type_node,
                                    integer_type_node, NULL_TREE);
@@ -6409,7 +9078,7 @@ Index: gcc/config/i386/i386.c
               ftype, IX86_BUILTIN_VEC_EXT_V2DI);
  
    ftype = build_function_type_list (float_type_node, V4SF_type_node,
-@@ -15555,12 +15555,12 @@
+@@ -15555,12 +15559,12 @@
  
    ftype = build_function_type_list (intSI_type_node, V4SI_type_node,
                                    integer_type_node, NULL_TREE);
@@ -6424,7 +9093,15 @@ Index: gcc/config/i386/i386.c
               ftype, IX86_BUILTIN_VEC_EXT_V8HI);
  
    ftype = build_function_type_list (intHI_type_node, V4HI_type_node,
-@@ -15577,7 +15577,7 @@
+@@ -15573,11 +15577,15 @@
+   def_builtin (MASK_MMX, "__builtin_ia32_vec_ext_v2si",
+              ftype, IX86_BUILTIN_VEC_EXT_V2SI);
++  ftype = build_function_type_list (intQI_type_node, V16QI_type_node,
++                                  integer_type_node, NULL_TREE);
++  def_builtin (MASK_SSE2, "__builtin_ia32_vec_ext_v16qi", ftype, IX86_BUILTIN_VEC_EXT_V16QI);
++
+   /* Access to the vec_set patterns.  */
    ftype = build_function_type_list (V8HI_type_node, V8HI_type_node,
                                    intHI_type_node,
                                    integer_type_node, NULL_TREE);
@@ -6433,10 +9110,34 @@ Index: gcc/config/i386/i386.c
               ftype, IX86_BUILTIN_VEC_SET_V8HI);
  
    ftype = build_function_type_list (V4HI_type_node, V4HI_type_node,
+@@ -16121,13 +16129,13 @@
+     case IX86_BUILTIN_LDMXCSR:
+       op0 = expand_normal (TREE_VALUE (arglist));
+-      target = assign_386_stack_local (SImode, SLOT_TEMP);
++      target = assign_386_stack_local (SImode, SLOT_VIRTUAL);
+       emit_move_insn (target, op0);
+       emit_insn (gen_sse_ldmxcsr (target));
+       return 0;
+     case IX86_BUILTIN_STMXCSR:
+-      target = assign_386_stack_local (SImode, SLOT_TEMP);
++      target = assign_386_stack_local (SImode, SLOT_VIRTUAL);
+       emit_insn (gen_sse_stmxcsr (target));
+       return copy_to_mode_reg (SImode, target);
+@@ -16489,6 +16497,7 @@
+     case IX86_BUILTIN_VEC_EXT_V4SF:
+     case IX86_BUILTIN_VEC_EXT_V4SI:
+     case IX86_BUILTIN_VEC_EXT_V8HI:
++    case IX86_BUILTIN_VEC_EXT_V16QI:
+     case IX86_BUILTIN_VEC_EXT_V2SI:
+     case IX86_BUILTIN_VEC_EXT_V4HI:
+       return ix86_expand_vec_ext_builtin (arglist, target);
 Index: gcc/config/sh/sh.c
 ===================================================================
---- gcc/config/sh/sh.c (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/sh/sh.c (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/sh/sh.c (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/sh/sh.c (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -5295,7 +5295,13 @@
              temp = scavenge_reg (&temps);
            }
@@ -6473,8 +9174,8 @@ Index: gcc/config/sh/sh.c
        cost++;
 Index: gcc/config/sh/sh.md
 ===================================================================
---- gcc/config/sh/sh.md        (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/sh/sh.md        (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/sh/sh.md        (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/sh/sh.md        (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -413,10 +413,12 @@
         (eq_attr "type" "jump")
         (cond [(eq_attr "med_branch_p" "yes")
@@ -7258,8 +9959,8 @@ Index: gcc/config/sh/sh.md
    "fcmpun.d   %1,%2,%0"
 Index: gcc/config/score/predicates.md
 ===================================================================
---- gcc/config/score/predicates.md     (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/score/predicates.md     (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/score/predicates.md     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/score/predicates.md     (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -75,14 +75,3 @@
    return IMM_IN_RANGE (INTVAL (op), 15, 1);
  })
@@ -7277,8 +9978,8 @@ Index: gcc/config/score/predicates.md
 -})
 Index: gcc/config/score/misc.md
 ===================================================================
---- gcc/config/score/misc.md   (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/score/misc.md   (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/score/misc.md   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/score/misc.md   (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -380,38 +380,3 @@
    [(set_attr "type" "arith")
     (set_attr "mode" "SI")])
@@ -7320,8 +10021,8 @@ Index: gcc/config/score/misc.md
 -   (set_attr "mode" "SI")])
 Index: gcc/config/score/score.c
 ===================================================================
---- gcc/config/score/score.c   (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/score/score.c   (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/score/score.c   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/score/score.c   (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1168,7 +1168,7 @@
      {
        gcc_assert (code == CONST_INT);
@@ -7342,8 +10043,8 @@ Index: gcc/config/score/score.c
          output_addr_const (file, op);
 Index: gcc/config/score/score.h
 ===================================================================
---- gcc/config/score/score.h   (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/score/score.h   (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/score/score.h   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/score/score.h   (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -785,6 +785,7 @@
     output anything and let undefined symbol become external. However
     the assembler uses length information on externals to allocate in
@@ -7354,8 +10055,8 @@ Index: gcc/config/score/score.h
  
 Index: gcc/config/pa/pa.md
 ===================================================================
---- gcc/config/pa/pa.md        (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/pa/pa.md        (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/pa/pa.md        (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/pa/pa.md        (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -39,6 +39,9 @@
     (UNSPEC_TLSLDBASE  7)
     (UNSPEC_TLSIE      8)
@@ -7469,8 +10170,8 @@ Index: gcc/config/pa/pa.md
          (plus:SI (unspec:SI [(match_operand 1 "tle_symbolic_operand" "")] 
 Index: gcc/config/pa/pa.c
 ===================================================================
---- gcc/config/pa/pa.c (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/pa/pa.c (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/pa/pa.c (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/pa/pa.c (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -726,7 +726,10 @@
      {
        case TLS_MODEL_GLOBAL_DYNAMIC:
@@ -7509,8 +10210,8 @@ Index: gcc/config/pa/pa.c
  
 Index: gcc/config/soft-fp/quad.h
 ===================================================================
---- gcc/config/soft-fp/quad.h  (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/soft-fp/quad.h  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/soft-fp/quad.h  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/soft-fp/quad.h  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,6 +1,6 @@
  /* Software floating-point emulation.
     Definitions for IEEE Quad Precision.
@@ -7545,8 +10246,8 @@ Index: gcc/config/soft-fp/quad.h
  };
 Index: gcc/config/soft-fp/floatunsidf.c
 ===================================================================
---- gcc/config/soft-fp/floatunsidf.c   (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/soft-fp/floatunsidf.c   (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/soft-fp/floatunsidf.c   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/soft-fp/floatunsidf.c   (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,6 +1,6 @@
  /* Software floating-point emulation.
     Convert a 32bit unsigned integer to IEEE double
@@ -7567,8 +10268,8 @@ Index: gcc/config/soft-fp/floatunsidf.c
    FP_DECL_D(A);
 Index: gcc/config/soft-fp/floatundidf.c
 ===================================================================
---- gcc/config/soft-fp/floatundidf.c   (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/soft-fp/floatundidf.c   (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/soft-fp/floatundidf.c   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/soft-fp/floatundidf.c   (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,6 +1,6 @@
  /* Software floating-point emulation.
     Convert a 64bit unsigned integer to IEEE double
@@ -7589,8 +10290,8 @@ Index: gcc/config/soft-fp/floatundidf.c
    FP_DECL_D(A);
 Index: gcc/config/soft-fp/extended.h
 ===================================================================
---- gcc/config/soft-fp/extended.h      (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/soft-fp/extended.h      (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/soft-fp/extended.h      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/soft-fp/extended.h      (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,6 +1,6 @@
  /* Software floating-point emulation.
     Definitions for IEEE Extended Precision.
@@ -7737,8 +10438,8 @@ Index: gcc/config/soft-fp/extended.h
  #define FP_ISSIGNAN_E(X)      _FP_ISSIGNAN(E,2,X)
 Index: gcc/config/soft-fp/floatunsisf.c
 ===================================================================
---- gcc/config/soft-fp/floatunsisf.c   (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/soft-fp/floatunsisf.c   (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/soft-fp/floatunsisf.c   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/soft-fp/floatunsisf.c   (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,6 +1,6 @@
  /* Software floating-point emulation.
     Convert a 32bit unsigned integer to IEEE single
@@ -7759,8 +10460,8 @@ Index: gcc/config/soft-fp/floatunsisf.c
    FP_DECL_S(A);
 Index: gcc/config/soft-fp/op-common.h
 ===================================================================
---- gcc/config/soft-fp/op-common.h     (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/soft-fp/op-common.h     (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/soft-fp/op-common.h     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/soft-fp/op-common.h     (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1153,7 +1153,8 @@
    if (_FP_FRACBITS_##dfs < _FP_FRACBITS_##sfs                          \
        || (_FP_EXPMAX_##dfs - _FP_EXPBIAS_##dfs                                 \
@@ -7840,8 +10541,8 @@ Index: gcc/config/soft-fp/op-common.h
        else                                                                 \
 Index: gcc/config/soft-fp/floatundisf.c
 ===================================================================
---- gcc/config/soft-fp/floatundisf.c   (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/soft-fp/floatundisf.c   (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/soft-fp/floatundisf.c   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/soft-fp/floatundisf.c   (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,6 +1,6 @@
  /* Software floating-point emulation.
     Convert a 64bit unsigned integer to IEEE single
@@ -7862,8 +10563,8 @@ Index: gcc/config/soft-fp/floatundisf.c
    FP_DECL_S(A);
 Index: gcc/config/soft-fp/op-2.h
 ===================================================================
---- gcc/config/soft-fp/op-2.h  (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/soft-fp/op-2.h  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/soft-fp/op-2.h  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/soft-fp/op-2.h  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,6 +1,6 @@
  /* Software floating-point emulation.
     Basic two-word fraction declaration and manipulation.
@@ -7880,8 +10581,8 @@ Index: gcc/config/soft-fp/op-2.h
 +#define _FP_FRAC_COPY_2_2(D,S)                _FP_FRAC_COPY_2(D,S)
 Index: gcc/config/soft-fp/op-4.h
 ===================================================================
---- gcc/config/soft-fp/op-4.h  (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/soft-fp/op-4.h  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/soft-fp/op-4.h  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/soft-fp/op-4.h  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,6 +1,6 @@
  /* Software floating-point emulation.
     Basic four-word fraction declaration and manipulation.
@@ -7898,8 +10599,8 @@ Index: gcc/config/soft-fp/op-4.h
 +#define _FP_FRAC_COPY_4_4(D,S)        _FP_FRAC_COPY_4(D,S)
 Index: gcc/config/soft-fp/double.h
 ===================================================================
---- gcc/config/soft-fp/double.h        (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ gcc/config/soft-fp/double.h        (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- gcc/config/soft-fp/double.h        (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/config/soft-fp/double.h        (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,6 +1,6 @@
  /* Software floating-point emulation.
     Definitions for IEEE Double Precision
@@ -7928,10 +10629,31 @@ Index: gcc/config/soft-fp/double.h
  #endif
    } bits __attribute__((packed));
  };
+Index: gcc/tree-ssa-operands.c
+===================================================================
+--- gcc/tree-ssa-operands.c    (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ gcc/tree-ssa-operands.c    (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -2162,9 +2162,14 @@
+ {
+   stmt_ann_t ann = get_stmt_ann (stmt);
+   
+-  /* Initially assume that the statement has no volatile operands.  */
++  /* Initially assume that the statement has no volatile operands and
++     does not take the address of any symbols.  */
+   if (ann)
+-    ann->has_volatile_ops = false;
++    {
++      ann->has_volatile_ops = false;
++      if (ann->addresses_taken)
++      ann->addresses_taken = NULL;
++    }
+   start_ssa_stmt_operands ();
 Index: libstdc++-v3/configure
 ===================================================================
---- libstdc++-v3/configure     (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libstdc++-v3/configure     (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libstdc++-v3/configure     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libstdc++-v3/configure     (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -5764,8 +5764,6 @@
  
  
@@ -8419,8 +11141,8 @@ Index: libstdc++-v3/configure
      echo "$as_me:$LINENO: checking for ld that supports -Wl,--gc-sections" >&5
 Index: libstdc++-v3/include/bits/ostream.tcc
 ===================================================================
---- libstdc++-v3/include/bits/ostream.tcc      (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libstdc++-v3/include/bits/ostream.tcc      (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libstdc++-v3/include/bits/ostream.tcc      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libstdc++-v3/include/bits/ostream.tcc      (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -334,7 +334,6 @@
    extern template ostream& operator<<(ostream&, const char*);
    extern template ostream& operator<<(ostream&, const unsigned char*);
@@ -8440,8 +11162,8 @@ Index: libstdc++-v3/include/bits/ostream.tcc
    extern template wostream& wostream::_M_insert(unsigned long);
 Index: libstdc++-v3/include/bits/ostream_insert.h
 ===================================================================
---- libstdc++-v3/include/bits/ostream_insert.h (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libstdc++-v3/include/bits/ostream_insert.h (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libstdc++-v3/include/bits/ostream_insert.h (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libstdc++-v3/include/bits/ostream_insert.h (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -109,6 +109,18 @@
        return __out;
      }
@@ -8463,8 +11185,8 @@ Index: libstdc++-v3/include/bits/ostream_insert.h
  #endif /* _OSTREAM_INSERT_H */
 Index: libstdc++-v3/include/std/std_fstream.h
 ===================================================================
---- libstdc++-v3/include/std/std_fstream.h     (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libstdc++-v3/include/std/std_fstream.h     (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libstdc++-v3/include/std/std_fstream.h     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libstdc++-v3/include/std/std_fstream.h     (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,6 +1,7 @@
  // File based streams -*- C++ -*-
  
@@ -8510,8 +11232,8 @@ Index: libstdc++-v3/include/std/std_fstream.h
  
 Index: libstdc++-v3/ChangeLog
 ===================================================================
---- libstdc++-v3/ChangeLog     (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libstdc++-v3/ChangeLog     (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libstdc++-v3/ChangeLog     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libstdc++-v3/ChangeLog     (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,3 +1,39 @@
 +2007-06-08  Paolo Carlini  <pcarlini@suse.de>
 +
@@ -8554,8 +11276,8 @@ Index: libstdc++-v3/ChangeLog
        * GCC 4.2.0 released.
 Index: libstdc++-v3/docs/html/debug.html
 ===================================================================
---- libstdc++-v3/docs/html/debug.html  (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libstdc++-v3/docs/html/debug.html  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libstdc++-v3/docs/html/debug.html  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libstdc++-v3/docs/html/debug.html  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -420,7 +420,7 @@
  
  
@@ -8567,8 +11289,8 @@ Index: libstdc++-v3/docs/html/debug.html
  </p>
 Index: libstdc++-v3/docs/html/install.html
 ===================================================================
---- libstdc++-v3/docs/html/install.html        (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libstdc++-v3/docs/html/install.html        (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libstdc++-v3/docs/html/install.html        (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libstdc++-v3/docs/html/install.html        (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -80,8 +80,9 @@
        information must be installed.
  
@@ -8583,8 +11305,8 @@ Index: libstdc++-v3/docs/html/install.html
        <p>
 Index: libstdc++-v3/config.h.in
 ===================================================================
---- libstdc++-v3/config.h.in   (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libstdc++-v3/config.h.in   (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libstdc++-v3/config.h.in   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libstdc++-v3/config.h.in   (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -298,6 +298,12 @@
  /* Define to 1 if you have the <stdlib.h> header file. */
  #undef HAVE_STDLIB_H
@@ -8610,8 +11332,8 @@ Index: libstdc++-v3/config.h.in
  
 Index: libstdc++-v3/acinclude.m4
 ===================================================================
---- libstdc++-v3/acinclude.m4  (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libstdc++-v3/acinclude.m4  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libstdc++-v3/acinclude.m4  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libstdc++-v3/acinclude.m4  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -251,11 +251,9 @@
      # NB: This flag only works reliably after 2.16.1. Configure tests
      # for this are difficult, so hard wire a value that should work.
@@ -8792,8 +11514,8 @@ Index: libstdc++-v3/acinclude.m4
        AC_MSG_RESULT(generic)
 Index: libgfortran/runtime/environ.c
 ===================================================================
---- libgfortran/runtime/environ.c      (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libgfortran/runtime/environ.c      (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libgfortran/runtime/environ.c      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libgfortran/runtime/environ.c      (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -861,14 +861,13 @@
  static int
  do_parse (void)
@@ -8839,8 +11561,8 @@ Index: libgfortran/runtime/environ.c
            goto error;
 Index: libgfortran/intrinsics/reshape_generic.c
 ===================================================================
---- libgfortran/intrinsics/reshape_generic.c   (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libgfortran/intrinsics/reshape_generic.c   (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libgfortran/intrinsics/reshape_generic.c   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libgfortran/intrinsics/reshape_generic.c   (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -266,7 +266,7 @@
            else
              {
@@ -8852,8 +11574,8 @@ Index: libgfortran/intrinsics/reshape_generic.c
      }
 Index: libgfortran/intrinsics/ishftc.c
 ===================================================================
---- libgfortran/intrinsics/ishftc.c    (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libgfortran/intrinsics/ishftc.c    (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libgfortran/intrinsics/ishftc.c    (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libgfortran/intrinsics/ishftc.c    (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -36,8 +36,7 @@
  GFC_INTEGER_4
  ishftc4 (GFC_INTEGER_4 i, GFC_INTEGER_4 shift, GFC_INTEGER_4 size)
@@ -8939,8 +11661,8 @@ Index: libgfortran/intrinsics/ishftc.c
  #endif
 Index: libgfortran/ChangeLog
 ===================================================================
---- libgfortran/ChangeLog      (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libgfortran/ChangeLog      (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libgfortran/ChangeLog      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libgfortran/ChangeLog      (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,3 +1,53 @@
 +2007-05-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 +
@@ -8997,8 +11719,8 @@ Index: libgfortran/ChangeLog
        * GCC 4.2.0 released.
 Index: libgfortran/io/transfer.c
 ===================================================================
---- libgfortran/io/transfer.c  (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libgfortran/io/transfer.c  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libgfortran/io/transfer.c  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libgfortran/io/transfer.c  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -493,11 +493,11 @@
            }
          else
@@ -9243,8 +11965,8 @@ Index: libgfortran/io/transfer.c
    if ((cf & IOPARM_DT_HAS_REC) != 0)
 Index: libgfortran/io/format.c
 ===================================================================
---- libgfortran/io/format.c    (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libgfortran/io/format.c    (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libgfortran/io/format.c    (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libgfortran/io/format.c    (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -860,10 +860,11 @@
      case FMT_SLASH:
        get_fnode (fmt, &head, &tail, FMT_SLASH);
@@ -9261,8 +11983,8 @@ Index: libgfortran/io/format.c
      case FMT_END:
 Index: boehm-gc/darwin_stop_world.c
 ===================================================================
---- boehm-gc/darwin_stop_world.c       (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ boehm-gc/darwin_stop_world.c       (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- boehm-gc/darwin_stop_world.c       (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ boehm-gc/darwin_stop_world.c       (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -10,7 +10,7 @@
     be allocated, is called the red zone. This area as shown in Figure 3-2 may
     be used for any purpose as long as a new stack frame does not need to be
@@ -9409,8 +12131,8 @@ Index: boehm-gc/darwin_stop_world.c
        lo = (void*)info . THREAD_FLD (esp);
 Index: boehm-gc/Makefile.in
 ===================================================================
---- boehm-gc/Makefile.in       (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ boehm-gc/Makefile.in       (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- boehm-gc/Makefile.in       (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ boehm-gc/Makefile.in       (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -224,6 +224,7 @@
  build_vendor = @build_vendor@
  datadir = @datadir@
@@ -9430,8 +12152,8 @@ Index: boehm-gc/Makefile.in
  AM_CXXFLAGS = @GC_CFLAGS@
 Index: boehm-gc/configure.ac
 ===================================================================
---- boehm-gc/configure.ac      (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ boehm-gc/configure.ac      (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- boehm-gc/configure.ac      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ boehm-gc/configure.ac      (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -248,33 +248,46 @@
  case "$host" in
    powerpc*-*-darwin*)
@@ -9511,8 +12233,8 @@ Index: boehm-gc/configure.ac
  target_all=libgcjgc.la
 Index: boehm-gc/include/Makefile.in
 ===================================================================
---- boehm-gc/include/Makefile.in       (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ boehm-gc/include/Makefile.in       (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- boehm-gc/include/Makefile.in       (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ boehm-gc/include/Makefile.in       (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -149,6 +149,7 @@
  build_vendor = @build_vendor@
  datadir = @datadir@
@@ -9523,8 +12245,8 @@ Index: boehm-gc/include/Makefile.in
  host_cpu = @host_cpu@
 Index: boehm-gc/include/gc_config.h.in
 ===================================================================
---- boehm-gc/include/gc_config.h.in    (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ boehm-gc/include/gc_config.h.in    (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- boehm-gc/include/gc_config.h.in    (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ boehm-gc/include/gc_config.h.in    (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -54,12 +54,6 @@
  /* support for win32 threads */
  #undef GC_WIN32_THREADS
@@ -9559,8 +12281,8 @@ Index: boehm-gc/include/gc_config.h.in
  
 Index: boehm-gc/include/private/gc_priv.h
 ===================================================================
---- boehm-gc/include/private/gc_priv.h (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ boehm-gc/include/private/gc_priv.h (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- boehm-gc/include/private/gc_priv.h (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ boehm-gc/include/private/gc_priv.h (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -286,6 +286,53 @@
  #endif
  
@@ -9671,8 +12393,8 @@ Index: boehm-gc/include/private/gc_priv.h
  /* Word-size-dependent defines   */
 Index: boehm-gc/include/private/gcconfig.h
 ===================================================================
---- boehm-gc/include/private/gcconfig.h        (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ boehm-gc/include/private/gcconfig.h        (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- boehm-gc/include/private/gcconfig.h        (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ boehm-gc/include/private/gcconfig.h        (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -302,7 +302,10 @@
  #   if defined(__ppc__)  || defined(__ppc64__)
  #    define POWERPC
@@ -9789,9 +12511,14 @@ Index: boehm-gc/include/private/gcconfig.h
  #     ifndef GC_FREEBSD_THREADS
 Index: boehm-gc/ChangeLog
 ===================================================================
---- boehm-gc/ChangeLog (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ boehm-gc/ChangeLog (.../branches/gcc-4_2-branch)   (wersja 125589)
-@@ -1,3 +1,67 @@
+--- boehm-gc/ChangeLog (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ boehm-gc/ChangeLog (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1,3 +1,72 @@
++2007-06-22  Jakub Jelinek  <jakub@redhat.com>
++
++      * pthread_support.c (GC_get_thread_stack_base): Handle
++      pthread_getattr_np failures.
++
 +2007-05-22  Andreas Tobler  <a.tobler@schweiz.org>
 +
 +      * Backport r124870 from main.
@@ -9861,8 +12588,8 @@ Index: boehm-gc/ChangeLog
        * GCC 4.2.0 released.
 Index: boehm-gc/configure
 ===================================================================
---- boehm-gc/configure (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ boehm-gc/configure (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- boehm-gc/configure (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ boehm-gc/configure (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -309,7 +309,7 @@
  # include <unistd.h>
  #endif"
@@ -10326,10 +13053,29 @@ Index: boehm-gc/configure
  s,@EXTRA_TEST_LIBS@,$EXTRA_TEST_LIBS,;t t
  s,@target_all@,$target_all,;t t
  s,@CPLUSPLUS_TRUE@,$CPLUSPLUS_TRUE,;t t
+Index: boehm-gc/pthread_support.c
+===================================================================
+--- boehm-gc/pthread_support.c (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ boehm-gc/pthread_support.c (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1135,7 +1135,13 @@
+   size_t stack_size;
+   
+   my_pthread = pthread_self();  
+-  pthread_getattr_np (my_pthread, &attr);
++  if (pthread_getattr_np (my_pthread, &attr) != 0)
++    {
++#   ifdef DEBUG_THREADS
++      GC_printf1("Can not determine stack base for attached thread");
++#   endif
++      return 0;
++    }
+   pthread_attr_getstack (&attr, (void **) &stack_addr, &stack_size);
+   pthread_attr_destroy (&attr);
+   
 Index: boehm-gc/os_dep.c
 ===================================================================
---- boehm-gc/os_dep.c  (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ boehm-gc/os_dep.c  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- boehm-gc/os_dep.c  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ boehm-gc/os_dep.c  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -3371,7 +3371,7 @@
        1. Apple's mach/xnu documentation
        2. Timothy J. Wood's "Mach Exception Handlers 101" post to the
@@ -10384,8 +13130,8 @@ Index: boehm-gc/os_dep.c
  #endif
 Index: boehm-gc/Makefile.am
 ===================================================================
---- boehm-gc/Makefile.am       (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ boehm-gc/Makefile.am       (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- boehm-gc/Makefile.am       (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ boehm-gc/Makefile.am       (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -33,11 +33,13 @@
  rs6000_mach_dep.s sparc_mach_dep.S sparc_netbsd_mach_dep.s \
  sparc_sunos4_mach_dep.s ia64_save_regs_in_stack.s
@@ -10403,8 +13149,8 @@ Index: boehm-gc/Makefile.am
  libgcjgc_convenience_la_DEPENDENCIES = @addobjs@
 Index: boehm-gc/dyn_load.c
 ===================================================================
---- boehm-gc/dyn_load.c        (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ boehm-gc/dyn_load.c        (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- boehm-gc/dyn_load.c        (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ boehm-gc/dyn_load.c        (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1152,7 +1152,7 @@
  };
      
@@ -10457,8 +13203,8 @@ Index: boehm-gc/dyn_load.c
          start = slide + sec->addr;
 Index: configure.in
 ===================================================================
---- configure.in       (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ configure.in       (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- configure.in       (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ configure.in       (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -2419,7 +2419,13 @@
    # Pass -fkeep-inline-functions for stage 1 if the GCC version supports it.
    CFLAGS="$CFLAGS -fkeep-inline-functions"
@@ -10476,8 +13222,8 @@ Index: configure.in
  
 Index: ChangeLog
 ===================================================================
---- ChangeLog  (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ ChangeLog  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- ChangeLog  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ ChangeLog  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,3 +1,9 @@
 +2007-05-30  Jakub Jelinek  <jakub@redhat.com>
 +
@@ -10488,10 +13234,45 @@ Index: ChangeLog
  2007-05-13  Release Manager
  
        * GCC 4.2.0 released.
+Index: config/ChangeLog
+===================================================================
+--- config/ChangeLog   (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ config/ChangeLog   (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -1,3 +1,8 @@
++2007-06-20  Mike Stump  <mrs@apple.com>
++
++      * acx.m4 (NCN_STRICT_CHECK_TARGET_TOOLS): Fix incremental builds.
++      (ACX_HAVE_GCC_FOR_TARGET): Likewise.
++
+ 2007-05-13  Release Manager
+       * GCC 4.2.0 released.
+Index: config/acx.m4
+===================================================================
+--- config/acx.m4      (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ config/acx.m4      (.../branches/gcc-4_2-branch)   (revision 126002)
+@@ -183,6 +183,8 @@
+   else
+     $1="${ncn_target_tool_prefix}[$]2"
+   fi], [$1="$3"])
++else
++  $1="$ac_cv_prog_$1"
+ fi
+ ]) []dnl # NCN_STRICT_CHECK_TARGET_TOOLS
+   
+@@ -297,7 +299,7 @@
+   elif test $build != $host && test $have_gcc_for_target = yes; then
+     $1=`$GCC_FOR_TARGET --print-prog-name=$2`
+     test [$]$1=$2 && $1=
+-    ac_cv_path_$1=[$]$1
++    test -n "[$]$1" && ac_cv_path_$1=[$]$1
+   fi
+ fi
+ if test -z "$ac_cv_path_$1" ; then
 Index: libjava/java/lang/natClassLoader.cc
 ===================================================================
---- libjava/java/lang/natClassLoader.cc        (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libjava/java/lang/natClassLoader.cc        (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libjava/java/lang/natClassLoader.cc        (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libjava/java/lang/natClassLoader.cc        (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -235,6 +235,15 @@
  
    new_class->engine = &_Jv_soleIndirectCompiledEngine;
@@ -10510,8 +13291,8 @@ Index: libjava/java/lang/natClassLoader.cc
    
 Index: libjava/ChangeLog
 ===================================================================
---- libjava/ChangeLog  (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ libjava/ChangeLog  (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- libjava/ChangeLog  (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ libjava/ChangeLog  (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,3 +1,8 @@
 +2007-05-31  Andrew Haley  <aph@redhat.com>
 +
@@ -10523,8 +13304,8 @@ Index: libjava/ChangeLog
        * GCC 4.2.0 released.
 Index: maintainer-scripts/ChangeLog
 ===================================================================
---- maintainer-scripts/ChangeLog       (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ maintainer-scripts/ChangeLog       (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- maintainer-scripts/ChangeLog       (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ maintainer-scripts/ChangeLog       (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -1,3 +1,7 @@
 +2007-05-28  Mark Mitchell  <mark@codesourcery.com>
 +
@@ -10535,8 +13316,8 @@ Index: maintainer-scripts/ChangeLog
        * GCC 4.2.0 released.
 Index: maintainer-scripts/gcc_release
 ===================================================================
---- maintainer-scripts/gcc_release     (.../tags/gcc_4_2_0_release)    (wersja 125589)
-+++ maintainer-scripts/gcc_release     (.../branches/gcc-4_2-branch)   (wersja 125589)
+--- maintainer-scripts/gcc_release     (.../tags/gcc_4_2_0_release)    (revision 126002)
++++ maintainer-scripts/gcc_release     (.../branches/gcc-4_2-branch)   (revision 126002)
 @@ -699,10 +699,10 @@
    # and minor release numbers.
    SVNBRANCH="branches/gcc-${RELEASE_MAJOR}_${RELEASE_MINOR}-branch"
This page took 0.510369 seconds and 4 git commands to generate.