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) \
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)));
}
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);
}
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))
else
set_value_range_to_varying (vr);
-@@ -2545,6 +2564,13 @@
+@@ -2545,6 +2566,13 @@
if (compare_values (min, max) == 1)
return;
}
}
else
{
-@@ -2557,13 +2583,62 @@
+@@ -2557,13 +2585,62 @@
if (compare_values (min, max) == 1)
return;
}
/* 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)
{
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;
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;
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);
}
}
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);
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"
+}
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
#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);
}
/* 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
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
* 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);
+}
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> */
+ 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
+{
+ 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" } */
+ 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" } */
+}
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" } */
+}
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>
+}
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" } */
+}
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" } */
+}
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" } */
+}
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" } */
+}
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" } */
+}
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" } */
+}
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
* 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
+ 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" }
+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" }
+ {
+ }
+}
+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 }
+ 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
+! { 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
+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
+ 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.
+ 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
+ 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
+ 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
+ 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.
+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.
+ 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 }
+!
+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))
}
}
+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
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
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)
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:
@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
* 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;
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:
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;
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)
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) \
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"
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
BITMAP_FREE (result);
}
-@@ -727,397 +757,149 @@
+@@ -727,397 +774,149 @@
}
}
{
return false;
}
-@@ -1125,41 +907,15 @@
+@@ -1125,41 +924,15 @@
{
bool r = false;
return r;
}
}
-@@ -1168,46 +924,51 @@
+@@ -1168,46 +941,51 @@
/* Return true if {DEST.SRC} is an existing graph edge in GRAPH. */
static bool
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)
{
}
}
}
-@@ -1260,20 +1082,20 @@
+@@ -1260,20 +1099,20 @@
struct scc_info
{
sbitmap visited;
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;
/* 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)
{
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;
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");
}
}
-@@ -1607,7 +1372,7 @@
+@@ -1607,7 +1389,7 @@
do_sd_constraint (constraint_graph_t graph, constraint_t c,
bitmap delta)
{
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;
}
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;
}
done:
-@@ -1658,15 +1423,15 @@
+@@ -1658,15 +1440,15 @@
SET_BIT (changed, lhs);
changed_count++;
}
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;
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;
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 */
return si;
}
-@@ -1786,209 +1579,430 @@
+@@ -1786,209 +1596,430 @@
static void
free_scc_info (struct scc_info *si)
/* 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;
while (changed_count > 0)
{
unsigned int i;
-@@ -2019,41 +2044,45 @@
+@@ -2019,41 +2061,45 @@
stats.iterations++;
bitmap_obstack_initialize (&iteration_obstack);
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)
changed_count++;
}
}
-@@ -2122,74 +2137,37 @@
+@@ -2122,74 +2154,37 @@
bitmap_obstack_release (&iteration_obstack);
}
}
/* Return a printable name for DECL */
-@@ -2210,7 +2188,7 @@
+@@ -2210,7 +2205,7 @@
if (TREE_CODE (decl) == SSA_NAME)
{
alias_get_name (SSA_NAME_VAR (decl)),
SSA_NAME_VERSION (decl));
}
-@@ -2226,21 +2204,17 @@
+@@ -2226,21 +2221,17 @@
return res;
}
}
/* 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. */
/* 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;
}
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;
/* 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);
/* 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);
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);
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;
}
-@@ -2388,7 +2356,7 @@
+@@ -2388,7 +2373,7 @@
return true;
if (accesspos < fieldpos && (accesspos + accesssize > fieldpos))
return true;
return false;
}
-@@ -2411,20 +2379,20 @@
+@@ -2411,20 +2396,20 @@
while (!SSA_VAR_P (forzero) && !CONSTANT_CLASS_P (forzero))
forzero = TREE_OPERAND (forzero, 0);
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;
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;
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);
/* 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;
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);
}
}
c->type = ADDRESSOF;
}
return;
-@@ -2638,9 +2608,9 @@
+@@ -2638,9 +2625,9 @@
{
varinfo_t vi;
tree heapvar = heapvar_lookup (t);
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));
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);
/* 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))
{
{
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
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;
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
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)
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
For each field of the rhs variable (rhsfield)
lhs.offset = rhsfield->offset
-@@ -2888,12 +2858,12 @@
+@@ -2888,12 +2875,12 @@
if (temprhs.type == SCALAR)
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,
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)
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));
VEC_free (ce_s, heap, lhsc);
VEC_free (ce_s, heap, rhsc);
-@@ -2955,7 +2925,7 @@
+@@ -2955,7 +2942,7 @@
lhs = rhs;
rhs = tmp;
}
/* 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);
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;
gcc_assert (rhs.type == DEREF && lhs.type == DEREF);
tmpvar = create_tmp_var_raw (pointedtotype, "structcopydereftmp");
-@@ -3052,6 +3022,7 @@
+@@ -3052,6 +3039,7 @@
}
}
/* 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 @@
}
}
/* 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;
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;
tree rhstype;
tree strippedrhs = PHI_ARG_DEF (t, i);
-@@ -3401,7 +3372,6 @@
+@@ -3401,7 +3392,6 @@
{
tree lhsop;
tree rhsop;
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)
{
arglist = TREE_OPERAND (rhsop, 1);
for (;arglist; arglist = TREE_CHAIN (arglist))
-@@ -3463,13 +3432,14 @@
+@@ -3463,13 +3452,14 @@
}
i++;
}
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));
}
/* 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;
|| 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
case tcc_reference:
case tcc_declaration:
case tcc_constant:
-@@ -3528,7 +3498,7 @@
+@@ -3528,7 +3518,7 @@
{
struct constraint_expr *c2;
unsigned int k;
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 @@
}
}
}
}
}
}
-@@ -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
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. */
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;
field->next = curr;
prev->next = field;
}
-@@ -3630,7 +3600,7 @@
+@@ -3630,7 +3620,7 @@
{
varinfo_t prev = base;
varinfo_t curr = base->next;
if (curr == NULL)
{
prev->next = field;
-@@ -3652,13 +3622,13 @@
+@@ -3652,13 +3642,13 @@
/* qsort comparison function for two fieldoff's PA and PB */
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)
{
sizeof (fieldoff_s),
fieldoff_compare);
}
-@@ -3686,12 +3656,12 @@
+@@ -3686,12 +3676,13 @@
TYPE. */
int
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;
return 2;
}
-@@ -3733,12 +3703,12 @@
+@@ -3733,12 +3724,12 @@
{
bool push = false;
int pushed = 0;
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;
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;
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;
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;
VEC_safe_push (varinfo_t, heap, varmap, vi);
stats.total_vars++;
-@@ -3898,12 +3868,12 @@
+@@ -3898,12 +3906,12 @@
return index;
}
varinfo_t argvi;
const char *newname;
char *tempname;
-@@ -3912,13 +3882,13 @@
+@@ -3912,13 +3920,13 @@
if (arg)
argdecl = arg;
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)
{
arg = TREE_CHAIN (arg);
}
}
-@@ -3948,13 +3918,13 @@
+@@ -3948,13 +3956,13 @@
if (DECL_RESULT (decl))
resultdecl = DECL_RESULT (decl);
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))
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;
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;
}
}
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;
}
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++;
&& 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)
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);
}
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;
}
i--)
{
varinfo_t newvi;
-@@ -4184,15 +4154,15 @@
+@@ -4184,15 +4192,15 @@
if (dump_file)
{
if (fo->decl)
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;
}
/* Print the points-to solution for VAR to stdout. */
-@@ -4266,7 +4244,7 @@
+@@ -4266,7 +4282,7 @@
if (!could_have_pointers (t))
continue;
/* 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);
if (heapvar == NULL_TREE)
{
-@@ -4291,11 +4268,11 @@
+@@ -4291,11 +4306,11 @@
add_referenced_var (heapvar);
heapvar_insert (t, heapvar);
}
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)
{
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);
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. */
/* 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);
}
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");
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");
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;
/* 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");
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");
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");
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)
{
init_base_vars ();
}
-@@ -4777,6 +4754,43 @@
+@@ -4777,6 +4793,43 @@
VEC_free (ce_s, heap, rhsc);
}
/* 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;
intra_create_variable_infos ();
/* Now walk all statements and derive aliases. */
-@@ -4824,36 +4840,42 @@
+@@ -4824,36 +4879,42 @@
}
}
/* Delete created points-to sets. */
void
-@@ -4861,33 +4883,27 @@
+@@ -4861,33 +4922,27 @@
{
varinfo_t v;
int i;
have_alias_info = false;
}
-@@ -4905,6 +4921,7 @@
+@@ -4905,6 +4960,7 @@
static unsigned int
ipa_pta_execute (void)
{
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 ();
return 0;
}
-@@ -5018,8 +5036,9 @@
+@@ -5018,8 +5075,9 @@
void
init_alias_heapvars (void)
{
nonlocal_all = NULL_TREE;
}
-@@ -5028,7 +5047,7 @@
+@@ -5028,7 +5086,7 @@
{
nonlocal_all = NULL_TREE;
htab_delete (heapvar_for_stmt);
-
#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")
[(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)
;; 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);
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);
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);
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);
}
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")
"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);
})
-})
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")])
- (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);
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
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)
(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:
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.
};
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
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
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.
#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
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 \
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
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.
+#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.
+#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
#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 @@
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*);
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;
}
#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++ -*-
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>
+
* 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 @@
</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.
<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
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.
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)
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
{
}
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)
#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>
+
* 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
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);
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
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@
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*)
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@
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
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
/* 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
# 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.
* 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"
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
#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
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 @@
};
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"
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>
+
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;
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>
+
* 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>
+
* 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"