diff -Nrcpad gcc-4.4.3/gcc/testsuite/ChangeLog gcc-4.4.4/gcc/testsuite/ChangeLog
*** gcc-4.4.3/gcc/testsuite/ChangeLog	Thu Jan 21 09:36:24 2010
--- gcc-4.4.4/gcc/testsuite/ChangeLog	Thu Apr 29 07:49:15 2010
***************
*** 1,3 ****
--- 1,876 ----
+ 2010-04-29  Release Manager
+ 
+ 	* GCC 4.4.4 released.
+ 
+ 2010-04-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/43836
+ 	* gfortran.dg/gomp/pr43836.f90: New test.
+ 
+ 2010-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/43339
+ 	* gfortran.dg/gomp/sharing-2.f90: Adjust for iteration vars
+ 	of sequential loops being private only in the innermost containing
+ 	task region.
+ 
+ 	PR middle-end/43337
+ 	* gfortran.dg/gomp/pr43337.f90: New test.
+ 
+ 2010-04-19  Jie Zhang  <jie@codesourcery.com>
+ 
+ 	PR target/43662
+ 	* gcc.target/i386/pr43662.c: New test.
+ 
+ 2010-04-19 Ira Rosen <irar@il.ibm.com>
+ 
+ 	PR tree-optimization/43771
+ 	* g++.dg/vect/pr43771.cc: New test.
+ 
+ 2010-04-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/rep_clause5.ad[sb]: New test.
+ 	* gnat.dg/rep_clause5_pkg.ads: New helper.
+ 
+ 2010-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/43560
+ 	* gcc.c-torture/execute/pr43560.c: New test.
+ 
+ 2010-04-10  Jie Zhang  <jie@codesourcery.com>
+ 
+ 	PR target/43417
+ 	* gcc.target/sh/pr43417.c: New test.
+ 
+ 2010-04-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR target/43643
+ 	* gcc.dg/pr43643.c: New test.
+ 
+ 2010-04-08  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR middle-end/42956
+ 	* gcc.c-torture/compile/pr42956.c: New testcase.
+ 
+ 2010-04-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backport from mainline:
+ 	2010-03-29  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/43560
+ 	* gcc.dg/torture/pr43560.c: New testcase.
+ 
+ 	2010-04-01  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR middle-end/43614
+ 	* gcc.c-torture/compile/pr43614.c: New testcase.
+ 
+ 2010-04-08  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/43186
+ 	* gcc.c-torture/compile/pr43186.c: New testcase.
+ 
+ 2010-04-07  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR target/43668
+ 	* gcc.target/i386/pr43668.c: New.
+ 
+ 2010-04-07  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/43629
+ 	* gcc.c-torture/execute/pr43629.c: New testcase.
+ 
+ 2010-04-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc.target/s390/stackcheck1.c: Add dg-warning.
+ 
+ 	PR target/43638
+ 	* gcc.target/i386/pr43638.c: New test.
+ 
+ 2010-04-01  Janne Blomqvist  <jb@gcc.gnu.org>
+ 	    Dominique d'Humieres  <dominiq@lps.ens.fr>
+ 
+ 	PR libfortran/43605
+ 	* gfortran.dg/ftell_3.f90: Enhance test case by reading more.
+ 
+ 2010-04-01  Janne Blomqvist  <jb@gcc.gnu.org>
+ 	    Manfred Schwarb  <manfred99@gmx.ch>
+ 
+ 	PR libfortran/43605
+ 	* gfortran.dg/ftell_3.f90: New test.
+ 
+ 2010-03-31  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline:
+ 	2010-03-27  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR tree-optimization/43528
+ 	* gcc.target/i386/pr43528.c: New test.
+ 
+ 	2010-03-26  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/43524
+ 	* gcc.target/i386/pr43524.c: New test.
+ 
+ 2010-03-31  Jie Zhang  <jie@codesourcery.com>
+ 
+ 	PR 43562
+ 	* gcc.dg/pr43562.c: New test.
+ 
+ 2010-03-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/43409
+ 	* gfortran.dg/inquire_size.f90: New test.
+ 
+ 2010-03-30  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/41786
+ 	* g++.dg/parse/ambig5.C: New.
+ 
+ 2010-03-30  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+ 
+ 	* gcc.target/s390/stackcheck1.c: New testcase.
+ 
+ 2010-03-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/43265
+ 	* gfortran.dg/read_eof_8.f90: New test.
+ 
+ 2010-03-29  Tobias Burnus  <burnus@net-b.de>
+ 
+ 	PR fortran/43551
+ 	* gfortran.dg/direct_io_12.f90: New test.
+ 
+ 2010-03-27  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	PR c/43381
+ 	* gcc.dg/parm-impl-decl-3.c: New test.
+ 
+ 2010-03-26  Volker Reichelt  <reichelt@gcc.gnu.org>
+ 
+ 	PR c++/43024
+ 	* g++.dg/opt/ice1.C: New.
+ 
+ 2010-03-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/43517
+ 	* gfortran.dg/read_eof_7.f90: New test.
+ 
+ 2010-03-25  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline:
+ 	2010-03-22  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/43333
+ 	* g++.dg/ext/is_pod_98.C: New.
+ 
+ 	2010-03-22  Michael Matz  <matz@suse.de>
+ 
+ 	PR middle-end/43475
+ 	* gfortran.dg/pr43475.f90: New testcase.
+ 
+ 	2010-03-22  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/43390
+ 	* gfortran.fortran-torture/execute/pr43390.f90: New testcase.
+ 
+ 	2010-03-20  Dodji Seketeli  <dodji@redhat.com>
+ 
+ 	PR c++/43375
+ 	* g++.dg/abi/mangle42.C: New test.
+ 
+ 	2010-03-19  Andrew Pinski  <andrew_pinski@caviumnetworks.com>
+ 
+ 	PR C/43211
+ 	* gcc.dg/pr43211.c: New test.
+ 
+ 	2010-03-18  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR middle-end/42450
+ 	* g++.dg/torture/pr42450.C: New test.
+ 
+ 	2010-03-18  Michael Matz  <matz@suse.de>
+ 
+ 	PR tree-optimization/43402
+ 	* gcc.dg/pr43402.c: New testcase.
+ 
+ 	2010-03-17  Peter Bergner  <bergner@vnet.ibm.com>
+ 
+ 	PR target/42427
+ 	* gcc.dg/pr42427.c: New test.
+ 
+ 	2010-03-16  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR middle-end/43379
+ 	* gcc.dg/pr43379.c: New testcase.
+ 
+ 	2010-03-15  Michael Matz  <matz@suse.de>
+ 
+ 	PR middle-end/43300
+ 	* gcc.dg/pr43300.c: New testcase.
+ 
+ 	2010-03-15  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/43367
+ 	* gcc.c-torture/compile/pr43367.c: New testcase.
+ 
+ 2010-03-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/43385
+ 	* gcc.c-torture/execute/pr43385.c: New test.
+ 
+ 2010-03-22  Richard Guenther  <rguenther@suse.de>
+ 
+ 	Backport from mainline:
+ 	2010-03-19  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/43415
+ 	* gcc.c-torture/compile/pr43415.c: New testcase.
+ 
+ 2010-03-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backport from mainline:
+ 	2010-03-20  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/43438
+ 	* gcc.c-torture/execute/pr43438.c: New testcase.
+ 
+ 	2010-03-19  Michael Matz  <matz@suse.de>
+ 
+ 	PR c++/43116
+ 	* g++.dg/other/pr43116.C: New testcase.
+ 
+ 	PR target/43305
+ 	* gcc.dg/pr43305.c: New testcase.
+ 
+ 	2010-03-18  Michael Matz  <matz@suse.de>
+ 
+ 	PR middle-end/43419
+ 	* gcc.dg/pr43419.c: New testcase.
+ 
+ 2010-03-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+ 
+ 	* gcc.target/powerpc/ppc-sdata-1.c: Require nonpic.
+ 	* gcc.target/powerpc/ppc-sdata-2.c: Likewise.
+ 
+ 2010-03-18  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline:
+ 	2010-03-18  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	PR rtl-optimization/43360
+ 	* gcc.dg/torture/pr43360.c: New.
+ 
+ 2010-03-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/43265
+ 	* gfortran.dg/read_empty_file.f: New test.
+ 	* gfortran.dg/read_eof_all.f90: New test.
+ 	* gfortran.dg/namelist_27.f90: Eliminate infinite loop posibility.
+ 	* gfortran.dg/namelist_28.f90: Eliminate infinite loop posibility.
+ 
+ 2010-03-13  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline:
+ 	2010-03-11  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/43257
+ 	* g++.dg/torture/pr43257.C: New test.
+ 
+ 	2010-03-11  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/43255
+ 	* gcc.c-torture/compile/pr43255.c: New testcase.
+ 
+ 	2010-03-11  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+ 
+ 	* gcc.dg/pr43280.c: New testcase.
+ 
+ 	2010-03-10  Jan Hubicka   <jh@suse.cz>
+ 
+ 	* gcc.c-torture/compile/pr43288.c: New test.
+ 
+ 	2010-03-10  Andrey Belevantsev  <abel@ispras.ru>
+ 
+ 	PR middle-end/42859
+ 	* g++.dg/eh/pr42859.C: New test.
+ 
+ 	2010-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/43299
+ 	* gcc.dg/pr43299.c: New test.
+ 
+ 	2010-03-08  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/43269
+ 	* gcc.c-torture/execute/pr43269.c: New testcase.
+ 
+ 	2010-03-04  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/43164
+ 	PR tree-optimization/43191
+ 	* gcc.c-torture/compile/pr43164.c: New test.
+ 	* gcc.c-torture/compile/pr43191.c: Likewise.
+ 
+ 	2010-03-04  Changpeng Fang  <changpeng.fang@amd.com>
+ 
+ 	PR middle-end/43209
+ 	* gcc.dg/tree-ssa/ivopts-4.c: New.
+ 
+ 	2010-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/43229
+ 	* gfortran.dg/pr43229.f90: New test.
+ 
+ 	PR debug/43237
+ 	* gcc.dg/debug/dwarf2/pr43237.c: New test.
+ 
+ 	2010-03-02  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/43180
+ 	* gfortran.dg/internal_pack_10.f90: New test.
+ 
+ 	2010-02-26  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/43188
+ 	* gcc.c-torture/compile/pr43188.c: New testcase.
+ 
+ 	2010-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/43166
+ 	* gfortran.dg/debug/pr43166.f: New test.
+ 
+ 	PR debug/43165
+ 	* gcc.dg/torture/pr43165.c: New test.
+ 
+ 	2010-02-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/43107
+ 	* gcc.target/i386/pr43107.c: New test.
+ 
+ 2010-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+ 
+ 	* gcc.target/arm/sibcall-1.c: Allow PLT to appear with pic code.
+ 
+ 2010-03-12  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/43320
+ 	PR libfortran/43265
+ 	* gfortran.dg/read_eof_6.f: New test
+ 	* gfortran.dg/read_x_eof.f90: New test.
+ 	* gfortran.dg/read_x_past.f: Update test.
+ 
+ 2010-03-11  Tobias Burnus  <burnus@net-b.de>
+ 
+ 	PR fortran/43228
+ 	* gfortran.dg/namelist_61.f90: New test.
+ 	
+ 2010-03-11  Janis Johnson  <janis187@us.ibm.com>
+ 
+ 	* lib/target-supports-dg.exp (check-flags): Provide defaults for
+ 	include-opts and exclude-opts; skip checking the flags if arguments
+ 	are the same as the defaults.
+ 	(dg-xfail-if): Verify the number of arguments, supply defaults
+ 	for unspecified optional arguments.
+ 	(dg-skip-if, dg-xfail-run-if): Verify the number of arguments.
+ 
+ 2010-03-11  Tobias Burnus  <burnus@net-b.de
+ 
+ 	PR fortran/43303
+ 	* gfortran.dg/c_assoc_3.f90: New test.
+ 
+ 2010-03-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+ 
+ 	* g++.old-deja/g++.pt/asm1.C: Don't detect pic via looking for the
+ 	-fpic/-fPIC flags.
+ 	* g++.old-deja/g++.pt/asm2.C: Likewise.
+ 	* gcc.c-torture/compile/20000804-1.c: Likewise.
+ 	* gcc.target/i386/clobbers.c: Likewise.
+ 
+ 2010-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backport from mainline:
+ 	2010-03-04  Andrew Pinski  <andrew_pinski@caviumnetworks.com>
+ 
+ 	PR c/43248
+ 	* gcc.dg/compound-literal-1.c: New testcase.
+ 
+ 2010-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+ 
+ 	Backport:
+ 	2009-10-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+ 	* lib/target-supports.exp (add_options_for_bind_pic_locally): New.
+ 	
+ 	2009-10-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+ 	* g++.dg/ipa/iinline-1.C: Use dg-add-options bind_pic_locally.
+ 	* g++.dg/other/first-global.C: Likewise.
+ 	* g++.dg/parse/attr-externally-visible-1.C: Likewise.
+ 	* g++.dg/tree-ssa/nothrow-1.C: Likewise.
+ 	* gcc.dg/inline-33.c: Likewise.
+ 	* gcc.dg/ipa/ipa-1.c: Likewise.
+ 	* gcc.dg/ipa/ipa-2.c: Likewise.
+ 	* gcc.dg/ipa/ipa-3.c: Likewise.
+ 	* gcc.dg/ipa/ipa-4.c: Likewise.
+ 	* gcc.dg/ipa/ipa-5.c: Likewise.
+ 	* gcc.dg/ipa/ipa-7.c: Likewise.
+ 	* gcc.dg/ipa/ipacost-2.c: Likewise.
+ 	
+ 	2010-02-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+ 	* gcc.dg/tree-ssa/inline-4.c: Bind pic locally.
+ 
+ 2010-03-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* lib/gnat.exp (gnat_init): Remove GNAT_UNDER_TEST_ORIG.
+ 	(gnat_target_compile): Likewise.
+ 	Reinitialize GNAT_UNDER_TEST if target changes.
+ 	Set ADA_INCLUDE_PATH, ADA_OBJECTS_PATH in environment.
+ 	(local_find_gnatmake): Pass full --GCC to gnatlink.
+ 	Remove --LINK.
+ 
+ 2010-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backport from mainline:
+ 	2010-03-01  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/43220
+ 	* gcc.c-torture/execute/pr43220.c: New testcase.
+ 
+ 2010-02-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/thin_pointer.ad[sb]: Rename into...
+ 	* gnat.dg/thin_pointer1.ad[sb]: ...this.
+ 	* gnat.dg/thin_pointer2.adb: New test.
+ 	* gnat.dg/thin_pointer2_pkg.ad[sb]: New helper.
+ 
+ 2010-02-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+ 
+ 	* gcc.target/arm/thumb2-cbnz.c: New test.
+ 
+ 2010-02-23  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline:
+ 	2010-02-22  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/42749
+ 	* gcc.c-torture/compile/pr42749.c: New testcase.
+ 
+ 	2010-02-21  Dodji Seketeli  <dodji@redhat.com>
+ 
+ 	PR c++/42824
+ 	* g++.dg/template/memclass4.C: New test.
+ 
+ 	2010-02-20  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/43111
+ 	* gfortran.dg/internal_pack_8.f90: New test.
+ 
+ 	2010-02-18  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/43109
+ 	* g++.dg/parse/namespace12.C: New.
+ 
+ 	2010-02-18  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/43066
+ 	* gcc.c-torture/compile/pr43066.c: New test.
+ 
+ 	2010-02-17  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/43069
+ 	* g++.dg/parse/namespace11.C: New.
+ 
+ 	PR c++/43093
+ 	* g++.dg/ext/attrib37.C: New.
+ 
+ 	PR c++/43079
+ 	* g++.dg/template/ptrmem20.C: New.
+ 
+ 	2010-02-16  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/43031
+ 	* g++.dg/ext/attrib36.C: New.
+ 
+ 	2010-02-15  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR middle-end/43068
+ 	* g++.dg/torture/pr43068.C: New testcase.
+ 
+ 	2010-02-11  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/42998
+ 	* gcc.c-torture/compile/pr42998.c: New testcase.
+ 
+ 	2010-02-10  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/43017
+ 	* gcc.dg/torture/pr43017.c: New testcase.
+ 
+ 	2010-02-10  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR c/43007
+ 	* gcc.c-torture/execute/20100209-1.c: New testcase.
+ 	* gcc.dg/fold-div-3.c: Likewise.
+ 
+ 	2010-02-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/42999
+ 	* gfortran.dg/array_constructor_35.f90: New test.
+ 
+ 	2010-02-09  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/43008
+ 	* gcc.c-torture/execute/pr43008.c: New testcase.
+ 
+ 	2010-02-09  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/43000
+ 	* gcc.dg/torture/pr43000.c: New testcase.
+ 	* gcc.dg/torture/pr43002.c: Likewise.
+ 
+ 	2010-02-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/42742
+ 	* gfortran.dg/fmt_cache_2.f: New test.
+ 
+ 	2010-02-03  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/42870
+ 	* g++.dg/ext/dllexport3.C: New.
+ 
+ 2010-02-18  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+ 
+ 	PR target/40887
+ 	Backport from trunk.
+ 	2009-12-24  Julian Brown  <julian@codesourcery.com>
+ 		    Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+ 
+ 	* gcc.target/arm/pr40887.c: New test.
+ 
+ 2010-02-16  Ira Rosen <irar@il.ibm.com>
+ 
+ 	PR tree-optimization/43074
+ 	* gcc.dg/vect/fast-math-pr43074.c: New test.
+ 
+ 2010-02-16  Tobias Burnus  <burnus@net-b.de>
+ 
+ 	PR fortran/41869
+ 	* gfortran.dg/module_write_1.f90: New test.
+ 
+ 2010-02-13  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/42871
+ 	* g++.dg/torture/pr42871.C: New testcase.
+ 
+ 2010-02-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/43033
+ 	* g++.dg/other/default3.C: Xfail g4 test.
+ 
+ 2010-02-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/43010
+ 	* g++.dg/debug/pr43010.C: New test.
+ 
+ 2010-02-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+ 
+ 	* gcc.dg/tree-ssa/inline-4.c: Bind pic locally.
+ 
+ 2010-02-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/42890
+ 	* g++.dg/torture/pr42890.C: New test.
+ 
+ 2010-02-08  Richard Guenther  <rguenther@suse.de>
+ 
+ 	Backport from mainline:
+ 	2010-01-05  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/42462
+ 	* gcc.dg/tree-ssa/inline-4.c: New testcase.
+ 	* gcc.dg/Wunreachable-2.c: Remove.
+ 
+ 2010-02-08  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	* gcc.dg/ipa/pr42706.c: Removed.
+ 
+ 2010-02-06  H.J. Lu  <hongjiu.lu@intel.com>
+ 
+ 	Backport from mainline:
+ 	2010-02-05  Dodji Seketeli  <dodji@redhat.com>
+ 
+ 	PR c++/42915
+ 	* g++.dg/other/crash-9.C: New test.
+ 
+ 	2010-02-03  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/40138
+ 	* g++.dg/ext/builtin11.C: New.
+ 
+ 	2010-02-03  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/42944
+ 	* gcc.dg/errno-1.c: New testcase.
+ 
+ 	2010-02-03  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR middle-end/42927
+ 	* gcc.c-torture/compile/pr42927.c: New testcase.
+ 
+ 	2010-01-29  Dodji Seketeli  <dodji@redhat.com>
+ 
+ 	PR c++/42758
+ 	PR c++/42634
+ 	PR c++/42336
+ 	PR c++/42797
+ 	PR c++/42880
+ 	* g++.dg/other/crash-5.C: New test.
+ 	* g++.dg/other/crash-7.C: New test.
+ 	* g++.dg/other/crash-8.C: New test.
+ 
+ 	2010-01-28  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/42891
+ 	* gcc.target/i386/pr42891.c: New test.
+ 
+ 	2010-01-28  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR middle-end/42883
+ 	* g++.dg/torture/pr42883.C: New testcase.
+ 
+ 	2010-01-28  Michael Matz  <matz@suse.de>
+ 
+ 	* gcc.target/i386/pr42881.c: New test.
+ 
+ 	2010-01-28  Dodji Seketeli  <dodji@redhat.com>
+ 
+ 	PR c++/42713
+ 	PR c++/42820
+ 	* g++.dg/template/typedef27.C: New test case.
+ 	* g++.dg/template/typedef28.C: New test case.
+ 
+ 	2010-01-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/42874
+ 	* gcc.dg/vla-22.c: New test.
+ 
+ 	2010-01-26  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/42250
+ 	* gcc.dg/pr42250.c: New testcase.
+ 
+ 	2010-01-25  Tobias Burnus  <burnus@net-b.de>
+ 
+ 	PR fortran/42858
+ 	* gfortran.dg/generic_21.f90: New test.
+ 
+ 	2010-01-21  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/42585
+ 	* gcc.dg/tree-ssa/pr42585.c: New test.
+ 
+ 	2010-01-20  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	PR debug/42715
+ 	* gcc.dg/pr42715.c: New.
+ 
+ 	2010-01-20  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/42717
+ 	* gcc.c-torture/compile/pr42717.c: New testcase.
+ 
+ 	2010-01-19  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/42783
+ 	* gfortran.dg/bounds_check_15.f90 : New test.
+ 
+ 	2010-01-18  Dodji Seketeli  <dodji@redhat.com>
+ 
+ 	PR c++/42766
+ 	* g++.dg/conversion/op6.C: New test.
+ 
+ 	2010-01-18  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/42781
+ 	* gfortran.fortran-torture/compile/pr42781.f90: New testcase.
+ 
+ 	2010-01-17  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR middle-end/42248
+ 	* gcc.c-torture/execute/pr42248.c: New testcase.
+ 
+ 	2010-01-17  Janus Weil  <janus@gcc.gnu.org>
+ 
+ 	PR fortran/42677
+ 	* gfortran.dg/interface_assignment_5.f90: New test.
+ 
+ 	2010-01-15  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR middle-end/42739
+ 	* g++.dg/torture/pr42739.C: New testcase.
+ 
+ 	2010-01-14 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/42684
+ 	* gfortran.dg/interface_31.f90: New test.
+ 
+ 	2010-01-14  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/42706
+ 	* gcc.dg/ipa/pr42706.c: New testcase.
+ 
+ 	2010-01-14  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/42714
+ 	* g++.dg/torture/pr42714.C: New test.
+ 
+ 	2010-01-14  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR rtl-optimization/42388
+ 	* gcc.dg/pr42388.c: New.
+ 
+ 	2010-01-14  Alexander Monakov <amonakov@ispras.ru>
+ 
+ 	PR rtl-optimization/42294
+ 	* gfortran.dg/pr42294.f: New.
+ 
+ 	2010-01-14  Ira Rosen  <irar@il.ibm.com>
+ 
+ 	PR tree-optimization/42709
+ 	* gcc.dg/vect/pr42709.c: New test.
+ 
+ 	2010-01-13  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/42730
+ 	* gcc.c-torture/compile/pr42730.c: New testcase.
+ 
+ 	2010-01-13  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/42704
+ 	* g++.dg/torture/pr42704.C: New test.
+ 
+ 	2010-01-13  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/42703
+ 	* gcc.c-torture/compile/pr42703.c: New test.
+ 
+ 	2010-01-13  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/42705
+ 	* gcc.c-torture/compile/pr42705.c: New testcase.
+ 
+ 	2010-01-13  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR middle-end/42716
+ 	* gcc.c-torture/compile/pr42716.c: New testcase.
+ 
+ 	2010-01-12  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	PR c/42708
+ 	* gcc.c-torture/compile/pr42708-1.c: New test.
+ 
+ 	2010-01-09  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	PR middle-end/42363
+ 	* gcc.dg/torture/pr42363.c: New.
+ 
+ 	2010-01-09  Alexandre Oliva  <aoliva@redhat.com>
+ 
+ 	PR debug/42604
+ 	PR debug/42395
+ 	* gcc.dg/vect/pr42604.c: New.
+ 	* gcc.dg/vect/pr42395.c: New.
+ 
+ 	2010-01-09  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR middle-end/42512
+ 	* gcc.c-torture/execute/pr42512.c: New testcase.
+ 
+ 2010-02-06  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/42309
+ 	* gfortran.dg/subref_array_pointer_4.f90 : New test.
+ 
+ 2010-02-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/42901
+ 	* gfortran.dg/namelist_60.f90: New test.
+ 	* gfortran.dg/namelist_59.f90: New test.
+ 
+ 2010-02-04  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/42952
+ 	* gcc.dg/torture/pr42952.c: New testcase.
+ 
+ 2010-02-02  Tobias Burnus  <burnus@net-b.de>
+ 
+ 	PR fortran/42650
+ 	* gfortran.dg/func_result_5.f90: New test.
+ 
+ 2010-02-01  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backport from mainline:
+ 	2009-12-17  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* objc/execute/forward-1.x: XFAIL for -fgnu-runtime on
+ 	x86_64-*-darwin*, powerpc*-*-darwin* and alpha*-*-linux* targets.
+ 
+ 2010-01-31  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR middle-end/42898
+ 	* gcc.dg/torture/pr42898-2.c: New test.
+ 
+ 2010-01-31  Richard Guenther  <rguenther@suse.de>
+ 
+ 	PR middle-end/42898
+ 	* gcc.dg/torture/pr42898.c: New testcase.
+ 
+ 2010-01-31  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/38324
+ 	* gfortran.dg/alloc_comp_basics_1.f90: Remove option -O2.
+ 	* gfortran.dg/alloc_comp_bounds_1.f90: New test.
+ 
+ 2010-01-30  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/41044
+ 	* gfortran.dg/parameter_array_ref_2.f90 : New test.
+ 
+ 	PR fortran/41167
+ 	* gfortran.dg/char_array_arg_1.f90 : New test.
+ 
+ 2010-01-27  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/42736
+ 	* gfortran.dg/dependency_25.f90 : New test.
+ 
+ 2010-01-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* ada/acats/run_all.sh: Make sure norun.lst is sorted using the
+ 	current collation.
+ 
+ 	Backport from mainline:
+ 	2009-12-17  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* ada/acats/run_all.sh: Strip comments from norun.lst.
+ 
+ 2010-01-25  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+ 
+ 	Backport from mainline.
+ 	2010-01-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+ 
+ 	PR target/38697.
+ 	* gcc.target/arm/neon/vget_lowf32.c: Regenerate.
+ 	* gcc.target/arm/neon/vget_lowp16.c: Likewise.
+ 	* gcc.target/arm/neon/vget_lowp8.c:  Likewise.
+ 	* gcc.target/arm/neon/vget_lows16.c: Likewise.
+ 	* gcc.target/arm/neon/vget_lows32.c: Likewise.
+ 	* gcc.target/arm/neon/vget_lows64.c: Likewise.
+ 	* gcc.target/arm/neon/vget_lows8.c: Likewise.
+ 	* gcc.target/arm/neon/vget_lowu16.c: Likewise.
+ 	* gcc.target/arm/neon/vget_lowu32.c: Likewise.
+ 	* gcc.target/arm/neon/vget_lowu64.c: Likewise.
+ 	* gcc.target/arm/neon/vget_lowu8.c: Likewise.
+ 
  2010-01-21  Release Manager
  
  	* GCC 4.4.3 released.
diff -Nrcpad gcc-4.4.3/gcc/testsuite/ada/acats/run_all.sh gcc-4.4.4/gcc/testsuite/ada/acats/run_all.sh
*** gcc-4.4.3/gcc/testsuite/ada/acats/run_all.sh	Thu Sep 14 10:12:03 2006
--- gcc-4.4.4/gcc/testsuite/ada/acats/run_all.sh	Tue Jan 26 17:25:40 2010
*************** sed -e "s,ACATS4GNATDIR,$dir,g" \
*** 129,134 ****
--- 129,135 ----
  
  cp $testdir/tests/cd/*.c $dir/support
  cp $testdir/tests/cxb/*.c $dir/support
+ grep -v '^#' $testdir/norun.lst | sort > $dir/support/norun.lst
  
  rm -rf $dir/run
  mv $dir/tests $dir/tests.$$ 2> /dev/null
*************** for chapter in $chapters; do
*** 206,212 ****
  
     cd $dir/tests/$chapter
     ls *.a *.ada *.adt *.am *.dep 2> /dev/null | sed -e 's/\(.*\)\..*/\1/g' | \
!    cut -c1-7 | sort | uniq | comm -23 - $testdir/norun.lst \
       > $dir/tests/$chapter/${chapter}.lst 
     countn=`wc -l < $dir/tests/$chapter/${chapter}.lst`
     glob_countn=`expr $glob_countn + $countn`
--- 207,213 ----
  
     cd $dir/tests/$chapter
     ls *.a *.ada *.adt *.am *.dep 2> /dev/null | sed -e 's/\(.*\)\..*/\1/g' | \
!    cut -c1-7 | sort | uniq | comm -23 - $dir/support/norun.lst \
       > $dir/tests/$chapter/${chapter}.lst 
     countn=`wc -l < $dir/tests/$chapter/${chapter}.lst`
     glob_countn=`expr $glob_countn + $countn`
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/abi/mangle42.C gcc-4.4.4/gcc/testsuite/g++.dg/abi/mangle42.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/abi/mangle42.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/abi/mangle42.C	Thu Mar 25 16:39:51 2010
***************
*** 0 ****
--- 1,14 ----
+ // Origin: PR c++/43375
+ // { dg-do compile { target i?86-*-* x86_64-*-* } }
+ // { dg-options "-msse2 -std=gnu++0x" }
+ 
+ typedef float __v4sf __attribute__ ((__vector_size__ (16)));
+ typedef int __v4si __attribute__ ((__vector_size__ (16)));
+ __v4sf my_asin(__v4sf x)
+ {
+   static const __v4si g_Mask{0x7fffffff,
+ 			     0x00000000,
+ 			     0x7fffffff,
+ 			     0x7fffffff };
+   return __builtin_ia32_andnps ((__v4sf) g_Mask, x);
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/conversion/op6.C gcc-4.4.4/gcc/testsuite/g++.dg/conversion/op6.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/conversion/op6.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/conversion/op6.C	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,18 ----
+ // Origin: PR c++/42766
+ // { dg-do compile }
+ 
+ template<class T> class smart_pointer {
+ public:
+     operator T* () const { }
+     operator bool () const { }
+     operator bool () { }
+ };
+ class Context { };
+ typedef smart_pointer<Context> ContextP;
+ class SvnClient  {
+     ~SvnClient();
+     ContextP svnContext;
+ };
+ SvnClient::~SvnClient() {
+     delete svnContext;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/debug/pr43010.C gcc-4.4.4/gcc/testsuite/g++.dg/debug/pr43010.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/debug/pr43010.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/debug/pr43010.C	Wed Feb 10 15:09:06 2010
***************
*** 0 ****
--- 1,8 ----
+ // PR debug/43010
+ // { dg-do compile }
+ // { dg-options "-g -femit-struct-debug-baseonly" }
+ # 1 "foo.C"
+ # 1 "bar.h" 1
+ typedef struct { int i; } S __attribute__((aligned));
+ typedef struct { struct { int i; } j; } T __attribute__((aligned));
+ # 1 "foo.C" 2
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/eh/pr42859.C gcc-4.4.4/gcc/testsuite/g++.dg/eh/pr42859.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/eh/pr42859.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/eh/pr42859.C	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,23 ----
+ // { dg-do compile }
+ 
+ void start (void);
+ void
+ ptw32_terminate (void)
+ {
+   try
+   {
+     try
+     {
+       start ();
+     }
+     catch (int)
+     {
+     }
+     catch (int)
+     {
+     }
+   }
+   catch (int)
+   {
+   }
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/ext/attrib36.C gcc-4.4.4/gcc/testsuite/g++.dg/ext/attrib36.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/ext/attrib36.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/ext/attrib36.C	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,20 ----
+ // PR c++/43031
+ // { dg-do compile { target { { i?86-*-* x86_64-*-* } && ilp32 } } }
+ 
+ class T;
+ class L { };
+ class P : public L
+ {
+   typedef void (__attribute__((__stdcall__)) T::*F) (L*);
+   void f(bool aAdd);
+ };
+ class T
+ {
+ public:
+     virtual void __attribute__((__stdcall__)) A(L *listener) = 0;
+     virtual void __attribute__((__stdcall__)) R(L *listener) = 0;
+ };
+ void P::f(bool aAdd)
+ {
+   F addRemoveEventListener = (aAdd ? &T::A : &T::R);
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/ext/attrib37.C gcc-4.4.4/gcc/testsuite/g++.dg/ext/attrib37.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/ext/attrib37.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/ext/attrib37.C	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/43093
+ // { dg-do compile { target { { i?86-*-* x86_64-*-* } && ilp32 } } }
+ 
+ struct S {
+   int x;
+   S(const S &s) {}
+ };
+ 
+ S __attribute__((__stdcall__)) getS();
+ 
+ void test()
+ {
+   S s = getS();
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/ext/builtin11.C gcc-4.4.4/gcc/testsuite/g++.dg/ext/builtin11.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/ext/builtin11.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/ext/builtin11.C	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/40138
+ // { dg-options "-Wall" }
+ 
+ void foo(int i, ...)
+ {
+   V v;				// { dg-error "not declared|expected" }
+   __builtin_va_start(v, i);	// { dg-error "not declared" }
+   i = __builtin_va_arg(v, int);
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/ext/dllexport3.C gcc-4.4.4/gcc/testsuite/g++.dg/ext/dllexport3.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/ext/dllexport3.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/ext/dllexport3.C	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/42870
+ // { dg-do compile { target i?86-*-cygwin *-*-mingw* } }
+ // { dg-final { scan-assembler "-export:_ZN2SaD1Ev" } }
+ 
+ #define ATTRIBUTE __attribute__ ((dllexport))
+ class ATTRIBUTE Sa {
+  public:
+   Sa()
+     {}
+   ~Sa();
+ };
+ ATTRIBUTE Sa::~Sa()
+ {return;}
+ 
+ bool DllMain(void *a,void*b,int)
+ {
+   Sa s;
+   return true;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/ext/is_pod_98.C gcc-4.4.4/gcc/testsuite/g++.dg/ext/is_pod_98.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/ext/is_pod_98.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/ext/is_pod_98.C	Thu Mar 25 16:39:51 2010
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/43333
+ // { dg-options "-std=c++98" }
+ // { dg-do run }
+ 
+ struct strPOD
+ {
+   const char *const foo;
+   const char *const bar;
+ };
+ extern "C" void abort (void);
+ int main ()
+ {
+   if (!__is_pod (strPOD))
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/ipa/iinline-1.C gcc-4.4.4/gcc/testsuite/g++.dg/ipa/iinline-1.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/ipa/iinline-1.C	Fri Nov  7 09:00:14 2008
--- gcc-4.4.4/gcc/testsuite/g++.dg/ipa/iinline-1.C	Sat Mar  6 02:29:14 2010
***************
*** 2,8 ****
     inlining..  */
  /* { dg-do compile } */
  /* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining"  } */
! /* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining -fpie" { target { ! nonpic } } } */
  
  extern void non_existent (const char *, int);
  
--- 2,8 ----
     inlining..  */
  /* { dg-do compile } */
  /* { dg-options "-O3 -fdump-ipa-inline -fno-early-inlining"  } */
! /* { dg-add-options bind_pic_locally } */
  
  extern void non_existent (const char *, int);
  
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/opt/ice1.C gcc-4.4.4/gcc/testsuite/g++.dg/opt/ice1.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/opt/ice1.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/opt/ice1.C	Fri Mar 26 14:30:49 2010
***************
*** 0 ****
--- 1,41 ----
+ // PR c++/43024
+ // { dg-options "-O2" }
+ 
+ void foo();
+ 
+ template<int> struct X
+ {
+   enum { e };
+   typedef int Y;
+ };
+ 
+ template<int N = 0> struct A
+ {
+   ~A() { foo(); }
+   A() { a<0>(0); }
+   template<int> void a(typename X<!X<N>::e>::Y);
+   struct B b();
+ };
+ 
+ struct B
+ {
+   A<> b0, b1, b2, b3;
+   B operator+ (const B&);
+ };
+ 
+ struct C
+ {
+   A<> c0, c1, c2, c3, c4, c5, c6, c7, c8;
+ };
+ 
+ inline void bar(int i)
+ {
+   A<> a0, a1;
+   if (i) a0.b() + a0.b() + a0.b() + a0.b();
+ }
+ 
+ void baz()
+ {
+   C c;
+   bar(0);
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/other/crash-5.C gcc-4.4.4/gcc/testsuite/g++.dg/other/crash-5.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/other/crash-5.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/other/crash-5.C	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,16 ----
+ // Origin: PR c++/42758
+ // { dg-do compile }
+ 
+ template<class T> struct less {};
+ 
+ template<class T, typename U = less<T> > struct set {};
+ 
+ struct int_less_than {};
+ 
+ void assert_fail (const char*);
+ 
+ int f(const set<int, int_less_than>&)
+ {
+     assert_fail (__PRETTY_FUNCTION__);
+ 
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/other/crash-7.C gcc-4.4.4/gcc/testsuite/g++.dg/other/crash-7.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/other/crash-7.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/other/crash-7.C	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,19 ----
+ // Origin: PR c++/42336
+ // { dg-options "-std=c++0x -O2 -g" }
+ // { dg-do compile }
+ 
+ struct X {
+       void func() {}
+ };
+ 
+ template<typename T, void (X::*P)() = &T::func>
+ void b(T) {}
+ 
+ int main() {
+       b(X()); /* line 9 */
+         X().func();
+ 
+           return 0;
+ }
+ 
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/other/crash-8.C gcc-4.4.4/gcc/testsuite/g++.dg/other/crash-8.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/other/crash-8.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/other/crash-8.C	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,109 ----
+ // Origin: PR c++/42797
+ // { dg-options "-g -O2 -std=c++0x" }
+ 
+ template<typename _Tp, _Tp __v>     struct integral_constant     {
+     static const _Tp value = __v;
+ };
+ 
+ template<typename _Tp>     _Tp declval();
+ 
+ template<typename _Tp, typename... _Args>
+ class __is_constructible_helper  {
+ };
+ 
+ template<typename _Tp, typename _Arg>
+ class __is_constructible_helper<_Tp, _Arg>  {
+ 
+     template<typename _Tp1, typename _Arg1>
+     static decltype(static_cast<_Tp1>(declval<_Arg1>()), char())  __test(int);
+ public:
+     static const bool __value = sizeof(__test<_Tp, _Arg>(0)) == 1;
+ };
+ 
+ template<typename _Tp, typename... _Args>
+ struct is_constructible     : public integral_constant<bool,__is_constructible_helper<_Tp, _Args...>::__value>     { };
+ 
+ template<bool, typename _Tp = void>
+ struct enable_if  { };
+ 
+ template<typename _Tp>
+ struct enable_if<true, _Tp>     {
+     typedef _Tp type;
+ };
+ 
+ template<class _T1, class _T2>     struct pair     {
+     _T1 first;
+     _T2 second;
+ 
+     template<class _U2, class = typename  enable_if<is_constructible<_T2, _U2&&>::value>::type>
+     pair(const _T1& __x, _U2&& __y)  : first(__x),
+                                        second(__y) { }
+ };
+ 
+ namespace __gnu_cxx {
+ template<typename _Tp>
+ class new_allocator     {
+ public:
+     new_allocator() throw() { }
+     new_allocator(const new_allocator&) throw() { }
+ };
+ }
+ 
+ template<typename _Tp>
+ class allocator: public __gnu_cxx::new_allocator<_Tp>     {
+ public:
+ 
+     template<typename _Tp1>
+     struct rebind  {
+         typedef allocator<_Tp1> other;
+     };
+ };
+ 
+ 
+ template<typename _Tp, typename _Alloc>     struct _Vector_base     {
+     typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
+ 
+     struct _Vector_impl       : public _Tp_alloc_type   {
+         _Vector_impl()
+         { }
+     };
+ public:
+ 
+     _Vector_impl _M_impl;
+ };
+ 
+ template<typename _Tp, typename _Alloc = allocator<_Tp> >
+ class vector : protected _Vector_base<_Tp, _Alloc> {
+     typedef _Alloc allocator_type;
+ public:
+     vector()       { }
+     explicit       vector(int, const allocator_type& __a = allocator_type())
+     {
+     }
+ };
+ 
+ 
+ template <typename _Key, typename _Tp>
+ class map {
+     typedef _Key key_type;
+     typedef _Tp mapped_type;
+     typedef pair<const _Key, _Tp> value_type;
+ public:
+ 
+     void insert(const value_type& __x)
+     {
+     }
+ 
+     mapped_type&       operator[](const key_type& __k)       {
+         insert(value_type(__k, mapped_type()));
+     }
+ 
+ };
+ 
+ struct Foo {
+     Foo() {}      template<typename Tp>     Foo(Tp *p) {} };
+ void foo() {
+     map <int, vector<Foo>> the_map;
+     the_map[1] = vector<Foo>();
+ }
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/other/crash-9.C gcc-4.4.4/gcc/testsuite/g++.dg/other/crash-9.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/other/crash-9.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/other/crash-9.C	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,15 ----
+ // Origin: PR c++/42915
+ // { dg-do compile }
+ 
+ template <typename T>
+ class A
+ {
+   template <typename U>
+   class B
+   {
+     B foo();
+   };
+ };
+ template <typename T> template <typename U>
+ A<T>::B<U> A<T>::B<U>::foo() {}
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/other/default3.C gcc-4.4.4/gcc/testsuite/g++.dg/other/default3.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/other/default3.C	Thu Jan 19 09:51:57 2006
--- gcc-4.4.4/gcc/testsuite/g++.dg/other/default3.C	Fri Feb 12 17:27:33 2010
*************** template<typename> void g3(int, int);
*** 25,31 ****
  template<typename> void g3(int = 0, int);    // { dg-error "default" }
  
  template<typename> void g4(int, int);
! template<typename> void g4(int = 0, int) {}  // { dg-error "default" }
  
  template<typename> void g5();
  template<typename> void g5(int = 0, int);    // { dg-error "default" }
--- 25,31 ----
  template<typename> void g3(int = 0, int);    // { dg-error "default" }
  
  template<typename> void g4(int, int);
! template<typename> void g4(int = 0, int) {}  // { dg-error "default" "" { xfail *-*-* } }
  
  template<typename> void g5();
  template<typename> void g5(int = 0, int);    // { dg-error "default" }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/other/first-global.C gcc-4.4.4/gcc/testsuite/g++.dg/other/first-global.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/other/first-global.C	Wed Jan 30 20:40:58 2008
--- gcc-4.4.4/gcc/testsuite/g++.dg/other/first-global.C	Sat Mar  6 02:29:14 2010
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-fpie" { target { ! nonpic } } } */
  /* { dg-final { scan-assembler "_GLOBAL__I(_|_65535_0_)foobar" } } */
  
  struct foo { foo (); };
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-add-options bind_pic_locally } */
  /* { dg-final { scan-assembler "_GLOBAL__I(_|_65535_0_)foobar" } } */
  
  struct foo { foo (); };
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/other/pr43116.C gcc-4.4.4/gcc/testsuite/g++.dg/other/pr43116.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/other/pr43116.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/other/pr43116.C	Mon Mar 22 15:03:45 2010
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ extern "C" int rpl_open (const char *filename, int flags, ...) __attribute__
+ ((__nonnull__ (1)));
+ 
+ namespace gnulib
+ {
+     int (*const open) (const char *filename, int flags, ...) __attribute__
+ 	((__nonnull__ (1))) = rpl_open;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/parse/ambig5.C gcc-4.4.4/gcc/testsuite/g++.dg/parse/ambig5.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/parse/ambig5.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/parse/ambig5.C	Tue Mar 30 21:20:58 2010
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/41786
+ 
+ struct A { A(int, char const*); };
+ int main() {
+   int i = 0, *b = &i;
+   A a(int(b[i]), "hello");
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/parse/attr-externally-visible-1.C gcc-4.4.4/gcc/testsuite/g++.dg/parse/attr-externally-visible-1.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/parse/attr-externally-visible-1.C	Wed Jan 30 20:40:58 2008
--- gcc-4.4.4/gcc/testsuite/g++.dg/parse/attr-externally-visible-1.C	Sat Mar  6 02:29:14 2010
***************
*** 1,6 ****
  // { dg-do compile }
  // { dg-options "-O3 -fwhole-program" }
! // { dg-options "-O3 -fwhole-program -fpie" { target { ! nonpic } } }
  // { dg-final { scan-assembler "foo1" } }
  // { dg-final { scan-assembler "foo2" } }
  // { dg-final { scan-assembler "foo3" } }
--- 1,6 ----
  // { dg-do compile }
  // { dg-options "-O3 -fwhole-program" }
! // { dg-add-options bind_pic_locally }
  // { dg-final { scan-assembler "foo1" } }
  // { dg-final { scan-assembler "foo2" } }
  // { dg-final { scan-assembler "foo3" } }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/parse/namespace11.C gcc-4.4.4/gcc/testsuite/g++.dg/parse/namespace11.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/parse/namespace11.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/parse/namespace11.C	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/43069
+ 
+ namespace std {
+   template < typename >
+   void swap ();
+ }
+ template std::swap		// { dg-error "" }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/parse/namespace12.C gcc-4.4.4/gcc/testsuite/g++.dg/parse/namespace12.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/parse/namespace12.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/parse/namespace12.C	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/43109
+ 
+ namespace std {
+  namespace {
+    struct S {};
+  }
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/parse/varmod1.C gcc-4.4.4/gcc/testsuite/g++.dg/parse/varmod1.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/parse/varmod1.C	Fri Feb 21 22:56:06 2003
--- gcc-4.4.4/gcc/testsuite/g++.dg/parse/varmod1.C	Tue Mar 30 21:20:58 2010
*************** int main(int argc, char** argv) {
*** 2,7 ****
    int nx = 2;
    void theerror(double a[][nx+1]); // { dg-error "" }
    double** a;
!   theerror(a); // { dg-error "" }
    return 0;
  }
--- 2,7 ----
    int nx = 2;
    void theerror(double a[][nx+1]); // { dg-error "" }
    double** a;
!   theerror(a);
    return 0;
  }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/template/memclass4.C gcc-4.4.4/gcc/testsuite/g++.dg/template/memclass4.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/template/memclass4.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/template/memclass4.C	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,70 ----
+ // Origin: PR c++/42824
+ // { dg-do compile }
+ 
+ template<int T>
+ class int_ {
+ };
+ 
+ template<int T, int T2>
+ class Unit {
+ public:
+     Unit(const Unit<T, T2>& other) {}
+ };
+ 
+ template<int T>
+ class Quan {
+ public:
+     Quan(void) {}
+ 
+     template<int T2>
+     Quan(double value, Unit<T, T2> unit) {}
+ };
+ typedef Quan<0> Scalar;
+ 
+ template<int T>
+ class hlp {
+ public:
+    typedef Quan<T> type;
+ };
+ 
+ class Mtrl {
+ public:
+     template<int T>
+     struct AssoType {
+         typedef typename hlp<T>::type type;
+     };
+ };
+ 
+ template<class T>
+ class Eval {
+ public:
+     Eval(const T& object){}
+ 
+     template<int V>
+     void eval() {
+         eval<V> (int_<0>());
+     }
+ private:
+     template<typename U> struct Wrap {};
+ 
+     template<int V, int V2>
+     void value(Wrap<Quan<V2> >) {}
+ 
+     template<int V>
+     void value(Wrap<Scalar>) {}
+ 
+     template<int V>
+     void eval(int_<0>) {
+         typedef typename T::template AssoType<V>::type Type;
+         value<V>(Wrap<Type>());
+     }
+ };
+ 
+ class Foo {
+ public:
+     static void eval(const Mtrl& mtrl) {
+         Eval<Mtrl> h(mtrl);
+         h.eval<0> ();
+     }
+ };
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/template/ptrmem20.C gcc-4.4.4/gcc/testsuite/g++.dg/template/ptrmem20.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/template/ptrmem20.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/template/ptrmem20.C	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/43079
+ 
+ struct A {};
+ 
+ struct B
+ {
+   void foo() const;
+   void foo();
+ };
+ 
+ template<void (A::*)()> void bar();
+ 
+ void baz()
+ {
+   bar<&B::foo>();  // { dg-error "not a valid template argument|no match" }
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/template/typedef27.C gcc-4.4.4/gcc/testsuite/g++.dg/template/typedef27.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/template/typedef27.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/template/typedef27.C	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,55 ----
+ // Origin: PR c++/42713
+ // { dg-do compile }
+ 
+ template<class T>
+ struct S
+ {
+ };
+ 
+ template<class T>
+ struct S0
+ {
+     typedef T TT;
+ };
+ 
+ template<class U, class V>
+ struct super_struct : S0<V>
+ {
+     typedef S0<V> super;
+ };
+ 
+ template<class U, class V, class W>
+ struct S1 : super_struct<U, V>
+ {
+     typedef super_struct<U, V> super;
+     typedef typename super::super Super2;
+     typedef typename Super2::TT Super2TT;
+     void
+     foo()
+     {
+         S<Super2TT> s1;
+     }
+ };
+ 
+ template<class U, class V>
+ struct S2 : super_struct<U, V>
+ {
+     typedef super_struct<U, V> super;
+     typedef typename super::super Super2;
+     typedef typename Super2::TT Super2TT;
+     void
+     foo()
+     {
+         S<Super2TT> s1;
+     }
+ };
+ 
+ int
+ main()
+ {
+     S1<int, S<int>, int> s1;
+     s1.foo();
+     S2<int, S<int> > s2;
+     s2.foo();
+ }
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/template/typedef28.C gcc-4.4.4/gcc/testsuite/g++.dg/template/typedef28.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/template/typedef28.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/template/typedef28.C	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,28 ----
+ // Origin: PR c++/42820
+ // { dg-do compile }
+ 
+ 
+ template <class T> struct vector{};
+ struct Traits{struct Primitive{struct Id{};};};
+ 
+ template <class Tree, class Polyhedron> struct Tree_vs_naive
+ {
+   typedef typename Tree::Primitive Primitive;
+ 
+   void f() const
+   {
+ 	  typedef vector<typename Primitive::Id> Id_vector;
+   }
+ };
+ 
+ template <class Tree> void test_hint_strategies()
+ {
+   vector<typename Tree::Primitive::Id> v;
+ }
+ 
+ int main(void)
+ {
+   test_hint_strategies<Traits>();
+ }
+ 
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr42450.C gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr42450.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr42450.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr42450.C	Thu Mar 25 16:39:51 2010
***************
*** 0 ****
--- 1,112 ----
+ /* { dg-do compile } */
+ 
+ template < typename > class basic_stringstream;
+ 
+ struct basic_string {
+   basic_string();
+ };
+ 
+ struct ios_base {
+   virtual ~ios_base();
+ };
+ 
+ class ostream:ios_base {};
+ class istream:virtual ios_base {};
+ 
+ template < typename > struct basic_iostream:public istream, ostream {
+   ~basic_iostream () {}
+ };
+ extern template class basic_iostream < char >;
+ 
+ template < typename > struct basic_stringstream:public basic_iostream < char > {
+     basic_string _M_stringbuf;
+     ~basic_stringstream () {}
+ };
+ extern template class basic_stringstream < char >;
+ 
+ template < typename > struct AnyMatrixBase;
+ template < typename, int _Rows, int _Cols, int = _Rows, int = _Cols > class Matrix;
+ template < typename > class CwiseNullaryOp;
+ 
+ template < typename Derived > struct MatrixBase:public AnyMatrixBase < Derived > {
+   typedef CwiseNullaryOp < Derived > ConstantReturnType;
+   ConstantReturnType Constant ();
+   template < typename > Derived cast ();
+   static CwiseNullaryOp < Derived > Random (int);
+ };
+ 
+ template < typename Derived > struct AnyMatrixBase {
+   Derived derived () {}
+   Derived & derived () const {}
+ };
+ 
+ template < typename, int > struct ei_matrix_storage {};
+ 
+ template < typename _Scalar, int, int, int _MaxRows, int _MaxCols > struct Matrix:MatrixBase < Matrix < _Scalar, _MaxRows, _MaxCols > > {
+   typedef MatrixBase < Matrix > Base;
+   ei_matrix_storage < int, _MaxCols > m_storage;
+   Matrix operator= (const Matrix other) {
+     _resize_to_match (other);
+     lazyAssign (other.derived ());
+   }
+   template < typename OtherDerived > Matrix lazyAssign (MatrixBase < OtherDerived > other) {
+     _resize_to_match (other);
+     return Base (other.derived ());
+   }
+   Matrix ();
+   template < typename OtherDerived > Matrix (const MatrixBase < OtherDerived > &other) {
+     *this = other;
+   }
+   template < typename OtherDerived > void _resize_to_match (const MatrixBase < OtherDerived > &) {
+     throw 1;
+   }
+ };
+ 
+ template < typename MatrixType > class CwiseNullaryOp:
+ public MatrixBase < CwiseNullaryOp < MatrixType > > {};
+ 
+ int f()
+ {
+   bool align_cols;
+   if (align_cols) {
+     basic_stringstream<char> sstr;
+     f();
+   }
+ }
+ 
+ template < typename > struct AutoDiffScalar;
+ template < typename Functor > struct AutoDiffJacobian:Functor {
+   AutoDiffJacobian (Functor);
+   typedef typename Functor::InputType InputType;
+   typedef typename Functor::ValueType ValueType;
+   typedef Matrix < int, Functor::InputsAtCompileTime, 1 > DerivativeType;
+   typedef AutoDiffScalar < DerivativeType > ActiveScalar;
+   typedef Matrix < ActiveScalar, Functor::InputsAtCompileTime, 1 > ActiveInput;
+   void operator () (InputType x, ValueType *) {
+     ActiveInput ax = x.template cast < ActiveScalar > ();
+   }
+ };
+ 
+ template < int NX, int NY > struct TestFunc1 {
+   enum  {
+     InputsAtCompileTime = NX
+   };
+   typedef Matrix < float, NX, 1 > InputType;
+   typedef Matrix < float, NY, 1 > ValueType;
+   typedef Matrix < float, NY, NX > JacobianType;
+   int inputs ();
+ };
+ 
+ template < typename Func > void forward_jacobian (Func f) {
+   typename Func::InputType x = Func::InputType::Random (f.inputs ());
+   typename Func::ValueType y;
+   typename Func::JacobianType jref = jref.Constant ();
+   AutoDiffJacobian < Func > autoj (f);
+   autoj (x, &y);
+ }
+ 
+ void test_autodiff_scalar ()
+ {
+   forward_jacobian (TestFunc1 < 2, 2 > ());
+   forward_jacobian (TestFunc1 < 3, 2 > ());
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr42704.C gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr42704.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr42704.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr42704.C	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,44 ----
+ /* { dg-do compile } */
+ 
+ typedef int PRInt32;
+ class nsTreeRows {
+     class Subtree { };
+     enum { kMaxDepth = 32 };
+     struct Link {
+         Subtree* mParent;
+         PRInt32 mChildIndex;
+         Link&         operator=(const Link& aLink) {
+             mParent = aLink.mParent;
+             mChildIndex = aLink.mChildIndex;
+         }
+     };
+     class iterator {
+         PRInt32 mTop;
+         PRInt32 mRowIndex;
+         Link mLink[kMaxDepth];
+     public:
+         iterator() : mTop(-1), mRowIndex(-1) { }
+         iterator& operator=(const iterator& aIterator);
+     };
+     Subtree*     EnsureSubtreeFor(Subtree* aParent, PRInt32 aChildIndex);
+     Subtree*     GetSubtreeFor(const Subtree* aParent,
+ PRInt32 aChildIndex,                   PRInt32* aSubtreeSize = 0);
+     void     InvalidateCachedRow() {
+         mLastRow = iterator();
+     }
+     iterator mLastRow;
+ };
+ nsTreeRows::Subtree* nsTreeRows::EnsureSubtreeFor(Subtree* aParent,
+                      PRInt32 aChildIndex) {
+     Subtree* subtree = GetSubtreeFor(aParent, aChildIndex);
+     if (! subtree) {
+         InvalidateCachedRow();
+     }
+ }
+ nsTreeRows::iterator& nsTreeRows::iterator::operator=(const iterator&
+ aIterator) {
+     mTop = aIterator.mTop;
+     for (PRInt32 i = mTop;
+          i >= 0;
+          --i)         mLink[i] = aIterator.mLink[i];
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr42714.C gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr42714.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr42714.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr42714.C	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,37 ----
+ struct QVectorData {
+     static QVectorData shared_null;
+ };
+ template <typename T> class QVector {
+     union {
+         QVectorData *d;
+     };
+ public:
+     inline QVector() : d(&QVectorData::shared_null) { }
+     inline QVector(const QVector<T> &v) : d(v.d) { }
+ };
+ class QXmlStreamAttribute { };
+ class QXmlStreamAttributes : public QVector<QXmlStreamAttribute> { };
+ class __attribute__ ((visibility("default"))) Smoke {
+ public:
+     union StackItem;
+     typedef StackItem* Stack;
+     typedef short Index;
+ };
+ class SmokeBinding { };
+ namespace __smokeqt {
+     class x_QXmlStreamAttributes : public QXmlStreamAttributes {
+         SmokeBinding* _binding;
+     public:
+         static void x_11(Smoke::Stack x) {
+             x_QXmlStreamAttributes* xret = new x_QXmlStreamAttributes();
+         }
+         explicit x_QXmlStreamAttributes() : QXmlStreamAttributes() { }
+     };
+     void xcall_QXmlStreamAttributes(Smoke::Index xi, void *obj,
+                                     Smoke::Stack args)
+       {
+         switch(xi) {
+             case 11: x_QXmlStreamAttributes::x_11(args);
+         }
+       }
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr42739.C gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr42739.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr42739.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr42739.C	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ 
+ struct s { ~s() { s(); } };
+ 
+ int f()
+ {
+   M:
+     s o = s();
+     f();
+     f();
+ 
+   L:
+     goto *(f() ? &&L : &&M);
+ 
+     return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr42871.C gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr42871.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr42871.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr42871.C	Sat Feb 13 14:50:50 2010
***************
*** 0 ****
--- 1,40 ----
+ struct C
+ {
+   ~C ();
+   int c3;
+ };
+ 
+ C *b2;
+ 
+ static void
+ b1 (const C &x, unsigned b3, unsigned b4)
+ {
+   unsigned i = 0;
+   for (; i < b3; i++)
+     if (i < b4)
+       {
+         b2[0].c3 = x.c3;
+         return;
+       }
+ }
+ 
+ int a ();
+ 
+ void
+ bar (unsigned b3, unsigned b4)
+ {
+   C c[100];
+   for (int i = 0; i < 100; i++)
+     {
+       c[i].c3 = i;
+       for (int j = 0; j < b3; j++)
+         if (j < b4)
+           {
+             b2[0].c3 = 0;
+             break;
+           }
+       b1 (c[i], b3, b4);
+       a ();
+     }
+ }
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr42883.C gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr42883.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr42883.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr42883.C	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,63 ----
+ // { dg-do compile }
+ 
+ typedef __SIZE_TYPE__ size_t;
+ namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+     template<typename _Tp>     class new_allocator     {
+     public:
+ 	typedef size_t size_type;
+ 	typedef _Tp* pointer;
+ 	typedef _Tp& reference;
+ 	void       deallocate(pointer __p, size_type)       {
+ 	    ::operator delete(__p);
+ 	}
+     };
+ }
+ namespace std __attribute__ ((__visibility__ ("default"))) {
+     template<typename _Tp>     class allocator: public __gnu_cxx::new_allocator<_Tp>     {
+     public:
+ 	template<typename _Tp1>         struct rebind         {
+ 	    typedef allocator<_Tp1> other;
+ 	};
+     };
+     template<typename _Tp, typename _Alloc>     struct _Vector_base     {
+ 	typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
+ 	struct _Vector_impl       : public _Tp_alloc_type       {
+ 	    typename _Tp_alloc_type::pointer _M_start;
+ 	    typename _Tp_alloc_type::pointer _M_end_of_storage;
+ 	};
+ 	~_Vector_base()       {
+ 	    _M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage         - this->_M_impl._M_start);
+ 	}
+ 	_Vector_impl _M_impl;
+ 	void       _M_deallocate(typename _Tp_alloc_type::pointer __p, size_t __n)       {
+ 	    if (__p)    _M_impl.deallocate(__p, __n);
+ 	}
+     };
+     template<typename _Tp, typename _Alloc = std::allocator<_Tp> >     class vector : protected _Vector_base<_Tp, _Alloc>     {
+ 	typedef _Vector_base<_Tp, _Alloc> _Base;
+ 	typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
+     public:
+ 	typedef typename _Tp_alloc_type::reference reference;
+ 	typedef size_t size_type;
+ 	size_type       size() const       {
+ 	}
+ 	reference       operator[](size_type __n)       {
+ 	}
+     };
+ };
+ class vtkConvexPointSet  {
+ public:
+     static vtkConvexPointSet *New();
+ };
+ void MakeInternalMesh() {
+     std::vector< int > tempFaces[2];
+     std::vector< int > firstFace;
+     int i, j, k;
+     for(i = 0; i < 1000; i++)     {
+ 	for(int pointCount = 0; pointCount < 1000; pointCount++) 	{
+ 	    for(j = 0; j < (int)tempFaces[0].size(); k++)
+ 	      if(tempFaces[0][j] == tempFaces[1][k]) 		break;
+ 	}
+ 	vtkConvexPointSet::New();
+     }
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr42890.C gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr42890.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr42890.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr42890.C	Mon Feb  8 15:50:59 2010
***************
*** 0 ****
--- 1,25 ----
+ // PR tree-optimization/42890
+ // { dg-do compile }
+ 
+ extern "C" int puts (const char *) throw ();
+ 
+ struct S
+ {
+   const char *a;
+   const char **b;
+   S (const char *s) { a = s; b = &a; }
+   ~S () { puts (a); }
+ };
+ 
+ void
+ foo (int (*fn) (const char *))
+ {
+   S a ("foo");
+   fn ("bar");
+ }
+ 
+ int
+ main ()
+ {
+   foo (puts);
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr43068.C gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr43068.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr43068.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr43068.C	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-freorder-blocks -ftracer} */
+ 
+ struct A {
+     virtual A *f();
+ };
+ struct B : virtual A {
+     virtual B *f();
+ };
+ B *B::f() { return 0; }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr43257.C gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr43257.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/torture/pr43257.C	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/torture/pr43257.C	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do assemble } */
+ 
+ class A {};
+ class B {};
+ 
+ static void *func (int n)
+ {
+   void *p;
+   if (p == 0) throw ::A ();
+ }
+ 
+ static void *func (int n, B const &)
+ {
+   try {
+       return func (n);
+   }
+   catch (::A const &) {
+   }
+   return func (n);
+ }
+ 
+ void *f1 (int n)
+ {
+   return func (n, B());
+ }
+ 
+ void *f2 (int n)
+ {
+   return func (n, B());
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C gcc-4.4.4/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C
*** gcc-4.4.3/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C	Thu Feb 15 03:14:39 2007
--- gcc-4.4.4/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C	Sat Mar  6 02:29:14 2010
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O1 -fdump-tree-cfg" } */
! /* { dg-skip-if "" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
  double a;
  void t()
  {
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O1 -fdump-tree-cfg" } */
! /* { dg-add-options bind_pic_locally } */
! 
  double a;
  void t()
  {
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.dg/vect/pr43771.cc gcc-4.4.4/gcc/testsuite/g++.dg/vect/pr43771.cc
*** gcc-4.4.3/gcc/testsuite/g++.dg/vect/pr43771.cc	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/g++.dg/vect/pr43771.cc	Mon Apr 19 06:17:56 2010
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ 
+ void KWayNodeRefine__(int nparts, int *gpwgts, int *badminpwgt, int
+ *badmaxpwgt)
+ {
+    int i;
+ 
+    for (i=0; i<nparts; i+=2) {
+        badminpwgt[i] = badminpwgt[i+1] = gpwgts[i]+gpwgts[i+1];
+        badmaxpwgt[i] = badmaxpwgt[i+1] = gpwgts[i]+gpwgts[i+1];
+    }
+ }
+ 
+ /* { dg-final { cleanup-tree-dump "vect" } } */
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog gcc-4.4.4/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
*** gcc-4.4.3/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog	Thu Jan 21 09:36:30 2010
--- gcc-4.4.4/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog	Thu Apr 29 07:49:21 2010
***************
*** 1,3 ****
--- 1,7 ----
+ 2010-04-29  Release Manager
+ 
+ 	* GCC 4.4.4 released.
+ 
  2010-01-21  Release Manager
  
  	* GCC 4.4.3 released.
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.old-deja/g++.pt/asm1.C gcc-4.4.4/gcc/testsuite/g++.old-deja/g++.pt/asm1.C
*** gcc-4.4.3/gcc/testsuite/g++.old-deja/g++.pt/asm1.C	Sat Dec 10 00:01:25 2005
--- gcc-4.4.4/gcc/testsuite/g++.old-deja/g++.pt/asm1.C	Wed Mar 10 20:35:31 2010
***************
*** 1,6 ****
  // { dg-do assemble { target i?86-*-linux* x86_64-*-linux* } }
! // We'd use ebx with -fpic/-fPIC, so skip.
! // { dg-skip-if "" { ilp32 } { "-fpic" "-fPIC" } { "" } }
  // Origin: "Weidmann, Nicholas" <nicholas.weidmann@swx.ch>
  
  template<int i> int foo(int v)
--- 1,6 ----
  // { dg-do assemble { target i?86-*-linux* x86_64-*-linux* } }
! // We'd use ebx with 32-bit pic code, so skip.
! // { dg-skip-if "" { ilp32 && { ! nonpic } } { "*" } { "" } }
  // Origin: "Weidmann, Nicholas" <nicholas.weidmann@swx.ch>
  
  template<int i> int foo(int v)
diff -Nrcpad gcc-4.4.3/gcc/testsuite/g++.old-deja/g++.pt/asm2.C gcc-4.4.4/gcc/testsuite/g++.old-deja/g++.pt/asm2.C
*** gcc-4.4.3/gcc/testsuite/g++.old-deja/g++.pt/asm2.C	Fri Dec  9 23:34:09 2005
--- gcc-4.4.4/gcc/testsuite/g++.old-deja/g++.pt/asm2.C	Wed Mar 10 20:35:31 2010
***************
*** 1,7 ****
  // { dg-do assemble { target i?86-*-linux* x86_64-*-linux* } }
  // { dg-require-effective-target ilp32 }
! // We'd use ebx with -fpic/-fPIC, so skip.
! // { dg-skip-if "" { *-*-* } { "-fpic" "-fPIC" } { "" } }
  // Origin: "Weidmann, Nicholas" <nicholas.weidmann@swx.ch>
  
  typedef void (function_ptr)(int);
--- 1,7 ----
  // { dg-do assemble { target i?86-*-linux* x86_64-*-linux* } }
  // { dg-require-effective-target ilp32 }
! // We'd use ebx with 32-bit pic code, so require nonpic.
! // { dg-require-effective-target nonpic }
  // Origin: "Weidmann, Nicholas" <nicholas.weidmann@swx.ch>
  
  typedef void (function_ptr)(int);
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/20000804-1.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/20000804-1.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/20000804-1.c	Tue Jul 14 16:53:35 2009
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/20000804-1.c	Wed Mar 10 20:35:31 2010
***************
*** 1,8 ****
  /* This does not work on m68hc11 or h8300 due to the use of an asm
     statement to force a 'long long' (64-bits) to go in a register.  */
  /* { dg-do assemble } */
! /* { dg-skip-if "" { { i?86-*-* x86_64-*-* } && ilp32 } { "-fpic" "-fPIC" } { "" } } */
! /* { dg-skip-if "PIC default" { { i?86-*-darwin*  x86_64-*-darwin* } && ilp32 } { "*" } { "" } } */
  /* { dg-skip-if "No 64-bit registers" { m32c-*-* } { "*" } { "" } } */
  /* { dg-xfail-if "" { m6811-*-* m6812-*-* h8300-*-* } { "*" } { "" } } */
  
--- 1,7 ----
  /* This does not work on m68hc11 or h8300 due to the use of an asm
     statement to force a 'long long' (64-bits) to go in a register.  */
  /* { dg-do assemble } */
! /* { dg-skip-if "" { { i?86-*-* x86_64-*-* } && { ilp32 && { ! nonpic } } } { "*" } { "" } } */
  /* { dg-skip-if "No 64-bit registers" { m32c-*-* } { "*" } { "" } } */
  /* { dg-xfail-if "" { m6811-*-* m6812-*-* h8300-*-* } { "*" } { "" } } */
  
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42703.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42703.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42703.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42703.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,12 ----
+ __extension__ typedef unsigned long long int uint64_t;
+ typedef uint64_t ScmUInt64;
+ void swapb64(ScmUInt64 *loc) 
+ {
+     union {
+         ScmUInt64 l;
+         unsigned char c[4];
+     } dd;
+     unsigned char t;
+     dd.l = *loc;
+     (t = dd.c[3], dd.c[3] = dd.c[4], dd.c[4] = t);
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42705.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42705.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42705.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42705.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,58 ----
+ typedef int GLint;
+ typedef unsigned char GLubyte;
+ typedef unsigned int uint32_t;
+ struct radeon_bo {
+     void *ptr;
+     uint32_t flags;
+ };
+ struct radeon_renderbuffer {
+     struct radeon_bo *bo;
+     unsigned int cpp;
+     int has_surface;
+ };
+ static inline
+ GLint r600_1d_tile_helper(const struct radeon_renderbuffer * rrb,
+ 			  GLint x, GLint y, GLint is_depth, GLint is_stencil)
+ {
+   GLint element_bytes = rrb->cpp;
+   GLint num_samples = 1;
+   GLint tile_width = 8;
+   GLint tile_height = 8;
+   GLint tile_thickness = 1;
+   GLint tile_bytes;
+   GLint tiles_per_row;
+   GLint slice_offset;
+   GLint tile_row_index;
+   GLint tile_column_index;
+   GLint tile_offset;
+   GLint pixel_number = 0;
+   GLint element_offset;
+   GLint offset = 0;
+   tile_bytes = tile_width * tile_height * tile_thickness
+       * element_bytes * num_samples;
+   tile_column_index = x / tile_width;
+   tile_offset = ((tile_row_index * tiles_per_row)
+ 		 + tile_column_index) * tile_bytes;
+   if (is_depth) {
+   }
+   else {
+       GLint sample_offset;
+       switch (element_bytes) {
+ 	  case 1:       pixel_number |= ((x >> 0) & 1) << 0;
+       }
+       element_offset = sample_offset + (pixel_number * element_bytes);
+   }
+   offset = slice_offset + tile_offset + element_offset;
+   return offset;
+ }
+ GLubyte *r600_ptr_color(const struct radeon_renderbuffer * rrb,
+ 			GLint x, GLint y)
+ {
+   GLubyte *ptr = rrb->bo->ptr;
+   uint32_t mask = 1 | 2;
+   GLint offset;
+   if (rrb->has_surface || !(rrb->bo->flags & mask)) {
+       offset = r600_1d_tile_helper(rrb, x, y, 0, 0);
+   }
+   return &ptr[offset];
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42708-1.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42708-1.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42708-1.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42708-1.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,10 ----
+ typedef __SIZE_TYPE__ size_t;
+ void *malloc(size_t);
+ typedef union YYSTYPE {
+     char *id;
+ }  YYSTYPE;
+ extern YYSTYPE yylval;
+ void yylex (int b)
+ {
+   yylval = (YYSTYPE) (b ? 0 : (char *) malloc (4));
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42716.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42716.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42716.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42716.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,18 ----
+ static short foo (long long si1, short si2)
+ {
+   return si1 > 0 && si2 > 0 || si1 < 0
+       && si2 < 0 && si1 < 1 - si2 ? : si1 + si2;
+ }
+ 
+ int g_13;
+ unsigned g_17;
+ 
+ int safe (int, int);
+ 
+ void bar (short p_51, short * p_52)
+ {
+   int *const l_55 = &g_13;
+   if (safe (*p_52, g_13 != foo (*p_52 & *l_55 == g_13 && g_17 >= 1, 0)))
+     {
+     }
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42717.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42717.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42717.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42717.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,30 ----
+ static signed char
+ foo (signed char si1, unsigned char si2)
+ {
+   return (si1 ^ si2) & (-si2 ^ si2) ? : si1 - si2;
+ }
+ 
+ struct S0
+ {
+ };
+ 
+ unsigned char g_21;
+ 
+ struct S0 g_34;
+ 
+ void
+ bar (unsigned char p_20)
+ {
+   unsigned char *l_22 = &g_21;
+   unsigned char l_23 = 0;
+   struct S0 *l = &g_34;
+   goto lbl_42;
+   for (; l_23; l_23 = foo (l_23, 1))
+     {
+       for (p_20 = 0; 0; p_20 = foo (p_20, 1))
+ 	lbl_42:;
+       (l == &g_34) ? 0 : "";
+ lbl_85:*l_22 = p_20;
+     }
+   goto lbl_85;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42730.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42730.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42730.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42730.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,14 ----
+ union bzz
+ {
+   unsigned *pa;
+   void *pv;
+ };
+ 
+ void foo (void)
+ {
+   union bzz u;
+   void **x;
+   void *y = 0;
+   x = &u.pv;
+   *x = y;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42749.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42749.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42749.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42749.c	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,5 ----
+ struct pdf_object { int val; };
+ int pdf_count_size_object (struct pdf_object * p_obj)
+ {
+     return pdf_count_size_object(p_obj) + 2 * sizeof(struct pdf_object);
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42927.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42927.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42927.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42927.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,32 ----
+ typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
+ typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
+ typedef enum { READ_SHARED = 0, WRITE_EXCLUSIVE = 1,
+     READ_EXCLUSIVE = 2, EXCLUSIVE_ACCESS = 3 } scsires_access_mode;
+ struct scsires_extent_elem {
+     scsires_access_mode mode;
+     unsigned relative_address;
+     u_int32_t first_block;
+     u_int32_t length;
+ };
+ typedef struct scsires_extent_elem scsires_extent_elem_t;
+ struct scsires_extent {
+     u_int8_t num_elements;
+     scsires_extent_elem_t *elements;
+ };
+ typedef struct scsires_extent scsires_extent_t;
+ unsigned char buf[512];
+ void scsires_issue_reservation(scsires_extent_t * new_extent)
+ {
+   int i;
+   for (i = 0; i < new_extent->num_elements; i++)
+     {
+       buf[(i * 8)] = new_extent->elements[i].mode;
+       buf[(i * 8) + 1] = ((new_extent->elements[i].length >> 16) & 0xff); 
+       buf[(i * 8) + 2] = ((new_extent->elements[i].length >> 8) & 0xff);
+       buf[(i * 8) + 3] = (new_extent->elements[i].length & 0xff);
+       buf[(i * 8) + 4] = ((new_extent->elements[i].first_block >> 24) & 0xff); 
+       buf[(i * 8) + 5] = ((new_extent->elements[i].first_block >> 16) & 0xff);
+       buf[(i * 8) + 6] = ((new_extent->elements[i].first_block >> 8) & 0xff);
+       buf[(i * 8) + 7] = (new_extent->elements[i].first_block & 0xff);
+     }
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42956.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42956.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42956.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42956.c	Thu Apr  8 11:47:13 2010
***************
*** 0 ****
--- 1,33 ----
+ typedef const int cint;
+ typedef struct {
+ } Bounds;
+ int ndim_, ncomp_, selectedcomp_, nregions_;
+ void *voidregion_;
+ typedef struct {
+     double diff, err, spread;
+ } Errors;
+ typedef const Errors cErrors;
+ void Split(int iregion, int depth, int xregion)
+ {
+   typedef struct {
+       double avg, err, spread, chisq;
+       double xmin[ndim_], xmax[ndim_];
+   } Result;
+   typedef struct region {
+       Result result[ncomp_];
+   } Region;
+   Errors errors[ncomp_];
+   int comp, ireg, xreg;
+   for( ireg = iregion, xreg = xregion; ireg < nregions_; ireg = xreg++ )
+     {
+       Result *result = ((Region *)voidregion_)[ireg].result;
+       for( comp = 0; comp < ncomp_; ++comp )
+ 	{
+ 	  Result *r = &result[comp];
+ 	  cErrors *e = &errors[comp];
+ 	  double c = e->diff;
+ 	  if( r->err > 0 ) r->err = r->err*e->err + c;
+ 	}
+     }
+ }
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42998.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42998.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr42998.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr42998.c	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,15 ----
+ void foo(void *);
+ void bar(void *);
+ void ndisc_fill_addr_option(unsigned char *opt, int data_len,
+ 			    unsigned short addr_type) 
+ {
+   int pad;
+   if (addr_type == 32)
+     pad = 2;
+   else
+     pad = 0;
+   __builtin_memset(opt + 2, 0, pad);
+   opt += pad;
+   __builtin_constant_p(data_len) ? foo (opt+2) : bar (opt+2);
+ }
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43066.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43066.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43066.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43066.c	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,14 ----
+ struct S {
+   struct { } empty[1];
+   int i;
+ };
+ 
+ int foo(int i, ...)
+ {
+   struct S s;
+   __builtin_va_list va;
+   __builtin_va_start(va, i);
+   s = __builtin_va_arg(va, struct S);
+   __builtin_va_end(va);
+   return s.i;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43164.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43164.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43164.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43164.c	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,16 ----
+ struct S0
+ {
+   unsigned char f0;
+   int:0;
+ };
+ 
+ struct S1
+ {
+   struct S0 f0;
+ };
+ 
+ struct S1 func_34 (void)
+ {
+   struct S1 l_221 = { { 1 } };
+   return l_221;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43186.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43186.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43186.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43186.c	Thu Apr  8 10:46:46 2010
***************
*** 0 ****
--- 1,15 ----
+ int n;
+ 
+ void foo (int i)
+ {
+   int a, b;
+ 
+   if (!i)
+     for (a = 1; a < 4; a++)
+       if (a)
+ 	for (b = 1; b < 3; b++)
+ 	  foo (b);
+ 
+   n++;
+ }
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43188.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43188.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43188.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43188.c	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,6 ----
+ int *__attribute__((__aligned__(16))) *p;
+ 
+ int main (void)
+ {
+   return **p;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43191.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43191.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43191.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43191.c	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,46 ----
+ struct S0
+ {
+ };
+ 
+ struct S1
+ {
+   unsigned f0:27;
+   const unsigned:0;
+ };
+ 
+ struct S2
+ {
+   unsigned f2:1;
+ };
+ 
+ unsigned char g_4[1][8][3][1][1][1];
+ unsigned char *g_17;
+ unsigned char **g_16[1][10][7];
+ 
+ struct S2 g_35 = {
+   0
+ };
+ 
+ struct S2 *g_34 = &g_35;
+ 
+ struct S1 func_86 (unsigned char p_87, struct S2 **p_89)
+ {
+   struct S1 l_92[6][8][1][1] = {
+     16143586
+   }
+   ;
+   return l_92[0][0][0][0];
+ }
+ 
+ void func_28 (struct S1 p_30, const struct S1 p_32)
+ {
+ }
+ 
+ void func_70 (unsigned char p_72)
+ {
+   unsigned char *const *l_93 = &g_17;
+   struct S2 **l_94;
+   unsigned char *const *l_97 = &g_17;
+   func_28 (func_86 (p_72, 0),
+            func_86 (p_72, &g_34));
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43255.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43255.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43255.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43255.c	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,33 ----
+ int safe (int);
+ 
+ static unsigned foo (unsigned ui1, unsigned ui2)
+ {
+   return ui1 + ui2;
+ }
+ 
+ int g_22;
+ int *volatile g_23 = &g_22;
+ int **g_282[8][10][1];
+ int *g_330 = &g_22;
+ volatile unsigned g_348;
+ int g_397;
+ 
+ void int32func (const unsigned char p_10)
+ {
+   if (foo
+       (~
+        (p_10 |
+ 	(*g_282[(unsigned long) g_397 % 8][(unsigned) g_22 % 10][g_348 % 1]) ==
+ 	(*g_282[(unsigned long) g_397 % 8][(unsigned) g_22 % 10][g_348 % 1])),
+        1))
+     {
+     }
+   else if (*g_330 >=
+ 	   safe (*g_23 ^
+ 		 (**g_282[(unsigned long) g_397 % 8][(unsigned) g_22 % 10]
+ 		  [g_348 % 1])) & **g_282[8][10][1], 1)
+     {
+     }
+ }
+ 
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43288.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43288.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43288.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43288.c	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1 ----
+ static int a __attribute__ ((common));
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43367.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43367.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43367.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43367.c	Thu Mar 25 16:39:51 2010
***************
*** 0 ****
--- 1,30 ----
+ unsigned char g_17;
+ 
+ const unsigned char func_39 (unsigned char p_40, unsigned char * p_41)
+ {
+   return 0;
+ }
+ 
+ void int327 (const unsigned char p_48, unsigned char p_49)
+ {
+   unsigned l_52;
+   unsigned char l_58[2];
+   int i, j;
+   if (func_39 (l_52, &p_49), p_48) {
+       unsigned char *l_60;
+       unsigned char *l = &l_58[1];
+       for (j; j; j++) {
+ lbl_59:
+ 	  break;
+       }
+       for (l = 0; 1; l += 1) {
+ 	  for (p_49 = 1; p_49; p_49 += 0) {
+ 	      unsigned char **l_61[1][6];
+ 	      for (j = 0; j < 1; j++)
+ 		l_61[i][j] = &l_60;
+ 	      goto lbl_59;
+ 	  }
+       }
+   }
+ }
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43415.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43415.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43415.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43415.c	Mon Mar 22 16:32:58 2010
***************
*** 0 ****
--- 1,36 ----
+ int main()                                                                      
+ {                                                                               
+   unsigned long long table[256];                                          
+   unsigned int i;
+   for (i=0; i<256; ++i) {
+       unsigned long long j;
+       unsigned char x=i;
+       for (j=0; j<5; ++j) {
+ 	  x += x<<1;
+ 	  x ^= x>>1;
+       }
+       for (j=0; j<5; ++j) {
+ 	  x += x<<1;
+ 	  x ^= x>>1;
+       }
+       for (j=0; j<5; ++j) {
+ 	  x += x<<1;
+ 	  x ^= x>>1;
+       }
+       for (j=0; j<5; ++j) {
+ 	  x += x<<1;
+ 	  x ^= x>>1;
+       }
+       for (j=0; j<5; ++j) {
+ 	  x += x<<1;
+ 	  x ^= x>>1;
+       }
+       table[i] ^= (((unsigned long long)x)<<16);
+   }
+   for (i=0; i<256; ++i) {
+       if ((table[i]&0xff)==i)
+ 	return 1;
+   }
+   return 0;
+ }
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43614.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43614.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/compile/pr43614.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/compile/pr43614.c	Thu Apr  8 11:28:06 2010
***************
*** 0 ****
--- 1,27 ----
+ volatile int g_2[7];
+ 
+ void foo (unsigned);
+ 
+ int main (void)
+ {
+   int i_459 = 0;
+   int t2818;
+   int t2819;
+   volatile char *t2820;
+   int t2821;
+   volatile char *t2822;
+   int *t2823;
+   unsigned t2824;
+ LL655:
+   t2822 = (volatile char *)g_2;
+   t2821 = i_459;
+   t2820 = t2822 + t2821;
+   t2823 = (int *)t2820;
+   t2824 = *t2823;
+   foo (t2824);
+   t2818 = i_459;
+   t2819 = t2818 + 1;
+   i_459 = t2819;
+   goto LL655;
+ }
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/20100209-1.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/20100209-1.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/20100209-1.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/20100209-1.c	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,12 ----
+ int bar(int foo)
+ {
+   return (int)(((unsigned long long)(long long)foo) / 8);
+ }
+ extern void abort (void);
+ int main()
+ {
+   if (sizeof (long long) > sizeof (int)
+       && bar(-1) != -1)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr42248.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr42248.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr42248.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr42248.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,27 ----
+ typedef struct {
+   _Complex double a;
+   _Complex double b;
+ } Scf10;
+ 
+ Scf10 g1s;
+ 
+ void
+ check (Scf10 x, _Complex double y)
+ {
+   if (x.a != y) __builtin_abort ();
+ }
+ 
+ void
+ init (Scf10 *p, _Complex double y)
+ {
+   p->a = y;
+ }
+ 
+ int
+ main ()
+ {
+   init (&g1s, (_Complex double)1);
+   check (g1s, (_Complex double)1);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr42512.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr42512.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr42512.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr42512.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,13 ----
+ extern void abort (void);
+ 
+ short g_3;
+ 
+ int main (void)
+ {
+     int l_2;
+     for (l_2 = -1; l_2 != 0; l_2 = (unsigned char)(l_2 - 1))
+       g_3 |= l_2;
+     if (g_3 != -1)
+       abort ();
+     return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr43008.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr43008.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr43008.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr43008.c	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,23 ----
+ int i;
+ struct X {
+   int *p;
+ };
+ struct X * __attribute__((malloc))
+ my_alloc (void)
+ {
+   struct X *p = __builtin_malloc (sizeof (struct X));
+   p->p = &i;
+   return p;
+ }
+ extern void abort (void);
+ int main()
+ {
+   struct X *p, *q;
+   p = my_alloc ();
+   q = my_alloc ();
+   *(p->p) = 1;
+   *(q->p) = 0;
+   if (*(p->p) != 0)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr43220.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr43220.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr43220.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr43220.c	Tue Mar  2 07:44:03 2010
***************
*** 0 ****
--- 1,28 ----
+ void *volatile p;
+ 
+ int
+ main (void)
+ {
+   int n = 0;
+ lab:;
+     {
+       int x[n % 1000 + 1];
+       x[0] = 1;
+       x[n % 1000] = 2;
+       p = x;
+       n++;
+     }
+ 
+     {
+       int x[n % 1000 + 1];
+       x[0] = 1;
+       x[n % 1000] = 2;
+       p = x;
+       n++;
+     }
+ 
+   if (n < 1000000)
+     goto lab;
+ 
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr43269.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr43269.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr43269.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr43269.c	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,31 ----
+ int g_21;
+ int g_211;
+ int g_261;
+ 
+ static void __attribute__((noinline,noclone))
+ func_32 (int b)
+ {
+   if (b) {
+ lbl_370:
+       g_21 = 1;
+   }
+ 
+   for (g_261 = -1; g_261 > -2; g_261--) {
+       if (g_211 + 1) {
+ 	  return;
+       } else {
+ 	  g_21 = 1;
+ 	  goto lbl_370;
+       }
+   }
+ }
+ 
+ extern void abort (void);
+ 
+ int main(void)
+ {
+   func_32(0);
+   if (g_261 != -1)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr43385.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr43385.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr43385.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr43385.c	Thu Mar 25 11:55:08 2010
***************
*** 0 ****
--- 1,59 ----
+ /* PR c/43385 */
+ 
+ extern void abort (void);
+ 
+ int e;
+ 
+ __attribute__((noinline)) void
+ foo (int x, int y)
+ {
+   if (__builtin_expect (x, 0) && y != 0)
+     e++;
+ }
+ 
+ __attribute__((noinline)) int
+ bar (int x, int y)
+ {
+   if (__builtin_expect (x, 0) && y != 0)
+     return 1;
+   else
+     return 0;
+ }
+ 
+ int
+ main (void)
+ {
+   int z = 0;
+   asm ("" : "+r" (z));
+   foo (z + 2, z + 1);
+   if (e != 1)
+     abort ();
+   foo (z + 2, z);
+   if (e != 1)
+     abort ();
+   foo (z + 1, z + 1);
+   if (e != 2)
+     abort ();
+   foo (z + 1, z);
+   if (e != 2)
+     abort ();
+   foo (z, z + 1);
+   if (e != 2)
+     abort ();
+   foo (z, z);
+   if (e != 2)
+     abort ();
+   if (bar (z + 2, z + 1) != 1)
+     abort ();
+   if (bar (z + 2, z) != 0)
+     abort ();
+   if (bar (z + 1, z + 1) != 1)
+     abort ();
+   if (bar (z + 1, z) != 0)
+     abort ();
+   if (bar (z, z + 1) != 0)
+     abort ();
+   if (bar (z, z) != 0)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr43438.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr43438.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr43438.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr43438.c	Mon Mar 22 15:05:46 2010
***************
*** 0 ****
--- 1,23 ----
+ extern void abort (void);
+ 
+ static unsigned char g_2 = 1;
+ static int g_9;
+ static int *l_8 = &g_9;
+ 
+ static void func_12(int p_13)
+ {
+   int * l_17 = &g_9;
+   *l_17 &= 0 < p_13;
+ }
+ 
+ int main(void)
+ {
+   unsigned char l_11 = 254;
+   *l_8 |= g_2;
+   l_11 |= *l_8;
+   func_12(l_11);
+   if (g_9 != 1)
+     abort ();
+   return 0;
+ } 
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr43560.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr43560.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr43560.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr43560.c	Mon Apr 12 10:25:11 2010
***************
*** 0 ****
--- 1,28 ----
+ /* PR tree-optimization/43560 */
+ 
+ struct S
+ {
+   int a, b;
+   char c[10];
+ };
+ 
+ __attribute__ ((noinline)) void
+ test (struct S *x)
+ {
+   while (x->b > 1 && x->c[x->b - 1] == '/')
+     {
+       x->b--;
+       x->c[x->b] = '\0';
+     }
+ }
+ 
+ const struct S s = { 0, 0, "" };
+ 
+ int
+ main ()
+ {
+   struct S *p;
+   asm ("" : "=r" (p) : "0" (&s));
+   test (p);
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr43629.c gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr43629.c
*** gcc-4.4.3/gcc/testsuite/gcc.c-torture/execute/pr43629.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.c-torture/execute/pr43629.c	Wed Apr  7 15:40:43 2010
***************
*** 0 ****
--- 1,13 ----
+ int flag;
+ extern void abort (void);
+ int main()
+ {
+   int x;
+   if (flag)
+     x = -1;
+   else 
+     x &= 0xff;
+   if (x & ~0xff)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/Wunreachable-2.c gcc-4.4.4/gcc/testsuite/gcc.dg/Wunreachable-2.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/Wunreachable-2.c	Tue Feb 12 21:39:42 2002
--- gcc-4.4.4/gcc/testsuite/gcc.dg/Wunreachable-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,19 ****
- /* { dg-do compile } */
- /* { dg-options "-O2 -Wunreachable-code" } */
- 
- extern int foo (const char *);
- extern void baz (void);
- const char *a[] = { "one", "two" };
- 
- void bar (void)
- {
-   int i;
- 
-   for (i = 0; i < 2; i++)
-     if (! foo (a[i]))
-       return;
- 
-   baz ();	/* { dg-bogus "will never be executed" } */
-   baz ();
-   baz ();
- }
--- 0 ----
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/compound-literal-1.c gcc-4.4.4/gcc/testsuite/gcc.dg/compound-literal-1.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/compound-literal-1.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/compound-literal-1.c	Mon Mar  8 11:54:11 2010
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ 
+ /* PR c/43248 */
+ 
+ int foo(__SIZE_TYPE__ i)
+ {
+   i ? : (void *){}; /* { dg-error "" } */
+ }
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/debug/dwarf2/pr43237.c gcc-4.4.4/gcc/testsuite/gcc.dg/debug/dwarf2/pr43237.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/debug/dwarf2/pr43237.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/debug/dwarf2/pr43237.c	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,31 ----
+ /* PR debug/43237 */
+ /* { dg-do compile } */
+ /* { dg-options "-g -O2 -dA -fno-merge-debug-strings" } */
+ 
+ struct S
+ {
+   int *a;
+   int b;
+   int **c;
+   int d;
+ };
+ 
+ void foo (struct S *);
+ void bar (struct S *);
+ 
+ int
+ baz (void)
+ {
+   struct S s;
+   foo (&s);
+   {
+     int a[s.b];
+     int *c[s.d];
+     s.a = a;
+     s.c = c;
+     bar (&s);
+   }
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler-not "LLST\[^\\r\\n\]*DW_AT_upper_bound" } } */
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/errno-1.c gcc-4.4.4/gcc/testsuite/gcc.dg/errno-1.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/errno-1.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/errno-1.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ #include <errno.h>
+ #include <stdlib.h>
+ 
+ int main()
+ {
+   void *p;
+   errno = 0;
+   p = malloc (-1);
+   if (errno != 0)
+     do_not_optimize_away ();
+   return 0;
+ }
+ 
+ /* { dg-final { scan-assembler "do_not_optimize_away" } } */
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/fold-div-3.c gcc-4.4.4/gcc/testsuite/gcc.dg/fold-div-3.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/fold-div-3.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/fold-div-3.c	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O -fdump-tree-original" } */
+ 
+ unsigned int
+ apply_frontend_param (unsigned int spi_bias)
+ {
+   static const int ppm = 8000;
+   spi_bias /= 1000ULL + ppm/1000;
+   return spi_bias;
+ }
+ 
+ /* Make sure we perform the division in the narrower type.  */
+ 
+ /* { dg-final { scan-tree-dump "spi_bias = spi_bias / 1008;" "original" } } */
+ /* { dg-final { cleanup-tree-dump "original" } } */
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/inline-33.c gcc-4.4.4/gcc/testsuite/gcc.dg/inline-33.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/inline-33.c	Thu Mar 26 06:12:58 2009
--- gcc-4.4.4/gcc/testsuite/gcc.dg/inline-33.c	Sat Mar  6 02:29:14 2010
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -fdump-tree-optimized"  } */
! /* { dg-options "-O3 -fdump-tree-optimized -fpie" { target { ! nonpic } } } */
  
  int i;
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -fdump-tree-optimized"  } */
! /* { dg-add-options bind_pic_locally } */
  
  int i;
  
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/ipa/ipa-1.c gcc-4.4.4/gcc/testsuite/gcc.dg/ipa/ipa-1.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/ipa/ipa-1.c	Fri Aug 29 12:55:54 2008
--- gcc-4.4.4/gcc/testsuite/gcc.dg/ipa/ipa-1.c	Sat Mar  6 02:29:14 2010
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining"  } */
! /* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
  
  #include <stdio.h>
  int g (int b, int c)
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining"  } */
! /* { dg-add-options bind_pic_locally } */
  
  #include <stdio.h>
  int g (int b, int c)
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/ipa/ipa-2.c gcc-4.4.4/gcc/testsuite/gcc.dg/ipa/ipa-2.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/ipa/ipa-2.c	Fri Aug 29 12:55:54 2008
--- gcc-4.4.4/gcc/testsuite/gcc.dg/ipa/ipa-2.c	Sat Mar  6 02:29:14 2010
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining"  } */
! /* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
  
  #include <stdio.h>
  int g (int b, int c)
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining"  } */
! /* { dg-add-options bind_pic_locally } */
  
  #include <stdio.h>
  int g (int b, int c)
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/ipa/ipa-3.c gcc-4.4.4/gcc/testsuite/gcc.dg/ipa/ipa-3.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/ipa/ipa-3.c	Fri Aug 29 12:55:54 2008
--- gcc-4.4.4/gcc/testsuite/gcc.dg/ipa/ipa-3.c	Sat Mar  6 02:29:14 2010
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining"  } */
! /* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
  
  
  /* Double constants.  */
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining"  } */
! /* { dg-add-options bind_pic_locally } */
  
  
  /* Double constants.  */
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/ipa/ipa-4.c gcc-4.4.4/gcc/testsuite/gcc.dg/ipa/ipa-4.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/ipa/ipa-4.c	Fri Aug 29 12:55:54 2008
--- gcc-4.4.4/gcc/testsuite/gcc.dg/ipa/ipa-4.c	Sat Mar  6 02:29:14 2010
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp"  } */
! /* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
  
  #include <stdio.h>
  int g (int b, int c)
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp"  } */
! /* { dg-add-options bind_pic_locally } */
  
  #include <stdio.h>
  int g (int b, int c)
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/ipa/ipa-5.c gcc-4.4.4/gcc/testsuite/gcc.dg/ipa/ipa-5.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/ipa/ipa-5.c	Fri Aug 29 12:55:54 2008
--- gcc-4.4.4/gcc/testsuite/gcc.dg/ipa/ipa-5.c	Sat Mar  6 02:29:14 2010
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining"  } */
! /* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
  
  /* Float & short constants.  */
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining"  } */
! /* { dg-add-options bind_pic_locally } */
  
  /* Float & short constants.  */
  
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/ipa/ipa-7.c gcc-4.4.4/gcc/testsuite/gcc.dg/ipa/ipa-7.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/ipa/ipa-7.c	Fri Aug 29 12:55:54 2008
--- gcc-4.4.4/gcc/testsuite/gcc.dg/ipa/ipa-7.c	Sat Mar  6 02:29:14 2010
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining"  } */
! /* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
  
  #include <stdio.h>
  void send_addr (int *);
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining"  } */
! /* { dg-add-options bind_pic_locally } */
  
  #include <stdio.h>
  void send_addr (int *);
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/ipa/ipacost-2.c gcc-4.4.4/gcc/testsuite/gcc.dg/ipa/ipacost-2.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/ipa/ipacost-2.c	Mon Feb  2 20:10:04 2009
--- gcc-4.4.4/gcc/testsuite/gcc.dg/ipa/ipacost-2.c	Sat Mar  6 02:29:14 2010
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining -fdump-tree-optimized"  } */
! /* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining -fdump-tree-optimized -fpie" { target { ! nonpic } } } */
  
  int array[100];
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -fipa-cp -fipa-cp-clone -fdump-ipa-cp -fno-early-inlining -fdump-tree-optimized"  } */
! /* { dg-add-options bind_pic_locally } */
  
  int array[100];
  
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/parm-impl-decl-3.c gcc-4.4.4/gcc/testsuite/gcc.dg/parm-impl-decl-3.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/parm-impl-decl-3.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/parm-impl-decl-3.c	Sat Mar 27 11:46:07 2010
***************
*** 0 ****
--- 1,28 ----
+ /* Like parm-impl-decl-1.c, but with -g.  PR 43381.  */
+ /* Origin: Joseph Myers <joseph@codesourcery.com> */
+ /* { dg-do compile } */
+ /* { dg-options "-g" } */
+ 
+ int
+ foo (int __attribute__ ((__mode__ (vector_size(8)))) i) /* { dg-warning "'__mode__' attribute ignored" } */
+ {
+   return (long long) i;
+ }
+ 
+ int f (int [sizeof(g())]);
+ int f1 (int [sizeof(g1())]);
+ 
+ int g () { return 1; }
+ 
+ int
+ h (int (*p)[sizeof(i())])
+ {
+   int g2 (), g3 ();
+   return (*p)[0] + g3() + g2();
+ }
+ 
+ int i () { return 2; }
+ 
+ int f2 (int [sizeof(g2())]);
+ int f3 (int [sizeof(g3())]);
+ int g3 () { return 4; }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/pr42250.c gcc-4.4.4/gcc/testsuite/gcc.dg/pr42250.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/pr42250.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/pr42250.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,68 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fipa-type-escape" } */
+ 
+ extern double log10 (double __x);
+ extern double ceil (double __x);
+ extern double floor (double __x);
+ extern void free (void *__ptr);
+ extern void *my_malloc (unsigned int);
+ extern int num_rr_nodes;
+ static float get_cblock_trans (int *num_inputs_to_cblock,
+ 			       int max_inputs_to_cblock,
+ 			       float trans_cblock_to_lblock_buf,
+ 			       float trans_sram_bit);
+ static float trans_per_mux (int num_inputs, float trans_sram_bit);
+ void
+ count_routing_transistors (int num_switch, float R_minW_nmos,
+ 			   float R_minW_pmos)
+ {
+   int *num_inputs_to_cblock;
+   int iswitch, i, j, iseg, max_inputs_to_cblock;
+   float input_cblock_trans;
+   const float trans_sram_bit = 6.;
+   float trans_cblock_to_lblock_buf;
+   input_cblock_trans =
+     get_cblock_trans (num_inputs_to_cblock, max_inputs_to_cblock,
+ 		      trans_cblock_to_lblock_buf, trans_sram_bit);
+ }
+ 
+ static float
+ get_cblock_trans (int *num_inputs_to_cblock, int max_inputs_to_cblock,
+ 		  float trans_cblock_to_lblock_buf, float trans_sram_bit)
+ {
+   float *trans_per_cblock;
+   float trans_count;
+   int i, num_inputs;
+ 
+   trans_per_cblock =
+     (float *) my_malloc ((max_inputs_to_cblock + 1) * sizeof (float));
+   for (i = 1; i <= max_inputs_to_cblock; i++)
+     trans_per_cblock[i] =
+       trans_per_mux (i, trans_sram_bit) + trans_cblock_to_lblock_buf;
+   for (i = 0; i < num_rr_nodes; i++)
+     {
+       num_inputs = num_inputs_to_cblock[i];
+       trans_count += trans_per_cblock[num_inputs];
+     }
+   free (trans_per_cblock);
+   return (trans_count);
+ }
+ 
+ static float
+ trans_per_mux (int num_inputs, float trans_sram_bit)
+ {
+   int nlevels, ilevel, current_inps;
+   float ntrans = 0;
+ 
+   if (num_inputs <= 1)
+     return (0);
+   nlevels = ceil (log10 (num_inputs) / log10 (2.) - 0.00001);
+   current_inps = num_inputs;
+   for (ilevel = 1; ilevel <= nlevels; ilevel++)
+     {
+       ntrans += 2 * floor (current_inps / 2.);
+       current_inps = ceil (current_inps / 2.);
+     }
+   ntrans += trans_sram_bit * nlevels;
+   return (ntrans);
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/pr42388.c gcc-4.4.4/gcc/testsuite/gcc.dg/pr42388.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/pr42388.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/pr42388.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,67 ----
+ /* { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } } */
+ /* { dg-options "-O2 -fselective-scheduling -fmodulo-sched" } */
+ 
+ enum rtx_code
+ {
+   INSN, ADDR_VEC, ADDR_DIFF_VEC, CALL_INSN, CODE_LABEL, BARRIER, NOTE
+ };
+ typedef union rtunion_def
+ {
+   int rtint;
+   char *rtstr;
+   struct rtx_def *rtx;
+   struct rtvec_def *rtvec;
+ }
+ rtunion;
+ typedef struct rtx_def
+ {
+   unsigned short code;
+   rtunion fld[1];
+ }
+  *rtx;
+ typedef struct rtvec_def
+ {
+   unsigned num_elem;
+   rtunion elem[1];
+ }
+  *rtvec;
+ extern rtx emit_barrier (void);
+ extern rtx emit_note (char *);
+ 
+ static void
+ copy_loop_body (rtx *map)
+ {
+   int i;
+   rtx insn, copy;
+   rtx pat = copy->fld[3].rtx;
+ 
+   switch (insn->code)
+     {
+     case INSN:
+       if (insn->fld[7].rtx)
+ 	{
+ 	}
+       else if (pat->code == ADDR_VEC || pat->code == ADDR_DIFF_VEC)
+ 	{
+ 	  int diff_vec_p = pat->code == ADDR_DIFF_VEC;
+ 	  int len = pat->fld[diff_vec_p].rtvec->num_elem;
+ 	  for (i = 0; i < len; i++)
+ 	    pat->fld[diff_vec_p].rtvec->elem[i].rtx->fld[5].rtint++;
+ 	}
+     case CALL_INSN:
+       for (i = 0; i < 64; i++)
+ 	map[i] = 0;
+     case CODE_LABEL:
+     case BARRIER:
+       copy = emit_barrier ();
+     case NOTE:
+       copy = emit_note ("x");
+     }
+ }
+ void
+ unroll_loop (int insn_count, rtx *map)
+ {
+   if (insn_count > 50)
+     copy_loop_body (map);
+ }
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/pr42427.c gcc-4.4.4/gcc/testsuite/gcc.dg/pr42427.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/pr42427.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/pr42427.c	Thu Mar 25 16:39:51 2010
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do assemble } */
+ /* { dg-options "-O2 -fexceptions -fnon-call-exceptions -fpeel-loops" } */
+ /* { dg-require-effective-target ilp32 } */
+ 
+ #include <complex.h>
+ 
+ extern double myabs (complex double);
+ 
+ void
+ test (double *help, complex double *wm, long nz)
+ {
+   long k;
+   double znew;
+   double zold;
+   for (k = 0; k < nz; k++)
+     {
+       znew = myabs (wm[k]);
+       zold = help[k];
+       help[k] = znew;
+     }
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/pr42715.c gcc-4.4.4/gcc/testsuite/gcc.dg/pr42715.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/pr42715.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/pr42715.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,59 ----
+ /* { dg-do compile { target fpic } } */
+ /* { dg-options "-fPIC -g -O2 -w" } */
+ /* var-tracking failed to clobber the reg holding v at the asm insn,
+    so v ended up bound to an intermediate PIC expression.  */
+ 
+ struct A { unsigned a1; char a2[15]; };
+ struct B { long b1; unsigned char b2; long b3; };
+ struct C { void *c1; unsigned c2; unsigned c3; };
+ 
+ static struct A v1;
+ struct A *const v2 = &v1;
+ 
+ static inline
+ int foo (void)
+ {
+   int *v;
+   __asm__ __volatile__ ("" : "=r" (v));
+   return v[1];
+ }
+ 
+ static void
+ bar (struct C *x)
+ {
+   if (x->c2 == x->c3 && x->c1)
+     f1 (foo (), x->c1, x->c3 * sizeof (x->c1[0]));
+ }
+ 
+ void
+ baz (struct B *y)
+ {
+   int i;
+   const char *j;
+   char *k;
+   char x[64];
+   for (i = 0; i < sizeof (struct B); i++, y)
+     {
+       switch (y->b2)
+         {
+         case 0x20:
+           if (__builtin_strchr (j, '='))
+             continue;
+         }
+       switch (y->b2)
+         {
+         case 0x80:
+           bar (&x);
+           f2 (y->b3);
+         case 0x2e:
+         case 0x4e:
+           break;
+         default:
+           if (v2->a1)
+             f2 (y->b2);
+         }
+       k[0] = '\0';
+       if (v2->a1)
+         f2 (y->b1);
+     }
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/pr43211.c gcc-4.4.4/gcc/testsuite/gcc.dg/pr43211.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/pr43211.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/pr43211.c	Thu Mar 25 16:39:51 2010
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ 
+ struct T;
+ 
+ struct S {
+   void (*bar)(struct S);
+ };
+ 
+ void bar(struct T t) {} /* { dg-error "" }  */
+ 
+ void foo(struct S *s)
+ {
+   s->bar = bar;
+ }
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/pr43280.c gcc-4.4.4/gcc/testsuite/gcc.dg/pr43280.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/pr43280.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/pr43280.c	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target stdint_types } */
+ /* { dg-options "-O2" } */
+ 
+ #include <stdint.h>
+ 
+ extern void abort (void);
+ 
+ uint64_t __attribute__((noinline))
+ byteswap64(uint64_t x)
+ {
+   uint32_t a = x >> 32;
+   uint32_t b = (uint32_t) x;
+   return ((uint64_t) ((((((b)) >> (8)) | (((b)) << (32 - (8)))) & 0xff00ff00L)
+ 		      | (((((b)) << (8)) | (((b)) >> (32 - (8)))) & 0x00ff00ffL)) << 32)
+           | (uint64_t) ((((((a)) >> (8)) | (((a)) << (32 - (8)))) & 0xff00ff00L)
+ 			| (((((a)) << (8)) | (((a)) >> (32 - (8)))) & 0x00ff00ffL));
+ }
+ 
+ int
+ main ()
+ {
+   uint64_t in = (uint64_t)0x01020304 << 32 | 0x05060708;
+   uint64_t cmp = (uint64_t)0x08070605 << 32 | 0x04030201;
+ 
+   if (cmp != byteswap64 (in))
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/pr43299.c gcc-4.4.4/gcc/testsuite/gcc.dg/pr43299.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/pr43299.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/pr43299.c	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,28 ----
+ /* PR debug/43299 */
+ /* { dg-do assemble } */
+ /* { dg-options "-g -O2" } */
+ 
+ extern void *emit_insn (void *);
+ 
+ __attribute__((noinline))
+ void *gen_load_locked_si (void *x, void *y)
+ {
+   return x;
+ }
+ 
+ __attribute__((noinline))
+ void *gen_load_locked_di (void *x, void *y)
+ {
+   return x;
+ }
+ 
+ void
+ emit_load_locked (int mode, void *reg, void *mem)
+ {
+   void * (*fn) (void *, void *) = ((void *)0);
+   if (mode == 9)
+     fn = gen_load_locked_si;
+   else if (mode == 10)
+     fn = gen_load_locked_di;
+   emit_insn (fn (reg, mem));
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/pr43300.c gcc-4.4.4/gcc/testsuite/gcc.dg/pr43300.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/pr43300.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/pr43300.c	Thu Mar 25 16:39:51 2010
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os -w" } */
+ typedef float V2SF __attribute__ ((vector_size (128)));
+ 
+ V2SF
+ foo (int x, V2SF a)
+ {
+   V2SF b;
+   if (x & 42)
+     b = a;
+   else
+     b = a + (V2SF) {1.0f/0.0f - 1.0f/0.0f, 1.0f/0.0f - 1.0f/0.0f};
+   while (x--)
+     a += b;
+       
+   return a;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/pr43305.c gcc-4.4.4/gcc/testsuite/gcc.dg/pr43305.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/pr43305.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/pr43305.c	Mon Mar 22 15:00:20 2010
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os -ffast-math" } */
+ extern int ilogbl(long double);
+ extern int printf(const char *format, ...);
+ 
+ __attribute__((noinline))
+ int foo(long double x)
+ {
+   return ilogbl(x);
+ }
+ 
+ int main()
+ {
+   printf("%d\n", foo(100));
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/pr43379.c gcc-4.4.4/gcc/testsuite/gcc.dg/pr43379.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/pr43379.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/pr43379.c	Thu Mar 25 16:39:51 2010
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -ftracer -w" } */
+ 
+ void *foo(int i, int *p)
+ {
+ lab:
+   if (p) *p = i;
+   goto *p;
+   return &&lab;
+ }
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/pr43402.c gcc-4.4.4/gcc/testsuite/gcc.dg/pr43402.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/pr43402.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/pr43402.c	Thu Mar 25 16:39:51 2010
***************
*** 0 ****
--- 1,58 ----
+ /* { dg-do run } */
+ /* { dg-options "-O1 -fno-inline" } */
+ extern void abort (void);
+ 
+ static int something;
+ 
+ static int * converterData[2]={
+     &something, &something,
+ };
+ 
+ static struct {
+   const char *name;
+   int type;
+ } const cnvNameType[] = {
+   { "bocu1", 1 },
+   { "utf7", 1 },
+   { "utf8", 1 }
+ };
+ 
+ 
+ const int * getAlgorithmicTypeFromName(const char *realName);
+ const int *
+ getAlgorithmicTypeFromName(const char *realName)
+ {
+     unsigned mid, start, limit;
+     unsigned lastMid;
+     int result;
+     start = 0;
+     limit = sizeof(cnvNameType)/sizeof(cnvNameType[0]);
+     mid = limit;
+     lastMid = 0xffffffff;
+ 
+     for (;;) {
+         mid = (start + limit) / 2;
+         if (lastMid == mid) {   /* Have we moved? */
+             break;  /* We haven't moved, and it wasn't found. */
+         }
+         lastMid = mid;
+         result = __builtin_strcmp(realName, cnvNameType[mid].name);
+ 
+         if (result < 0) {
+             limit = mid;
+         } else if (result > 0) {
+             start = mid;
+         } else {
+             return converterData[cnvNameType[mid].type];
+         }
+     }
+ 
+     return 0;
+ }
+ 
+ int main (void)
+ {
+   if (!getAlgorithmicTypeFromName ("utf8"))
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/pr43419.c gcc-4.4.4/gcc/testsuite/gcc.dg/pr43419.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/pr43419.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/pr43419.c	Mon Mar 22 14:58:00 2010
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do run } */
+ /* { dg-options "-O1" } */
+ /* { dg-options "-mieee -O1" { target alpha*-*-* sh*-*-* } } */
+ #include <math.h>
+ 
+ extern void abort (void);
+ void __attribute__((noinline)) f (double x)
+ {
+   double pluszero = pow (x, 0.5);
+   double minuszero = sqrt (x);
+   if (signbit (pluszero) == signbit (minuszero))
+     abort ();
+ }
+ 
+ int main(void)
+ {
+   f (-0.0);
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/pr43562.c gcc-4.4.4/gcc/testsuite/gcc.dg/pr43562.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/pr43562.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/pr43562.c	Wed Mar 31 02:51:31 2010
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-options "-O0" } */
+ /* { dg-do compile } */
+ 
+ extern unsigned foo (void);
+ extern void bar (void);
+ 
+ __attribute__ ((optimize ("O2")))
+ void bak ()
+ {
+   unsigned a;
+   while (1)
+     {
+       a = foo ();
+       while (a)
+ 	{
+ 	  a &= 1;
+ 	  bar ();
+ 	}
+     }
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/pr43643.c gcc-4.4.4/gcc/testsuite/gcc.dg/pr43643.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/pr43643.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/pr43643.c	Thu Apr  8 15:09:17 2010
***************
*** 0 ****
--- 1,24 ----
+ /* Contributed by J��rgen Keil <jrgn.keil@googlemail.com> */
+ 
+ /* { dg-do run } */
+ /* { dg-require-profiling "-pg" } */
+ /* { dg-options "-O2 -pg" } */
+ 
+ extern char *strdup (const char *);
+ 
+ void
+ func(char *a, char *b, char *c)
+ {
+   strdup(a);
+   strdup(b);
+   strdup(c);
+ }
+ 
+ int
+ main(void)
+ {
+   func("a", "b", "c");
+   return 0;
+ }
+ 
+ /* { dg-final { cleanup-profile-file } } */
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr42363.c gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr42363.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr42363.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr42363.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,84 ----
+ /* PR middle-end/pr42363, extended from the test for PR middle-end/37913.  */
+ /* { dg-do compile } */
+ /* { dg-options "-g" } */
+ 
+ void foo (void) __attribute__ ((noreturn));
+ 
+ static int __attribute__ ((noreturn))
+ bar (void)
+ {
+   foo ();
+ }
+ 
+ int
+ baz (void)
+ {
+   int i = bar ();
+   return i + 1;
+ }
+ 
+ int fooz (void) __attribute__ ((noreturn));
+ 
+ static int __attribute__ ((noreturn))
+ bart (void)
+ {
+   return fooz (); /* { dg-warning "noreturn" } */
+ }
+ 
+ int bazr (void)
+ {
+   int i = bart ();
+   return i + 1;
+ }
+ 
+ static inline int
+ bard (void)
+ {
+   return fooz ();
+ }
+ 
+ int bizr (void)
+ {
+   int i, j;
+ 
+   i = j = bard ();
+ 
+   return i + 1;
+ }
+ 
+ /* This might be regarded as pure and folded, rather than inlined.
+    It's pure evil.  */
+ static int __attribute__ ((pure, const, noreturn))
+ barf (void)
+ {
+ } /* { dg-warning "does return" } */
+ 
+ static int __attribute__ ((pure, const))
+ bark (void)
+ {
+   barf ();
+ }
+ 
+ int buzr (void)
+ {
+   int i, j;
+ 
+   i = j = bark () + bark ();
+ 
+   return i + 1;
+ }
+ 
+ int buzt (void)
+ {
+   int i, j;
+ 
+   i = j = barf () + barf ();
+ 
+   return i + 1;
+ }
+ 
+ void bust (void)
+ {
+   while (barf ())
+     ;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr42898-2.c gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr42898-2.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr42898-2.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr42898-2.c	Sun Jan 31 21:06:20 2010
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fdump-tree-optimized" } */
+ 
+ struct hardware {
+   int parm1:8;
+   int :4;
+   int parm2:4;
+   int parm3:15;
+   int parm4:1;
+ };
+ 
+ const struct hardware h = {
+   .parm1=42,
+   .parm2=13,
+   .parm3=11850,
+   .parm4=1,
+ };
+ 
+ void f1(volatile struct hardware *ptr)
+ {
+   *ptr = h;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\*ptr" 1 "optimized" } } */
+ /* { dg-final { cleanup-tree-dump "optimized" } } */
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr42898.c gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr42898.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr42898.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr42898.c	Sun Jan 31 17:04:29 2010
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fdump-tree-optimized" } */
+ 
+ struct hardware {
+   int parm1:8;
+   int :4;
+   int parm2:4;
+   int parm3:15;
+   int parm4:1;
+ };
+ 
+ void f1(volatile struct hardware *ptr)
+ {
+   *ptr=(struct hardware) {
+     .parm1=42,
+     .parm2=13,
+     .parm3=11850,
+     .parm4=1,
+   };
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\*ptr" 1 "optimized" } } */
+ /* { dg-final { cleanup-tree-dump "optimized" } } */
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr42952.c gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr42952.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr42952.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr42952.c	Thu Feb  4 16:18:01 2010
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do run } */
+ /* { dg-options "-fno-tree-ccp -fno-tree-fre" } */
+ 
+ extern void abort (void);
+ 
+ static int g[1];
+ 
+ static int * const p = &g[0];
+ static int * const q = &g[0];
+ 
+ int main(void)
+ {
+   g[0] = 1;
+   *p = 0;
+   *p = *q;
+   if (g[0] != 0)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr43000.c gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr43000.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr43000.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr43000.c	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do run } */
+ /* { dg-options "-fwrapv" } */
+ 
+ int __attribute__((noinline))
+ foo (long i, long j)
+ {
+   if (i >= 1)
+     if (j > -(long)(((unsigned long)(long)-1)>>1))
+       {
+         long x;
+ 	j--;
+ 	x = i + j;
+ 	if (x >= 0)
+ 	  return 1;
+       }
+   return 0;
+ }
+ extern void abort (void);
+ int main()
+ {
+   if (foo (1, 1) != 1)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr43002.c gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr43002.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr43002.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr43002.c	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Wall -fwrapv" } */
+ 
+ long A[4], B[100];
+ 
+ void foo(void)
+ {
+   int i, j, k = 3;
+   while (A[k] && k > 0) k--; /* k = {0, 1, 2, 3} */
+   for (i = 3 - k; i >= 0; i--) /* i = {0..3-k} */
+     for (j = 0; j <= k; j++) { /* line 8; j = {0..k} */
+ 	B[i + j] = 0; /* line 9; i + j = {0..3-k+k} = {0..3} */
+ 	for (j = 0; j <= k; j++); /* only one iteration is done, with j == 0 */
+     }
+ }
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr43165.c gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr43165.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr43165.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr43165.c	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,17 ----
+ /* PR debug/43165 */
+ /* { dg-options "-g" } */
+ 
+ struct __attribute__((packed)) S
+ {
+   unsigned char a;
+   unsigned short b;
+   unsigned short c;
+   unsigned d : 24;
+ };
+ 
+ void 
+ foo (struct S p)
+ {
+   for (; p.c; p.c++)
+     ;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr43360.c gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr43360.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr43360.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr43360.c	Thu Mar 18 13:15:21 2010
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do run } */
+ 
+ int l_5_5_2 = 4;
+ int g_3[1][1];
+ 
+ void func_1 (void)
+ {
+   for (g_3[0][0] = 1; g_3[0][0] < 8; g_3[0][0] += 7) {
+     int *l_6 = &g_3[0][0];
+     *l_6 = l_5_5_2;
+   }
+ }
+ 
+ int main (void)
+ {
+   func_1 ();
+   if (g_3[0][0] != 11)
+       __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr43560.c gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr43560.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/torture/pr43560.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/torture/pr43560.c	Thu Apr  8 11:31:00 2010
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-do run } */
+ /* { dg-require-weak "" } */
+ 
+ int g_6[1][2] = {{1,1}};
+ int g_34 = 0;
+ int *const g_82 = &g_6[0][1];
+ int *g_85[2][1] __attribute__((weak));
+ 
+ void __attribute__((noinline))
+ func_4 (int x)
+ {
+   int i;
+   for (i = 0; i <= x; i++) {
+       if (g_6[0][1]) {
+ 	  *g_82 = 1;
+       } else {
+ 	  int **l_109 = &g_85[1][0];
+ 	  if (&g_82 != l_109) {
+ 	  } else {
+ 	      *l_109 = &g_6[0][1];
+ 	  }
+ 	  *g_82 = 1;
+       }
+   }
+ }
+ 
+ int main (void)
+ {
+   g_85[0][0] = &g_34;
+   g_85[1][0] = &g_34;
+   func_4(1);
+   return 0;
+ } 
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/tree-ssa/inline-4.c gcc-4.4.4/gcc/testsuite/gcc.dg/tree-ssa/inline-4.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/tree-ssa/inline-4.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/tree-ssa/inline-4.c	Sat Mar  6 02:29:14 2010
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-einline2" } */
+ /* { dg-add-options bind_pic_locally } */
+ 
+ extern int rand(void);
+ 
+ int get_data_for (int id)
+ {
+   return rand();
+ }
+ 
+ int my_id;
+ 
+ int main()
+ {
+   int res = get_data_for (my_id);
+   switch (res)
+     {
+       case 0:
+ 	  return 666;
+       default:
+ 	  return -1;
+     }
+ }
+ 
+ /* { dg-final { scan-tree-dump "Inlining get_data_for into main" "einline2" } } */
+ /* { dg-final { cleanup-tree-dump "einline2" } } */
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/tree-ssa/ivopts-4.c gcc-4.4.4/gcc/testsuite/gcc.dg/tree-ssa/ivopts-4.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/tree-ssa/ivopts-4.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/tree-ssa/ivopts-4.c	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1" } */
+ void foo(int *p, long i, int j)
+ {
+   do {
+       p[i]++;
+   } while (i += j);
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/tree-ssa/pr42585.c gcc-4.4.4/gcc/testsuite/gcc.dg/tree-ssa/pr42585.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/tree-ssa/pr42585.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/tree-ssa/pr42585.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fdump-tree-optimized" } */
+ 
+ struct _fat_ptr
+ {
+   unsigned char *curr;
+   unsigned char *base;
+   unsigned char *last_plus_one;
+ };
+ int Cyc_string_ungetc (int ignore, struct _fat_ptr *sptr);
+ int
+ Cyc_string_ungetc (int ignore, struct _fat_ptr *sptr)
+ {
+   struct _fat_ptr *_T0;
+   struct _fat_ptr *_T1;
+   struct _fat_ptr _T2;
+   int _T3;
+   struct _fat_ptr _ans;
+   int _change;
+ 
+   {
+     _T0 = sptr;
+     _T1 = sptr;
+     _T2 = *sptr;
+     _T3 = -1;
+     _ans = _T2;
+     _change = -1;
+     _ans.curr += 4294967295U;
+     *sptr = _ans;
+     return (0);
+   }
+ }
+ 
+ /* The local aggregates . */
+ /* { dg-final { scan-tree-dump-times "struct _fat_ptr _ans" 0 "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "struct _fat_ptr _T2" 0 "optimized"} } */
+ /* { dg-final { cleanup-tree-dump "optimized" } } */
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/vect/fast-math-pr43074.c gcc-4.4.4/gcc/testsuite/gcc.dg/vect/fast-math-pr43074.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/vect/fast-math-pr43074.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/vect/fast-math-pr43074.c	Tue Feb 16 11:41:55 2010
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ 
+ float
+ pvslockprocess(float *fout, float *fin, int framesize)
+ {
+   int i;
+   float mag=0.0f, diff;
+   for (i = 0; i < framesize; i += 2) {
+       mag += fin[i];
+       fout[i] = fin[i];
+       fout[i+1] = fin[i+1];
+   }
+   return mag;
+ }
+ 
+ /* { dg-final { cleanup-tree-dump "vect" } } */
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/vect/pr42395.c gcc-4.4.4/gcc/testsuite/gcc.dg/vect/pr42395.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/vect/pr42395.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/vect/pr42395.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,10 ----
+ /* PR debug/42395 */
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -ftree-vectorize -g" } */
+ 
+ void foo(int j, int *A)
+ {
+   int i;
+   for (i = 0; i < j; i ++) A[i] = i;
+   for (; i < 4096; i ++) A[i] = 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/vect/pr42604.c gcc-4.4.4/gcc/testsuite/gcc.dg/vect/pr42604.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/vect/pr42604.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/vect/pr42604.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,35 ----
+ /* PR debug/42604 */
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -ftree-vectorize -g -ffast-math" } */
+ 
+ unsigned *d;
+ unsigned short e;
+ int f;
+ float h[3][4];
+ 
+ void
+ test (unsigned short *b)
+ {
+   int a, c, i;
+   float g[3];
+   unsigned j[32] = { 10, 0x63707274 };
+   for (i = 0; i < (int) j[0]; i++)
+     {
+       j[i * 3 + 2] = d[0];
+       d[0] += (j[i * 3 + 3] + 3) & -4;
+     }
+   for (a = 0; a < e; a++)
+     {
+       g[0] = g[1] = g[2] = 0;
+       for (c = 0; c < f; c++)
+ 	{
+ 	  g[0] += h[0][c] * b[c];
+ 	  g[1] += h[1][c] * b[c];
+ 	}
+       for (c = 0; c < 3; c++)
+ 	b[c] = 0 > ((int) g[c] < 65535 ? ((int) g[c]) : 65535)
+ 	  ? 0 : ((int) g[c]) < 65535 ? (int) g[c] : 65535;
+     }
+ }
+ 
+ /* { dg-final { cleanup-tree-dump "vect" } } */
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/vect/pr42709.c gcc-4.4.4/gcc/testsuite/gcc.dg/vect/pr42709.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/vect/pr42709.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/vect/pr42709.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_int } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+ 
+ #define N 128 
+ 
+ int *res[N];
+ 
+ int
+ main1 (int *a, int *b, int *c, int *d, int dummy)
+ {
+   int i;
+ 
+   for (i = 0; i < N/2; i+=4)
+     {
+       res[i] = a + 16;
+       res[i+1] = b + 16;
+       res[i+2] = c + 16;
+       res[i+3] = d + 16;
+       if (dummy == 32)
+         abort ();
+     } 
+ }
+ 
+ /* { dg-final { cleanup-tree-dump "vect" } } */
+   
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.dg/vla-22.c gcc-4.4.4/gcc/testsuite/gcc.dg/vla-22.c
*** gcc-4.4.3/gcc/testsuite/gcc.dg/vla-22.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.dg/vla-22.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ extern void bar (int *);
+ 
+ static inline __attribute__((always_inline))
+ int
+ foo (int i)
+ {
+   struct S {
+     int ar[1][i];
+   } s;
+ 
+   s.ar[0][0] = 0;
+   bar (&s.ar[0][0]);
+ }
+ 
+ void
+ baz (int i)
+ {
+   foo (i + 2);
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c	Wed Jul 25 12:28:31 2007
--- gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c	Mon Jan 25 12:29:25 2010
***************
*** 9,15 ****
  
  void test_vget_lowf32 (void)
  {
!   float32x2_t out_float32x2_t;
    float32x4_t arg0_float32x4_t;
  
    out_float32x2_t = vget_low_f32 (arg0_float32x4_t);
--- 9,15 ----
  
  void test_vget_lowf32 (void)
  {
!   register float32x2_t out_float32x2_t asm ("d18");
    float32x4_t arg0_float32x4_t;
  
    out_float32x2_t = vget_low_f32 (arg0_float32x4_t);
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c	Wed Jul 25 12:28:31 2007
--- gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c	Mon Jan 25 12:29:25 2010
***************
*** 9,15 ****
  
  void test_vget_lowp16 (void)
  {
!   poly16x4_t out_poly16x4_t;
    poly16x8_t arg0_poly16x8_t;
  
    out_poly16x4_t = vget_low_p16 (arg0_poly16x8_t);
--- 9,15 ----
  
  void test_vget_lowp16 (void)
  {
!   register poly16x4_t out_poly16x4_t asm ("d18");
    poly16x8_t arg0_poly16x8_t;
  
    out_poly16x4_t = vget_low_p16 (arg0_poly16x8_t);
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c	Wed Jul 25 12:28:31 2007
--- gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c	Mon Jan 25 12:29:25 2010
***************
*** 9,15 ****
  
  void test_vget_lowp8 (void)
  {
!   poly8x8_t out_poly8x8_t;
    poly8x16_t arg0_poly8x16_t;
  
    out_poly8x8_t = vget_low_p8 (arg0_poly8x16_t);
--- 9,15 ----
  
  void test_vget_lowp8 (void)
  {
!   register poly8x8_t out_poly8x8_t asm ("d18");
    poly8x16_t arg0_poly8x16_t;
  
    out_poly8x8_t = vget_low_p8 (arg0_poly8x16_t);
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c	Wed Jul 25 12:28:31 2007
--- gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c	Mon Jan 25 12:29:25 2010
***************
*** 9,15 ****
  
  void test_vget_lows16 (void)
  {
!   int16x4_t out_int16x4_t;
    int16x8_t arg0_int16x8_t;
  
    out_int16x4_t = vget_low_s16 (arg0_int16x8_t);
--- 9,15 ----
  
  void test_vget_lows16 (void)
  {
!   register int16x4_t out_int16x4_t asm ("d18");
    int16x8_t arg0_int16x8_t;
  
    out_int16x4_t = vget_low_s16 (arg0_int16x8_t);
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c	Wed Jul 25 12:28:31 2007
--- gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c	Mon Jan 25 12:29:25 2010
***************
*** 9,15 ****
  
  void test_vget_lows32 (void)
  {
!   int32x2_t out_int32x2_t;
    int32x4_t arg0_int32x4_t;
  
    out_int32x2_t = vget_low_s32 (arg0_int32x4_t);
--- 9,15 ----
  
  void test_vget_lows32 (void)
  {
!   register int32x2_t out_int32x2_t asm ("d18");
    int32x4_t arg0_int32x4_t;
  
    out_int32x2_t = vget_low_s32 (arg0_int32x4_t);
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c	Wed Jul 25 12:28:31 2007
--- gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c	Mon Jan 25 12:29:25 2010
*************** void test_vget_lows64 (void)
*** 15,19 ****
    out_int64x1_t = vget_low_s64 (arg0_int64x2_t);
  }
  
- /* { dg-final { scan-assembler "vmov\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
  /* { dg-final { cleanup-saved-temps } } */
--- 15,18 ----
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c	Wed Jul 25 12:28:31 2007
--- gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c	Mon Jan 25 12:29:25 2010
***************
*** 9,15 ****
  
  void test_vget_lows8 (void)
  {
!   int8x8_t out_int8x8_t;
    int8x16_t arg0_int8x16_t;
  
    out_int8x8_t = vget_low_s8 (arg0_int8x16_t);
--- 9,15 ----
  
  void test_vget_lows8 (void)
  {
!   register int8x8_t out_int8x8_t asm ("d18");
    int8x16_t arg0_int8x16_t;
  
    out_int8x8_t = vget_low_s8 (arg0_int8x16_t);
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c	Wed Jul 25 12:28:31 2007
--- gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c	Mon Jan 25 12:29:25 2010
***************
*** 9,15 ****
  
  void test_vget_lowu16 (void)
  {
!   uint16x4_t out_uint16x4_t;
    uint16x8_t arg0_uint16x8_t;
  
    out_uint16x4_t = vget_low_u16 (arg0_uint16x8_t);
--- 9,15 ----
  
  void test_vget_lowu16 (void)
  {
!   register uint16x4_t out_uint16x4_t asm ("d18");
    uint16x8_t arg0_uint16x8_t;
  
    out_uint16x4_t = vget_low_u16 (arg0_uint16x8_t);
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c	Wed Jul 25 12:28:31 2007
--- gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c	Mon Jan 25 12:29:25 2010
***************
*** 9,15 ****
  
  void test_vget_lowu32 (void)
  {
!   uint32x2_t out_uint32x2_t;
    uint32x4_t arg0_uint32x4_t;
  
    out_uint32x2_t = vget_low_u32 (arg0_uint32x4_t);
--- 9,15 ----
  
  void test_vget_lowu32 (void)
  {
!   register uint32x2_t out_uint32x2_t asm ("d18");
    uint32x4_t arg0_uint32x4_t;
  
    out_uint32x2_t = vget_low_u32 (arg0_uint32x4_t);
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c	Wed Jul 25 12:28:31 2007
--- gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c	Mon Jan 25 12:29:25 2010
*************** void test_vget_lowu64 (void)
*** 15,19 ****
    out_uint64x1_t = vget_low_u64 (arg0_uint64x2_t);
  }
  
- /* { dg-final { scan-assembler "vmov\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
  /* { dg-final { cleanup-saved-temps } } */
--- 15,18 ----
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c	Wed Jul 25 12:28:31 2007
--- gcc-4.4.4/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c	Mon Jan 25 12:29:25 2010
***************
*** 9,15 ****
  
  void test_vget_lowu8 (void)
  {
!   uint8x8_t out_uint8x8_t;
    uint8x16_t arg0_uint8x16_t;
  
    out_uint8x8_t = vget_low_u8 (arg0_uint8x16_t);
--- 9,15 ----
  
  void test_vget_lowu8 (void)
  {
!   register uint8x8_t out_uint8x8_t asm ("d18");
    uint8x16_t arg0_uint8x16_t;
  
    out_uint8x8_t = vget_low_u8 (arg0_uint8x16_t);
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/arm/pr40887.c gcc-4.4.4/gcc/testsuite/gcc.target/arm/pr40887.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/arm/pr40887.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.target/arm/pr40887.c	Thu Feb 18 13:13:03 2010
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-options "-O2 -march=armv5te" }  */
+ /* { dg-final { scan-assembler "blx" } } */
+ 
+ int (*indirect_func)();
+ 
+ int indirect_call()
+ {
+     return indirect_func();
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/arm/sibcall-1.c gcc-4.4.4/gcc/testsuite/gcc.target/arm/sibcall-1.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/arm/sibcall-1.c	Fri Jul  6 16:57:19 2007
--- gcc-4.4.4/gcc/testsuite/gcc.target/arm/sibcall-1.c	Sat Mar 13 01:56:15 2010
*************** int main(int argc, const char *argv[])
*** 30,34 ****
    return result;
  }
  
! /* { dg-final { scan-assembler "\tb\tfunc2\n" } } */
  
--- 30,35 ----
    return result;
  }
  
! /* The PLT marker may appear if the test is run with -fpic/-fPIC.  */
! /* { dg-final { scan-assembler "\tb\tfunc2(\\(PLT\\))?\n" } } */
  
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/arm/thumb2-cbnz.c gcc-4.4.4/gcc/testsuite/gcc.target/arm/thumb2-cbnz.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/arm/thumb2-cbnz.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.target/arm/thumb2-cbnz.c	Wed Feb 24 14:50:43 2010
***************
*** 0 ****
--- 1,110 ----
+ /* { dg-do assemble } */
+ /* { dg-options "-O1 -mthumb -march=armv7-a" } */
+ 
+ typedef short int int16_t;
+ typedef unsigned char uint8_t;
+ struct component
+ {
+   float *Q_table;
+ };
+ static inline unsigned char descale_and_clamp(int x, int shift)
+ {
+   x += (1UL<<(shift-1));
+   if (x<0)
+     x = (x >> shift) | ((~(0UL)) << (32-(shift)));
+     x >>= shift;
+   x += 128;
+   if (x>255)
+     return 255;
+   else if (x<0)
+     return 0;
+     return x;
+ }
+ void
+ tinyjpeg_idct_float (struct component *compptr, uint8_t *output_buf, int stride)
+ {
+   float tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
+   float tmp10, tmp11, tmp12, tmp13;
+   float z5, z10, z11, z12, z13;
+   int16_t *inptr;
+   float *quantptr;
+   float *wsptr;
+   uint8_t *outptr;
+   int ctr;
+   float workspace[(8*8)];
+   quantptr = compptr->Q_table;
+   wsptr = workspace;
+   for (ctr = 8; ctr > 0; ctr--) {
+     if (inptr[8*1] == 0 && inptr[8*2] == 0 &&
+  inptr[8*3] == 0 && inptr[8*4] == 0 &&
+  inptr[8*5] == 0 && inptr[8*6] == 0 &&
+  inptr[8*7] == 0) {
+       float dcval = (((float) (inptr[8*0])) * (quantptr[8*0]));
+       wsptr[8*0] = dcval;
+       wsptr[8*1] = dcval;
+       wsptr[8*2] = dcval;
+       wsptr[8*3] = dcval;
+       wsptr[8*4] = dcval;
+       wsptr[8*5] = dcval;
+       wsptr[8*6] = dcval;
+       wsptr[8*7] = dcval;
+       inptr++;
+       quantptr++;
+       wsptr++;
+       continue;
+     }
+     tmp0 = (((float) (inptr[8*0])) * (quantptr[8*0]));
+     tmp1 = (((float) (inptr[8*2])) * (quantptr[8*2]));
+     tmp2 = (((float) (inptr[8*4])) * (quantptr[8*4]));
+     tmp3 = (((float) (inptr[8*6])) * (quantptr[8*6]));
+     tmp10 = tmp0 + tmp2;
+     tmp11 = tmp0 - tmp2;
+     tmp13 = tmp1 + tmp3;
+     tmp12 = (tmp1 - tmp3) * ((float) 1.414213562) - tmp13;
+     tmp0 = tmp10 + tmp13;
+     tmp3 = tmp10 - tmp13;
+     tmp1 = tmp11 + tmp12;
+     tmp2 = tmp11 - tmp12;
+     tmp4 = (((float) (inptr[8*1])) * (quantptr[8*1]));
+     tmp5 = (((float) (inptr[8*3])) * (quantptr[8*3]));
+     tmp6 = (((float) (inptr[8*5])) * (quantptr[8*5]));
+     tmp7 = (((float) (inptr[8*7])) * (quantptr[8*7]));
+     z13 = tmp6 + tmp5;
+     z10 = tmp6 - tmp5;
+     z11 = tmp4 + tmp7;
+     z12 = tmp4 - tmp7;
+     tmp7 = z11 + z13;
+     tmp11 = (z11 - z13) * ((float) 1.414213562);
+     z5 = (z10 + z12) * ((float) 1.847759065);
+     tmp10 = ((float) 1.082392200) * z12 - z5;
+     tmp12 = ((float) -2.613125930) * z10 + z5;
+     tmp6 = tmp12 - tmp7;
+     tmp5 = tmp11 - tmp6;
+     tmp4 = tmp10 + tmp5;
+     wsptr[8*0] = tmp0 + tmp7;
+     wsptr[8*7] = tmp0 - tmp7;
+     wsptr[8*1] = tmp1 + tmp6;
+     wsptr[8*2] = tmp2 + tmp5;
+     wsptr[8*5] = tmp2 - tmp5;
+     wsptr[8*4] = tmp3 + tmp4;
+     wsptr[8*3] = tmp3 - tmp4;
+     inptr++;
+     quantptr++;
+     wsptr++;
+   }
+   for (ctr = 0; ctr < 8; ctr++) {
+     tmp11 = wsptr[0] - wsptr[4];
+     tmp12 = (wsptr[2] - wsptr[6]) * ((float) 1.414213562) - tmp13;
+     tmp0 = tmp10 + tmp13;
+     tmp1 = tmp11 + tmp12;
+     z10 = wsptr[5] - wsptr[3];
+     tmp12 = ((float) -2.613125930) * z10 + z5;
+     tmp6 = tmp12 - tmp7;
+     outptr[0] = descale_and_clamp((int)(tmp0 + tmp7), 3);
+     outptr[7] = descale_and_clamp((int)(tmp0 - tmp7), 3);
+     outptr[1] = descale_and_clamp((int)(tmp1 + tmp6), 3);
+     outptr[6] = descale_and_clamp((int)(tmp1 - tmp6), 3);
+     outptr[2] = descale_and_clamp((int)(tmp2 + tmp5), 3);
+     outptr += stride;
+   }
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/i386/clobbers.c gcc-4.4.4/gcc/testsuite/gcc.target/i386/clobbers.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/i386/clobbers.c	Wed Aug 22 09:59:14 2007
--- gcc-4.4.4/gcc/testsuite/gcc.target/i386/clobbers.c	Wed Mar 10 20:35:31 2010
***************
*** 1,7 ****
  /* Test asm clobbers on x86. */
  
  /* { dg-do run } */
- /* { dg-skip-if "" { ilp32 } { "-fpic" "-fPIC" } { "" } } */
  
  extern void abort (void);
  
--- 1,6 ----
*************** int main ()
*** 13,23 ****
                  abort ();
  	/* On darwin you can't call external functions from non-pic code,
  	   however, clobbering ebx isn't valid in pic code. Instead of
! 	   disabling the whole test, just disable the ebx clobbering part.  */
  #if !(defined (__MACH__))
          __asm__ ("movl $1,%0\n\txorl %%ebx,%%ebx" : "=r" (i) : : "ebx");
          if (i != 1)
                  abort ();
  #endif
          __asm__ ("movl $1,%0\n\txorl %%ecx,%%ecx" : "=r" (i) : : "ecx");
          if (i != 1)
--- 12,26 ----
                  abort ();
  	/* On darwin you can't call external functions from non-pic code,
  	   however, clobbering ebx isn't valid in pic code. Instead of
! 	   disabling the whole test, just disable the ebx clobbering part.
! 	   Ditto for any x86 system that is ilp32 && pic.
! 	*/
  #if !(defined (__MACH__))
+ #if ! defined (__PIC__) || defined (__LP64__)
          __asm__ ("movl $1,%0\n\txorl %%ebx,%%ebx" : "=r" (i) : : "ebx");
          if (i != 1)
                  abort ();
+ #endif /* ! pic || lp64 */
  #endif
          __asm__ ("movl $1,%0\n\txorl %%ecx,%%ecx" : "=r" (i) : : "ecx");
          if (i != 1)
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr42881.c gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr42881.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr42881.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr42881.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,13 ----
+ /* PR target/42881 */
+ /* { dg-do run } */
+ /* { dg-options "-O0 -msse2" } */
+ #include "sse2-check.h"
+ static void
+ sse2_test (void)
+ {
+   double a[2];
+   __m128d x = _mm_set1_pd(3);
+   _mm_storeu_pd(a,x);
+   if (a[0] != 3.0 || a[1] != 3.0)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr42891.c gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr42891.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr42891.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr42891.c	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ union B { int i; float f; };
+ 
+ extern void bar (void);
+ 
+ void
+ foo (union B x, union B y)
+ {
+   if (!(y.f > x.i))
+     bar ();
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr43107.c gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr43107.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr43107.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr43107.c	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,20 ----
+ /* PR target/43107 */
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -mavx" } */
+ 
+ extern void bar (float b[4][4]);
+ 
+ void
+ foo ()
+ {
+   float a[4][4], b[4][4];
+   int i, j;
+   for (i = 0; i < 4; i++)
+     {
+       for (j = 0; j < 4; j++)
+ 	a[i][j] = 0;
+       for (j = 0; j < 4; j++)
+ 	b[i][j] = a[i][j];
+     }
+   bar (b);
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr43524.c gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr43524.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr43524.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr43524.c	Wed Mar 31 18:09:04 2010
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mstack-arg-probe" } */
+ 
+ extern void bar (void);
+ 
+ void foo (int i)
+ {
+   bar ();
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr43528.c gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr43528.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr43528.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr43528.c	Wed Mar 31 18:09:04 2010
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target lp64 } */
+ /* { dg-options "-mms-bitfields" } */
+ 
+ struct S { int i[(1LL << 60) - 1]; };
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr43638.c gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr43638.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr43638.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr43638.c	Tue Apr  6 11:07:09 2010
***************
*** 0 ****
--- 1,9 ----
+ /* PR target/43638 */
+ /* { dg-do compile } */
+ 
+ void
+ foo (void)
+ {
+   int x;
+   __asm __volatile ("mov $0,%e0" : "=r" (x));	/* { dg-error "invalid operand code" } */
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr43662.c gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr43662.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr43662.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr43662.c	Mon Apr 19 10:06:13 2010
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target lp64 } */
+ /* { dg-options "-O2" } */
+ 
+ void __attribute__ ((ms_abi)) foo (void)
+ {
+ }
+ 
+ typedef struct _IAVIStreamImpl
+ {
+   int sInfo;
+   int has;
+ } IAVIStreamImpl;
+ 
+ extern int __attribute__ ((ms_abi)) aso (void *);
+ extern int sre (void *);
+ 
+ int AVIFILE_OpenCompressor (IAVIStreamImpl *This)
+ {
+   if (This->has != 0)
+     aso (&This->has);
+   sre (&This->sInfo);
+   return 0;
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr43668.c gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr43668.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/i386/pr43668.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.target/i386/pr43668.c	Wed Apr  7 21:48:51 2010
***************
*** 0 ****
--- 1,10 ----
+ /* PR target/43668 */
+ /* { dg-do run } */
+ /* { dg-options "-fschedule-insns" } */
+ 
+ int foo(int i, ...) {
+   return i;
+ }
+ int main() {
+   return foo(0, 0.0);
+ }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/powerpc/ppc-sdata-1.c gcc-4.4.4/gcc/testsuite/gcc.target/powerpc/ppc-sdata-1.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/powerpc/ppc-sdata-1.c	Sat Jun  7 18:00:15 2008
--- gcc-4.4.4/gcc/testsuite/gcc.target/powerpc/ppc-sdata-1.c	Sun Mar 21 19:41:58 2010
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile { target { { powerpc*-*-linux* && ilp32 } || { powerpc-*-eabi* } } } } */
  /* { dg-options "-O2 -fno-common -G 8 -meabi -msdata=eabi" } */
+ /* { dg-require-effective-target nonpic } */
  /* { dg-final { scan-assembler "\\.section\[ \t\]\\.sdata," } } */
  /* { dg-final { scan-assembler "\\.section\[ \t\]\\.sdata2," } } */
  /* { dg-final { scan-assembler "sdat@sda21\\((13|0)\\)" } } */
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c gcc-4.4.4/gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c	Sat Jun  7 18:00:15 2008
--- gcc-4.4.4/gcc/testsuite/gcc.target/powerpc/ppc-sdata-2.c	Sun Mar 21 19:41:58 2010
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile { target { { powerpc*-*-linux* && ilp32 } || { powerpc-*-eabi* } } } } */
  /* { dg-options "-O2 -fno-common -G 8 -msdata=sysv" } */
+ /* { dg-require-effective-target nonpic } */
  /* { dg-final { scan-assembler "\\.section\[ \t\]\\.sdata," } } */
  /* { dg-final { scan-assembler-not "\\.section\[ \t\]\\.sdata2," } } */
  /* { dg-final { scan-assembler "sdat@sdarel\\(13\\)" } } */
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/s390/stackcheck1.c gcc-4.4.4/gcc/testsuite/gcc.target/s390/stackcheck1.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/s390/stackcheck1.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.target/s390/stackcheck1.c	Tue Apr  6 07:15:03 2010
***************
*** 0 ****
--- 1,14 ----
+ /* The automatically chosen stack guard value caused an ICE in that
+    case.  */
+ 
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mstack-size=4096" } */
+ 
+ extern void bar (char *);
+ 
+ void
+ foo ()
+ {
+   char a[2500];
+   bar (a);
+ }	/* { dg-warning "more than half" } */
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gcc.target/sh/pr43417.c gcc-4.4.4/gcc/testsuite/gcc.target/sh/pr43417.c
*** gcc-4.4.3/gcc/testsuite/gcc.target/sh/pr43417.c	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gcc.target/sh/pr43417.c	Sat Apr 10 15:14:13 2010
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -m4" } */
+ 
+ int pid_count = 0;
+ main (int argc, char *argv[])
+ {
+   unsigned int c;
+   unsigned long long maxbytes = 0;
+   extern char *optarg;
+   int i;
+   int pid_cntr;
+   int pid;
+   int pid_list[1000];
+   while ((c = getopt (argc, argv, "c:b:p:wvh")) != (-1))
+     {
+       switch ((char) c)
+ 	{
+ 	case 'b':
+ 	  maxbytes = atoll (optarg);
+ 	}
+     }
+   pid = fork ();
+   while ((pid != 0) && (maxbytes > 1024 * 1024 * 1024))
+     {
+       maxbytes = maxbytes - (1024 * 1024 * 1024);
+       pid = fork ();
+       if (pid != 0)
+ 	pid_cntr++;
+       pid_list[i] = pid;
+     }
+   while ((pid_count < pid_cntr))
+     {
+     }
+   kill (pid_list[i], 9);
+ }
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/alloc_comp_basics_1.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/alloc_comp_basics_1.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/alloc_comp_basics_1.f90	Mon Nov 24 06:34:16 2008
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/alloc_comp_basics_1.f90	Sun Jan 31 14:57:13 2010
***************
*** 1,5 ****
  ! { dg-do run }
! ! { dg-options "-O2 -fdump-tree-original" }
  !
  ! Check some basic functionality of allocatable components, including that they
  ! are nullified when created and automatically deallocated when
--- 1,5 ----
  ! { dg-do run }
! ! { dg-options "-fdump-tree-original" }
  !
  ! Check some basic functionality of allocatable components, including that they
  ! are nullified when created and automatically deallocated when
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/alloc_comp_bounds_1.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/alloc_comp_bounds_1.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/alloc_comp_bounds_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/alloc_comp_bounds_1.f90	Sun Jan 31 14:57:13 2010
***************
*** 0 ****
--- 1,50 ----
+ ! { dg-do run }
+ ! Test the fix for PR38324, in which the bounds were not set correctly for
+ ! constructor assignments with allocatable components.
+ !
+ ! Contributed by Dominique d'Humieres <dominiq@lps.ens.fr>
+ !
+   integer, parameter :: ik4 = 4
+   integer, parameter :: ik8 = 8
+   integer, parameter :: from = -1, to = 2
+   call foo
+   call bar
+ contains
+   subroutine foo
+     type :: struct
+       integer(4), allocatable :: ib(:)
+     end type struct
+     integer(ik4), allocatable :: ia(:)
+     type(struct) :: x
+     allocate(ia(from:to))
+     if (any(lbound(ia) .ne. -1) .or. any(ubound(ia) .ne. 2)) call abort
+     if (any(lbound(ia(:)) .ne. 1) .or. any(ubound(ia(:)) .ne. 4)) call abort
+     if (any(lbound(ia(from:to)) .ne. 1) .or. any(ubound(ia(from:to)) .ne. 4)) call abort
+     x=struct(ia)
+     if (any(lbound(x%ib) .ne. -1) .or. any(ubound(x%ib) .ne. 2)) call abort
+     x=struct(ia(:))
+     if (any(lbound(x%ib) .ne. 1) .or. any(ubound(x%ib) .ne. 4)) call abort
+     x=struct(ia(from:to))
+     if (any(lbound(x%ib) .ne. 1) .or. any(ubound(x%ib) .ne. 4)) call abort
+     deallocate(ia)
+   end subroutine
+   subroutine bar
+     type :: struct
+       integer(4), allocatable :: ib(:)
+     end type struct
+     integer(ik8), allocatable :: ia(:)
+     type(struct) :: x
+     allocate(ia(from:to))
+     if (any(lbound(ia) .ne. -1) .or. any(ubound(ia) .ne. 2)) call abort
+     if (any(lbound(ia(:)) .ne. 1) .or. any(ubound(ia(:)) .ne. 4)) call abort
+     if (any(lbound(ia(from:to)) .ne. 1) .or. any(ubound(ia(from:to)) .ne. 4)) call abort
+     x=struct(ia)
+     if (any(lbound(x%ib) .ne. -1) .or. any(ubound(x%ib) .ne. 2)) call abort
+     x=struct(ia(:))
+     if (any(lbound(x%ib) .ne. 1) .or. any(ubound(x%ib) .ne. 4)) call abort
+     x=struct(ia(from:to))
+     if (any(lbound(x%ib) .ne. 1) .or. any(ubound(x%ib) .ne. 4)) call abort
+     deallocate(ia)
+   end subroutine
+ end
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/array_constructor_35.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/array_constructor_35.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/array_constructor_35.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/array_constructor_35.f90	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! PR42999  bogus error: Parameter 'i' at (1) has not been declared
+ ! or is a variable, which does not reduce to a constant expression
+  TYPE DD
+   INTEGER :: I
+  END TYPE DD
+  TYPE(DD) :: X(2)=(/(DD(I),I=1,2)/)
+  END
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/bounds_check_15.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/bounds_check_15.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/bounds_check_15.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/bounds_check_15.f90	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,33 ----
+ ! { dg-do run }
+ ! { dg-options "-fbounds-check" }
+ ! Test the fix for PR42783, in which a bogus array bounds violation
+ ! with missing optional array argument.
+ !
+ ! Contributed by Harald Anlauf <anlauf@gmx.de>
+ !
+ program gfcbug99
+   implicit none
+   character(len=8), parameter :: mnem_list(2) = "A"
+ 
+   call foo (mnem_list)  ! This call succeeds
+   call foo ()           ! This call fails
+ contains
+   subroutine foo (mnem_list)
+     character(len=8) ,intent(in) ,optional :: mnem_list(:)
+ 
+     integer            :: i,j
+     character(len=256) :: ml
+     ml = ''
+     j = 0
+     if (present (mnem_list)) then
+        do i = 1, size (mnem_list)
+           if (mnem_list(i) /= "") then
+              j = j + 1
+              if (j > len (ml)/8) call abort ()
+              ml((j-1)*8+1:(j-1)*8+8) = mnem_list(i)
+           end if
+        end do
+     end if
+     if (j > 0) print *, trim (ml(1:8))
+   end subroutine foo
+ end program gfcbug99
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/c_assoc_3.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/c_assoc_3.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/c_assoc_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/c_assoc_3.f90	Thu Mar 11 11:10:37 2010
***************
*** 0 ****
--- 1,13 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/43303
+ !
+ ! Contributed by Dennis Wassel
+ !
+ PROGRAM c_assoc
+   use iso_c_binding
+   type(c_ptr) :: x
+   x = c_null_ptr
+   print *, C_ASSOCIATED(x) ! <<< was ICEing here
+   if (C_ASSOCIATED(x)) call abort ()
+ END PROGRAM c_assoc
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/char_array_arg_1.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/char_array_arg_1.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/char_array_arg_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/char_array_arg_1.f90	Sat Jan 30 21:12:59 2010
***************
*** 0 ****
--- 1,17 ----
+ ! { dg-do compile }
+ ! Test the fix for pr41167, in which the first argument of 'pack', below,
+ ! was simplified incorrectly, with the results indicated.
+ !
+ ! Contributed by Harald Anlauf <anlauf@gmx.de>
+ !
+ program gfcbug88
+   implicit none
+   type t
+      character(len=8) :: name
+   end type t
+   type(t) ,parameter :: obstyp(2)= (/ t ('A'), t ('B') /)
+   character(9) :: chr(1)
+ 
+   print *, pack (" "//obstyp(:)% name, (/ .true., .false. /))  ! Used to ICE on compilation
+   chr = pack (" "//obstyp(:)% name, (/ .true., .false. /))  ! Used to give conversion error
+ end program gfcbug88
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/debug/pr43166.f gcc-4.4.4/gcc/testsuite/gfortran.dg/debug/pr43166.f
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/debug/pr43166.f	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/debug/pr43166.f	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,14 ----
+ C PR debug/43166
+ C { dg-do compile }
+ C { dg-options "-O" }
+       SUBROUTINE FOO ()
+       INTEGER V1
+       COMMON // V1
+       END
+       SUBROUTINE BAR ()
+       INTEGER V0,V1,V2,V3
+       COMMON // V1(4),V2(85,4),V3
+       DO V3=1,V1(1)
+       V0=V2(V3,1)
+       END DO
+       END
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/dependency_25.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/dependency_25.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/dependency_25.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/dependency_25.f90	Wed Jan 27 20:06:08 2010
***************
*** 0 ****
--- 1,95 ----
+ ! { dg-do run }
+ ! Test the fix for PR42736, in which an excessively rigorous dependency
+ ! checking for the assignment generated an unnecessary temporary, whose
+ ! rank was wrong.  When accessed by the scalarizer, a segfault ensued.
+ !
+ ! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+ ! Reported by Armelius Cameron <armeliusc@gmail.com>
+ !
+ module UnitValue_Module
+ 
+   implicit none
+   private
+ 
+   public :: &
+     operator(*), &
+     assignment(=)
+ 
+   type, public :: UnitValue
+     real :: &
+       Value = 1.0
+     character(31) :: &
+       Label
+   end type UnitValue
+ 
+   interface operator(*)
+     module procedure ProductReal_LV
+   end interface operator(*)
+ 
+   interface assignment(=)
+     module procedure Assign_LV_Real
+   end interface assignment(=)
+ 
+ contains
+ 
+   elemental function ProductReal_LV(Multiplier, Multiplicand) result(P_R_LV)
+ 
+     real, intent(in) :: &
+       Multiplier
+     type(UnitValue), intent(in) :: &
+       Multiplicand
+     type(UnitValue) :: &
+       P_R_LV
+ 
+     P_R_LV%Value = Multiplier * Multiplicand%Value
+     P_R_LV%Label = Multiplicand%Label
+ 
+   end function ProductReal_LV
+ 
+ 
+   elemental subroutine Assign_LV_Real(LeftHandSide, RightHandSide)
+ 
+     real, intent(inout) :: &
+       LeftHandSide
+     type(UnitValue), intent(in) :: &
+       RightHandSide
+ 
+     LeftHandSide = RightHandSide%Value
+ 
+   end subroutine Assign_LV_Real
+ 
+ end module UnitValue_Module
+ 
+ program TestProgram
+ 
+   use UnitValue_Module
+ 
+   implicit none
+ 
+   type :: TableForm
+     real, dimension(:,:), allocatable :: &
+       RealData
+   end type TableForm
+ 
+   type(UnitValue) :: &
+     CENTIMETER
+ 
+   type(TableForm), pointer :: &
+     Table
+ 
+   allocate(Table)
+   allocate(Table%RealData(10,5))
+ 
+   CENTIMETER%value = 42
+   Table%RealData = 1
+   Table%RealData(:,1) = Table%RealData(:,1) * CENTIMETER
+   Table%RealData(:,2) = Table%RealData(:,2) * CENTIMETER
+   Table%RealData(:,3) = Table%RealData(:,3) * CENTIMETER
+   Table%RealData(:,5) = Table%RealData(:,5) * CENTIMETER
+ 
+ !  print *, Table%RealData
+   if (any (abs(Table%RealData(:,4) - 1) > epsilon(1.0))) call abort ()
+   if (any (abs(Table%RealData(:,[1,2,3,5]) - 42) > epsilon(1.0))) call abort ()
+ end program TestProgram
+ 
+ ! { dg-final { cleanup-modules "UnitValue_Module" } }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/direct_io_12.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/direct_io_12.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/direct_io_12.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/direct_io_12.f90	Mon Mar 29 06:18:16 2010
***************
*** 0 ****
--- 1,33 ----
+ ! { dg-do run }
+ ! 
+ ! PR fortran/43551
+ !
+ ! Writes a 672000 byte file with buffering. The writing failed because
+ ! of a missing lseek.
+ 
+ implicit none
+ integer, parameter :: size = 2800 ! << needs to be large enough
+ real(8) :: vec1(size,30), dummy(size)
+ integer i
+ 
+ CALL RANDOM_NUMBER(vec1)
+ 
+ open(99, file='test.dat', form='unformatted', access='direct', recl=size*8)
+ do i = 1, 10
+   write(99,rec=i) vec1(:,i)
+   write(99,rec=i+10) vec1(:,i+10)
+   write(99,rec=i+20) vec1(:,i+20) ! << rec = 30 was written to rec = 21
+ end do
+ 
+ do i = 1, 10
+   read(99,rec=i) dummy
+   if (any (dummy /= vec1(:,i))) call abort()
+   read(99,rec=i+10) dummy
+   if (any (dummy /= vec1(:,i+10))) call abort()
+   read(99,rec=i+20) dummy
+   if (any (dummy /= vec1(:,i+20))) call abort() ! << aborted here for rec = 21
+ end do
+ 
+ close(99, status='delete')
+ end
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/fmt_cache_2.f gcc-4.4.4/gcc/testsuite/gfortran.dg/fmt_cache_2.f
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/fmt_cache_2.f	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/fmt_cache_2.f	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,36 ----
+ ! { dg-do run }
+ ! PR42742 Handle very large format strings correctly
+ ! Test derived from example developed by Manfred Schwarb.
+       character(12) bufarr(74)
+       character(74*13+30) fmtstr,fmtstr2
+       character(1) delim
+       integer i,j,dat(5),pindx, loopcounter
+       character(983) big_string ! any less and this test fails.
+ 
+       do i=1,74
+         write(bufarr(i),'(i12)') i
+       enddo
+ 
+       delim=" "
+       dat(1)=2009
+       dat(2)=10
+       dat(3)=31
+       dat(4)=3
+       dat(5)=0
+       fmtstr="(i2,i6,4(a1,i2.2)"
+       open(10, status="scratch")
+       do j=1,74
+         fmtstr=fmtstr(1:len_trim(fmtstr))//",a1,a12"
+         fmtstr2=fmtstr(1:len_trim(fmtstr))//")"
+ c        write(0,*) "interation ",j,": ",len_trim(fmtstr2)
+         do i=1,10
+           write(10,fmtstr2)
+      &           i,dat(1),"-",dat(2),"-",dat(3),
+      &           delim,dat(4),":",dat(5),
+      &           (delim,bufarr(pindx),pindx=1,j)
+         enddo
+         loopcounter = j
+       enddo
+       close(10)
+       if (loopcounter /= 74) call abort
+       end
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/ftell_3.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/ftell_3.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/ftell_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/ftell_3.f90	Thu Apr  1 20:59:15 2010
***************
*** 0 ****
--- 1,28 ----
+ ! { dg-do run }
+ ! PR43605 FTELL intrinsic returns incorrect position
+ ! Contributed by Janne Blomqvist, Manfred Schwarb
+ ! and Dominique d'Humieres.
+ program ftell_3
+   integer :: i
+   character(len=99) :: buffer
+   open(10, form='formatted', status='scratch', position='rewind')
+   write(10, '(a)') '123456'
+   write(10, '(a)') '789'
+   write(10, '(a)') 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
+   write(10, '(a)') 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'
+   rewind(10)
+   read(10, '(a)') buffer
+   call ftell(10, i)
+   if(i /= 7) then
+      call abort()
+   end if
+   read(10,'(a)') buffer
+   if (trim(buffer) /= "789") then
+      call abort()
+   end if
+   call ftell(10,i)
+   if (i /= 11) then
+      call abort()
+   end if
+   close(10)
+ end program ftell_3
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/func_result_5.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/func_result_5.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/func_result_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/func_result_5.f90	Tue Feb  2 14:27:24 2010
***************
*** 0 ****
--- 1,14 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/42650
+ !
+ ! Result type was not working
+ !
+ 
+ type(t) function func2() result(res)
+   type t
+     sequence
+     integer :: i = 5
+   end type t
+   res%i = 2
+ end function func2
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/generic_21.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/generic_21.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/generic_21.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/generic_21.f90	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,33 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/42858
+ !
+ ! Contributed by Harald Anlauf
+ !
+ module gfcbug102
+   implicit none
+   type t_vector_segm
+      real ,pointer :: x(:) => NULL()
+   end type t_vector_segm
+ 
+   type t_vector
+      integer                       :: n_s     =  0
+      type (t_vector_segm) ,pointer :: s (:)   => NULL()
+   end type t_vector
+ 
+   interface sqrt
+      module procedure sqrt_vector
+   end interface sqrt
+ 
+ contains
+   function sqrt_vector (x) result (y)
+     type (t_vector)             :: y
+     type (t_vector) ,intent(in) :: x
+     integer :: i
+     do i = 1, y% n_s
+        y% s(i)% x = sqrt (x% s(i)% x)
+     end do
+   end function sqrt_vector
+ end module gfcbug102
+ 
+ ! { dg-final { cleanup-modules "gfcbug102" } }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/gomp/pr43337.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/gomp/pr43337.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/gomp/pr43337.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/gomp/pr43337.f90	Tue Apr 20 08:37:12 2010
***************
*** 0 ****
--- 1,30 ----
+ ! PR middle-end/43337
+ ! { dg-do compile }
+ ! { dg-options "-fopenmp -O2 -g" }
+ 
+ subroutine pr43337
+   integer :: a, b(10)
+   call foo (b)
+   call bar (b)
+ contains
+   subroutine foo (b)
+     integer :: b(10)
+ !$omp parallel if (.false.)
+ !$omp task if (.false.) shared(b)
+     do a = 1, 10
+       b(a) = 1
+     end do
+ !$omp end task
+ !$omp end parallel
+   end subroutine foo
+   subroutine bar (b)
+     integer :: b(10)
+ !$omp parallel if (.false.)
+ !$omp parallel if (.false.)
+     do a = 1, 10
+       b(a) = 1
+     end do
+ !$omp end parallel
+ !$omp end parallel
+   end subroutine bar
+ end subroutine pr43337
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/gomp/pr43836.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/gomp/pr43836.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/gomp/pr43836.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/gomp/pr43836.f90	Wed Apr 21 21:26:11 2010
***************
*** 0 ****
--- 1,10 ----
+ ! PR fortran/43836
+ ! { dg-do compile }
+ ! { dg-options "-fopenmp -fexceptions -O2" }
+ subroutine foo
+ !$omp single
+ !$omp parallel
+   call bar
+ !$omp end parallel
+ !$omp end single
+ end subroutine foo
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/gomp/sharing-2.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/gomp/sharing-2.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/gomp/sharing-2.f90	Thu Nov  3 20:57:03 2005
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/gomp/sharing-2.f90	Tue Apr 20 08:41:02 2010
***************
*** 28,37 ****
    end do
  !$omp end single
  !$omp end parallel
! !$omp parallel default (none) shared (a)
!   i = 1
!   j = 1
!   k = 1
  !$omp parallel default (none) shared (a)
    i = 1
    j = 1
--- 28,37 ----
    end do
  !$omp end single
  !$omp end parallel
! !$omp parallel default (none) shared (a) ! { dg-error "enclosing parallel" }
!   i = 1		! { dg-error "not specified in" }
!   j = 1		! { dg-error "not specified in" }
!   k = 1		! { dg-error "not specified in" }
  !$omp parallel default (none) shared (a)
    i = 1
    j = 1
***************
*** 68,75 ****
      a(i, 1) = i + 1
    end do
  !$omp end parallel
! !$omp parallel default (none) shared (a)
!   i = 1
  !$omp parallel default (none) shared (a, i)
    i = 2
  !$omp parallel default (none) shared (a)
--- 68,75 ----
      a(i, 1) = i + 1
    end do
  !$omp end parallel
! !$omp parallel default (none) shared (a) ! { dg-error "enclosing parallel" }
!   i = 1		! { dg-error "not specified in" }
  !$omp parallel default (none) shared (a, i)
    i = 2
  !$omp parallel default (none) shared (a)
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/inquire_size.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/inquire_size.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/inquire_size.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/inquire_size.f90	Wed Mar 31 02:05:56 2010
***************
*** 0 ****
--- 1,28 ----
+ ! { dg-do run }
+ ! PR43409 I/O: INQUIRE for SIZE does not work.
+ integer :: i
+ character(30) :: aname = "noname"
+ logical :: is_named
+ 
+ open(25, file="testfile", status="replace", access="stream", form="unformatted")
+ do i=1,100
+   write(25) i, "abcdefghijklmnopqrstuvwxyz"
+ enddo
+ flush(25)
+ 
+ inquire(unit=25, named=is_named, name=aname, size=i)
+ if (.not.is_named) call abort
+ if (aname /= "testfile") call abort
+ if (i /= 3000) call abort
+ 
+ inquire(file="testfile", size=i)
+ if (.not.is_named) call abort
+ if (aname /= "testfile") call abort
+ if (i /= 3000) call abort
+ 
+ close(25, status="delete")
+ inquire(file="testfile", size=i)
+ if (i /= -1)  call abort
+ end
+ 
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/interface_31.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/interface_31.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/interface_31.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/interface_31.f90	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,41 ----
+ ! { dg-do compile }
+ ! PR42684 (42680) Ice with Interface.
+ MODULE mod1
+   IMPLICIT NONE  
+   TYPE ta
+     INTEGER i
+   END TYPE ta
+   INTERFACE OPERATOR(+)
+     MODULE PROCEDURE add_a
+   END INTERFACE OPERATOR(+)  
+ CONTAINS  
+   FUNCTION add_a(lhs, rhs) RESULT(r)
+     TYPE(ta), INTENT(IN) :: lhs
+     TYPE(ta), INTENT(IN) :: rhs
+     TYPE(ta) :: r
+     !****
+     r%i = lhs%i + rhs%i
+   END FUNCTION add_a  
+ END MODULE mod1
+ 
+ MODULE mod2
+   IMPLICIT NONE 
+   TYPE tb
+     INTEGER j
+   END TYPE tb
+   INTERFACE OPERATOR(+)
+     MODULE PROCEDURE add_b
+   END INTERFACE OPERATOR(+)  
+ CONTAINS  
+   SUBROUTINE other_proc()
+     USE mod1    ! Causes ICE
+   END SUBROUTINE other_proc  
+   FUNCTION add_b(lhs, rhs) RESULT(r)
+     TYPE(tb), INTENT(IN) :: lhs
+     TYPE(tb), INTENT(IN) :: rhs
+     TYPE(tb) :: r
+     !****
+     r%j = lhs%j + rhs%j
+   END FUNCTION add_b  
+ END MODULE mod2
+ ! { dg-final { cleanup-modules "mod1 mod2" } }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/interface_assignment_5.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/interface_assignment_5.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/interface_assignment_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/interface_assignment_5.f90	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,49 ----
+ ! { dg-do compile }
+ !
+ ! PR 42677: [4.5 Regression] Bogus Error: Ambiguous interfaces '...' in intrinsic assignment operator
+ !
+ ! Contributed by Harald Anlauf <anlauf@gmx.de>
+ 
+ module mod1
+   implicit none
+   type t_m
+      integer :: i = 0
+   end type t_m
+ !------------------------------------------------------------------------------
+   interface assignment (=)
+      module procedure assign_m
+   end interface
+ !------------------------------------------------------------------------------
+ contains
+   subroutine assign_m (y, x)
+     type(t_m) ,intent(inout) :: y
+     type(t_m) ,intent(in)    :: x
+   end subroutine assign_m
+ end module mod1
+ !==============================================================================
+ module mod2
+   use mod1, only: t_m, assignment(=)
+   implicit none
+   type t_atm
+      integer :: k
+   end type t_atm
+ !------------------------------------------------------------------------------
+   interface assignment(=)
+      module procedure assign_to_atm
+   end interface
+ !------------------------------------------------------------------------------
+   interface
+      pure subroutine delete_m (x)
+        use mod1
+        type(t_m) ,intent(in) :: x
+      end subroutine delete_m
+   end interface
+ !------------------------------------------------------------------------------
+ contains
+   subroutine assign_to_atm (atm, r)
+     type(t_atm) ,intent(inout) :: atm
+     integer     ,intent(in)    :: r
+   end subroutine assign_to_atm
+ end module mod2
+  
+ ! { dg-final { cleanup-modules "mod1 mod2" } }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/internal_pack_10.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/internal_pack_10.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/internal_pack_10.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/internal_pack_10.f90	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,41 ----
+ ! { dg-do run }
+ ! Test the fix for PR43180, in which patch which reduced the use of
+ ! internal_pack/unpack messed up the passing of ru(1)%c as the actual
+ ! argument at line 23 in this testcase.
+ !
+ ! Contributed by Harald Anlauf <anlauf@gmx.de>
+ ! further reduced by Tobias Burnus <burnus@gcc.gnu.org>
+ !
+ module mo_obs_rules
+   type t_set
+      integer :: use = 42
+   end type t_set
+   type t_rules
+      character(len=40) :: comment
+      type(t_set)       :: c (1)
+   end type t_rules
+   type (t_rules), save :: ru (1)
+ contains
+   subroutine get_rule (c)
+     type(t_set) :: c (:)
+     ru(1)%c(:)%use = 99
+     if (any (c(:)%use .ne. 42)) call abort
+     call set_set_v (ru(1)%c, c)
+     if (any (c(:)%use .ne. 99)) call abort
+   contains
+     subroutine set_set_v (src, dst)
+       type(t_set), intent(in)    :: src(1)
+       type(t_set), intent(inout) :: dst(1)
+     if (any (src%use .ne. 99)) call abort
+     if (any (dst%use .ne. 42)) call abort
+       dst = src
+     end subroutine set_set_v
+   end subroutine get_rule
+ end module mo_obs_rules
+ 
+ program test
+   use mo_obs_rules
+   type(t_set) :: c (1)
+   call get_rule (c)
+ end program test
+ ! { dg-final { cleanup-modules "mo_obs_rules" } }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/internal_pack_8.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/internal_pack_8.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/internal_pack_8.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/internal_pack_8.f90	Tue Feb 23 17:02:26 2010
***************
*** 0 ****
--- 1,33 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR43111, in which necessary calls to
+ ! internal PACK/UNPACK were not being generated because
+ ! of an over agressive fix to PR41113/7.
+ !
+ ! Contributed by Joost VandeVondele <jv244@cam.ac.uk>
+ !
+ SUBROUTINE S2(I)
+  INTEGER :: I(4)
+  !write(6,*) I
+  IF (ANY(I.NE.(/3,5,7,9/))) CALL ABORT()
+ END SUBROUTINE S2
+ 
+ MODULE M1
+  TYPE T1
+   INTEGER, POINTER, DIMENSION(:) :: data
+  END TYPE T1
+ CONTAINS
+  SUBROUTINE S1()
+    TYPE(T1) :: d
+    INTEGER, TARGET, DIMENSION(10) :: scratch=(/(i,i=1,10)/)
+    INTEGER :: i=2
+    d%data=>scratch(1:9:2)
+ !   write(6,*) d%data(i:)
+    CALL S2(d%data(i:))
+  END SUBROUTINE S1
+ END MODULE M1
+ 
+ USE M1
+ CALL S1
+ END
+ ! { dg-final { cleanup-modules "M1" } }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/module_write_1.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/module_write_1.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/module_write_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/module_write_1.f90	Tue Feb 16 10:50:56 2010
***************
*** 0 ****
--- 1,59 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/41869
+ !
+ ! Was ICEing while module write of symbol 'vs_str' in m_dom_dom
+ ! because of "len" being private in fox_m_fsys_format.
+ !
+ module fox_m_fsys_array_str
+ contains
+   pure function str_vs(vs) result(s)
+     character, dimension(:), intent(in) :: vs
+     character(len=size(vs)) :: s
+     s = transfer(vs, s)
+   end function str_vs
+   pure function vs_str(s) result(vs)
+     character(len=*), intent(in) :: s
+     character, dimension(len(s)) :: vs
+     vs = transfer(s, vs)
+   end function vs_str
+ end module fox_m_fsys_array_str
+ 
+ module fox_m_fsys_format
+   private
+   interface str
+     module procedure  str_logical_array
+   end interface str
+   interface len
+     module procedure str_logical_array_len
+   end interface
+   public :: str
+ contains
+   pure function str_logical_array_len(la) result(n)
+     logical, dimension(:), intent(in)   :: la
+   end function str_logical_array_len
+   pure function str_logical_array(la) result(s)
+     logical, dimension(:), intent(in)   :: la
+     character(len=len(la)) :: s
+   end function str_logical_array
+   pure function checkFmt(fmt) result(good)
+     character(len=*), intent(in) :: fmt
+     logical :: good
+     good = len(fmt) > 0
+   end function checkFmt
+ end module fox_m_fsys_format
+ 
+ module m_dom_dom
+   use fox_m_fsys_array_str, only: str_vs, vs_str
+ end module m_dom_dom
+ 
+ module FoX_dom
+   use fox_m_fsys_format
+   use m_dom_dom
+ end module FoX_dom
+ 
+ use FoX_dom
+ implicit none
+ print *, vs_str("ABC")
+ end
+ ! { dg-final { cleanup-modules "fox_m_fsys_array_str fox_m_fsys_format m_dom_dom fox_dom" } }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/namelist_27.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/namelist_27.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/namelist_27.f90	Wed Mar  5 00:59:34 2008
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/namelist_27.f90	Thu Mar 18 03:55:52 2010
***************
*** 1,4 ****
! ! { dg-do run { target fd_truncate } }
  ! PR31052 Bad IOSTAT values when readings NAMELISTs past EOF.
  ! Patch derived from PR, submitted by Jerry DeLisle <jvdelisle@gcc.gnu.org>
  program gfcbug61
--- 1,4 ----
! ! { dg-do run }
  ! PR31052 Bad IOSTAT values when readings NAMELISTs past EOF.
  ! Patch derived from PR, submitted by Jerry DeLisle <jvdelisle@gcc.gnu.org>
  program gfcbug61
*************** contains
*** 41,54 ****
      character(len=*), intent(in) :: name
  
      character(len=255) :: line
!     integer            :: ios, idx
      logical            :: first
  
      first = .true.
      status = 0
      ios = 0
      line = ""
!     do
         read (unit,'(a)',iostat=ios) line
         if (first) then
            first = .false.
--- 41,54 ----
      character(len=*), intent(in) :: name
  
      character(len=255) :: line
!     integer            :: ios, idx, k
      logical            :: first
  
      first = .true.
      status = 0
      ios = 0
      line = ""
!     do k=1,10
         read (unit,'(a)',iostat=ios) line
         if (first) then
            first = .false.
*************** contains
*** 74,80 ****
    subroutine read_report (unit, status)
      integer :: unit, status
  
!     integer            :: iuse, ios
      !------------------
      ! Namelist 'REPORT'
      !------------------
--- 74,80 ----
    subroutine read_report (unit, status)
      integer :: unit, status
  
!     integer            :: iuse, ios, k
      !------------------
      ! Namelist 'REPORT'
      !------------------
*************** contains
*** 85,91 ****
      ! Loop to read namelist multiple times
      !-------------------------------------
      iuse = 0
!     do
         !----------------------------------------
         ! Preset namelist variables with defaults
         !----------------------------------------
--- 85,91 ----
      ! Loop to read namelist multiple times
      !-------------------------------------
      iuse = 0
!     do k=1,5
         !----------------------------------------
         ! Preset namelist variables with defaults
         !----------------------------------------
*************** contains
*** 103,106 ****
      status = ios
    end subroutine read_report
  
! end program gfcbug61
\ No newline at end of file
--- 103,106 ----
      status = ios
    end subroutine read_report
  
! end program gfcbug61
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/namelist_28.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/namelist_28.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/namelist_28.f90	Wed Mar  5 00:59:34 2008
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/namelist_28.f90	Thu Mar 18 03:55:52 2010
***************
*** 1,4 ****
! ! { dg-do run { target fd_truncate } }
  ! PR31052 Bad IOSTAT values when readings NAMELISTs past EOF.
  ! Patch derived from PR, submitted by Jerry DeLisle <jvdelisle@gcc.gnu.org>
  program gfcbug61
--- 1,4 ----
! ! { dg-do run }
  ! PR31052 Bad IOSTAT values when readings NAMELISTs past EOF.
  ! Patch derived from PR, submitted by Jerry DeLisle <jvdelisle@gcc.gnu.org>
  program gfcbug61
*************** contains
*** 27,38 ****
      character(len=*), intent(in) :: name
  
      character(len=255) :: line
!     integer            :: ios, idx
      logical            :: first
  
      first = .true.
      status = 0
!     do
         line = ""
         read (unit,'(a)',iostat=ios) line
         if (ios < 0) then
--- 27,38 ----
      character(len=*), intent(in) :: name
  
      character(len=255) :: line
!     integer            :: ios, idx, k
      logical            :: first
  
      first = .true.
      status = 0
!     do k=1,25
         line = ""
         read (unit,'(a)',iostat=ios) line
         if (ios < 0) then
*************** contains
*** 51,62 ****
            return
         end if
      end do
    end subroutine position_nml
  
    subroutine read_report (unit, status)
      integer :: unit, status
  
!     integer            :: iuse, ios
      !------------------
      ! Namelist 'REPORT'
      !------------------
--- 51,63 ----
            return
         end if
      end do
+     if (k.gt.10) call abort
    end subroutine position_nml
  
    subroutine read_report (unit, status)
      integer :: unit, status
  
!     integer            :: iuse, ios, k
      !------------------
      ! Namelist 'REPORT'
      !------------------
*************** contains
*** 66,72 ****
      ! Loop to read namelist multiple times
      !-------------------------------------
      iuse = 0
!     do
         !----------------------------------------
         ! Preset namelist variables with defaults
         !----------------------------------------
--- 67,73 ----
      ! Loop to read namelist multiple times
      !-------------------------------------
      iuse = 0
!     do k=1,25
         !----------------------------------------
         ! Preset namelist variables with defaults
         !----------------------------------------
*************** contains
*** 84,89 ****
--- 85,91 ----
         if (ios /= 0) exit
         iuse = iuse + 1
      end do
+     if (k.gt.10) call abort
      status = ios
    end subroutine read_report
  
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/namelist_59.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/namelist_59.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/namelist_59.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/namelist_59.f90	Fri Feb  5 04:50:53 2010
***************
*** 0 ****
--- 1,26 ----
+ ! { dg-do run }
+ ! PR41192 NAMELIST input with just a comment ("&NAME ! comment \") error 
+ program cmdline
+ ! comment by itself causes error in gfortran
+    call process(' ')
+    call process('i=10 , j=20 k=30 ! change all three values')
+    call process(' ')
+    call process('! change no values')! before patch this failed.
+ end program cmdline
+ 
+ subroutine process(string)
+  implicit none
+  character(len=*) :: string
+  character(len=132) :: lines(3)
+  character(len=255) :: message
+  integer :: i=1,j=2,k=3
+  integer ios
+  namelist /cmd/ i,j,k
+  save cmd
+  lines(1)='&cmd'
+  lines(2)=string
+  lines(3)='/'
+ 
+  read(lines,nml=cmd,iostat=ios,iomsg=message)
+  if (ios.ne.0) call abort
+ end subroutine process
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/namelist_60.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/namelist_60.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/namelist_60.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/namelist_60.f90	Fri Feb  5 04:50:53 2010
***************
*** 0 ****
--- 1,27 ----
+ ! { dg-do run }
+ ! PR42901  Reading array of structures from namelist
+ ! Test case derived from the reporters test case.
+ program test_nml
+ type field_descr
+   integer number
+ end type
+ type fsetup
+   type (field_descr), dimension(3) :: vel ! 3 velocity components
+ end type
+ type (fsetup) field_setup
+ namelist /nl_setup/ field_setup
+ field_setup%vel%number = 0
+ ! write(*,nml=nl_setup)
+ open(10, status="scratch")
+ write(10,'(a)') "&nl_setup"
+ write(10,'(a)') " field_setup%vel(1)%number=  3,"
+ write(10,'(a)') " field_setup%vel(2)%number=  9,"
+ write(10,'(a)') " field_setup%vel(3)%number=  27,"
+ write(10,'(a)') "/"
+ rewind(10)
+ read(10,nml=nl_setup)
+ if (field_setup%vel(1)%number .ne. 3) call abort
+ if (field_setup%vel(2)%number .ne. 9) call abort
+ if (field_setup%vel(3)%number .ne. 27) call abort
+ ! write(*,nml=nl_setup)
+ end program test_nml
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/namelist_61.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/namelist_61.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/namelist_61.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/namelist_61.f90	Thu Mar 11 19:48:11 2010
***************
*** 0 ****
--- 1,35 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/43228
+ !
+ integer :: a(3,3)
+ character(len=100) :: str
+ namelist /nml/a
+ 
+ a = -1
+ str = '&nml a(1,:) = 1 2 3 /'
+ read(str, nml=nml)
+ if (any (a(1,:) /= [1, 2, 3])) call abort ()
+ if (any (a([2,3],:) /= -1)) call abort ()
+ 
+ a = -1
+ str = '&nml a(1,1) = 1 2 3 4 /'
+ read(str, nml=nml)
+ if (any (a(:,1) /= [1, 2, 3])) call abort ()
+ if (any (a(:,2) /= [4, -1, -1])) call abort ()
+ if (any (a(:,3) /= -1)) call abort ()
+ 
+ str = '&nml a(1,:) = 1 2 3 , &
+        &    a(2,:) = 4,5,6 &
+        &    a(3,:) = 7 8 9/'
+ read(str, nml=nml)
+ if (any (a(1,:) /= [1, 2, 3])) call abort ()
+ if (any (a(2,:) /= [4, 5, 6])) call abort ()
+ if (any (a(3,:) /= [7, 8, 9])) call abort ()
+ 
+ !print *, a(:,1)
+ !print *, a(:,2)
+ !print *, a(:,3)
+ end
+ 
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/parameter_array_ref_2.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/parameter_array_ref_2.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/parameter_array_ref_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/parameter_array_ref_2.f90	Sat Jan 30 21:12:59 2010
***************
*** 0 ****
--- 1,39 ----
+ ! { dg-do compile }
+ ! Test the fix for the problems in PR41044
+ !
+ ! Contributed by <ros@rzg.mpg.de>
+ ! Reduced by Joos VandeVondele <jv244@cam.ac.uk>
+ !
+   Subroutine PS_INIT (bkgd, punit, pform, psize, rot90, bbox, clip, eps,  &
+                         caller)
+     type psfd                          ! paper size and frame defaults
+       character(3)                     :: n
+       real                             :: p(2)
+       real                             :: f(4)
+     end type psfd
+     character(4)                       :: fn, orich, pfmt
+     type(psfd), parameter              :: pfd(0:11)=(/  &
+          psfd('   ',(/   0.0,   0.0/),(/200.,120.,800.,560./)), &    ! A0_L
+          psfd('A0 ',(/ 840.9,1189.2/),(/140., 84.,560.,400./)), &    ! A0_P
+          psfd('A1 ',(/ 594.6, 840.9/),(/100., 60.,400.,280./)), &    ! A1_P
+          psfd('A2 ',(/ 420.4, 594.6/),(/ 70., 42.,280.,200./)), &    ! A2_P
+          psfd('A3 ',(/ 297.3, 420.4/),(/ 50., 30.,200.,140./)), &    ! A3_P
+          psfd('A4 ',(/ 210.2, 297.3/),(/ 35., 21.,140.,100./)), &    ! A4_P
+          psfd('A5 ',(/ 148.7, 210.2/),(/ 25., 15.,100., 70./)), &    ! A5_P
+          psfd('A6 ',(/ 105.1, 148.7/),(/ 18., 11., 70., 50./)), &    ! A6_P
+          psfd('   ',(/   0.0,   0.0/),(/ 50., 30.,200.,140./)), &    ! Letter_L
+          psfd('LET',(/ 215.9, 279.4/),(/ 35., 21.,140.,100./)), &    ! Letter_P
+          psfd('   ',(/   0.0,   0.0/),(/ 50., 30.,200.,140./)), &    ! Legal_L
+          psfd('LEG',(/ 215.9, 355.6/),(/ 35., 21.,140.,100./))/)     ! Legal_P
+     if (len_trim(pfmt) > 0) then       ! set paper format
+       idx=sum(maxloc(index(pfd%n,pfmt(1:3))))-1
+     end if
+   end subroutine PS_INIT
+ 
+ ! This, additional problem, was posted as comment #8 by Tobias Burnus <burnus@gcc.gnu.org>
+   type t
+     integer :: i
+   end type t
+   type(t), parameter :: a(1) = t(4) ! [t(4)] worked OK
+   real(a(1)%i) :: b
+ end
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/pr42294.f gcc-4.4.4/gcc/testsuite/gfortran.dg/pr42294.f
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/pr42294.f	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/pr42294.f	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,41 ----
+ C PR rtl-optimization/42294
+ C { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } }
+ C { dg-options "-O2 -fselective-scheduling2 -fsel-sched-pipelining -funroll-all-loops" }
+ 
+       SUBROUTINE ORIEN(IW,NATOT,NTOTORB,NATORB,P,T)
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+       DIMENSION NATORB(NATOT),P(NTOTORB*(NTOTORB+1)/2)
+       DIMENSION T(NTOTORB,NTOTORB)
+       DO 9000 IATOM=1,NATOT
+          ILAST = NTOTORB
+          IF (IATOM.NE.NATOT) ILAST=NATORB(IATOM+1)-1
+          DO 8000 IAOI=NATORB(IATOM),ILAST
+             DO 7000 IAOJ = IAOI+1,ILAST
+                R2 = 0.0D+00
+                R3 = 0.0D+00
+                DO 6000 INOTA=1,NATOT
+                   DO 5000 IK=NATORB(INOTA),NTOTORB
+                      IMAI=MAX(IK,IAOI)
+                      IMII=MIN(IK,IAOI)
+                      IMAJ=MAX(IK,IAOJ)
+                      IMIJ=MIN(IK,IAOJ)
+                      IKI=(IMAI*(IMAI-1))/2 + IMII
+                      IKJ=(IMAJ*(IMAJ-1))/2 + IMIJ
+                      PIKI=P(IKI)
+                      PIKJ=P(IKJ)
+                      R2 = R2 + (PIKI**4)-6*(PIKI*PIKI*PIKJ*PIKJ)+(PIKJ)
+  5000             CONTINUE
+  6000          CONTINUE
+                R2 = (R2/4.0D+00)
+                Q = SQRT(R2*R2 + R3*R3)
+                IF (Q.LT.1.0D-08) GO TO 7000
+                A = COS(THETA)
+                B = -SIN(THETA)
+                CALL ROT1INT(NTOTORB,IAOI,IAOJ,A,B,P)
+  7000       CONTINUE
+  8000    CONTINUE
+  9000 CONTINUE
+       RETURN
+       END
+ 
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/pr43229.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/pr43229.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/pr43229.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/pr43229.f90	Sat Mar 13 16:58:19 2010
***************
*** 0 ****
--- 1,10 ----
+ ! PR debug/43229
+ ! { dg-do compile }
+ ! { dg-options "-g -O3 -ffast-math" }
+ ! { dg-options "-g -O3 -ffast-math -msse3" { target { i?86-*-* x86_64-*-* } } }
+ 
+ function foo (c, d)
+   real(8) :: c(6), d(6), foo
+   x = sum (c * d)
+   foo = exp (-x)
+ end function foo
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/pr43475.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/pr43475.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/pr43475.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/pr43475.f90	Thu Mar 25 16:39:51 2010
***************
*** 0 ****
--- 1,14 ----
+ ! PR middle-end/43475
+ ! { dg-do compile }
+ ! { dg-options "-O2" }
+ subroutine ss(w)
+   implicit none
+   integer :: w(:)
+   integer :: b,c,d
+   b = w(8)
+   c = 5
+   d = 3
+   call s1(c)
+   call s2(b+c)
+   call s3(w(b))
+ end subroutine ss
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/read_empty_file.f gcc-4.4.4/gcc/testsuite/gfortran.dg/read_empty_file.f
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/read_empty_file.f	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/read_empty_file.f	Thu Mar 18 03:55:52 2010
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do run }
+ ! PR43320 Missing EOF on read from empty file.
+       open(8,status='scratch',form='formatted')  ! Create empty file
+       read(8,'(a80)', end=123)  ! Reading from an empty file should be an EOF
+       call abort
+ 123   continue
+       end
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/read_eof_6.f gcc-4.4.4/gcc/testsuite/gfortran.dg/read_eof_6.f
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/read_eof_6.f	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/read_eof_6.f	Fri Mar 12 14:36:16 2010
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do run }
+ ! PR43320 Missing EOF on read from empty file.
+       open(8,status='scratch',form='formatted')  ! Create empty file
+       read(8,'(a80)', end=123)  ! Reading from an empty file should be an EOF
+       call abort
+ 123   continue
+       end
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/read_eof_7.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/read_eof_7.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/read_eof_7.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/read_eof_7.f90	Fri Mar 26 04:58:45 2010
***************
*** 0 ****
--- 1,20 ----
+ ! { dg-do run }
+ ! PR43517 Spurious EOF condition when namelist read follows formatted read
+ ! Test case from the problem reporter - Michael Richmond
+ program main
+   namelist /name/ j
+   open (10,status='scratch',form='formatted')
+   write(10,'(a)') "999999"
+   write(10,'(a)') " $name"
+   write(10,'(a)') "  j=73,"
+   write(10,'(a)') " /"
+   rewind(10)
+   i = 54321
+   idum = 6789
+   read (10,'(2i5,4x)') i, idum ! Trailing 4x was setting EOF condition
+   if (i /= 99999 .and. idum /= 9) call abort
+   j = 12345
+   read (10,name) ! EOF condition tripped here.
+   if (j /= 73) call abort
+ end program main
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/read_eof_8.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/read_eof_8.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/read_eof_8.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/read_eof_8.f90	Tue Mar 30 03:56:08 2010
***************
*** 0 ****
--- 1,26 ----
+ ! { dg-do run }
+ ! PR43265: See comment #26 in the PR.  Before patch,
+ ! the test case would fail to read the last line of the file.
+ ! Thanks to Jean-Baptiste Faure for providing the initial test case.
+ program test
+   character (len=6) :: line
+   integer :: n, k=0
+   open(unit=25,file="test.dat",status="replace", &
+        & form="unformatted", access="stream")
+   write(25) "Line 1" // char(10)
+   write(25) "Line 2" // char(10)
+   write(25) "Line 3" // char(10)
+   write(25) "Line 4" // char(10)
+   write(25) "Line 5" ! No EOR marker on the last line.
+   close(25, status="keep")
+   open(25, file="test.dat", status="old")
+   do n=1,10
+    read(25,'(a)',end=100,err=101) line
+    k = k+1
+   enddo
+   call abort
+ 100 if (k /= 5) call abort
+   stop
+ 101 call abort
+ end program test
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/read_eof_all.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/read_eof_all.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/read_eof_all.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/read_eof_all.f90	Thu Mar 18 03:55:52 2010
***************
*** 0 ****
--- 1,71 ----
+ ! { dg-do run }
+ ! PR43265 Followup patch for miscellaneous EOF conditions.
+ ! Eaxamples from Tobius Burnus 
+   use iso_fortran_env
+   character(len=2) :: str, str2(2)
+   integer :: a, b, c, ios
+   str = ''
+   str2 = ''
+ 
+   open(99,file='test.dat',access='stream',form='unformatted', status='replace')
+   write(99) ' '
+   close(99)
+  
+   open(99,file='test.dat')
+   read(99, '(T7,i2)') i
+   close(99, status="delete")
+   if (i /= 0) call abort
+ 
+   read(str(1:0), '(T7,i1)') i
+   if (i /= 0) call abort
+ 
+   read(str,'(i2,/,i2)',end=111) a, b
+   call abort !stop 'ERROR: Expected EOF error (1)'
+   111 continue
+ 
+   read(str2,'(i2,/,i2)',end=112) a, b
+ 
+   read(str2,'(i2,/,i2,/,i2)',end=113) a, b, c
+   call abort !stop 'ERROR: Expected EOF error (2)'
+ 
+   112 call abort !stop 'ERROR: Unexpected EOF (3)'
+ 
+   113 continue
+   read(str,'(i2,/,i2)',end=121,pad='no') a, b
+   call abort !stop 'ERROR: Expected EOF error (1)'
+   121 continue
+ 
+   read(str2(:),'(i2,/,i2)', end=122, pad='no') a, b
+   goto 125
+   122 call abort !stop 'ERROR: Expected no EOF error (2)'
+   125 continue
+ 
+   read(str2(:),'(i2,/,i2,/,i2)',end=123,pad='no') a, b, c
+   call abort !stop 'ERROR: Expected EOF error (3)'
+   123 continue
+ 
+   read(str(2:1),'(i2,/,i2)',end=131, pad='no') a, b
+   call abort !stop 'ERROR: Expected EOF error (1)'
+   131 continue
+ 
+   read(str2(:)(2:1),'(i2,/,i2)',end=132, pad='no') a, b
+   call abort !stop 'ERROR: Expected EOF error (2)'
+   132 continue
+ 
+   read(str2(:)(2:1),'(i2,/,i2,/,i2)',end=133,pad='no') a, b, c
+   call abort !stop 'ERROR: Expected EOF error (3)'
+   133 continue
+ 
+   read(str(2:1),'(i2,/,i2)',iostat=ios, pad='no') a, b
+   if (ios /= IOSTAT_END) call abort !stop 'ERROR: expected iostat /= 0  (1)'
+ 
+   read(str2(:)(2:1),'(i2,/,i2)',iostat=ios, pad='no') a, b
+   if (ios /= IOSTAT_END) call  abort !stop 'ERROR: expected iostat /= 0  (2)'
+ 
+   read(str2(:)(2:1),'(i2,/,i2,/,i2)',iostat=ios,pad='no') a, b, c
+   if (ios /= IOSTAT_END) call abort !stop 'ERROR: expected iostat /= 0  (2)'
+ 
+   ! print *, "success"
+   end
+ 
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/read_x_eof.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/read_x_eof.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/read_x_eof.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/read_x_eof.f90	Fri Mar 12 14:36:16 2010
***************
*** 0 ****
--- 1,16 ----
+ ! { dg-do run }
+ ! PR43265 No EOF condition if reading with '(x)' from an empty file
+ ! Test case from the reporter.
+ program pr43265
+ implicit none
+ integer::i
+ open(23,status="scratch")
+ write(23,'(a)') "Line 1"
+ write(23,'(a)') "Line 2"
+ write(23,'(a)') "Line 3"
+ rewind(23)
+ do i=1,10
+   read(23,'(1x)',end=12)
+ enddo
+ 12 if (i.ne.4) call abort
+ end
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/read_x_past.f gcc-4.4.4/gcc/testsuite/gfortran.dg/read_x_past.f
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/read_x_past.f	Wed Mar  5 00:59:34 2008
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/read_x_past.f	Fri Mar 12 14:36:16 2010
***************
*** 1,17 ****
! ! { dg-do run { target fd_truncate } }
  ! { dg-options -w }
  ! PR 26661 : Test reading X's past file end with no LF or CR.
  ! PR 26880 : Tests that rewind clears the gfc_unit read_bad flag.
  ! Contributed by Jerry DeLisle <jvdelisle@gcc.gnu.org>.
        implicit none
        character(3) a(4)
        integer i
!       open (10)
   10   format(A,$)  ! This is not pedantic
        write(10,10)' abc def ghi jkl'
        rewind(10)
        read(10,20)(a(i),i=1,4)
        if (a(4).ne."jkl") call abort()
   20   format(1x,a3,1x,a3,1x,a3,1x,a3,10x)
!       close(10, status="delete")
        end
--- 1,28 ----
! ! { dg-do run }
  ! { dg-options -w }
  ! PR 26661 : Test reading X's past file end with no LF or CR.
  ! PR 26880 : Tests that rewind clears the gfc_unit read_bad flag.
+ ! PR 43265 : Tests that no error occurs with or without X at end.
  ! Contributed by Jerry DeLisle <jvdelisle@gcc.gnu.org>.
        implicit none
        character(3) a(4)
        integer i
!       open (10, status="scratch")
   10   format(A,$)  ! This is not pedantic
        write(10,10)' abc def ghi jkl'
        rewind(10)
+ 
+       a = ""
        read(10,20)(a(i),i=1,4)
        if (a(4).ne."jkl") call abort()
+ 
+       rewind(10)
+ 
+       a = ""
+       read(10,30)(a(i),i=1,4)
+       if (a(4).ne."jkl") call abort()
+ 
   20   format(1x,a3,1x,a3,1x,a3,1x,a3,10x)
!  30   format(1x,a3,1x,a3,1x,a3,1x,a3)
!       close(10)
        end
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.dg/subref_array_pointer_4.f90 gcc-4.4.4/gcc/testsuite/gfortran.dg/subref_array_pointer_4.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.dg/subref_array_pointer_4.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.dg/subref_array_pointer_4.f90	Sat Feb  6 19:44:41 2010
***************
*** 0 ****
--- 1,27 ----
+ ! { dg-do run }
+ ! Tests the fix for PR42309, in which the indexing of 'Q'
+ ! was off by one.
+ !
+ ! Contributed by Gilbert Scott <gilbert.scott@easynet.co.uk>
+ !
+ PROGRAM X
+   TYPE T
+     INTEGER :: I
+     REAL :: X
+   END TYPE T
+   TYPE(T), TARGET :: T1(0:3)
+   INTEGER, POINTER :: P(:)
+   REAL :: SOURCE(4) = [10., 20., 30., 40.]
+ 
+   T1%I = [1, 2, 3, 4]
+   T1%X = SOURCE
+   P => T1%I
+   CALL Z(P)
+   IF (ANY (T1%I .NE. [999, 2, 999, 4])) CALL ABORT
+   IF (ANY (T1%X .NE. SOURCE)) CALL ABORT
+ CONTAINS
+   SUBROUTINE Z(Q)
+     INTEGER, POINTER :: Q(:)
+     Q(1:3:2) = 999
+   END SUBROUTINE Z
+ END PROGRAM X
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.fortran-torture/compile/pr42781.f90 gcc-4.4.4/gcc/testsuite/gfortran.fortran-torture/compile/pr42781.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.fortran-torture/compile/pr42781.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.fortran-torture/compile/pr42781.f90	Sun Feb  7 04:41:22 2010
***************
*** 0 ****
--- 1,59 ----
+ ! ICE with gfortran 4.5 at -O1:
+ !gfcbug98.f90: In function ���convert_cof���:
+ !gfcbug98.f90:36:0: internal compiler error: in pt_solutions_same_restrict_base,
+ !at tree-ssa-structalias.c:5072
+ module foo
+   implicit none
+   type t_time
+      integer :: secs = 0
+   end type t_time
+ contains
+   elemental function time_cyyyymmddhh (cyyyymmddhh) result (time)
+     type (t_time)                :: time
+     character(len=10),intent(in) :: cyyyymmddhh
+   end function time_cyyyymmddhh
+ 
+   function nf90_open(path, mode, ncid)
+     character(len = *), intent(in) :: path
+     integer, intent(in)  :: mode
+     integer, intent(out) :: ncid
+     integer              :: nf90_open
+   end function nf90_open
+ end module foo
+ !==============================================================================
+ module gfcbug98
+   use foo
+   implicit none
+ 
+   type t_fileinfo
+      character(len=10) :: atime = ' '
+   end type t_fileinfo
+ 
+   type t_body
+      real         :: bg(10)
+   end type t_body
+ contains
+   subroutine convert_cof (ifile)
+     character(len=*) ,intent(in) :: ifile
+ 
+     character(len=5)         :: version
+     type(t_fileinfo)         :: gattr
+     type(t_time)             :: atime
+     type(t_body),allocatable :: tmp_dat(:)
+     real        ,allocatable :: BDA(:, :, :)
+ 
+     call open_input
+     call convert_data
+   contains
+     subroutine open_input
+       integer             :: i,j
+       version = ''
+       j = nf90_open(ifile, 1, i)
+     end subroutine open_input
+     !--------------------------------------------------------------------------
+     subroutine convert_data
+       BDA(1,:,1) = tmp_dat(1)% bg(:)
+       atime = time_cyyyymmddhh (gattr% atime)
+     end subroutine convert_data
+   end subroutine convert_cof
+ end module gfcbug98
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gfortran.fortran-torture/execute/pr43390.f90 gcc-4.4.4/gcc/testsuite/gfortran.fortran-torture/execute/pr43390.f90
*** gcc-4.4.3/gcc/testsuite/gfortran.fortran-torture/execute/pr43390.f90	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gfortran.fortran-torture/execute/pr43390.f90	Thu Mar 25 16:39:51 2010
***************
*** 0 ****
--- 1,9 ----
+    logical :: l1(4)
+    logical :: l2(4)
+    l1 = (/.TRUE.,.FALSE.,.TRUE.,.FALSE./)
+    l2 = (/.FALSE.,.TRUE.,.FALSE.,.TRUE./)
+    if (dot_product (l1, l2)) call abort ()
+    l2 = .TRUE.
+    if (.not.dot_product (l1, l2)) call abort ()
+ end
+ 
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gnat.dg/rep_clause5.adb gcc-4.4.4/gcc/testsuite/gnat.dg/rep_clause5.adb
*** gcc-4.4.3/gcc/testsuite/gnat.dg/rep_clause5.adb	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gnat.dg/rep_clause5.adb	Sun Apr 18 15:56:32 2010
***************
*** 0 ****
--- 1,39 ----
+ -- { dg-do compile }
+ -- { dg-options "-O" }
+ 
+ package body Rep_Clause5 is
+ 
+     function To_LNumber(S : String) return LNumber_Type is
+         V :  VString;
+         LV : Long_Type;
+         LN : LNumber_Type;
+     begin
+         LV := To_Long(V, 10);
+         LN := LNumber_Type(LV);
+         return LN;
+     end;
+ 
+     procedure Merge_Numbered(LNodes : in out LNodes_Ptr) is
+         T1  : Token_Type;
+         LNO : LNumber_Type;
+     begin
+         for X in LNodes.all'Range loop
+             T1 := LNodes(X).Line(0);
+             if T1.Token /= LEX_LF then
+                 declare
+                     S : String := Element(T1.SID);
+                 begin
+                     begin
+                         LNO := To_LNumber(S);
+                     exception
+                         when Bad_Number =>
+                             LNO := 0;
+                         when Too_Large =>
+                             LNO := 0;
+                     end;
+                 end;
+             end if;
+         end loop;
+     end;
+ 
+ end Rep_Clause5;
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gnat.dg/rep_clause5.ads gcc-4.4.4/gcc/testsuite/gnat.dg/rep_clause5.ads
*** gcc-4.4.3/gcc/testsuite/gnat.dg/rep_clause5.ads	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gnat.dg/rep_clause5.ads	Sun Apr 18 15:56:32 2010
***************
*** 0 ****
--- 1,12 ----
+ with Rep_Clause5_Pkg; use Rep_Clause5_Pkg;
+ 
+ package Rep_Clause5 is
+ 
+     Bad_Number : exception;
+     Too_Large  : exception;
+ 
+     type LNumber_Type is range 0..99999;
+ 
+     procedure Merge_Numbered(LNodes : in out LNodes_Ptr);
+ 
+ end Rep_Clause5;
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gnat.dg/rep_clause5_pkg.ads gcc-4.4.4/gcc/testsuite/gnat.dg/rep_clause5_pkg.ads
*** gcc-4.4.3/gcc/testsuite/gnat.dg/rep_clause5_pkg.ads	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gnat.dg/rep_clause5_pkg.ads	Sun Apr 18 15:56:32 2010
***************
*** 0 ****
--- 1,383 ----
+ package Rep_Clause5_Pkg is
+ 
+     type ID_Type      is mod 65536;
+     type String_ID    is new ID_Type;
+     type LNumber_Type is range 0..99999;
+     subtype Long_Type is Integer;
+ 
+     type Func_ID is (No_Func, FUN_SGN, FUN_EXP, FUN_LOG, FUN_LOG10);
+ 
+     type Token_Kind is (
+         No_Token,
+         LEX_BINARY,
+         LEX_SECTION,
+         LEX_003,
+         LEX_004,
+         LEX_005,
+         LEX_006,
+         LEX_007,
+         LEX_008,
+         LEX_009,
+         LEX_LF,
+         LEX_011,
+         LEX_012,
+         LEX_013,
+         LEX_014,
+         LEX_015,
+         LEX_016,
+         LEX_017,
+         LEX_018,
+         LEX_019,
+         LEX_020,
+         LEX_021,
+         LEX_022,
+         LEX_023,
+         LEX_024,
+         LEX_025,
+         LEX_026,
+         LEX_027,
+         LEX_028,
+         LEX_029,
+         LEX_030,
+         LEX_031,
+         LEX_032,
+         '!',
+         '"',
+         '#',
+         '$',
+         '%',
+         '&',
+         ''',
+         '(',
+         ')',
+         '*',
+         '+',
+         ',',
+         '-',
+         '.',
+         '/',
+         '0',
+         '1',
+         '2',
+         '3',
+         '4',
+         '5',
+         '6',
+         '7',
+         '8',
+         '9',
+         ':',
+         ';',
+         '<',
+         '=',
+         '>',
+         '?',
+         '@',
+         'A',
+         'B',
+         'C',
+         'D',
+         'E',
+         'F',
+         'G',
+         'H',
+         'I',
+         'J',
+         'K',
+         'L',
+         'M',
+         'N',
+         'O',
+         'P',
+         'Q',
+         'R',
+         'S',
+         'T',
+         'U',
+         'V',
+         'W',
+         'X',
+         'Y',
+         'Z',
+         '[',
+         '\',
+         ']',
+         '^',
+         '_',
+         '`',
+         'a',
+         'b',
+         'c',
+         'd',
+         'e',
+         'f',
+         'g',
+         'h',
+         'i',
+         'j',
+         'k',
+         'l',
+         'm',
+         'n',
+         'o',
+         LEX_SFUN3,
+         LEX_SFUN2,
+         LEX_SFUN1,
+         LEX_SFUNN,
+         LEX_FUN3,
+         LEX_FUN2,
+         LEX_FUN1,
+         LEX_FUNN,
+         'x',
+         'y',
+         'z',
+         '{',
+         '|',
+         '}',
+         '~',
+         LEX_CRTA,
+         LEX_ISNULL,
+         LEX_USING,
+         LEX_HANDLE,
+         LEX_CALLX,
+         LEX_COMPLEX,
+         LEX_FIXED,
+         LEX_ENV,
+         LEX_SPARSE,
+         LEX_SUBROUTINE,
+         LEX_CALL,
+         LEX_BOX,
+         LEX_VLINE,
+         LEX_HLINE,
+         LEX_MAXLENGTH,
+         LEX_DLENGTH,
+         LEX_INPUT,
+         LEX_INITIALIZE,
+         LEX_OUTPUT,
+         LEX_UNLINK,
+         LEX_SEEK,
+         LEX_EXIT,
+         LEX_NOT,
+         LEX_COMMON,
+         LEX_CHAIN,
+         LEX_DEF,
+         LEX_ARITY,
+         LEX_RESUME,
+         LEX_PIC_S,
+         LEX_BG,
+         LEX_FG,
+         LEX_PC,
+         LEX_CRT,
+         LEX_ENUM,
+         LEX_DECLARE,
+         LEX_CURSOR,
+         LEX_DROP,
+         LEX_CURRENT,
+         LEX_ISOLATION,
+         LEX_SET,
+         LEX_TRANSACTION,
+         LEX_COMMIT,
+         LEX_ABORT,
+         LEX_BEGIN,
+         LEX_PREVIOUS,
+         LEX_LAST,
+         LEX_FIRST,
+         LEX_KEY,
+         LEX_START,
+         LEX_REWRITE,
+         LEX_INDEX,
+         LEX_SECONDARY,
+         LEX_PRIMARY,
+         LEX_COLUMN,
+         LEX_TEMP,
+         LEX_TABLE,
+         LEX_CREATE,
+         LEX_HASH,
+         LEX_BTREE,
+         LEX_UPDATE,
+         LEX_ERROR,
+         LEX_ACCEPT,
+         LEX_AVG,
+         LEX_MAX,
+         LEX_MIN,
+         LEX_FIELD,
+         LEX_RESTORE,
+         LEX_END,
+         LEX_STEP,
+         LEX_NEXT,
+         LEX_FOR,
+         LEX_RETURN,
+         LEX_GOSUB,
+         LEX_RANGE,
+         LEX_EXPON,
+         LEX_XOR,
+         LEX_OR,
+         LEX_AND,
+         LEX_SHIFTR,
+         LEX_GE,
+         LEX_NE,
+         LEX_SHIFTL,
+         LEX_LE,
+         LEX_VARYING,
+         LEX_LENGTH,
+         LEX_PRINT,
+         LEX_IF,
+         LEX_GOTO,
+         LEX_ON,
+         LEX_THEN,
+         LEX_DELETE,
+         LEX_TO,
+         LEX_SEQUENCE,
+         LEX_NONUNIQUE,
+         LEX_UNIQUE,
+         LEX_FILE,
+         LEX_CLOSE,
+         LEX_OPEN,
+         LEX_DATABASE,
+         LEX_RECORD,
+         LEX_DATA,
+         LEX_WRITE,
+         LEX_READ,
+         LEX_STOP,
+         LEX_LET,
+         LEX_MOD,
+         LEX_LONG,
+         LEX_DIM,
+         LEX_SHORT,
+         LEX_REM,
+         LEX_SHELL,
+         LEX_TOKEN,
+         LEX_FLOAT,
+         LEX_SIDENT,
+         LEX_INLREM,
+         LEX_ENDLIT,
+         LEX_STRLIT,
+         LEX_IDENT,
+         LEX_LNUMBER,
+         LEX_HEX,
+         LEX_NUMBER,
+         LEX_EOF,
+         LEX_QUIT,
+         LEX_LIST,
+         LEX_REMOVE,
+         LEX_RENUMBER,
+         LEX_CONTINUE,
+         LEX_RUN,
+         LEX_MERGE,
+         LEX_ENTER,
+         LEX_NEW,
+         LEX_RESET,
+         LEX_SYMTAB,
+         LEX_CLS,
+         LEX_EDIT,
+         LEX_SAVE,
+         LEX_RESAVE,
+         LEX_LOAD,
+         LEX_NAME,
+         LEX_LISTP,
+         LEX_SHOW,
+         LEX_STACK,
+         LEX_STATUS,
+         LEX_CACHE,
+         LEX_INSPECT,
+         LEX_STOW,
+         LEX_PKGRUN,
+         LEX_POP,
+         LEX_CHECK,
+         LEX_INSERT,
+         LEX_INTO,
+         LEX_VALUES,
+         LEX_NULL,
+         LEX_WHERE,
+         LEX_FROM,
+         LEX_EXEC,
+         LEX_SELECT,
+         LEX_AS,
+         LEX_ALL,
+         LEX_BY,
+         LEX_CROSS,
+         LEX_DESC,
+         LEX_FULL,
+         LEX_GROUP,
+         LEX_INNER,
+         LEX_JOIN,
+         LEX_LEFT,
+         LEX_LIMIT,
+         LEX_NATURAL,
+         LEX_OFFSET,
+         LEX_ORDER,
+         LEX_OUTER,
+         LEX_RIGHT,
+         LEX_FETCH,
+         LEX_DISTINCT,
+         LEX_DEFAULT,
+         LEX_RETURNING,
+         LEX_LEVEL,
+         LEX_COMMITTED,
+         LEX_SERIALIZABLE,
+         LEX_ONLY,
+         LEX_HOLD,
+         LEX_FORWARD,
+         LEX_WITH,
+         LEX_PRIOR,
+         LEX_RELATIVE,
+         LEX_BACKWARD,
+         LEX_OF,
+         LEX_SCROLL,
+         LEX_NOWAIT,
+         LEX_HAVING,
+         LEX_END_TOKENS
+     );
+ 
+     type Aux_Kind is (No_Aux, SID_Aux, FID_Aux, LNO_Aux);
+ 
+     type Token_Type(Aux : Aux_Kind := No_Aux) is
+         record
+             Token : Token_Kind := No_Token;
+             case Aux is
+                 when SID_Aux =>
+                     SID :       String_ID;
+                 when FID_Aux =>
+                     FID :       Func_ID;
+                 when LNO_Aux =>
+                     LNO :       LNumber_Type;
+                 when No_Aux =>
+                     null;
+             end case;
+         end record;
+ 
+     for Token_Type use
+         record
+             Aux     at 0 range 0..2;
+             Token   at 0 range 3..12;
+             SID     at 0 range 16..31;
+             FID     at 0 range 16..31;
+             LNO     at 0 range 13..31;
+         end record;
+ 
+     type Tokens_Index is range 0..999999;
+     type Token_Array is array(Tokens_Index range <>) of Token_Type;
+     type Token_Line is access all Token_Array;	
+ 
+     type Line_Node is
+         record
+             Line :     Token_Line;
+             LNO :      LNumber_Type := 0;
+             Numbered : Boolean := False;
+         end record;
+ 
+     type Nodes_Index is range 0..999999;
+     type LNodes_Array is array(Nodes_Index range <>) of Line_Node;
+     type LNodes_Ptr is access all LNodes_Array;
+ 
+     type VString is
+         record
+             Max_Length : Natural := 0;
+             Fixed :      Boolean := False;
+         end record;
+ 
+     function To_Long(Object : VString; Radix : Natural) return Long_Type;
+ 
+     function Element (V : String_ID) return String;
+ 
+ end Rep_Clause5_Pkg;
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gnat.dg/thin_pointer.adb gcc-4.4.4/gcc/testsuite/gnat.dg/thin_pointer.adb
*** gcc-4.4.3/gcc/testsuite/gnat.dg/thin_pointer.adb	Wed Mar 28 20:11:20 2007
--- gcc-4.4.4/gcc/testsuite/gnat.dg/thin_pointer.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,11 ****
- -- { dg-do compile }
- -- { dg-options "-O" }
- 
- package body Thin_Pointer is
- 
-    procedure Set_Buffer (AD : Buf_Ptr; Buffer : Stream_ptr) is
-    begin
-       AD.B.A := Buffer (Buffer'First)'Address;
-    end Set_Buffer;
- 
- end Thin_Pointer;
--- 0 ----
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gnat.dg/thin_pointer.ads gcc-4.4.4/gcc/testsuite/gnat.dg/thin_pointer.ads
*** gcc-4.4.3/gcc/testsuite/gnat.dg/thin_pointer.ads	Wed Mar 28 20:11:20 2007
--- gcc-4.4.4/gcc/testsuite/gnat.dg/thin_pointer.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,22 ****
- with System;
- 
- package Thin_Pointer is
- 
-    type Stream is array (Integer range <>) of Character;
- 
-    type Stream_Ptr is access Stream;
-    for Stream_Ptr'Size use Standard'Address_Size;
- 
-    type Buf is record
-       A : System.Address;
-    end record;
- 
-    type Buf_Wrapper is record
-       B : Buf;
-    end record;
- 
-    type Buf_Ptr is access Buf_Wrapper;
- 
-    procedure Set_Buffer (AD : Buf_Ptr; Buffer : Stream_ptr);
- 
- end Thin_Pointer;
--- 0 ----
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gnat.dg/thin_pointer1.adb gcc-4.4.4/gcc/testsuite/gnat.dg/thin_pointer1.adb
*** gcc-4.4.3/gcc/testsuite/gnat.dg/thin_pointer1.adb	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gnat.dg/thin_pointer1.adb	Sat Feb 27 14:30:12 2010
***************
*** 0 ****
--- 1,11 ----
+ -- { dg-do compile }
+ -- { dg-options "-O" }
+ 
+ package body Thin_Pointer1 is
+ 
+    procedure Set_Buffer (AD : Buf_Ptr; Buffer : Stream_ptr) is
+    begin
+       AD.B.A := Buffer (Buffer'First)'Address;
+    end Set_Buffer;
+ 
+ end Thin_Pointer1;
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gnat.dg/thin_pointer1.ads gcc-4.4.4/gcc/testsuite/gnat.dg/thin_pointer1.ads
*** gcc-4.4.3/gcc/testsuite/gnat.dg/thin_pointer1.ads	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gnat.dg/thin_pointer1.ads	Sat Feb 27 14:30:12 2010
***************
*** 0 ****
--- 1,22 ----
+ with System;
+ 
+ package Thin_Pointer1 is
+ 
+    type Stream is array (Integer range <>) of Character;
+ 
+    type Stream_Ptr is access Stream;
+    for Stream_Ptr'Size use Standard'Address_Size;
+ 
+    type Buf is record
+       A : System.Address;
+    end record;
+ 
+    type Buf_Wrapper is record
+       B : Buf;
+    end record;
+ 
+    type Buf_Ptr is access Buf_Wrapper;
+ 
+    procedure Set_Buffer (AD : Buf_Ptr; Buffer : Stream_ptr);
+ 
+ end Thin_Pointer1;
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gnat.dg/thin_pointer2.adb gcc-4.4.4/gcc/testsuite/gnat.dg/thin_pointer2.adb
*** gcc-4.4.3/gcc/testsuite/gnat.dg/thin_pointer2.adb	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gnat.dg/thin_pointer2.adb	Sat Feb 27 14:30:12 2010
***************
*** 0 ****
--- 1,13 ----
+ -- PR ada/42253
+ -- Testcase by Duncan Sands <baldrick@gcc.gnu.org>
+ 
+ -- { dg-do run }
+ 
+ with Thin_Pointer2_Pkg; use Thin_Pointer2_Pkg;
+ 
+ procedure Thin_Pointer2 is
+ begin
+    if F /= '*' then
+       raise Program_Error;
+    end if;
+ end;
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gnat.dg/thin_pointer2_pkg.adb gcc-4.4.4/gcc/testsuite/gnat.dg/thin_pointer2_pkg.adb
*** gcc-4.4.3/gcc/testsuite/gnat.dg/thin_pointer2_pkg.adb	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gnat.dg/thin_pointer2_pkg.adb	Sat Feb 27 14:30:12 2010
***************
*** 0 ****
--- 1,18 ----
+ package body Thin_Pointer2_Pkg is
+ 
+    type SB is access constant String;
+ 
+    function Inner (S : SB) return Character is
+    begin
+       if S /= null and then S'Length > 0 then
+          return S (S'First);
+       end if;
+       return '*';
+    end;
+ 
+    function F return Character is
+    begin
+       return Inner (SB (S));
+    end;
+ 
+ end Thin_Pointer2_Pkg;
diff -Nrcpad gcc-4.4.3/gcc/testsuite/gnat.dg/thin_pointer2_pkg.ads gcc-4.4.4/gcc/testsuite/gnat.dg/thin_pointer2_pkg.ads
*** gcc-4.4.3/gcc/testsuite/gnat.dg/thin_pointer2_pkg.ads	Thu Jan  1 00:00:00 1970
--- gcc-4.4.4/gcc/testsuite/gnat.dg/thin_pointer2_pkg.ads	Sat Feb 27 14:30:12 2010
***************
*** 0 ****
--- 1,9 ----
+ package Thin_Pointer2_Pkg is
+ 
+    type SA is access String;
+    for SA'Size use Standard'Address_Size;
+    S : SA;
+ 
+    function F return Character;
+ 
+ end Thin_Pointer2_Pkg;
diff -Nrcpad gcc-4.4.3/gcc/testsuite/lib/gnat.exp gcc-4.4.4/gcc/testsuite/lib/gnat.exp
*** gcc-4.4.3/gcc/testsuite/lib/gnat.exp	Sun Apr 19 12:47:22 2009
--- gcc-4.4.4/gcc/testsuite/lib/gnat.exp	Fri Mar  5 15:21:41 2010
***************
*** 1,4 ****
! # Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
  
  # This program is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 1,4 ----
! # Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
  
  # This program is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
*************** proc gnat_init { args } {
*** 83,89 ****
      global gluefile wrap_flags
      global gnat_initialized
      global GNAT_UNDER_TEST
-     global GNAT_UNDER_TEST_ORIG
      global TOOL_EXECUTABLE
      global gnat_libgcc_s_path
      global gnat_target_current
--- 83,88 ----
*************** proc gnat_init { args } {
*** 98,104 ****
  	} else {
  	    set GNAT_UNDER_TEST "[local_find_gnatmake]"
  	}
-         set GNAT_UNDER_TEST_ORIG "$GNAT_UNDER_TEST"
      }
  
      if ![info exists tmpdir] then {
--- 97,102 ----
*************** proc gnat_target_compile { source dest t
*** 129,150 ****
      global gluefile wrap_flags
      global srcdir
      global GNAT_UNDER_TEST
-     global GNAT_UNDER_TEST_ORIG
      global TOOL_OPTIONS
      global ld_library_path
      global gnat_libgcc_s_path
      global gnat_target_current
  
!     # If we detect a change of target we need to recompute
!     # the appropriate RTS by calling get_multilibs.
      if { $gnat_target_current!="[current_target_name]" } {
!        set gnat_target_current "[current_target_name]"
!        if [info exists TOOL_OPTIONS] {
!            set gnat_rts_opt "--RTS=[get_multilibs ${TOOL_OPTIONS}]/libada"
!        } else {
!            set gnat_rts_opt "--RTS=[get_multilibs]/libada"
!        }
!         set GNAT_UNDER_TEST "$GNAT_UNDER_TEST_ORIG $gnat_rts_opt"
      }
  
      set ld_library_path ".:${gnat_libgcc_s_path}"
--- 127,157 ----
      global gluefile wrap_flags
      global srcdir
      global GNAT_UNDER_TEST
      global TOOL_OPTIONS
      global ld_library_path
      global gnat_libgcc_s_path
      global gnat_target_current
  
!     # If we detect a change of target, we need to recompute both
!     # GNAT_UNDER_TEST and the appropriate RTS.
      if { $gnat_target_current!="[current_target_name]" } {
! 	set gnat_target_current "[current_target_name]"
! 	if [info exists TOOL_OPTIONS] {
! 	    set rtsdir "[get_multilibs ${TOOL_OPTIONS}]/libada"
! 	} else {
! 	    set rtsdir "[get_multilibs]/libada"
! 	}
! 	if [info exists TOOL_EXECUTABLE] {
! 	    set GNAT_UNDER_TEST "$TOOL_EXECUTABLE"
! 	} else {
! 	    set GNAT_UNDER_TEST "[local_find_gnatmake]"
! 	}
!         set GNAT_UNDER_TEST "$GNAT_UNDER_TEST --RTS=$rtsdir"
! 
! 	# gnatlink looks for system.ads itself and has no --RTS option, so
! 	# specify via environment
! 	setenv ADA_INCLUDE_PATH "$rtsdir/adainclude"
! 	setenv ADA_OBJECTS_PATH "$rtsdir/adainclude"
      }
  
      set ld_library_path ".:${gnat_libgcc_s_path}"
*************** proc local_find_gnatmake {} {
*** 263,269 ****
          }
          if { $file != "" } {
      	set root [file dirname $file]
!     	set CC "$file --GCC=$root/xgcc --GNATBIND=$root/gnatbind --GNATLINK=$root/gnatlink -cargs -B$root -largs --LINK=$root/xgcc -B$root -margs";
          } else {
      	set CC [transform gnatmake]
          }
--- 270,282 ----
          }
          if { $file != "" } {
      	set root [file dirname $file]
! 	# Need to pass full --GCC, including multilib flags, to gnatlink,
! 	# otherwise gcc from PATH is invoked.
! 	set dest [target_info name]
! 	set gnatlink_gcc "--GCC=$root/xgcc -B$root [board_info $dest multilib_flags]"
! 	# Escape blanks to get them through DejaGnu's exec machinery.
! 	regsub -all {\s} "$gnatlink_gcc" {\\&} gnatlink_gcc
!     	set CC "$file --GCC=$root/xgcc --GNATBIND=$root/gnatbind --GNATLINK=$root/gnatlink -cargs -B$root -largs $gnatlink_gcc -margs";
          } else {
      	set CC [transform gnatmake]
          }
diff -Nrcpad gcc-4.4.3/gcc/testsuite/lib/target-supports-dg.exp gcc-4.4.4/gcc/testsuite/lib/target-supports-dg.exp
*** gcc-4.4.3/gcc/testsuite/lib/target-supports-dg.exp	Fri Feb 20 15:20:38 2009
--- gcc-4.4.4/gcc/testsuite/lib/target-supports-dg.exp	Thu Mar 11 17:32:39 2010
*************** proc check-flags { args } {
*** 235,243 ****
  	append compiler_flags "[board_info $dest multilib_flags] "
      }
  
!     # The target list might be an effective-target keyword, so replace
!     # the original list with "*-*-*", since we already know it matches.
!     set result [check_conditional_xfail [lreplace $args 1 1 "*-*-*"]]
  
      # Any value in this variable was left over from an earlier test.
      set compiler_flags ""
--- 235,260 ----
  	append compiler_flags "[board_info $dest multilib_flags] "
      }
  
!     # The next two arguments are optional.  If they were not specified,
!     # use the defaults.
!     if { [llength $args] == 2 } {
! 	lappend $args [list "*"]
!     }
!     if { [llength $args] == 3 } {
! 	lappend $args [list ""]
!     }
! 
!     # If the option strings are the defaults, or the same as the
!     # defaults, there is no need to call check_conditional_xfail to
!     # compare them to the actual options.
!     if { [string compare [lindex $args 2] "*"] == 0
! 	 && [string compare [lindex $args 3] "" ] == 0 } {
! 	set result 1    
!     } else {
! 	# The target list might be an effective-target keyword, so replace
! 	# the original list with "*-*-*", since we already know it matches.
! 	set result [check_conditional_xfail [lreplace $args 1 1 "*-*-*"]]
!     }
  
      # Any value in this variable was left over from an earlier test.
      set compiler_flags ""
*************** proc check-flags { args } {
*** 256,269 ****
  # group of tests or flags specified with a previous dg-options command.
  
  proc dg-skip-if { args } {
      # Don't bother if we're already skipping the test.
      upvar dg-do-what dg-do-what
      if { [lindex ${dg-do-what} 1] == "N" } {
        return
      }
  
-     set args [lreplace $args 0 0]
- 
      set selector [list target [lindex $args 1]]
      if { [dg-process-target $selector] == "S" } {
  	if [check-flags $args] {
--- 273,290 ----
  # group of tests or flags specified with a previous dg-options command.
  
  proc dg-skip-if { args } {
+     # Verify the number of arguments.  The last two are optional.
+     set args [lreplace $args 0 0]
+     if { [llength $args] < 2 || [llength $args] > 4 } {
+ 	error "dg-skip-if 2: need 2, 3, or 4 arguments"
+     }
+ 
      # Don't bother if we're already skipping the test.
      upvar dg-do-what dg-do-what
      if { [lindex ${dg-do-what} 1] == "N" } {
        return
      }
  
      set selector [list target [lindex $args 1]]
      if { [dg-process-target $selector] == "S" } {
  	if [check-flags $args] {
*************** proc dg-skip-if { args } {
*** 276,306 ****
  # Like check_conditional_xfail, but callable from a dg test.
  
  proc dg-xfail-if { args } {
      # Don't change anything if we're already skipping the test.
      upvar dg-do-what dg-do-what
      if { [lindex ${dg-do-what} 1] == "N" } {
        return
      }
  
-     set args [lreplace $args 0 0]
      set selector [list target [lindex $args 1]]
      if { [dg-process-target $selector] == "S" } {
  	global compiler_conditional_xfail_data
! 	set compiler_conditional_xfail_data [lreplace $args 1 1 "*-*-*"]
      }
  }
  
  # Like dg-xfail-if but for the execute step.
  
  proc dg-xfail-run-if { args } {
      # Don't bother if we're already skipping the test.
      upvar dg-do-what dg-do-what
      if { [lindex ${dg-do-what} 1] == "N" } {
        return
      }
  
-     set args [lreplace $args 0 0]
- 
      set selector [list target [lindex $args 1]]
      if { [dg-process-target $selector] == "S" } {
  	if [check-flags $args] {
--- 297,349 ----
  # Like check_conditional_xfail, but callable from a dg test.
  
  proc dg-xfail-if { args } {
+     # Verify the number of arguments.  The last three are optional.
+     set args [lreplace $args 0 0]
+     if { [llength $args] < 2 || [llength $args] > 4 } {
+ 	error "dg-xfail-if: need 2, 3, or 4 arguments"
+     }
+ 
      # Don't change anything if we're already skipping the test.
      upvar dg-do-what dg-do-what
      if { [lindex ${dg-do-what} 1] == "N" } {
        return
      }
  
      set selector [list target [lindex $args 1]]
      if { [dg-process-target $selector] == "S" } {
  	global compiler_conditional_xfail_data
! 
! 	# The target list might be an effective-target keyword.  Replace
! 	# the original list with "*-*-*", since we already know it matches.
! 	set args [lreplace $args 1 1 "*-*-*"]
! 
! 	# Supply default values for unspecified optional arguments.
! 	if { [llength $args] == 2 } {
! 	    lappend $args [list "*"]
! 	}
! 	if { [llength $args] == 3 } {
! 	    lappend $args [list ""]
! 	}
! 
! 	set compiler_conditional_xfail_data $args
      }
  }
  
  # Like dg-xfail-if but for the execute step.
  
  proc dg-xfail-run-if { args } {
+     # Verify the number of arguments.  The last two are optional.
+     set args [lreplace $args 0 0]
+     if { [llength $args] < 2 || [llength $args] > 4 } {
+ 	error "dg-xfail-run-if: need 2, 3, or 4 arguments"
+     }
+ 
      # Don't bother if we're already skipping the test.
      upvar dg-do-what dg-do-what
      if { [lindex ${dg-do-what} 1] == "N" } {
        return
      }
  
      set selector [list target [lindex $args 1]]
      if { [dg-process-target $selector] == "S" } {
  	if [check-flags $args] {
diff -Nrcpad gcc-4.4.3/gcc/testsuite/lib/target-supports.exp gcc-4.4.4/gcc/testsuite/lib/target-supports.exp
*** gcc-4.4.3/gcc/testsuite/lib/target-supports.exp	Tue Nov  3 17:59:43 2009
--- gcc-4.4.4/gcc/testsuite/lib/target-supports.exp	Sat Mar  6 02:29:14 2010
*************** proc add_options_for_c99_runtime { flags
*** 2787,2792 ****
--- 2787,2814 ----
      return $flags
  }
  
+ # Add to FLAGS the flags needed to enable functions to bind locally
+ # when using pic/PIC passes in the testsuite.
+ 
+ proc add_options_for_bind_pic_locally { flags } {
+     if {[check_no_compiler_messages using_pic2 assembly {
+         #if __PIC__ != 2
+         #error FOO
+         #endif
+     }]} {
+ 	return "$flags -fPIE"
+     }
+     if {[check_no_compiler_messages using_pic1 assembly {
+         #if __PIC__ != 1
+         #error FOO
+         #endif
+     }]} {
+ 	return "$flags -fpie"
+     }
+ 
+     return $flags
+ }
+ 
  # Return 1 if the target provides a full C99 runtime.
  
  proc check_effective_target_c99_runtime { } {
diff -Nrcpad gcc-4.4.3/gcc/testsuite/objc/execute/forward-1.x gcc-4.4.4/gcc/testsuite/objc/execute/forward-1.x
*** gcc-4.4.3/gcc/testsuite/objc/execute/forward-1.x	Fri Apr 10 17:31:22 2009
--- gcc-4.4.4/gcc/testsuite/objc/execute/forward-1.x	Mon Feb  1 13:10:09 2010
***************
*** 1,8 ****
  load_lib target-supports.exp
  
  # XFAIL: PR libobjc/36610, for targets which pass arguments via registers
- # For powerpc-darwin it fails with -fgnu-runtime, passes with -fnext-runtime,
- # but that would be too ugly to handle; let it fail there.
  
  if { ([istarget x86_64-*-linux*] && [check_effective_target_lp64] )
       || [istarget powerpc*-*-linux*]
--- 1,6 ----
*************** if { ([istarget x86_64-*-linux*] && [che
*** 15,18 ****
--- 13,33 ----
      set torture_execute_xfail "*-*-*"
  }
  
+ # For darwin and alpha-linux it fails with -fgnu-runtime,
+ # passes with -fnext-runtime.
+ 
+ if { ([istarget x86_64-*-darwin*] && [check_effective_target_lp64] )
+      || [istarget powerpc*-*-darwin*]
+      || [istarget alpha*-*-linux*] } {
+     set torture_eval_before_execute {
+ 	global compiler_conditional_xfail_data
+ 	set compiler_conditional_xfail_data {
+ 	    "Target fails with -fgnu-runtime" \
+ 		"*-*-*" \
+ 		{ "-fgnu-runtime" } \
+ 		{ "" }
+ 	}
+     }
+ }
+ 
  return 0