diff -Nrcpad gcc-4.3.3/gcc/testsuite/ChangeLog gcc-4.3.4/gcc/testsuite/ChangeLog *** gcc-4.3.3/gcc/testsuite/ChangeLog Sat Jan 24 10:15:24 2009 --- gcc-4.3.4/gcc/testsuite/ChangeLog Tue Aug 4 10:57:59 2009 *************** *** 1,3 **** --- 1,749 ---- + 2009-08-04 Release Manager + + * GCC 4.3.4 released. + + 2009-08-03 Janis Johnson + + PR c/39902 + * gcc.target/powerpc/pr39902-2.c: New test. + + PR c/39902 + * gcc.dg/dfp/pr39902.c: New test. + + 2009-07-29 Gerald Pfeifer + + * gcc.dg/builtins-config.h (HAVE_C99_RUNTIME): Do not define + for FreeBSD up to and including version 8. + + 2009-07-25 Uros Bizjak + + * lib/target-supports.exp (check_effective_target_static): New + procedure. + * gcc.dg/special/gcsec-1.c (dg-options): Use -static only when + supported. + * g++.old-deja/g++.law/weak.C: Require static effective target. + + 2009-07-21 Uros Bizjak + + PR target/40809 + * gcc.target/i386/pr40809.c: New test. + + Backport from mainline: + 2009-04-29 Richard Guenther + + PR target/39943 + * lib/target-supports.exp (check_effective_target_vect_uintfloat_cvt): + New. + (check_effective_target_vect_floatuint_cvt): Likewise. + * gcc.dg/vect/slp-10.c: Adjust. + * gcc.dg/vect/slp-11.c: Adjust. + * gcc.dg/vect/slp-12b.c: Adjust. + * gcc.dg/vect/slp-33.c: Adjust. + * gcc.c-torture/compile/pr39943.c: New testcase. + + 2009-07-14 Uros Bizjak + + * gcc.target/i386/sse-recip-vec.c: Move arrays out of test + function to enable vectorization. + * gcc.target/i386/sse2-lrint-vec.c: Ditto. + * gcc.target/i386/sse2-lrintf-vec.c: Ditto. + + 2009-07-10 Richard Guenther + + Backport from mainline + 2009-06-30 Jakub Jelinek + + PR c++/40566 + * g++.dg/parse/cond5.C: New test. + + 2009-07-10 Richard Guenther + + Backport from mainline + 2009-05-29 Jakub Jelinek + + PR middle-end/40291 + * gcc.c-torture/compile/pr40291.c: New test. + + 2009-07-10 Richard Guenther + + Backport from mainline + 2009-01-28 Jakub Jelinek + + PR middle-end/38934 + * gcc.dg/pr38934.c: New test. + + 2009-07-10 Richard Guenther + + Backport from mainline + 2009-01-09 John F. Carr + + PR c++/37877 + * g++.dg/parse/linkage3.C: New test. + + 2009-07-10 Richard Guenther + + Backport from mainline + 2008-11-17 Jakub Jelinek + + PR c++/37561 + PR c++/36089 + * g++.dg/template/init8.C: New test. + + 2009-07-07 Richard Guenther + + PR middle-end/40328 + PR tree-optimization/40669 + * gcc.dg/pr40669.c: New testcase. + * gcc.dg/torture/pr40328.c: Likewise. + + 2009-07-03 Jerry DeLisle + + PR fortran/40638 + * gfortran.dg/unit_1.f90: New test. + + 2009-06-30 Ira Rosen + + PR tree-optimization/40542 + * gcc.dg/vect/pr40542.c: New test. + + 2009-06-29 Richard Guenther + + PR tree-optimization/40579 + * gcc.c-torture/execute/pr40579.c: New testcase. + + 2009-06-28 Uros Bizjak + + PR tree-optimization/40550 + * gcc.dg/pr40550.c: New test. + + 2009-06-25 Richard Guenther + + Backport from mainline + 2009-01-12 Jakub Jelinek + + PR c/32041 + * gcc.dg/pr32041.c: New test. + * g++.dg/parse/offsetof9.C: New test. + + 2008-09-28 Andrew Pinski + Kaushal Kantawala + + PR tree-optimization/36891 + * gcc.dg/torture/pr36891.c: New testcase. + + 2009-06-22 Matthias Klose + + PR objc/28050 + * pr28050.m: New testcase. + + 2009-06-19 Richard Guenther + + Backport from mainline: + 2009-02-03 Andrew Pinski + + PR C++/36607 + * g++.dg/expr/cast10.C: New test. + + 2009-05-20 Jakub Jelinek + + PR middle-end/40204 + * gcc.c-torture/compile/pr40204.c: New test. + + 2009-02-03 Jakub Jelinek + + PR target/35318 + * gcc.c-torture/compile/pr35318.c: New test. + + 2009-06-19 Richard Guenther + + Backport from mainline: + 2009-02-20 Jakub Jelinek + + PR target/39240 + * gcc.c-torture/execute/pr39240.c: New test. + + 2009-06-19 Richard Guenther + + Backport from mainline: + 2009-01-30 Jakub Jelinek + + PR target/39013 + * gcc.target/i386/pr39013-1.c: New test. + * gcc.target/i386/pr39013-2.c: New test. + + 2009-04-22 Jakub Jelinek + + PR c/39855 + * gcc.dg/torture/pr39855.c: New test. + + 2009-06-18 H.J. Lu + + Backport from mainline: + 2009-06-18 H.J. Lu + + PR target/40470 + * gcc.dg/torture/pr40470-1.c: New. + * gcc.dg/torture/pr40470-2.c: Likewise. + * gcc.dg/torture/pr40470-3.c: Likewise. + * gcc.dg/torture/pr40470-4.c: Likewise. + + 2009-06-17 Richard Guenther + + Backport from mainline + 2009-03-16 Jakub Jelinek + + PR tree-optimization/39455 + * gcc.dg/pr39455.c: New test. + + 2009-05-19 Zdenek Dvorak + + PR tree-optimization/40087 + * gcc.dg/tree-ssa/pr40087.c: New test. + + 2009-06-17 Richard Guenther + + PR middle-end/40404 + * gcc.c-torture/execute/pr40404.c: New testcase. + + 2009-06-17 Richard Guenther + + PR middle-end/40389 + * g++.dg/torture/pr40389.C: New testcase. + + 2009-06-17 Richard Guenther + + PR middle-end/40460 + * g++.dg/torture/pr40460.C: New testcase. + + 2009-06-08 Jakub Jelinek + + PR c++/40373 + * g++.dg/template/dtor7.C: New test. + + 2009-06-07 H.J. Lu + + Backport from mainline: + 2009-06-07 H.J. Lu + + PR middle-end/32950 + * g++.dg/torture/pr32950.C: New. + + 2009-06-04 Richard Guenther + + Backport from mainline + 2009-03-09 Jakub Jelinek + + PR c++/39371 + * g++.dg/opt/switch2.C: Add -w to dg-options. + * g++.dg/warn/Wswitch-1.C: Adjust expected warnings. + * g++.dg/warn/switch1.C: New test. + * g++.dg/other/switch3.C: New test. + * g++.dg/torture/pr40335.C: New testcase. + + 2009-05-26 Richard Guenther + + Backport from mainline + 2008-12-12 Zdenek Dvorak + + PR tree-optimization/32044 + * gcc.dg/pr34027-1.c: Change outcome. + * gcc.dg/tree-ssa/pr32044.c: New test. + + 2009-05-18 Dodji Seketeli + + PR debug/40109 + * g++.dg/debug/dwarf2/nested-1.C: New test. + + 2009-05-18 H.J. Lu + + PR testsuite/39907 + * gcc.target/x86_64/abi/asm-support.s (snapshot_ret): Preserve + stack alignment. + + 2009-05-10 Paul Thomas + + Backport from mainline: + PR fortran/39879 + * gfortran.dg/alloc_comp_assign_10.f90: New test. + + 2009-05-07 Jakub Jelinek + + PR middle-end/40057 + * gcc.c-torture/execute/pr40057.c: New test. + + 2009-05-06 Janis Johnson + + * gcc.dg/dfp/pr39986.c: New test. + + 2009-04-28 Michael Meissner + + Backport from mainline: + PR testsuite/39769 + * gcc.dg/vmx/3a-04.c (test): Don't rely on floating point equality + for testing the results of estimate instructions. + * gcc.dg/vmx/3a-04m.c (test): Ditto. + * gcc.dg/vmx/3a-05.c (test): Ditto. + + 2009-04-27 Richard Guenther + + Backport from mainline + 2009-04-18 Eric Botcazou + + * gcc.target/i386/pr39496.c: Compile with -mtune=i686. + * g++.dg/other/pr39496.C: Likewise. + + 2009-04-23 Dodji Seketeli + + PR c++/38228 + * g++.dg/expr/bound-mem-fun.C: New test. + + 2009-04-22 Dodji Seketeli + + PR c++/39639 + * g++.dg/cpp0x/pr39639.C: New test. + + 2009-04-22 Richard Guenther + + Backport from mainline: + PR target/39496 + * gcc.target/i386/pr39496.c: New test. + * g++.dg/other/pr39496.C: New test. + + 2009-04-14 Uros Bizjak + + Backport from mainline: + 2009-04-12 Uros Bizjak + + PR target/39740 + * gcc.target/alpha/pr39740.c: New test. + + 2009-04-13 Jason Merrill + + PR c++/39480 + * g++.dg/init/copy7.C: New. + + 2009-04-10 H.J. Lu + + Backport from mainline: + 2009-04-10 H.J. Lu + + PR c++/28301 + * g++.dg/debug/pr22514.C: Updated. + * g++.dg/parse/enum2.C: Likewise. + * g++.dg/parse/enum3.C: Likewise. + + * g++.dg/template/pr28301.C: New. + + 2009-04-08 Dodji Seketeli + + PR c++/39637 + * g++.dg/cpp0x/variadic-crash2.C: New test. + + 2009-04-06 Jason Merrill + + PR c++/35146 + * g++.dg/template/fnspec1.C: New. + + 2009-04-04 Jerry DeLisle + + PR libfortran/39528 + * gfortran.dg/read_repeat.f90: New test. + + 2009-04-04 Paul Thomas + + PR fortran/39519 + * gfortran.dg/alloc_comp_assign_9.f90: New test. + + 2009-04-02 David Ayers + + PR objc/18456 + * objc.dg/bad-receiver-type-2.m: New test contributed by + Alexander Mamberg. + + 2009-04-02 David Ayers + + PR objc/27377 + * objc.dg/conditional-1.m: New tests. + + 2009-04-01 Eric Botcazou + + * gcc.c-torture/compile/20090401-1.c: New test. + + 2009-03-26 Ben Elliston + + Backport from mainline: + 2009-02-19 Jakub Jelinek + + PR target/39175 + * gcc.dg/visibility-20.c: New test. + * g++.dg/ext/visibility/visibility-11.C: New test. + + 2009-03-23 Uros Bizjak + + Backport from mainline: + 2009-03-17 Uros Bizjak + + PR target/39482 + * gcc.target/i386/pr39482.c: New test. + + 2009-03-18 H.J. Lu + + Backport from mainline: + 2009-03-18 H.J. Lu + + PR c++/39425 + * g++.dg/template/pr39425.C: New. + + * g++.dg/template/spec33.C: Updated. + + 2009-03-13 H.J. Lu + + Backport from mainline: + 2009-03-13 H.J. Lu + + PR testsuite/39451 + * gcc.dg/asm-b.c: Use "Q" constraint on %b1/%h1 and "R" + constraint on (%2). + + 2009-03-11 Ulrich Weigand + + * g++.old-deja/g++.jason/thunk2.C: Skip on SPU. + + 2009-03-07 Paul Thomas + + PR fortran/39295 + * gfortran.dg/interface_25.f90: New test. + * gfortran.dg/interface_26.f90: New test. + + 2009-03-07 Paul Thomas + + PR fortran/39292 + * gfortran.dg/initialization_22.f90: New test. + + 2009-02-26 Uros Bizjak + + Backport from mainline: + 2009-02-02 Jakub Jelinek + + PR inline-asm/39058 + * gcc.target/i386/pr39058.c: New test. + + 2009-02-25 Janis Johnson + + Backport from mainline: + 2008-10-29 Joseph Myers + + PR middle-end/36578 + * gcc.dg/dfp/convert-bfp-13.c, gcc.dg/dfp/convert-bfp-14.c, + gcc.dg/dfp/convert-dfp-fold-2.c, gcc.target/i386/pr36578-1.c, + gcc.target/i386/pr36578-2.c: New tests. + + 2009-02-25 H.J. Lu + + Backport from mainline: + 2008-02-25 H.J. Lu + + PR rtl-optimization/39241 + * gcc.dg/torture/pr39241.c: New. + + 2009-02-21 Kaz Kojima + + * gcc.c-torture/execute/pr39228.x: New. + + 2009-02-20 Steve Ellcey + + PR target/38056 + * gcc.target/ia64/sibcall-opt-1.c: New test. + * gcc.target/ia64/sibcall-opt-2.c: New test. + + 2009-02-20 Jason Merrill + + PR c++/39225 + * g++.dg/parse/dtor15.C: New test. + + 2009-02-19 Uros Bizjak + + PR target/39228 + * gcc.c-torture/execute/pr39228.c: New test. + + 2009-02-19 Paul Thomas + + PR fortran/38852 + PR fortran/39006 + Backport from mainline: + * gfortran.dg/bound_6.f90: New test. + + 2009-02-17 Jason Merrill + + PR c++/38950 + * g++.dg/template/array20.C: New test. + + 2009-02-17 Joseph Myers + + PR c/35446 + * gcc.dg/noncompile/init-5.c: New test. + * gcc.dg/init-bad-4.c: Adjust expected errors. + + 2009-02-15 Uros Bizjak + + * gcc.dg/struct/w_prof_single_str_global.c: Mask return value. + + Backport from mainline: + 2009-01-12 Mark Mitchell + + * gcc.dg/struct/wo_prof_single_str_global.c: Mask return value. + * gcc.dg/struct/wo_prof_single_str_local.c: Mask return value. + * gcc.dg/struct/wo_prof_single_str_pointer.c: Mask return value. + + 2009-02-13 Jason Merrill + + PR c++/39070 + * g++.dg/cpp0x/decltype16.C: New. + + 2009-02-13 Joseph Myers + + PR c/35444 + * gcc.dg/noncompile/pr35444-1.c, gcc.dg/noncompile/pr35444-2.c: + New tests. + + 2009-02-10 Steve Ellcey + + PR c/39084 + * gcc.dg/pr39084.c: New test. + + 2009-02-09 Janis Johnson + + PR c/39035 + * gcc.dg/dfp/pr39035.c: New test. + + 2009-02-08 Joseph Myers + + PR c/35434 + * gcc.dg/attr-alias-4.c: New test. + + 2009-02-08 Joseph Myers + + PR c/36432 + * gcc.dg/c90-flex-array-2.c, gcc.dg/c99-flex-array-6.c: New tests. + + 2009-02-05 Joseph Myers + + PR c/35435 + * gcc.dg/tls/diag-6.c: New test. + + 2009-02-05 Richard Guenther + + Backport from mainline + 2009-02-05 Daniel Berlin + + * gcc.c-torture/execute/pr39100.c: New. + + 2009-02-04 Joseph Myers + + PR c/35433 + * gcc.dg/init-bad-6.c: New test. + + 2009-02-03 Paolo Bonzini + + PR c++/36897 + * g++.dg/template/func2.C: New test. + + PR c++/37314 + * g++.dg/template/typename15.C: New. + * g++.dg/template/typename16.C: New. + + 2009-02-02 Jason Merrill + + PR c++/39054 + * g++.dg/parse/dtor14.C: New test. + + 2009-01-30 H.J. Lu + + Backport from mainline: + 2009-01-14 Jakub Jelinek + + PR rtl-optimization/38245 + * gcc.dg/pr38245-3.c: New test. + * gcc.dg/pr38245-3.h: New file. + * gcc.dg/pr38245-4.c: New file. + * gcc.dg/pr38364.c: New test. + + 2009-01-30 Richard Guenther + + PR tree-optimization/39041 + * gcc.c-torture/compile/pr39041.c: New testcase. + + 2009-01-30 H.J. Lu + + Backport from mainline: + 2009-01-16 Jakub Jelinek + + PR tree-optimization/38789 + * gcc.c-torture/compile/pr38789.c: New test. + + 2009-01-30 H.J. Lu + + Backport from mainline: + 2009-01-27 Richard Guenther + + PR tree-optimization/38503 + * g++.dg/warn/Wstrict-aliasing-bogus-placement-new.C: New testcase. + + 2009-01-26 Richard Guenther + + PR tree-optimization/38745 + * g++.dg/torture/pr38745.C: New testcase. + + 2009-01-26 Richard Guenther + + PR middle-end/38851 + * g++.dg/warn/Wuninitialized-1.C: New testcase. + + 2009-01-20 Andrew Pinski + Richard Guenther + + PR tree-optimization/38747 + PR tree-optimization/38748 + * gcc.dg/tree-ssa/struct-aliasing-1.c: New test. + * gcc.c-torture/execute/struct-aliasing-1.c: Likewise. + + 2009-01-29 H.J. Lu + + Backport from mainline: + 2009-01-28 Richard Guenther + + PR middle-end/38908 + * g++.dg/warn/Wuninitialized-2.C: New testcase. + + 2009-01-27 Daniel Kraft + + PR fortran/38883 + * gfortran.dg/mvbits_6.f90: New test. + * gfortran.dg/mvbits_7.f90: New test. + * gfortran.dg/mvbits_8.f90: New test. + + 2009-01-21 Daniel Kraft + + PR fortran/38887 + * gfortran.dg/mvbits_5.f90: New test. + + 2009-01-29 H.J. Lu + + Backport from mainline: + 2009-01-29 Steve Ellcey + + PR middle-end/38857 + * gcc.c-torture/compile/pr38857.c: New test. + + 2009-01-28 Richard Guenther + + PR tree-optimization/38926 + * gcc.c-torture/compile/pr38926.c: New testcase. + + 2009-01-29 Uros Bizjak + + Backport from mainline: + 2009-01-28 Uros Bizjak + + PR target/38988 + * gcc.target/i386/pr38988.c: New test. + + 2009-01-27 Uros Bizjak + + PR middle-end/38969 + * gcc.c-torture/execute/pr38969.c: New test. + + 2009-01-27 Steve Ellcey + + PR middle-end/38615 + * gcc.dg/pr38615.c: New test. + + 2009-01-27 Uros Bizjak + + Backport from mainline: + 2009-01-07 Uros Bizjak + + PR target/38706 + * g++.dg/other/pr38706.C: New test. + + 2009-01-26 Jason Merrill + + PR c++/23287 + * g++.dg/template/dtor5.C: New test. + + 2009-01-26 H.J. Lu + + Backport from mainline: + 2008-07-17 H.J. Lu + + PR testsuite/36443 + * objc.dg/gnu-encoding/gnu-encoding.exp: Temporarily unset + GCC_EXEC_PREFIX from environment when running $HOSTCC. + + 2008-01-26 Paolo Bonzini + + PR tree-optimization/38932 + * gcc.dg/pr38932.c: New. + + 2009-01-26 Paul Thomas + + PR fortran/38907 + Backport from trunk + * gfortran.dg/host_assoc_function_7.f90: New test. + + 2009-01-26 Mikael Morin + + PR fortran/38859 + Backport from trunk + * gfortran.dg/bound_5.f90: New test. + + 2009-01-26 Paul Thomas + + PR fortran/38657 + Backport from trunk. + * gfortran.dg/module_commons_3.f90: Reapply. + + 2009-01-25 Uros Bizjak + + Backport from mainline: + 2009-01-22 Uros Bizjak + + PR target/38931 + * gcc.target/i386/pr38931.c: New test. + + 2009-01-25 Richard Guenther + + Backport from mainline: + 2008-12-02 Richard Guenther + + PR tree-optimization/38359 + * gcc.c-torture/compile/pr38359.c: New testcase. + * gcc.c-torture/execute/shiftopt-1.c: Adjust. + + 2009-01-24 Thomas Koenig + + PR fortran/38672 + Backport from trunk. + * gfortran.dg/host_assoc_blockdata_1.f90: New test. + * gfortran.dg/host_assoc_blockdata_2.f90: New test. + + 2009-01-24 H.J. Lu + + Backport from mainline: + 2009-01-20 Kees Cook + H.J. Lu + + PR target/38902 + * gcc.dg/pr38902.c: New. + + 2009-01-24 H.J. Lu + + Backport from mainline: + 2008-01-20 Paolo Bonzini + + PR target/38868 + * gfortran.dg/pr38868.f: New testcase. + 2009-01-24 Release Manager * GCC 4.3.3 released. *************** *** 89,95 **** Backport from mainline: 2008-12-29 Dorit Nuzman ! Ira Rosen PR tree-optimization/38529 * gcc.dg/vect/pr38529.c: New test. --- 835,841 ---- Backport from mainline: 2008-12-29 Dorit Nuzman ! Ira Rosen PR tree-optimization/38529 * gcc.dg/vect/pr38529.c: New test. *************** *** 426,433 **** 2008-11-14 Paul Thomas ! PR fortran/37836 ! * gfortran.dg/minmaxval_1.f90: New test. 2008-11-13 Jason Merrill --- 1172,1179 ---- 2008-11-14 Paul Thomas ! PR fortran/37836 ! * gfortran.dg/minmaxval_1.f90: New test. 2008-11-13 Jason Merrill diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/cpp0x/decltype16.C gcc-4.3.4/gcc/testsuite/g++.dg/cpp0x/decltype16.C *** gcc-4.3.3/gcc/testsuite/g++.dg/cpp0x/decltype16.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/cpp0x/decltype16.C Fri Feb 13 21:53:38 2009 *************** *** 0 **** --- 1,10 ---- + // PR c++/39070 + // { dg-options "-std=c++0x" } + + template struct junk { + template static Z y(); + template static int test(...); + template static char test(decltype(y())*); + static int const value=sizeof(test(0)); + }; + typedef char type[junk::value==sizeof(char) ? 1 : -1]; diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/cpp0x/pr39639.C gcc-4.3.4/gcc/testsuite/g++.dg/cpp0x/pr39639.C *** gcc-4.3.3/gcc/testsuite/g++.dg/cpp0x/pr39639.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/cpp0x/pr39639.C Wed Apr 22 19:13:40 2009 *************** *** 0 **** --- 1,20 ---- + // Contributed by Dodji Seketeli + // Origin: PR c++/39639 + // { dg-options "-std=c++0x" } + // { dg-do "compile" } + + template + struct S + : S<...Types>, // { dg-error "expected parameter pack before '...'" } + S<...Types...>, // { dg-error "expected parameter pack before '...'" } + S<...> // { dg-error "expected parameter pack before '...'" } + { + static int f () { return 1;} + }; + + int + main () + { + return S::f (); + } + diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/cpp0x/variadic-crash2.C gcc-4.3.4/gcc/testsuite/g++.dg/cpp0x/variadic-crash2.C *** gcc-4.3.3/gcc/testsuite/g++.dg/cpp0x/variadic-crash2.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/cpp0x/variadic-crash2.C Wed Apr 8 08:59:02 2009 *************** *** 0 **** --- 1,18 ---- + // Contributed by Dodji Seketeli + // Origin: PR c++/39637 + // { dg-options "-std=gnu++0x" } + // { dg-do "compile" } + + template + void + f(Types...) + { + enum {e = sizeof(Types)}; // { dg-error "parameter packs not expanded with|note" } + enum {e1 = sizeof...(Types)}; + } + + int + main() + { + f(0); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/debug/dwarf2/nested-1.C gcc-4.3.4/gcc/testsuite/g++.dg/debug/dwarf2/nested-1.C *** gcc-4.3.3/gcc/testsuite/g++.dg/debug/dwarf2/nested-1.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/debug/dwarf2/nested-1.C Mon May 18 19:26:41 2009 *************** *** 0 **** --- 1,29 ---- + // Contributed by Dodji Seketeli + // Origin PR debug/40109 + // { dg-do compile } + // { dg-options "-g -dA -O0" } + + namespace A + { + + class B + { + }; + typedef A::B AB; + }; + + int + main() + { + A::AB ab; + return 0; + } + + // { dg-final { scan-assembler "DW_TAG_typedef" } } + // + // What we want to do here is to be sure that the DIE of A::AB is generated + // as a child of the DIE of the namespace A declaration. + // So this test won't catch a regression on this fix yet. To write a proper + // test for this fix, we would need a dwarf reader written in tcl, + // or something along those lines. + diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/debug/pr22514.C gcc-4.3.4/gcc/testsuite/g++.dg/debug/pr22514.C *** gcc-4.3.3/gcc/testsuite/g++.dg/debug/pr22514.C Fri Aug 12 04:18:48 2005 --- gcc-4.3.4/gcc/testsuite/g++.dg/debug/pr22514.C Fri Apr 10 19:36:19 2009 *************** namespace s *** 10,13 **** using _List_base::_M_impl; } } /* { dg-error "expected unqualified-id before '\}'" } */ ! s::list<1> OutputModuleListType; /* { dg-error "expected" } */ --- 10,13 ---- using _List_base::_M_impl; } } /* { dg-error "expected unqualified-id before '\}'" } */ ! s::list<1> OutputModuleListType; diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/expr/bound-mem-fun.C gcc-4.3.4/gcc/testsuite/g++.dg/expr/bound-mem-fun.C *** gcc-4.3.3/gcc/testsuite/g++.dg/expr/bound-mem-fun.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/expr/bound-mem-fun.C Thu Apr 23 15:55:47 2009 *************** *** 0 **** --- 1,18 ---- + // Contributed by Dodji Seketeli + // Origin PR c++/38228 + // { dg-do "compile" } + + struct A + { + A (); + template A(T); + }; + + struct B + { + int foo(); + }; + + A a = B().*(&B::foo); // { dg-error "invalid use of non-static member function" } + + diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/expr/cast10.C gcc-4.3.4/gcc/testsuite/g++.dg/expr/cast10.C *** gcc-4.3.3/gcc/testsuite/g++.dg/expr/cast10.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/expr/cast10.C Fri Jun 19 21:44:24 2009 *************** *** 0 **** --- 1,10 ---- + // { dg-do compile } + // This used to error out because we would try to convert m to a short. + + + struct a {}; + void b() { + int a::*m; + a *c; + short p = reinterpret_cast(&(c->*m)) - reinterpret_cast(c); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/ext/visibility/visibility-11.C gcc-4.3.4/gcc/testsuite/g++.dg/ext/visibility/visibility-11.C *** gcc-4.3.3/gcc/testsuite/g++.dg/ext/visibility/visibility-11.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/ext/visibility/visibility-11.C Wed Mar 25 22:05:08 2009 *************** *** 0 **** --- 1,18 ---- + // PR target/39175 + // { dg-do compile } + // { dg-require-visibility "" } + // { dg-options "-O2 -fvisibility=hidden -fpic" { target fpic } } + + __attribute__((noinline)) int + foo (int x) + { + return x; + } + + int foo (int x); + + int + bar (int x) + { + return foo (x); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/init/copy7.C gcc-4.3.4/gcc/testsuite/g++.dg/init/copy7.C *** gcc-4.3.3/gcc/testsuite/g++.dg/init/copy7.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/init/copy7.C Tue Apr 14 03:30:12 2009 *************** *** 0 **** --- 1,32 ---- + // PR c++/39480 + // It isn't always safe to call memcpy with identical arguments. + // { dg-do run } + + extern "C" void abort(); + extern "C" void * + memcpy(void *dest, void *src, __SIZE_TYPE__ n) + { + abort(); + } + + struct A + { + double d[10]; + }; + + struct B: public A + { + char bc; + }; + + B b; + + void f(B *a1, B* a2) + { + *a1 = *a2; + } + + int main() + { + f(&b,&b); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/opt/switch2.C gcc-4.3.4/gcc/testsuite/g++.dg/opt/switch2.C *** gcc-4.3.3/gcc/testsuite/g++.dg/opt/switch2.C Mon Oct 11 03:42:09 2004 --- gcc-4.3.4/gcc/testsuite/g++.dg/opt/switch2.C Thu Jun 4 12:35:25 2009 *************** *** 1,5 **** // { dg-do compile } ! // { dg-options "-O2" } extern int foo (int); --- 1,5 ---- // { dg-do compile } ! // { dg-options "-O2 -w" } extern int foo (int); diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/other/pr38706.C gcc-4.3.4/gcc/testsuite/g++.dg/other/pr38706.C *** gcc-4.3.3/gcc/testsuite/g++.dg/other/pr38706.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/other/pr38706.C Tue Jan 27 11:39:42 2009 *************** *** 0 **** --- 1,19 ---- + // PR target/38706 + // { dg-do compile } + // { dg-options "-O2" } + + class ios_base + { + public: + virtual ~ios_base (); + + }; + + class istrstream:virtual public ios_base + { + public: + virtual ~istrstream (); + + }; + + istrstream::~istrstream () {} diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/other/pr39496.C gcc-4.3.4/gcc/testsuite/g++.dg/other/pr39496.C *** gcc-4.3.3/gcc/testsuite/g++.dg/other/pr39496.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/other/pr39496.C Mon Apr 27 08:17:39 2009 *************** *** 0 **** --- 1,35 ---- + // PR target/39496 + // { dg-do compile { target { { i?86-*-linux* x86_64-*-linux* } && ilp32 } } } + // { dg-options "-O0 -fverbose-asm -fno-omit-frame-pointer -mtune=i686 -msse2 -mfpmath=sse" } + // Verify that {foo,bar}{,2}param are all passed on the stack, using + // normal calling conventions, when not optimizing. + // { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*fooparam," } } + // { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*barparam," } } + // { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*foo2param," } } + // { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*bar2param," } } + + static inline int foo (int fooparam) + { + return fooparam; + } + + static int bar (int barparam) + { + return foo (barparam); + } + + static inline double foo2 (double foo2param) + { + return foo2param; + } + + static double bar2 (double bar2param) + { + return foo2 (bar2param); + } + + int + main () + { + return bar (0) + bar2 (0.0); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/other/switch3.C gcc-4.3.4/gcc/testsuite/g++.dg/other/switch3.C *** gcc-4.3.3/gcc/testsuite/g++.dg/other/switch3.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/other/switch3.C Thu Jun 4 12:35:25 2009 *************** *** 0 **** --- 1,25 ---- + // PR c++/39371 + // { dg-do compile } + + void + foo (bool b) + { + switch ((unsigned int) b) + { + case 1: + case 2: + break; + } + } + + void + bar (unsigned char b) + { + switch ((unsigned int) b) + { + case 1: + case 257: + case 513: + break; + } + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/parse/cond5.C gcc-4.3.4/gcc/testsuite/g++.dg/parse/cond5.C *** gcc-4.3.3/gcc/testsuite/g++.dg/parse/cond5.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/parse/cond5.C Fri Jul 10 16:02:59 2009 *************** *** 0 **** --- 1,10 ---- + // PR c++/40566 + + void + f (int x, int y) + { + int c = x ? 23 : throw "bla"; + short d = y ? throw "bla" : 23; + char e = x ? 23 : throw "bla"; + long f = x ? 23 : throw "bla"; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/parse/dtor14.C gcc-4.3.4/gcc/testsuite/g++.dg/parse/dtor14.C *** gcc-4.3.3/gcc/testsuite/g++.dg/parse/dtor14.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/parse/dtor14.C Mon Feb 2 19:57:29 2009 *************** *** 0 **** --- 1,8 ---- + // PR c++/39054 + + struct A {}; + + template void foo() + { + A().~int(); // { dg-error "expected" } + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/parse/dtor15.C gcc-4.3.4/gcc/testsuite/g++.dg/parse/dtor15.C *** gcc-4.3.3/gcc/testsuite/g++.dg/parse/dtor15.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/parse/dtor15.C Fri Feb 20 15:21:51 2009 *************** *** 0 **** --- 1,16 ---- + // PR c++/39225 + + template + class A + { + public: + A() {} + ~B() {} // { dg-error "~B" } + }; + + int main() + { + A *a = new A; + + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/parse/enum2.C gcc-4.3.4/gcc/testsuite/g++.dg/parse/enum2.C *** gcc-4.3.3/gcc/testsuite/g++.dg/parse/enum2.C Thu Dec 2 11:34:56 2004 --- gcc-4.3.4/gcc/testsuite/g++.dg/parse/enum2.C Fri Apr 10 19:36:19 2009 *************** *** 4,7 **** // PR c++/18123: ICE pushing tag from invalid template. ! template enum E { e }; // { dg-error "template declaration" } --- 4,7 ---- // PR c++/18123: ICE pushing tag from invalid template. ! template enum E { e }; // { dg-error "declaration|expected" } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/parse/enum3.C gcc-4.3.4/gcc/testsuite/g++.dg/parse/enum3.C *** gcc-4.3.3/gcc/testsuite/g++.dg/parse/enum3.C Tue Oct 17 22:43:37 2006 --- gcc-4.3.4/gcc/testsuite/g++.dg/parse/enum3.C Fri Apr 10 19:36:19 2009 *************** *** 1,5 **** // PR c++/28261 ! struct A {}; // { dg-error "A" } ! A::A (enum { e }) {} // { dg-error "defined|match" } --- 1,5 ---- // PR c++/28261 ! struct A {}; ! A::A (enum { e }) {} // { dg-error "defined|token" } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/parse/linkage3.C gcc-4.3.4/gcc/testsuite/g++.dg/parse/linkage3.C *** gcc-4.3.3/gcc/testsuite/g++.dg/parse/linkage3.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/parse/linkage3.C Fri Jul 10 15:56:52 2009 *************** *** 0 **** --- 1,7 ---- + // PR c++/37877 + // { dg-do compile } + + extern "C++" struct S + { + static int x; + } s; diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/parse/offsetof9.C gcc-4.3.4/gcc/testsuite/g++.dg/parse/offsetof9.C *** gcc-4.3.3/gcc/testsuite/g++.dg/parse/offsetof9.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/parse/offsetof9.C Thu Jun 25 09:44:12 2009 *************** *** 0 **** --- 1,32 ---- + /* PR c/32041 */ + /* { dg-do run } */ + + struct S + { + int c; + struct { float f; } sa[2]; + }; + + char a[__builtin_offsetof (S, sa->f) + == __builtin_offsetof (S, sa[0].f) ? 1 : -1]; + + template + struct T + { + int c[N]; + struct { float f; } sa[N]; + static int foo () { return __builtin_offsetof (T, sa->f); } + static int bar () { return __builtin_offsetof (T, sa[0].f); } + }; + + char b[__builtin_offsetof (T<5>, sa->f) + == __builtin_offsetof (T<5>, sa[0].f) ? 1 : -1]; + + int + main () + { + if (T<1>::foo () != T<1>::bar ()) + __builtin_abort (); + if (T<7>::foo () != T<7>::bar ()) + __builtin_abort (); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/template/array20.C gcc-4.3.4/gcc/testsuite/g++.dg/template/array20.C *** gcc-4.3.3/gcc/testsuite/g++.dg/template/array20.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/template/array20.C Tue Feb 17 18:27:32 2009 *************** *** 0 **** --- 1,10 ---- + // PR c++/38950 + + template void f(T(&)[N]); + + int main() { + int x[2]; + unsigned int y[2]; + f(x); // works + f(y); // ICE + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/template/dtor5.C gcc-4.3.4/gcc/testsuite/g++.dg/template/dtor5.C *** gcc-4.3.3/gcc/testsuite/g++.dg/template/dtor5.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/template/dtor5.C Mon Jan 26 18:24:45 2009 *************** *** 0 **** --- 1,21 ---- + // PR c++/23287 + + template struct A + { + int i; + ~A(); + }; + + template void f(A *ap) { + ap->~A(); + } + + template void g(A *ap) { + ap->~B(); // { dg-error "destructor name" } + } + + int main() + { + f(new A); + g(new A); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/template/dtor7.C gcc-4.3.4/gcc/testsuite/g++.dg/template/dtor7.C *** gcc-4.3.3/gcc/testsuite/g++.dg/template/dtor7.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/template/dtor7.C Mon Jun 8 17:02:17 2009 *************** *** 0 **** --- 1,24 ---- + // PR c++/40373 + // { dg-compile } + + struct A; // { dg-bogus "candidates are" "" { xfail *-*-* } } + namespace + { + struct A; // { dg-bogus "struct" "" { xfail *-*-* } } + } + + struct B {}; + + template void + foo (T t) + { + t.~A (); // { dg-error "does not match destructor name" } + } + + void + bar () + { + foo (B ()); // { dg-bogus "instantiated from here" "" { xfail *-*-* } } + } + + // { dg-bogus "is ambiguous" "" { xfail *-*-* } 15 } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/template/fnspec1.C gcc-4.3.4/gcc/testsuite/g++.dg/template/fnspec1.C *** gcc-4.3.3/gcc/testsuite/g++.dg/template/fnspec1.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/template/fnspec1.C Tue Apr 7 03:50:49 2009 *************** *** 0 **** --- 1,16 ---- + // PR c++/35146 + + template struct S {}; + + template struct ref; + template <> struct ref { typedef double result; }; + + template + void foo(typename ref::result, S*); + template <> + void foo(S, S*); // { dg-error "does not match" } + template <> + void foo(double alpha, S* x) + { + alpha; x; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/template/func2.C gcc-4.3.4/gcc/testsuite/g++.dg/template/func2.C *** gcc-4.3.3/gcc/testsuite/g++.dg/template/func2.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/template/func2.C Tue Feb 3 15:56:05 2009 *************** *** 0 **** --- 1,12 ---- + // { dg-do compile } + + typedef void (*fptr)(); + fptr zeroptr = 0; + template struct foo { }; + template struct foo { }; + // { dg-error "not a valid template argument" "not valid" { target *-*-* } 6 } + // { dg-error "must be the address" "must be the address " { target *-*-* } 6 } + + // The rest is needed to trigger the ICE in 4.0 to 4.3: + void f() { } + foo m_foo; diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/template/init8.C gcc-4.3.4/gcc/testsuite/g++.dg/template/init8.C *** gcc-4.3.3/gcc/testsuite/g++.dg/template/init8.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/template/init8.C Fri Jul 10 15:55:04 2009 *************** *** 0 **** --- 1,68 ---- + // PR c++/36089 + // { dg-do run } + + extern "C" void abort (); + + int f () + { + const int c(2); + int d[c] = { 0, 0 }; + return d[0] + sizeof d; + } + + struct A + { + static int f () + { + const int c(2); + int d[c] = { 0, 0 }; + return d[0] + sizeof d; + } + }; + + template struct B + { + static int f () + { + const int c = 2; + int d[c] = { 0, 0 }; + return d[0] + sizeof d; + } + }; + + template struct C + { + static int f () + { + const int c(2); + int d[c] = { 0, 0 }; + return d[0] + sizeof d; + } + }; + + template struct D + { + static int f () + { + const int e(2); + const int c(e); + int d[c] = { 0, 0 }; + return d[0] + sizeof d; + } + }; + + int + main (void) + { + int v = f (); + if (v != 2 * sizeof (int)) + abort (); + if (v != A::f ()) + abort (); + if (v != B<6>::f ()) + abort (); + if (v != C<0>::f ()) + abort (); + if (v != D<1>::f ()) + abort (); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/template/pr28301.C gcc-4.3.4/gcc/testsuite/g++.dg/template/pr28301.C *** gcc-4.3.3/gcc/testsuite/g++.dg/template/pr28301.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/template/pr28301.C Fri Apr 10 19:36:19 2009 *************** *** 0 **** --- 1,18 ---- + // PR c++/28301 + // { dg-do compile } + + template struct A + { + template void foo() + }; // { dg-error "initializer" } + + template<> struct A + { + template void foo(); + }; + + void bar() + { + A a; + a.foo<0>(); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/template/pr39425.C gcc-4.3.4/gcc/testsuite/g++.dg/template/pr39425.C *** gcc-4.3.3/gcc/testsuite/g++.dg/template/pr39425.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/template/pr39425.C Wed Mar 18 15:00:32 2009 *************** *** 0 **** --- 1,18 ---- + // PR c++/39425 + // { dg-do compile } + + class a { + + template + struct _rec { + static const char size = _rec< (s >> 1) >::size; + }; + + template<> // { dg-error "explicit" } + struct _rec <0> { + static const char size = 0; + }; + + static const unsigned int value = _rec < 1 >::size; + + } // { dg-error "unqualified-id" } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/template/spec33.C gcc-4.3.4/gcc/testsuite/g++.dg/template/spec33.C *** gcc-4.3.3/gcc/testsuite/g++.dg/template/spec33.C Mon Sep 25 19:58:10 2006 --- gcc-4.3.4/gcc/testsuite/g++.dg/template/spec33.C Wed Mar 18 15:00:32 2009 *************** *** 3,7 **** struct A { template static void foo () {} ! template<> static void foo<0>() {} // { dg-error "explicit" } }; --- 3,7 ---- struct A { template static void foo () {} ! template<> static void foo<0>() {} // { dg-error "explicit|template" } }; diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/template/typename15.C gcc-4.3.4/gcc/testsuite/g++.dg/template/typename15.C *** gcc-4.3.3/gcc/testsuite/g++.dg/template/typename15.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/template/typename15.C Tue Feb 3 15:56:05 2009 *************** *** 0 **** --- 1,12 ---- + // PR37314 ice-on-valid-code, from w.doeringer + template + class Cdeque { + typedef T *pointer; + class iterator { + typedef typename Cdeque::pointer pointer; + pointer operator->(); + }; + }; + template T* Cdeque::iterator::operator->() { } + + diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/template/typename16.C gcc-4.3.4/gcc/testsuite/g++.dg/template/typename16.C *** gcc-4.3.3/gcc/testsuite/g++.dg/template/typename16.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/template/typename16.C Tue Feb 3 15:56:05 2009 *************** *** 0 **** --- 1,25 ---- + // PR37314 rejects-valid, from w.doeringer + template + struct A { + typedef __PTRDIFF_TYPE__ difference_type; + struct B { + typedef typename A::difference_type difference_type; + difference_type operator-(B const&) const; + T t; + }; + }; + // + + template + typename A::B::difference_type A::B::operator-(B const&) const { + return -1; + } + + // + int main() { + A::B i; + ++i.t; + return 0; + } + + diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/torture/pr32950.C gcc-4.3.4/gcc/testsuite/g++.dg/torture/pr32950.C *** gcc-4.3.3/gcc/testsuite/g++.dg/torture/pr32950.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/torture/pr32950.C Sun Jun 7 13:39:54 2009 *************** *** 0 **** --- 1,19 ---- + /* { dg-do compile } */ + + struct A + { + __complex__ double c; + }; + + struct B + { + A a; + B(A x) : a(x) {} + void foo(); + }; + + void bar() + { + B b = A(); + B(b).foo(); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/torture/pr38745.C gcc-4.3.4/gcc/testsuite/g++.dg/torture/pr38745.C *** gcc-4.3.3/gcc/testsuite/g++.dg/torture/pr38745.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/torture/pr38745.C Fri Jan 30 17:31:24 2009 *************** *** 0 **** --- 1,36 ---- + /* { dg-do compile } */ + + union u_u16 + { + unsigned short v; + struct + { + unsigned char lo8, hi8; + } __attribute__ ((__may_alias__)) u; + } __attribute__ ((__may_alias__)); + union u_u32 + { + unsigned int v; + struct + { + u_u16 lo16, hi16; + } u; + } __attribute__ ((__may_alias__)); + union u_u64 + { + struct + { + u_u32 lo32, hi32; + } u; + }; + struct Record + { + }; + long long + UnpackFullKey (Record & rec, const char *&p) + { + long long c64 = 0; + (*(u_u16 *) & (*(u_u32 *) & ( *(u_u64*)&c64).u.lo32.v).u.lo16.v).u.hi8 = 1; + return c64; + } + diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/torture/pr40335.C gcc-4.3.4/gcc/testsuite/g++.dg/torture/pr40335.C *** gcc-4.3.3/gcc/testsuite/g++.dg/torture/pr40335.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/torture/pr40335.C Thu Jun 4 12:35:25 2009 *************** *** 0 **** --- 1,16 ---- + /* { dg-do run } */ + + extern "C" void abort (void); + int + main (void) + { + int i = -1; + switch ((signed char) i) + { + case 255: /* { dg-bogus "exceeds maximum value" "" { xfail *-*-* } } */ + abort (); + default: + break; + } + } + diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/torture/pr40389.C gcc-4.3.4/gcc/testsuite/g++.dg/torture/pr40389.C *** gcc-4.3.3/gcc/testsuite/g++.dg/torture/pr40389.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/torture/pr40389.C Wed Jun 17 12:03:08 2009 *************** *** 0 **** --- 1,84 ---- + /* { dg-do run } */ + + template struct S + { + V *f, *l; + __attribute__ ((noinline)) S (void) { f = 0, l = 0; } + void foo (V *x) + { + if (x->p != 0) + x->p->n = x->n; + else + f = x->n; + if (x->n != 0) + x->n->p = x->p; + else + l = x->p; + } + __attribute__ ((noinline)) void bar (V *x) + { + x->n = 0; + x->p = l; + if (l != 0) + l->n = x; + else + f = x; + l = x; + } + }; + + struct H; + + struct A + { + S k; + }; + + struct H + { + A *a; + H *p, *n; + __attribute__ ((noinline)) H (void) { p = 0, n = 0, a = 0; } + __attribute__ ((noinline)) H (A *b) : a (b) + { + p = 0; + n = 0; + if (a != 0) + a->k.bar (this); + } + __attribute__ ((noinline)) H (const H &h) : a (h.a) + { + p = 0; + n = 0; + if (a != 0) + a->k.bar (this); + } + ~H (void) { if (a != 0) a->k.foo (this); } + H &operator= (const H &o) + { + if (a != 0 || &o == this) + __builtin_abort (); + a = o.a; + if (a != 0) + a->k.bar (this); + return *this; + } + }; + + __attribute__ ((noinline)) + H baz (void) + { + return H (new A); + } + + H g; + + int + main (void) + { + g = baz (); + if (g.a->k.f != &g) + __builtin_abort (); + return 0; + } + diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/torture/pr40460.C gcc-4.3.4/gcc/testsuite/g++.dg/torture/pr40460.C *** gcc-4.3.3/gcc/testsuite/g++.dg/torture/pr40460.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/torture/pr40460.C Wed Jun 17 12:00:40 2009 *************** *** 0 **** --- 1,9 ---- + /* { dg-do compile } */ + + void bar(int); + void foo(void) + { + for (int i = 0; i<1; ++i) + bar (i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i); + } + diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-placement-new.C gcc-4.3.4/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-placement-new.C *** gcc-4.3.3/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-placement-new.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-placement-new.C Fri Jan 30 17:31:24 2009 *************** *** 0 **** --- 1,29 ---- + /* { dg-do compile } */ + /* { dg-options "-O2 -Wstrict-aliasing" } */ + + inline void *operator new (__SIZE_TYPE__, void *__p) throw() { return __p; } + + struct Y { + Y() {} + int i; + }; + + struct X { + X() {} + void construct(const Y& y) + { + new (&m_data[0]) Y(y); + } + bool initialized; + char m_data[sizeof (Y)]; + }; + + void bar(const X&); + void foo(Y& y) + { + X x; + x.construct(y); + x.initialized = true; + bar(x); + } + diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/warn/Wswitch-1.C gcc-4.3.4/gcc/testsuite/g++.dg/warn/Wswitch-1.C *** gcc-4.3.3/gcc/testsuite/g++.dg/warn/Wswitch-1.C Sun Sep 12 23:53:29 2004 --- gcc-4.3.4/gcc/testsuite/g++.dg/warn/Wswitch-1.C Thu Jun 4 12:35:25 2009 *************** foo (int i, int j, enum e ei, enum e ej, *** 50,63 **** { case e1: return 1; case e2: return 2; ! case 3: return 3; /* { dg-warning "case value '3' not in enumerated type 'e'" "excess 3" } */ } switch (ep) { case e1: return 1; case e2: return 2; ! case 3: return 3; default: break; ! } /* Since there is a default, no warning about ``case 3'' */ return 0; } --- 50,63 ---- { case e1: return 1; case e2: return 2; ! case 3: return 3; /* { dg-warning "exceeds maximum value" } */ } switch (ep) { case e1: return 1; case e2: return 2; ! case 3: return 3; /* { dg-warning "exceeds maximum value" } */ default: break; ! } return 0; } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/warn/Wuninitialized-1.C gcc-4.3.4/gcc/testsuite/g++.dg/warn/Wuninitialized-1.C *** gcc-4.3.3/gcc/testsuite/g++.dg/warn/Wuninitialized-1.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/warn/Wuninitialized-1.C Fri Jan 30 17:31:24 2009 *************** *** 0 **** --- 1,15 ---- + /* { dg-options "-O2 -Wuninitialized" } */ + + struct Empty { Empty() {} }; /* { dg-bogus "uninitialized" } */ + struct Other { + Other(const Empty& e_) : e(e_) {} + Empty e; + }; + void bar(Other&); + void foo() + { + Empty e; + Other o(e); + bar(o); + } + diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/warn/Wuninitialized-2.C gcc-4.3.4/gcc/testsuite/g++.dg/warn/Wuninitialized-2.C *** gcc-4.3.3/gcc/testsuite/g++.dg/warn/Wuninitialized-2.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/warn/Wuninitialized-2.C Thu Jan 29 17:43:14 2009 *************** *** 0 **** --- 1,53 ---- + /* { dg-do compile } */ + /* { dg-options "-O -Wuninitialized" } */ + + struct S8 { template S8(T) { } }; + + template struct S10; + template struct S10 { typedef T S12; typedef S8 S1(); }; + + template struct S3 { }; + template struct S11 { S11(S3); }; + + struct S2 + { + template operator S11() { return S11(S5()); } + template struct S5:public S3 + { + virtual typename S10::S12 S13() { + return 0; + } + }; + }; + + template S11 S6(S3) { return S11(S3()); } + template struct S7 { typedef S12 S15(); }; + + struct S4 + { + template operator S11() + { + struct S14:public S3 + { + S14(S2 x):S11_(x) { } + S11::S12>::S15> S11_; + }; + return S6(S14(S11_)); + } + S2 S11_; + }; + + struct S9 + { + template operator S11() { return S11(S14(S11_)); } + template struct S14:public S3 + { + S14(S4 x):S11_(x) { } + S11::S1> S11_; + }; + S4 S11_; + }; + + void S15(S11); + void S16() { S9 x; S15(x); } + diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.dg/warn/switch1.C gcc-4.3.4/gcc/testsuite/g++.dg/warn/switch1.C *** gcc-4.3.3/gcc/testsuite/g++.dg/warn/switch1.C Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/g++.dg/warn/switch1.C Thu Jun 4 12:35:25 2009 *************** *** 0 **** --- 1,15 ---- + // { dg-do compile { target { int32plus } } } + + signed char sc; + + void + foo (void) + { + switch (sc) + { + case 1: + case 2 * __SCHAR_MAX__ + 3: // { dg-warning "case label value exceeds maximum" } + case - 2 * __SCHAR_MAX__ - 1: // { dg-warning "case label value is less than minimum" } + break; + } + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.old-deja/g++.jason/thunk2.C gcc-4.3.4/gcc/testsuite/g++.old-deja/g++.jason/thunk2.C *** gcc-4.3.3/gcc/testsuite/g++.old-deja/g++.jason/thunk2.C Sat Oct 22 20:57:01 2005 --- gcc-4.3.4/gcc/testsuite/g++.old-deja/g++.jason/thunk2.C Wed Mar 11 17:53:13 2009 *************** *** 1,6 **** --- 1,7 ---- // { dg-do run { target fpic } } // { dg-options "-fPIC" } // { dg-bogus "\[Uu\]nresolved symbol .(_GLOBAL_OFFSET_TABLE_|\[_.A-Za-z\]\[_.0-9A-Za-z\]*@(PLT|GOT|GOTOFF))|\[Bb\]ad fixup at .DATA.:" "PIC unsupported" { xfail *-*-netware* } 0 } + // { dg-skip-if "requires unsupported run-time relocation" { spu-*-* } { "*" } { "" } } // Test that non-variadic function calls using thunks and PIC work right. struct A { diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.old-deja/g++.law/weak.C gcc-4.3.4/gcc/testsuite/g++.old-deja/g++.law/weak.C *** gcc-4.3.3/gcc/testsuite/g++.old-deja/g++.law/weak.C Fri Dec 9 23:34:09 2005 --- gcc-4.3.4/gcc/testsuite/g++.old-deja/g++.law/weak.C Sat Jul 25 14:01:53 2009 *************** *** 1,4 **** --- 1,5 ---- // { dg-do link { target i?86-*-linux* x86_64-*-linux* } } + // { dg-require-effective-target static } // { dg-options "-static" } // Bug: g++ fails to instantiate operator<<. diff -Nrcpad gcc-4.3.3/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog gcc-4.3.4/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog *** gcc-4.3.3/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog Sat Jan 24 10:15:12 2009 --- gcc-4.3.4/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog Tue Aug 4 10:57:45 2009 *************** *** 1,3 **** --- 1,7 ---- + 2009-08-04 Release Manager + + * GCC 4.3.4 released. + 2009-01-24 Release Manager * GCC 4.3.3 released. diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/20090401-1.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/20090401-1.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/20090401-1.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/20090401-1.c Wed Apr 1 20:48:33 2009 *************** *** 0 **** --- 1,11 ---- + /* PR rtl-optimization/39588 */ + /* Testcase by Olivier ROUSSEL */ + + #define lit_from_int(in) ((in<0)?(((-in)<<1)|1):(in<<1)) + + void init_clause(int *literals, int size, int *lits) + { + int i; + for(i=0; i < size; i++) + lits[i] = lit_from_int(literals[i]); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr35318.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr35318.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr35318.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr35318.c Fri Jun 19 21:44:24 2009 *************** *** 0 **** --- 1,8 ---- + /* PR target/35318 */ + + void + foo () + { + double x = 4, y; + __asm__ volatile ("" : "=r,r" (x), "=r,r" (y) : "%0,0" (x), "m,r" (8)); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr38359.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr38359.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr38359.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr38359.c Sat Jan 24 23:26:56 2009 *************** *** 0 **** --- 1,17 ---- + unsigned _ov_64_seek_lap (_Bool x1, _Bool x2, _Bool x3) + { + unsigned ltmp_3978_7__PHI_TEMPORARY; + signed ltmp_4011_7; + + if (!x1 || !x2) + while (1) ; + + if (x3) + ltmp_3978_7__PHI_TEMPORARY = 0xffffff7e; + else + ltmp_3978_7__PHI_TEMPORARY = 1; + + ltmp_4011_7 = -1; + return ltmp_4011_7 >> ltmp_3978_7__PHI_TEMPORARY; + } + diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr38789.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr38789.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr38789.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr38789.c Fri Jan 30 17:46:24 2009 *************** *** 0 **** --- 1,18 ---- + /* PR tree-optimization/38789 */ + + void + baz (int v) + { + unsigned a = (v == 1) ? 1 : 2; + + if (__builtin_constant_p (a)) + asm volatile ("# constant %0" :: "i" (a)); + else + asm volatile ("# register %0" :: "r" (a)); + + a = 6; + if (__builtin_constant_p (a)) + asm volatile ("# constant %0" :: "i" (a)); + else + asm volatile ("# register %0" :: "r" (a)); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr38857.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr38857.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr38857.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr38857.c Thu Jan 29 17:06:01 2009 *************** *** 0 **** --- 1,22 ---- + static const int vs_total_ac_bits = 2680; + typedef struct EncBlockInfo { + short mb[64]; + unsigned char next[64]; + } EncBlockInfo; + inline void dv_guess_qnos(EncBlockInfo* blks, int* qnos) { + int size[5]; + int j, k, a, prev; + EncBlockInfo* b; + for(a=2; a==2 || vs_total_ac_bits < size[0]; a+=a){ + for (j=0; j<6*5; j++, b++) { + for (k= b->next[prev]; k<64; k= b->next[k]) { + if(b->mb[k] < a && b->mb[k] > -a){ + b->next[prev] = b->next[k]; + } + else{ + prev = k; + } + } + } + } + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr38926.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr38926.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr38926.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr38926.c Thu Jan 29 17:06:01 2009 *************** *** 0 **** --- 1,41 ---- + static inline int foo (unsigned _si1) + { + if (_si1 != 0) + if (_si1 > 2147483647) + return 1; + return 0; + } + + static inline unsigned bar (unsigned _left, int _right) + { + return (unsigned) _right >= 8 ? 1 : _left >> _right; + } + + unsigned g_2; + unsigned g_67; + volatile unsigned g_162; + + static inline int func_62 (unsigned p_63) + { + p_63 = g_2 & g_67; + if (g_2) + ; + else if (p_63) + return 1; + g_67 = bar (p_63, g_2); + return 0; + } + + unsigned baz (void) + { + if (g_2) + for (; g_2 <= -16; g_2 = foo (g_2)) + { + for (; g_162; g_162) + func_62 (func_62 (0)); + if (g_67) + break; + } + return g_2; + } + diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr39041.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr39041.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr39041.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr39041.c Fri Jan 30 22:14:39 2009 *************** *** 0 **** --- 1,28 ---- + int test_bit(int nr, void *addr) + { + int *a = (int *)addr; + int mask; + a += nr; + mask = 1 << nr; + return mask & *a; + } + struct { + struct { + int disabled; + } *data[1]; + } trace; + struct { + unsigned bits[1]; + } cpumask; + void inc(int *); + void dec(int *); + int foo(void) + { + int cpu; + for (cpu = 0; cpu < 1; cpu++) { + if (test_bit(cpu, cpumask.bits)) + inc(&trace.data[cpu]->disabled); + if (!test_bit(cpu, cpumask.bits)) + dec(&trace.data[cpu]->disabled); + } + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr39943.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr39943.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr39943.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr39943.c Tue Jul 21 09:57:46 2009 *************** *** 0 **** --- 1,7 ---- + void gl_fog_index_pixels(float f, unsigned int n, unsigned int index[]) + { + unsigned int i; + for (i=0; i> 4) & ~(1 << 4); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr40291.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr40291.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/compile/pr40291.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/compile/pr40291.c Fri Jul 10 16:01:34 2009 *************** *** 0 **** --- 1,7 ---- + /* PR middle-end/40291 */ + + int + foo (void *x, char *y, unsigned long long z) + { + return memcmp (x, y, z); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr38969.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr38969.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr38969.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr38969.c Thu Jan 29 10:05:17 2009 *************** *** 0 **** --- 1,25 ---- + __complex__ float + __attribute__ ((noinline)) foo (__complex__ float x) + { + return x; + } + + __complex__ float + __attribute__ ((noinline)) bar (__complex__ float x) + { + return foo (x); + } + + int main() + { + __complex__ float a, b; + __real__ a = 9; + __imag__ a = 42; + + b = bar (a); + + if (a != b) + abort (); + + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39100.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr39100.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39100.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr39100.c Thu Feb 5 11:10:02 2009 *************** *** 0 **** --- 1,65 ---- + /* Bad PTA results (incorrect store handling) was causing us to delete + *na = 0 store. */ + + typedef struct E + { + int p; + struct E *n; + } *EP; + + typedef struct C + { + EP x; + short cn, cp; + } *CP; + + __attribute__((noinline)) CP + foo (CP h, EP x) + { + EP pl = 0, *pa = &pl; + EP nl = 0, *na = &nl; + EP n; + + while (x) + { + n = x->n; + if ((x->p & 1) == 1) + { + h->cp++; + *pa = x; + pa = &((*pa)->n); + } + else + { + h->cn++; + *na = x; + na = &((*na)->n); + } + x = n; + } + *pa = nl; + *na = 0; + h->x = pl; + return h; + } + + int + main (void) + { + struct C c = { 0, 0, 0 }; + struct E e[2] = { { 0, &e[1] }, { 1, 0 } }; + EP p; + + foo (&c, &e[0]); + if (c.cn != 1 || c.cp != 1) + __builtin_abort (); + if (c.x != &e[1]) + __builtin_abort (); + if (e[1].n != &e[0]) + __builtin_abort (); + if (e[0].n) + __builtin_abort (); + return 0; + } + + diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39228.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr39228.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39228.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr39228.c Thu Feb 19 12:44:40 2009 *************** *** 0 **** --- 1,36 ---- + extern void abort (void); + + static int __attribute__((always_inline)) testf (float b) + { + float c = 1.01f * b; + + return __builtin_isinff (c); + } + + static int __attribute__((always_inline)) test (double b) + { + double c = 1.01 * b; + + return __builtin_isinf (c); + } + + static int __attribute__((always_inline)) testl (long double b) + { + long double c = 1.01L * b; + + return __builtin_isinfl (c); + } + + int main() + { + if (testf (__FLT_MAX__) < 1) + abort (); + + if (test (__DBL_MAX__) < 1) + abort (); + + if (testl (__LDBL_MAX__) < 1) + abort (); + + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39228.x gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr39228.x *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39228.x Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr39228.x Sat Feb 21 13:04:37 2009 *************** *** 0 **** --- 1,10 ---- + if { [istarget "alpha*-*-*"] || [istarget "sh*-*-*"] } { + # alpha and SH require -mieee for this test. + set additional_flags "-mieee" + } + if [istarget "spu-*-*"] { + # No Inf/NaN support on SPU. + return 1 + } + + return 0 diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39240.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr39240.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39240.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr39240.c Fri Jun 19 16:13:53 2009 *************** *** 0 **** --- 1,105 ---- + /* PR target/39240 */ + + extern void abort (void); + + __attribute__ ((noinline)) + static int foo1 (int x) + { + return x; + } + + __attribute__ ((noinline)) + unsigned int bar1 (int x) + { + return foo1 (x + 6); + } + + volatile unsigned long l1 = (unsigned int) -4; + + __attribute__ ((noinline)) + static short int foo2 (int x) + { + return x; + } + + __attribute__ ((noinline)) + unsigned short int bar2 (int x) + { + return foo2 (x + 6); + } + + volatile unsigned long l2 = (unsigned short int) -4; + + __attribute__ ((noinline)) + static signed char foo3 (int x) + { + return x; + } + + __attribute__ ((noinline)) + unsigned char bar3 (int x) + { + return foo3 (x + 6); + } + + volatile unsigned long l3 = (unsigned char) -4; + + __attribute__ ((noinline)) + static unsigned int foo4 (int x) + { + return x; + } + + __attribute__ ((noinline)) + int bar4 (int x) + { + return foo4 (x + 6); + } + + volatile unsigned long l4 = (int) -4; + + __attribute__ ((noinline)) + static unsigned short int foo5 (int x) + { + return x; + } + + __attribute__ ((noinline)) + short int bar5 (int x) + { + return foo5 (x + 6); + } + + volatile unsigned long l5 = (short int) -4; + + __attribute__ ((noinline)) + static unsigned char foo6 (int x) + { + return x; + } + + __attribute__ ((noinline)) + signed char bar6 (int x) + { + return foo6 (x + 6); + } + + volatile unsigned long l6 = (signed char) -4; + + int + main (void) + { + if (bar1 (-10) != l1) + abort (); + if (bar2 (-10) != l2) + abort (); + if (bar3 (-10) != l3) + abort (); + if (bar4 (-10) != l4) + abort (); + if (bar5 (-10) != l5) + abort (); + if (bar6 (-10) != l6) + abort (); + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39501.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr39501.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39501.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr39501.c Sat May 16 22:24:59 2009 *************** *** 0 **** --- 1,83 ---- + /* { dg-options "-ffast-math" } */ + #define min1(a,b) ((a) < (b) ? (a) : (b)) + #define max1(a,b) ((a) > (b) ? (a) : (b)) + + #define min2(a,b) ((a) <= (b) ? (a) : (b)) + #define max2(a,b) ((a) >= (b) ? (a) : (b)) + + #define F(type,n) \ + type __attribute__((noinline)) type##_##n(type a, type b) \ + { \ + return n(a, b); \ + } + + F(float,min1) + F(float,min2) + F(float,max1) + F(float,max2) + + F(double,min1) + F(double,min2) + F(double,max1) + F(double,max2) + + int main() + { + if (float_min1(0.f, -1.f) != -1.f) abort(); + if (float_min1(-1.f, 0.f) != -1.f) abort(); + if (float_min1(0.f, 1.f) != 0.f) abort(); + if (float_min1(1.f, 0.f) != 0.f) abort(); + if (float_min1(-1.f, 1.f) != -1.f) abort(); + if (float_min1(1.f, -1.f) != -1.f) abort(); + + if (float_max1(0.f, -1.f) != 0.f) abort(); + if (float_max1(-1.f, 0.f) != 0.f) abort(); + if (float_max1(0.f, 1.f) != 1.f) abort(); + if (float_max1(1.f, 0.f) != 1.f) abort(); + if (float_max1(-1.f, 1.f) != 1.f) abort(); + if (float_max1(1.f, -1.f) != 1.f) abort(); + + if (float_min2(0.f, -1.f) != -1.f) abort(); + if (float_min2(-1.f, 0.f) != -1.f) abort(); + if (float_min2(0.f, 1.f) != 0.f) abort(); + if (float_min2(1.f, 0.f) != 0.f) abort(); + if (float_min2(-1.f, 1.f) != -1.f) abort(); + if (float_min2(1.f, -1.f) != -1.f) abort(); + + if (float_max2(0.f, -1.f) != 0.f) abort(); + if (float_max2(-1.f, 0.f) != 0.f) abort(); + if (float_max2(0.f, 1.f) != 1.f) abort(); + if (float_max2(1.f, 0.f) != 1.f) abort(); + if (float_max2(-1.f, 1.f) != 1.f) abort(); + if (float_max2(1.f, -1.f) != 1.f) abort(); + + if (double_min1(0., -1.) != -1.) abort(); + if (double_min1(-1., 0.) != -1.) abort(); + if (double_min1(0., 1.) != 0.) abort(); + if (double_min1(1., 0.) != 0.) abort(); + if (double_min1(-1., 1.) != -1.) abort(); + if (double_min1(1., -1.) != -1.) abort(); + + if (double_max1(0., -1.) != 0.) abort(); + if (double_max1(-1., 0.) != 0.) abort(); + if (double_max1(0., 1.) != 1.) abort(); + if (double_max1(1., 0.) != 1.) abort(); + if (double_max1(-1., 1.) != 1.) abort(); + if (double_max1(1., -1.) != 1.) abort(); + + if (double_min2(0., -1.) != -1.) abort(); + if (double_min2(-1., 0.) != -1.) abort(); + if (double_min2(0., 1.) != 0.) abort(); + if (double_min2(1., 0.) != 0.) abort(); + if (double_min2(-1., 1.) != -1.) abort(); + if (double_min2(1., -1.) != -1.) abort(); + + if (double_max2(0., -1.) != 0.) abort(); + if (double_max2(-1., 0.) != 0.) abort(); + if (double_max2(0., 1.) != 1.) abort(); + if (double_max2(1., 0.) != 1.) abort(); + if (double_max2(-1., 1.) != 1.) abort(); + if (double_max2(1., -1.) != 1.) abort(); + + exit(0); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39501.x gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr39501.x *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr39501.x Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr39501.x Sat May 16 22:24:59 2009 *************** *** 0 **** --- 1,2 ---- + set additional_flags "-ffast-math" + return 0 diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr40057.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr40057.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr40057.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr40057.c Thu May 7 15:53:11 2009 *************** *** 0 **** --- 1,37 ---- + /* PR middle-end/40057 */ + + extern void abort (void); + + __attribute__((noinline)) int + foo (unsigned long long x) + { + unsigned long long y = (x >> 31ULL) & 1ULL; + if (y == 0ULL) + return 0; + return -1; + } + + __attribute__((noinline)) int + bar (long long x) + { + long long y = (x >> 31LL) & 1LL; + if (y == 0LL) + return 0; + return -1; + } + + int + main (void) + { + if (sizeof (long long) != 8) + return 0; + if (foo (0x1682a9aaaULL)) + abort (); + if (!foo (0x1882a9aaaULL)) + abort (); + if (bar (0x1682a9aaaLL)) + abort (); + if (!bar (0x1882a9aaaLL)) + abort (); + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr40404.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr40404.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr40404.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr40404.c Wed Jun 17 13:06:21 2009 *************** *** 0 **** --- 1,12 ---- + extern void abort (void); + struct S { + unsigned int ui17 : 17; + } s; + int main() + { + s.ui17 = 0x1ffff; + if (s.ui17 >= 0xfffffffeu) + abort (); + return 0; + } + diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr40579.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr40579.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/pr40579.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/pr40579.c Mon Jun 29 14:52:20 2009 *************** *** 0 **** --- 1,28 ---- + extern void abort (void); + static char * __attribute__((noinline)) + itos(int num) + { + return (char *)0; + } + static void __attribute__((noinline)) + foo(int i, const char *x) + { + if (i >= 4) + abort (); + } + int main() + { + int x = -__INT_MAX__ + 3; + int i; + + for (i = 0; i < 4; ++i) + { + char *p; + --x; + p = itos(x); + foo(i, p); + } + + return 0; + } + diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/shiftopt-1.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/shiftopt-1.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/shiftopt-1.c Mon Dec 16 18:23:00 2002 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/shiftopt-1.c Sat Jan 24 23:26:56 2009 *************** stest (int x) *** 43,54 **** if (0 >> x != 0) link_error (); - - if (-1 >> x != -1) - link_error (); - - if (~0 >> x != ~0) - link_error (); } int --- 43,48 ---- diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/struct-aliasing-1.c gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/struct-aliasing-1.c *** gcc-4.3.3/gcc/testsuite/gcc.c-torture/execute/struct-aliasing-1.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.c-torture/execute/struct-aliasing-1.c Fri Jan 30 17:31:24 2009 *************** *** 0 **** --- 1,17 ---- + struct S { float f; }; + int __attribute__((noinline)) + foo (int *r, struct S *p) + { + int *q = (int *)&p->f; + int i = *q; + *r = 0; + return i + *q; + } + extern void abort (void); + int main() + { + int i = 1; + if (foo (&i, (struct S *)&i) != 1) + abort (); + return (0); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/asm-b.c gcc-4.3.4/gcc/testsuite/gcc.dg/asm-b.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/asm-b.c Wed Dec 20 22:01:01 2006 --- gcc-4.3.4/gcc/testsuite/gcc.dg/asm-b.c Fri Mar 13 13:25:50 2009 *************** bar (void) *** 24,31 **** #if defined (__powerpc__) || defined (__PPC__) || defined (__ppc__) || defined (_POWER) || defined (__ppc64__) __asm __volatile ("sthbrx %1,0,%2" : "=m" (*z) : "r" (y), "r" (z)); #elif defined __i386__ || defined __x86_64__ ! __asm __volatile ("movb %b1,1(%2); movb %h1,(%2)" : "=m" (*z) : "r" (y), "r" ! (z)); #endif return (x & 1) == 0; } --- 24,31 ---- #if defined (__powerpc__) || defined (__PPC__) || defined (__ppc__) || defined (_POWER) || defined (__ppc64__) __asm __volatile ("sthbrx %1,0,%2" : "=m" (*z) : "r" (y), "r" (z)); #elif defined __i386__ || defined __x86_64__ ! __asm __volatile ("movb %b1,1(%2)\n\tmovb %h1,(%2)" ! : "=m" (*z) : "Q" (y), "R" (z)); #endif return (x & 1) == 0; } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/attr-alias-4.c gcc-4.3.4/gcc/testsuite/gcc.dg/attr-alias-4.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/attr-alias-4.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/attr-alias-4.c Sun Feb 8 19:02:56 2009 *************** *** 0 **** --- 1,4 ---- + /* ICE on invalid alias attribute: PR 35434. */ + /* { dg-do compile } */ + /* { dg-options "" } */ + typedef int i __attribute__((alias("j"))); /* { dg-warning "ignored" } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/builtins-config.h gcc-4.3.4/gcc/testsuite/gcc.dg/builtins-config.h *** gcc-4.3.3/gcc/testsuite/gcc.dg/builtins-config.h Tue Feb 26 00:16:39 2008 --- gcc-4.3.4/gcc/testsuite/gcc.dg/builtins-config.h Wed Jul 29 21:44:37 2009 *************** *** 1,4 **** ! /* Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation. Define macros useful in tests for bulitin functions. */ --- 1,4 ---- ! /* Copyright (C) 2003, 2004, 2005, 2006, 2009 Free Software Foundation. Define macros useful in tests for bulitin functions. */ *************** *** 13,20 **** /* PA HP-UX doesn't have the entire C99 runtime. */ #elif defined(__sgi) /* Irix6 doesn't have the entire C99 runtime. */ ! #elif defined(__FreeBSD__) && (__FreeBSD__ < 5) ! /* FreeBSD before version 5 doesn't have the entire C99 runtime. */ #elif defined(__netware__) /* NetWare doesn't have the entire C99 runtime. */ #elif defined(__vxworks) --- 13,20 ---- /* PA HP-UX doesn't have the entire C99 runtime. */ #elif defined(__sgi) /* Irix6 doesn't have the entire C99 runtime. */ ! #elif defined(__FreeBSD__) && (__FreeBSD__ < 9) ! /* FreeBSD up to version 8 lacks support for cexp and friends. */ #elif defined(__netware__) /* NetWare doesn't have the entire C99 runtime. */ #elif defined(__vxworks) diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/c90-flex-array-2.c gcc-4.3.4/gcc/testsuite/gcc.dg/c90-flex-array-2.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/c90-flex-array-2.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/c90-flex-array-2.c Sun Feb 8 19:01:57 2009 *************** *** 0 **** --- 1,15 ---- + /* [] does not indicate a flexible array member unless it is the field + itself being declared as an incomplete array type rather than a + pointer or other type derived from such a type. PR 36432. */ + /* { dg-do compile } */ + /* { dg-options "-std=iso9899:1990 -pedantic-errors" } */ + + void + f (void) + { + int a[3]; + int (*p)[]; + struct { int (*p)[]; } s; + p = &a; + s.p = &a; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/c99-flex-array-6.c gcc-4.3.4/gcc/testsuite/gcc.dg/c99-flex-array-6.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/c99-flex-array-6.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/c99-flex-array-6.c Sun Feb 8 19:01:57 2009 *************** *** 0 **** --- 1,15 ---- + /* [] does not indicate a flexible array member unless it is the field + itself being declared as an incomplete array type rather than a + pointer or other type derived from such a type. PR 36432. */ + /* { dg-do compile } */ + /* { dg-options "-std=iso9899:1999 -pedantic-errors" } */ + + void + f (void) + { + int a[3]; + int (*p)[]; + struct { int (*p)[]; } s; + p = &a; + s.p = &a; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/convert-bfp-13.c gcc-4.3.4/gcc/testsuite/gcc.dg/dfp/convert-bfp-13.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/convert-bfp-13.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/dfp/convert-bfp-13.c Wed Feb 25 22:08:55 2009 *************** *** 0 **** --- 1,20 ---- + /* Test for bug where fold changed binary operation to decimal + depending on typedefs. */ + /* { dg-options "-std=gnu99" } */ + + extern void abort (void); + extern void exit (int); + + volatile double d = 1.2345675; + + typedef const volatile _Decimal32 d32; + + int + main (void) + { + _Decimal32 a = (d * d); + d32 b = (d * d); + if (a != b) + abort (); + exit (0); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/convert-bfp-14.c gcc-4.3.4/gcc/testsuite/gcc.dg/dfp/convert-bfp-14.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/convert-bfp-14.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/dfp/convert-bfp-14.c Wed Feb 25 22:08:55 2009 *************** *** 0 **** --- 1,17 ---- + /* Test for bug where fold narrowed decimal floating-point + operations. */ + /* { dg-options "-std=gnu99" } */ + + extern void abort (void); + extern void exit (int); + + volatile _Decimal32 f = 1.23456DF; + volatile _Decimal64 d = 1.23456DD; + + int + main (void) + { + if ((double)((_Decimal64)f * (_Decimal64)f) != (double)(d * d)) + abort (); + exit (0); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/convert-dfp-fold-2.c gcc-4.3.4/gcc/testsuite/gcc.dg/dfp/convert-dfp-fold-2.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/convert-dfp-fold-2.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/dfp/convert-dfp-fold-2.c Wed Feb 25 22:08:55 2009 *************** *** 0 **** --- 1,17 ---- + /* Test for bug where fold narrowed decimal floating-point + operations. */ + /* { dg-options "-std=gnu99" } */ + + extern void abort (void); + extern void exit (int); + + volatile _Decimal32 f = 1.23456DF; + volatile _Decimal64 d = 1.23456DD; + + int + main (void) + { + if ((_Decimal128)((_Decimal64)f * (_Decimal64)f) != (_Decimal128)(d * d)) + abort (); + exit (0); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/pr39034.c gcc-4.3.4/gcc/testsuite/gcc.dg/dfp/pr39034.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/pr39034.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/dfp/pr39034.c Wed Feb 25 22:08:55 2009 *************** *** 0 **** --- 1,110 ---- + /* { dg-do run } */ + /* { dg-options "-std=gnu99 -O" } */ + + /* DFP TR 24732 == WG14 / N1176, N1312 */ + + extern void abort (void); + int failures = 0; + + #ifdef DBG + #include + #define FAILURE(MSG) { printf ("line %d: %s\n", __LINE__, MSG); failures++; } + #else + #define FAILURE(MSG) failures++; + #endif + + + /* Test runtime computations. */ + + void + runtime32 (void) + { + volatile float v1 = 28.f, v2 = 3.f, v3 = 9.f, v4 = 31.f, v5 = 3.f, v6 = 10.f; + float b32 = (float)((v1/v2-v3) - (v4/v5-v6)); + _Decimal32 d32 = (float)((v1/v2-v3) - (v4/v5-v6)); + + if (b32) + FAILURE ("runtime: b32 should be zero") + if (d32) + FAILURE ("runtime: d32 should be zero") + } + + void + runtime64 (void) + { + volatile double v1 = 28., v2 = 3., v3 = 9., v4 = 31., v5 = 3., v6 = 10.; + double b64 = (double)((v1/v2-v3) - (v4/v5-v6)); + _Decimal64 d64 = (double)((v1/v2-v3) - (v4/v5-v6)); + + if (b64) + FAILURE ("runtime: b64 should be zero") + if (d64) + FAILURE ("runtime: d64 should be zero") + } + + void + runtime128 (void) + { + volatile long double v1 = 28.l, v2 = 3.l, v3 = 9.l, + v4 = 31.l, v5 = 3.l, v6 = 10.l; + long double b128 = (long double)((v1/v2-v3) - (v4/v5-v6)); + _Decimal128 d128 = (long double)((v1/v2-v3) - (v4/v5-v6)); + + if (b128) + FAILURE ("runtime: b128 should be zero") + if (d128) + FAILURE ("runtime: d128 should be zero") + } + + /* Test constant folding. */ + + void + fold32 (void) + { + double d32 = (float)((28.f/3.f-9.f) - (31.f/3.f-10.f)); + _Decimal32 b32 = (float)((28.f/3.f-9.f) - (31.f/3.f-10.f)); + + if (b32) + FAILURE ("fold: b32 should be zero") + if (d32) + FAILURE ("fold: d32 should be zero") + } + + void + fold64 (void) + { + double b64 = (double)((28./3.-9.) - (31./3.-10.)); + _Decimal64 d64 = (double)((28./3.-9.) - (31./3.-10.)); + + if (b64) + FAILURE ("fold: b64 should be zero") + if (d64) + FAILURE ("fold: d64 should be zero") + } + + void + fold128 (void) + { + long double b128 = (long double)((28./3.-9.) - (31./3.-10.)); + _Decimal128 d128 = (long double)((28./3.-9.) - (31./3.-10.)); + + if (b128) + FAILURE ("fold: b128 should be zero") + if (d128) + FAILURE ("fold: d128 should be zero") + } + + int + main () + { + runtime32 (); + runtime64 (); + runtime128 (); + fold32 (); + fold64 (); + fold128 (); + + if (failures != 0) + abort (); + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/pr39035.c gcc-4.3.4/gcc/testsuite/gcc.dg/dfp/pr39035.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/pr39035.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/dfp/pr39035.c Mon Feb 9 18:51:31 2009 *************** *** 0 **** --- 1,81 ---- + /* { dg-do run } */ + /* { dg-options "-std=gnu99 -O" } */ + + /* DFP TR 24732 == WG14 / N1176, N1312 */ + /* Based on a test from Fred Tydeman. */ + + extern void abort (void); + int failures = 0; + + #ifdef DBG + #include + #define FAILURE(MSG) { printf ("line %d: %s\n", __LINE__, MSG); failures++; } + #else + #define FAILURE(MSG) failures++; + #endif + + /* Test runtime computations. */ + + void + runtime32 (void) + { + volatile _Decimal32 d; + d = 0.0DF; + if (d) + FAILURE ("0.0DF should be zero") + } + + void + runtime64 (void) + { + volatile _Decimal64 d; + d = 0.0DD; + if (d) + FAILURE ("0.0DD should be zero") + } + + void + runtime128 (void) + { + volatile _Decimal128 d; + d = 0.0DL; + if (d) + FAILURE ("0.0DL should be zero") + } + + void + fold32 (void) + { + if (0.0DF) + FAILURE ("0.0DF should be zero") + } + + void + fold64 (void) + { + if (0.0DD) + FAILURE ("0.0DD should be zero") + } + + void + fold128 (void) + { + if (0.0DL) + FAILURE ("0.0DL should be zero") + } + + int + main(void) + { + runtime32 (); + runtime64 (); + runtime128 (); + + fold32 (); + fold64 (); + fold128 (); + + if (failures != 0) + abort (); + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/pr39902.c gcc-4.3.4/gcc/testsuite/gcc.dg/dfp/pr39902.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/pr39902.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/dfp/pr39902.c Mon Aug 3 21:47:39 2009 *************** *** 0 **** --- 1,239 ---- + /* { dg-options "--std=gnu99" } */ + + /* Check that optimizations like (x * 1) to x, or (x * -1) to -x, + do not apply to decimal float computations where trailing zeroes + are significant. */ + + extern void abort (void); + int failcnt; + + #ifdef DBG + extern int printf (const char *, ...); + #define FAILURE { printf ("failed at line %d\n", __LINE__); failcnt++; } + #else + #define FAILURE abort (); + #endif + + #define COMPARE32(A,B) \ + A.i == B.i + + #define COMPARE64(A,B) \ + A.i[0] == B.i[0] && A.i[1] == B.i[1] + + #define COMPARE128(A,B) \ + A.i[0] == B.i[0] && A.i[1] == B.i[1] && A.i[2] == B.i[2] && A.i[3] == B.i[3] + + typedef union { + _Decimal32 d; + unsigned int i; + } u32; + + typedef union { + _Decimal64 d; + unsigned int i[2]; + } u64; + + typedef union { + _Decimal128 d; + unsigned int i[4]; + } u128; + + volatile u32 p32_1; + volatile u32 p32_1_0; + volatile u32 p32_2_0; + volatile u32 m32_1; + volatile u32 m32_1_0; + volatile u32 m32_2_0; + volatile u32 a32; + + volatile u64 p64_1; + volatile u64 p64_1_0; + volatile u64 p64_2_0; + volatile u64 m64_1; + volatile u64 m64_1_0; + volatile u64 m64_2_0; + volatile u64 a64; + + volatile u128 p128_1; + volatile u128 p128_1_0; + volatile u128 p128_2_0; + volatile u128 m128_1; + volatile u128 m128_1_0; + volatile u128 m128_2_0; + volatile u128 a128; + + void + init32 (void) + { + p32_1.d = 1.DF; + p32_1_0.d = 1.0DF; + p32_2_0.d = 2.0DF; + m32_1.d = -1.DF; + m32_1_0.d = -1.0DF; + m32_2_0.d = -2.0DF; + } + + void + init64 (void) + { + p64_1.d = 1.DD; + p64_1_0.d = 1.0DD; + p64_2_0.d = 2.0DD; + m64_1.d = -1.DD; + m64_1_0.d = -1.0DD; + m64_2_0.d = -2.0DD; + } + + void + init128 (void) + { + p128_1.d = 1.DL; + p128_1_0.d = 1.0DL; + p128_2_0.d = 2.0DL; + m128_1.d = -1.DL; + m128_1_0.d = -1.0DL; + m128_2_0.d = -2.0DL; + } + + void + doit32 (void) + { + /* Multiplying by a value with no trailing zero should not change the + quantum exponent. */ + + a32.d = p32_2_0.d * p32_1.d; + if (! (COMPARE32 (a32, p32_2_0))) + FAILURE + + a32.d = p32_2_0.d * 1.DF; + if (! (COMPARE32 (a32, p32_2_0))) + FAILURE + + a32.d = p32_2_0.d * m32_1.d; + if (! (COMPARE32 (a32, m32_2_0))) + FAILURE + + a32.d = p32_2_0.d * -1.DF; + if (! (COMPARE32 (a32, m32_2_0))) + FAILURE + + /* Multiplying by a value with a trailing zero should change the + quantum exponent. */ + + a32.d = p32_2_0.d * p32_1_0.d; + if (COMPARE32 (a32, p32_2_0)) + FAILURE + + a32.d = p32_2_0.d * 1.0DF; + if (COMPARE32 (a32, p32_2_0)) + FAILURE + + a32.d = p32_2_0.d * m32_1_0.d; + if (COMPARE32 (a32, m32_2_0)) + FAILURE + + a32.d = p32_2_0.d * -1.0DF; + if (COMPARE32 (a32, m32_2_0)) + FAILURE + } + + void + doit64 (void) + { + /* Multiplying by a value with no trailing zero should not change the + quantum exponent. */ + + a64.d = p64_2_0.d * p64_1.d; + if (! (COMPARE64 (a64, p64_2_0))) + FAILURE + + a64.d = p64_2_0.d * 1.DD; + if (! (COMPARE64 (a64, p64_2_0))) + FAILURE + + a64.d = p64_2_0.d * m64_1.d; + if (! (COMPARE64 (a64, m64_2_0))) + FAILURE + + a64.d = p64_2_0.d * -1.DD; + if (! (COMPARE64 (a64, m64_2_0))) + FAILURE + + /* Multiplying by a value with a trailing zero should change the + quantum exponent. */ + + a64.d = p64_2_0.d * p64_1_0.d; + if (COMPARE64 (a64, p64_2_0)) + FAILURE + + a64.d = p64_2_0.d * 1.0DD; + if (COMPARE64 (a64, p64_2_0)) + FAILURE + + a64.d = p64_2_0.d * m64_1_0.d; + if (COMPARE64 (a64, m64_2_0)) + FAILURE + + a64.d = p64_2_0.d * -1.0DD; + if (COMPARE64 (a64, m64_2_0)) + FAILURE + } + + void + doit128 (void) + { + /* Multiplying by a value with no trailing zero should not change the + quantum exponent. */ + + a128.d = p128_2_0.d * p128_1_0.d; + if (COMPARE128 (a128, p128_2_0)) + FAILURE + + a128.d = p128_2_0.d * 1.0DL; + if (COMPARE128 (a128, p128_2_0)) + FAILURE + + a128.d = p128_2_0.d * m128_1_0.d; + if (COMPARE128 (a128, m128_2_0)) + FAILURE + + a128.d = p128_2_0.d * -1.0DL; + if (COMPARE128 (a128, m128_2_0)) + FAILURE + + /* Multiplying by a value with a trailing zero should change the + quantum exponent. */ + + a128.d = p128_2_0.d * p128_1.d; + if (! (COMPARE128 (a128, p128_2_0))) + FAILURE + + a128.d = p128_2_0.d * 1.DL; + if (! (COMPARE128 (a128, p128_2_0))) + FAILURE + + a128.d = p128_2_0.d * m128_1.d; + if (! (COMPARE128 (a128, m128_2_0))) + FAILURE + + a128.d = p128_2_0.d * -1.DL; + if (! (COMPARE128 (a128, m128_2_0))) + FAILURE + } + + int + main (void) + { + init32 (); + init64 (); + init128 (); + + doit32 (); + doit64 (); + doit128 (); + + if (failcnt != 0) + abort (); + + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/pr39986.c gcc-4.3.4/gcc/testsuite/gcc.dg/dfp/pr39986.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/dfp/pr39986.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/dfp/pr39986.c Wed May 6 17:16:18 2009 *************** *** 0 **** --- 1,31 ---- + /* { dg-do compile } */ + /* { dg-options "-std=gnu99" } */ + + /* Check that the compiler generates the correct decimal float constants. */ + + _Decimal32 a = 100.223df; + _Decimal32 b = -2.3df; + _Decimal64 c = 3.4e-4dd; + _Decimal64 d = -4.500dd; + _Decimal128 e = 5678901234567.89e+200dl; + _Decimal128 f = -678901.234e-6dl; + + /* The first value is DPD, the second is BID. The order differs depending + on whether the target is big-endian or little-endian. */ + + /* { dg-final { scan-assembler ".long\t(572653859|822183807)\n" } } */ + + /* { dg-final { scan-assembler ".long\t(-1572863965|-1308622825)\n" } } */ + + /* { dg-final { scan-assembler ".long\t(52|34)\n" } } */ + /* { dg-final { scan-assembler ".long\t(572784640|824180736)\n" } } */ + + /* { dg-final { scan-assembler ".long\t(4736|4500)\n" } } */ + /* { dg-final { scan-assembler ".long\t(-1574174720|-1319108608)\n" } } */ + + /* { dg-final { scan-assembler ".long\t(-1975952433|957645077)\n" } } */ + /* { dg-final { scan-assembler ".long\t(190215|132222)\n" } } */ + /* { dg-final { scan-assembler ".long\t(574193664|835452928)\n" } } */ + + /* { dg-final { scan-assembler ".long\t(931280180|678901234)\n" } } */ + /* { dg-final { scan-assembler ".long\t(-1576681472|-1339162624)\n" } } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/init-bad-4.c gcc-4.3.4/gcc/testsuite/gcc.dg/init-bad-4.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/init-bad-4.c Fri Apr 21 23:02:26 2006 --- gcc-4.3.4/gcc/testsuite/gcc.dg/init-bad-4.c Tue Feb 17 13:00:40 2009 *************** *** 2,5 **** /* Origin: Richard Guenther */ /* { dg-do compile } */ ! struct A { } a = (struct A) {{ (X)0 }}; /* { dg-error "no members|extra brace|near|undeclared|constant|compound" } */ --- 2,5 ---- /* Origin: Richard Guenther */ /* { dg-do compile } */ ! struct A { } a = (struct A) {{ (X)0 }}; /* { dg-error "no members|extra brace|near|undeclared|constant|compound|excess" } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/init-bad-6.c gcc-4.3.4/gcc/testsuite/gcc.dg/init-bad-6.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/init-bad-6.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/init-bad-6.c Wed Feb 4 13:07:43 2009 *************** *** 0 **** --- 1,12 ---- + /* ICE arising from bug computing composite type of zero-length array + types: PR 35433. */ + /* { dg-do compile } */ + /* { dg-options "" } */ + + typedef int* X; + typedef int* Y; + + X (*p)[][0]; + Y (*q)[][0]; + + typeof(*(0 ? p : q)) x = { 0 }; /* { dg-warning "excess elements in array initializer|near initialization" } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/noncompile/init-5.c gcc-4.3.4/gcc/testsuite/gcc.dg/noncompile/init-5.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/noncompile/init-5.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/noncompile/init-5.c Tue Feb 17 13:00:40 2009 *************** *** 0 **** --- 1,4 ---- + /* Test for ICE after syntax error in initializer with range + designator: PR 35446. */ + + int a[2][2] = { [0 ... 1] = { ; } }; /* { dg-error "expected expression" } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/noncompile/pr35444-1.c gcc-4.3.4/gcc/testsuite/gcc.dg/noncompile/pr35444-1.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/noncompile/pr35444-1.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/noncompile/pr35444-1.c Fri Feb 13 13:10:52 2009 *************** *** 0 **** --- 1,3 ---- + /* PR 35444: ICE from pending VLA sizes in invalid parameter list. */ + void foo(int n, int a[n], int 0); /* { dg-error "expected" } */ + void bar() {} diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/noncompile/pr35444-2.c gcc-4.3.4/gcc/testsuite/gcc.dg/noncompile/pr35444-2.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/noncompile/pr35444-2.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/noncompile/pr35444-2.c Fri Feb 13 13:10:52 2009 *************** *** 0 **** --- 1,4 ---- + /* PR 35444: ICE from pending VLA sizes in invalid parameter list. + Similar case to the PR, but with "..." before the syntax error. */ + void foo(int n, int a[n], ... 0); /* { dg-error "expected" } */ + void bar() {} diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/pr32041.c gcc-4.3.4/gcc/testsuite/gcc.dg/pr32041.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/pr32041.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/pr32041.c Thu Jun 25 09:44:12 2009 *************** *** 0 **** --- 1,12 ---- + /* PR c/32041 */ + /* { dg-do compile } */ + + struct S + { + int c; + struct { float f; } sa[2]; + }; + + char a[__builtin_offsetof (struct S, sa->f) + == __builtin_offsetof (struct S, sa[0].f) ? 1 : -1]; + diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/pr34027-1.c gcc-4.3.4/gcc/testsuite/gcc.dg/pr34027-1.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/pr34027-1.c Mon Nov 12 13:24:06 2007 --- gcc-4.3.4/gcc/testsuite/gcc.dg/pr34027-1.c Tue May 26 10:17:19 2009 *************** unsigned long foobar(unsigned long ns) *** 8,12 **** return ns; } ! /* { dg-final { scan-tree-dump "ns % 10000" "optimized" } } */ /* { dg-final { cleanup-tree-dump "optimized" } } */ --- 8,16 ---- return ns; } ! /* This test was originally introduced to test that we transform ! to ns % 10000. See the discussion of PR 32044 why we do not do ! that anymore. */ ! /* { dg-final { scan-tree-dump-times "%" 0 "optimized" } } */ ! /* { dg-final { scan-tree-dump-times "/" 0 "optimized" } } */ /* { dg-final { cleanup-tree-dump "optimized" } } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/pr38245-3.c gcc-4.3.4/gcc/testsuite/gcc.dg/pr38245-3.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/pr38245-3.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/pr38245-3.c Fri Jan 30 22:36:22 2009 *************** *** 0 **** --- 1,112 ---- + /* PR rtl-optimization/38245 */ + /* { dg-do run } */ + /* { dg-additional-sources "pr38245-4.c" } */ + /* { dg-options "-O2" } */ + + #include "pr38245-3.h" + + extern void abort (void); + + struct A { int i, j; union { short s[4]; long long l; }; char pad[512]; } a; + int globv = 6; + + void __attribute__((noinline)) + f1 (void) + { + a.s[2] = b1 (6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21); + a.l = 6; + } + + void __attribute__((noinline)) + f2 (void) + { + a.s[2] = b2 (6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21); + a.l = 6; + } + + void __attribute__((noinline)) + f3 (void) + { + struct B b = { 30, 31, { 32, 33 } }; + a.s[2] = b3 (6, 7, 8, 9, 10, 11, 12, b, 14, b, 16, b, 18, 19, 20, 21, + 6, b, 8, b, 10, 11, 12, 13, 14, b, 16, b, 18, 19, 20, 21); + a.l = 6; + } + + void __attribute__((noinline)) + f4 (void) + { + struct B b = { 30, 31, { 32, 33 } }; + a.s[2] = b4 (6, 7, 8, 9, 10, 11, 12, b, 14, b, 16, b, 18, 19, 20, 21, + 6, b, 8, b, 10, 11, 12, 13, 14, b, 16, b, 18, 19, 20, 21); + a.l = 6; + } + + void __attribute__((noinline)) + f5 (void) + { + a.s[2] = b5 (6.0, 7, 8, 9, 10, 11, 21.0, 22.0, 23.0); + a.l = 6; + } + + void __attribute__((noinline)) + f6 (void) + { + a.s[2] = b6 (6.0, 7, 8, 9, 10, 11, 21.0, 22.0, 23.0); + a.l = 6; + } + + void __attribute__((noinline)) + f7 (void) + { + a.s[2] = b7 (6, 7); + a.l = 6; + } + + void __attribute__((noinline)) + f8 (void) + { + a.s[2] = b8 (6, 7); + a.l = 6; + } + + void __attribute__((noinline)) + f9 (void) + { + a.s[2] = b9 (6, 7, 8, 9, 10, 11, 12); + a.l = 6; + } + + void __attribute__((noinline)) + f10 (void) + { + a.s[2] = b10 (6, 7, 8, 9, 10, 11, 12); + a.l = 6; + } + + int + main (void) + { + char buf[256]; + int i; + for (i = 0; i < (int) sizeof buf; i++) + buf[i] = i; + asm volatile ("" : : "r" (buf) : "memory"); + f1 (); + f2 (); + f3 (); + f4 (); + f5 (); + f6 (); + f7 (); + f8 (); + f9 (); + f10 (); + asm volatile ("" : : "r" (buf) : "memory"); + for (i = 0; i < (int) sizeof buf; i++) + if (buf[i] != (char) i) + abort (); + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/pr38245-3.h gcc-4.3.4/gcc/testsuite/gcc.dg/pr38245-3.h *** gcc-4.3.3/gcc/testsuite/gcc.dg/pr38245-3.h Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/pr38245-3.h Fri Jan 30 22:36:22 2009 *************** *** 0 **** --- 1,35 ---- + /* PR rtl-optimization/38245 */ + + struct B { long a, b; char p[32]; }; + extern int globv; + + extern int b1 (long long, long, long, long, long, long, long, long, + long long, long, long, long, long, long, long, long, + long long, long, long, long, long, long, long, long, + long long, long, long, long, long, long, long, long) + __attribute__((pure, noinline)); + extern int b2 (long long, long, long, long, long, long, long, long, + long long, long, long, long, long, long, long, long, + long long, long, long, long, long, long, long, long, + long long, long, long, long, long, long, long, long) + __attribute__((const, noinline)); + extern int b3 (long long, long, long, long, long, long, long, struct B, + long long, struct B, long, struct B, long, long, long, long, + long long, struct B, long, struct B, long, long, long, long, + long long, struct B, long, struct B, long, long, long, long) + __attribute__((pure, noinline)); + extern int b4 (long long, long, long, long, long, long, long, struct B, + long long, struct B, long, struct B, long, long, long, long, + long long, struct B, long, struct B, long, long, long, long, + long long, struct B, long, struct B, long, long, long, long) + __attribute__((const, noinline)); + extern int b5 () __attribute__((pure, noinline)); + extern int b6 () __attribute__((const, noinline)); + extern int b7 (int, int) + __attribute__((pure, noinline)); + extern int b8 (int, int) + __attribute__((const, noinline)); + extern int b9 (int, int, int, int, int, int, int) + __attribute__((pure, noinline)); + extern int b10 (int, int, int, int, int, int, int) + __attribute__((const, noinline)); diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/pr38245-4.c gcc-4.3.4/gcc/testsuite/gcc.dg/pr38245-4.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/pr38245-4.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/pr38245-4.c Fri Jan 30 22:36:22 2009 *************** *** 0 **** --- 1,107 ---- + /* PR rtl-optimization/38245 */ + /* { dg-do compile } */ + /* { dg-options "" } */ + + #include "pr38245-3.h" + + int + b1 (long long a1, long a2, long a3, long a4, + long a5, long a6, long a7, long a8, + long long a9, long a10, long a11, long a12, + long a13, long a14, long a15, long a16, + long long a17, long a18, long a19, long a20, + long a21, long a22, long a23, long a24, + long long a25, long a26, long a27, long a28, + long a29, long a30, long a31, long a32) + { + return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + + a11 + a12 + a13 + a14 + a15 + a16 + a17 + a18 + a19 + a20 + + a21 + a22 + a23 + a24 + a25 + a26 + a27 + a28 + a29 + a30 + + a31 + a32 + globv; + } + + int + b2 (long long a1, long a2, long a3, long a4, + long a5, long a6, long a7, long a8, + long long a9, long a10, long a11, long a12, + long a13, long a14, long a15, long a16, + long long a17, long a18, long a19, long a20, + long a21, long a22, long a23, long a24, + long long a25, long a26, long a27, long a28, + long a29, long a30, long a31, long a32) + { + return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + + a11 + a12 + a13 + a14 + a15 + a16 + a17 + a18 + a19 + a20 + + a21 + a22 + a23 + a24 + a25 + a26 + a27 + a28 + a29 + a30 + + a31 + a32; + } + + int + b3 (long long a1, long a2, long a3, long a4, + long a5, long a6, long a7, struct B a8, + long long a9, struct B a10, long a11, struct B a12, + long a13, long a14, long a15, long a16, + long long a17, struct B a18, long a19, struct B a20, + long a21, long a22, long a23, long a24, + long long a25, struct B a26, long a27, struct B a28, + long a29, long a30, long a31, long a32) + { + return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8.a + a9 + a10.a + + a11 + a12.a + a13 + a14 + a15 + a16 + a17 + a18.a + a19 + a20.a + + a21 + a22 + a23 + a24 + a25 + a26.a + a27 + a28.a + a29 + a30 + + a31 + a32 + globv; + } + + int + b4 (long long a1, long a2, long a3, long a4, + long a5, long a6, long a7, struct B a8, + long long a9, struct B a10, long a11, struct B a12, + long a13, long a14, long a15, long a16, + long long a17, struct B a18, long a19, struct B a20, + long a21, long a22, long a23, long a24, + long long a25, struct B a26, long a27, struct B a28, + long a29, long a30, long a31, long a32) + { + return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8.a + a9 + a10.a + + a11 + a12.a + a13 + a14 + a15 + a16 + a17 + a18.a + a19 + a20.a + + a21 + a22 + a23 + a24 + a25 + a26.a + a27 + a28.a + a29 + a30 + + a31 + a32; + } + + int + b5 (double a1, int a2, int a3, int a4, int a5, int a6, double a7, + double a8, double a9) + { + return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + globv; + } + + int + b6 (double a1, int a2, int a3, int a4, int a5, int a6, double a7, + double a8, double a9) + { + return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9; + } + + int + b7 (int a1, int a2) + { + return a1 + a2 + globv; + } + + int + b8 (int a1, int a2) + { + return a1 + a2; + } + + int + b9 (int a1, int a2, int a3, int a4, int a5, int a6, int a7) + { + return a1 + a2 + a3 + a4 + a5 + a6 + a7 + globv; + } + + int + b10 (int a1, int a2, int a3, int a4, int a5, int a6, int a7) + { + return a1 + a2 + a3 + a4 + a5 + a6 + a7; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/pr38364.c gcc-4.3.4/gcc/testsuite/gcc.dg/pr38364.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/pr38364.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/pr38364.c Fri Jan 30 22:36:22 2009 *************** *** 0 **** --- 1,79 ---- + /* PR middle-end/38364 */ + /* { dg-do run } */ + /* { dg-options "-O2 -ftrapv" } */ + + extern void abort (void); + + static inline short + f1 (short x, short y) + { + if (x > 0) + { + if (y > 0) + { + if (x > __SHRT_MAX__ / y) + return x; + } + else if (y < (-__SHRT_MAX__ - 1) / x) + return x; + } + else + { + if (y > 0) + { + if (x < (-__SHRT_MAX__ - 1) / y) + return x; + } + else if (x != 0 && y < __SHRT_MAX__ / x) + return x; + } + return x * y; + } + + static inline signed char + f2 (signed char x, signed char y) + { + if (((x ^ y) & (((x ^ ((x ^ y) & (1 << (__CHAR_BIT__ - 1)))) - y) ^ y)) < 0) + return x; + return x - y; + } + + unsigned int v; + + int + f3 (int x, unsigned int y) + { + f1 (1, 1); + return 1; + } + + int + f4 (unsigned short x) + { + v = x; + return 1; + } + + int + f5 (int x) + { + if (f2 (x, 1)) + f1 (1, f4 (1)); + return x; + } + + int + f6 (unsigned int x) + { + f4 (x < (1 != f5 (0))); + return x; + } + + int + main (void) + { + f6 (1); + if (v != 0) + abort (); + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/pr38615.c gcc-4.3.4/gcc/testsuite/gcc.dg/pr38615.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/pr38615.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/pr38615.c Tue Jan 27 18:45:49 2009 *************** *** 0 **** --- 1,19 ---- + /* { dg-do run } */ + + int t; + extern void abort (void); + + int f(int t, const int *a) + { + const int b[] = { 1, 2, 3}; + if (!t) + return f(1, b); + return b == a; + } + + int main(void) + { + if (f(0, 0)) + abort (); + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/pr38902.c gcc-4.3.4/gcc/testsuite/gcc.dg/pr38902.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/pr38902.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/pr38902.c Sat Jan 24 15:31:13 2009 *************** *** 0 **** --- 1,131 ---- + /* PR target/38902 */ + /* { dg-do run } */ + /* { dg-options "-O2 -fstack-protector" } */ + /* { dg-require-effective-target fstack_protector } */ + + #ifdef DEBUG + #include + #define debug(format, args...) printf (format , ## args) + #else + extern int sprintf (char *, const char *, ...); + #define debug(format, args...) + #endif + + extern void abort (void); + + /* + + Copyright (C) 2009 Canonical, Ltd. + Author: Kees Cook + License: GPLv3 + + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38616 + https://bugs.launchpad.net/ubuntu/+source/gcc-4.3/+bug/316019 + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38902 + + gcc -O2 -fstack-protector truncate.c -o truncate + + Broken: + + Only the first operation fails, so create a new function for each test. + Source must be local (literal or stack) + + __builtin_memmove + __builtin_memcpy + __builtin_strcpy (optimized to __builtin_memcpy?) + sprintf (direct) (optmized to __builtin_strcpy?) + sprintf (via %s) (optmized to __builtin_strcpy?) + + OK: + __builtin_strcat + sprintf (complex format) + + */ + + char *heap = "1234567890abcdefghijklmnopqrstuvwxyz"; + + int failed = 0; + + #define CHECK(count, a...) \ + void test##count (void) \ + { \ + char *local = "1234567890abcdefghijklmnopqrstuvwxyz"; \ + char buffer[1024]=""; \ + a; \ + if (__builtin_strcmp(buffer, heap) == 0) { \ + debug("Okay(%d):\n\t%s\n", count, # a); \ + } \ + else { \ + debug("Failed(%d):\n\t%s\n", count, # a); \ + failed++; \ + } \ + } + + + CHECK( 0, __builtin_memcpy (buffer, "1234567890abcdefghijklmnopqrstuvwxyz", __builtin_strlen("1234567890abcdefghijklmnopqrstuvwxyz")+1); ); + CHECK( 1, __builtin_memcpy (buffer, local, __builtin_strlen(local)+1); ); + CHECK( 2, __builtin_memcpy (buffer, heap, __builtin_strlen(heap)+1); ); + + CHECK( 3, __builtin_memmove (buffer, "1234567890abcdefghijklmnopqrstuvwxyz", __builtin_strlen("1234567890abcdefghijklmnopqrstuvwxyz")+1); ); + CHECK( 4, __builtin_memmove (buffer, local, __builtin_strlen(local)+1); ); + CHECK( 5, __builtin_memmove (buffer, heap, __builtin_strlen(heap)+1); ); + + CHECK( 6, __builtin_strcpy (buffer, "1234567890abcdefghijklmnopqrstuvwxyz"); ); + CHECK( 7, __builtin_strcpy (buffer, local); ); + CHECK( 8, __builtin_strcpy (buffer, heap); ); + + CHECK( 9, sprintf (buffer, "1234567890abcdefghijklmnopqrstuvwxyz"); ); + CHECK(10, sprintf (buffer, local); ); + CHECK(11, sprintf (buffer, heap); ); + + CHECK(12, sprintf (buffer, "%s", "1234567890abcdefghijklmnopqrstuvwxyz"); ); + CHECK(13, sprintf (buffer, "%s", local); ); + CHECK(14, sprintf (buffer, "%s", heap); ); + + CHECK(15, __builtin_strcat (buffer, "1234567890abcdefghijklmnopqrstuvwxyz"); ); + CHECK(16, __builtin_strcat (buffer, local); ); + CHECK(17, __builtin_strcat (buffer, heap); ); + + void mongoose(void) + { + char buffer[1024]=""; + sprintf (buffer, "%s", "1234567890abcdefghijklmnopqrstuvwxyz");; + if (__builtin_strcmp(buffer, heap) == 0) { + debug("Okay(%d):\n\t%s\n", -1, "sprintf (buffer, \"%s\", \"1234567890abcdefghijklmnopqrstuvwxyz\");"); + } + else { + debug("Failed(%d):\n\t%s\n", -1, "sprintf (buffer, \"%s\", \"1234567890abcdefghijklmnopqrstuvwxyz\");"); + failed++; + } + } + + int main (int argc, char *argv[]) + { + test0(); + test1(); + test2(); + test3(); + test4(); + test5(); + test6(); + test7(); + test8(); + test9(); + test10(); + test11(); + + // wtf, why are these different?! + test12(); + mongoose(); + + test13(); + test14(); + test15(); + test16(); + test17(); + + if (failed) + abort (); + + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/pr38932.c gcc-4.3.4/gcc/testsuite/gcc.dg/pr38932.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/pr38932.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/pr38932.c Mon Jan 26 15:54:18 2009 *************** *** 0 **** --- 1,19 ---- + /* { dg-do compile } */ + /* { dg-options "-O2" } */ + + /* This variable needed only to exercise FRE instead of CCP. */ + unsigned char g; + + extern void abort(); + + void f (long long int p) + { + g = 255; + if (p >= (-9223372036854775807LL - 1) - (signed char) g) + p = 1; + + if (p) + abort (); + } + + diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/pr38934.c gcc-4.3.4/gcc/testsuite/gcc.dg/pr38934.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/pr38934.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/pr38934.c Fri Jul 10 16:00:13 2009 *************** *** 0 **** --- 1,19 ---- + /* PR middle-end/38934 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -std=gnu99 -w" } */ + + /* This variable needed only to work around earlier optimizations than VRP. */ + unsigned char g; + + extern void abort (); + + void + f (long long int p) + { + g = 255; + if (p >= -9223372036854775808LL - (signed char) g) + p = 1; + + if (p) + abort (); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/pr39084.c gcc-4.3.4/gcc/testsuite/gcc.dg/pr39084.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/pr39084.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/pr39084.c Tue Feb 10 16:45:37 2009 *************** *** 0 **** --- 1,11 ---- + /* { dg-do compile } */ + /* { dg-options "-O2" } */ + + struct color { int i; }; + static const struct color col; + struct color * f(void) + { + return (struct color *) &col; + } + + struct color { int j; }; /* { dg-error "redefinition of" } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/pr39455.c gcc-4.3.4/gcc/testsuite/gcc.dg/pr39455.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/pr39455.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/pr39455.c Wed Jun 17 19:45:52 2009 *************** *** 0 **** --- 1,13 ---- + /* PR tree-optimization/39455 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -fprefetch-loop-arrays -w" } */ + + void + foo (char *x, unsigned long y, unsigned char *z) + { + unsigned int c[256], *d; + + for (d = c + 1; d < c + 256; ++d) + *d += d[-1]; + x[--c[z[y]]] = 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/pr40550.c gcc-4.3.4/gcc/testsuite/gcc.dg/pr40550.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/pr40550.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/pr40550.c Sun Jun 28 23:12:37 2009 *************** *** 0 **** --- 1,34 ---- + /* { dg-do run } */ + /* { dg-options "-msse" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */ + + #ifdef __i386__ + #include "cpuid.h" + #endif + + typedef float v2sf __attribute__ ((vector_size (2 * sizeof(float)))); + + static void test (void) + { + v2sf a = {1.0, 0.0}; + v2sf b = {0.0, 1.0}; + v2sf d; + d = a + b; + } + + int main () + { + + #ifdef __i386__ + unsigned int eax, ebx, ecx, edx; + + if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) + return 0; + + if (!(edx & bit_SSE)) + return 0; + #endif + + test (); + + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/pr40669.c gcc-4.3.4/gcc/testsuite/gcc.dg/pr40669.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/pr40669.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/pr40669.c Tue Jul 7 12:44:32 2009 *************** *** 0 **** --- 1,27 ---- + /* PR middle-end/40669 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -ffast-math" } */ + + double _Complex + test (int d, int t, double *x, double *y, double *z, int n, + double _Complex (*fnp) (double)) + { + int m = n / 2; + double min = y[t], max = z[t], med = x[m * d + t]; + double _Complex result = 0.0; + + if (n == 0) + return 0.0; + + if (min > med) + result += test (d, (t + 1) % d, x + (m + 1) * d, y, z, n - m - 1, fnp); + else if (max < med) + result += test (d, (t + 1) % d, x, y, z, m, fnp); + else + { + result += fnp (y[0] + x[m]); + result += test (d, (t + 1) % d, x + (m + 1) * d, y, z, n - m - 1, fnp); + } + return result; + } + diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/special/gcsec-1.c gcc-4.3.4/gcc/testsuite/gcc.dg/special/gcsec-1.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/special/gcsec-1.c Mon May 7 18:28:41 2007 --- gcc-4.3.4/gcc/testsuite/gcc.dg/special/gcsec-1.c Sat Jul 25 14:01:53 2009 *************** *** 3,12 **** /* { dg-do run { xfail rs6000-*-aix* powerpc*-*-aix* } } */ /* { dg-require-gc-sections "" } */ ! /* { dg-options "-ffunction-sections -fdata-sections -Wl,--gc-sections -static" } */ ! /* { dg-options "-ffunction-sections -fdata-sections -Wl,--gc-sections -static" { target native } } */ ! /* Solaris 10 does not support static linking; there is no libc.a. */ ! /* { dg-options "-ffunction-sections -fdata-sections -Wl,--gc-sections" { target *-*-netware* i?86-*-solaris2.1[0-9] } } */ #include --- 3,10 ---- /* { dg-do run { xfail rs6000-*-aix* powerpc*-*-aix* } } */ /* { dg-require-gc-sections "" } */ ! /* { dg-options "-ffunction-sections -fdata-sections -Wl,--gc-sections" } */ ! /* { dg-options "-ffunction-sections -fdata-sections -Wl,--gc-sections -static" { target static } } */ #include diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/struct/w_prof_single_str_global.c gcc-4.3.4/gcc/testsuite/gcc.dg/struct/w_prof_single_str_global.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/struct/w_prof_single_str_global.c Thu Dec 13 13:47:22 2007 --- gcc-4.3.4/gcc/testsuite/gcc.dg/struct/w_prof_single_str_global.c Sun Feb 15 08:09:49 2009 *************** main () *** 22,28 **** if (str.a != res) abort (); ! return str.a; } /*--------------------------------------------------------------------------*/ --- 22,30 ---- if (str.a != res) abort (); ! /* POSIX ignores all but the 8 low-order bits, but other ! environments may not. */ ! return (str.a & 255); } /*--------------------------------------------------------------------------*/ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_global.c gcc-4.3.4/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_global.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_global.c Thu Dec 13 13:47:22 2007 --- gcc-4.3.4/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_global.c Sun Feb 15 08:09:49 2009 *************** main () *** 25,31 **** if (str.a != res) abort (); ! return str.a; } /*--------------------------------------------------------------------------*/ --- 25,33 ---- if (str.a != res) abort (); ! /* POSIX ignores all but the 8 low-order bits, but other ! environments may not. */ ! return (str.a & 255); } /*--------------------------------------------------------------------------*/ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_local.c gcc-4.3.4/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_local.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_local.c Thu Dec 13 13:47:22 2007 --- gcc-4.3.4/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_local.c Sun Feb 15 08:09:49 2009 *************** main () *** 25,31 **** if (str.a != res) abort (); ! return str.a; } /*--------------------------------------------------------------------------*/ --- 25,33 ---- if (str.a != res) abort (); ! /* POSIX ignores all but the 8 low-order bits, but other ! environments may not. */ ! return (str.a & 255); } /*--------------------------------------------------------------------------*/ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_pointer.c gcc-4.3.4/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_pointer.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_pointer.c Thu Dec 13 13:47:22 2007 --- gcc-4.3.4/gcc/testsuite/gcc.dg/struct/wo_prof_single_str_pointer.c Sun Feb 15 08:09:49 2009 *************** main () *** 29,35 **** if (p->a != res) abort (); ! return p->a; } /*--------------------------------------------------------------------------*/ --- 29,37 ---- if (p->a != res) abort (); ! /* POSIX ignores all but the 8 low-order bits, but other ! environments may not. */ ! return (p->a & 255); } /*--------------------------------------------------------------------------*/ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/tls/diag-6.c gcc-4.3.4/gcc/testsuite/gcc.dg/tls/diag-6.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/tls/diag-6.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/tls/diag-6.c Thu Feb 5 12:13:52 2009 *************** *** 0 **** --- 1,8 ---- + /* Invalid tls_model attributes. PR 35435. */ + /* { dg-require-effective-target tls } */ + + int v __attribute__((tls_model("initial-exec"))); /* { dg-warning "attribute ignored" } */ + typedef int X __attribute__((tls_model("initial-exec"))); /* { dg-warning "attribute ignored" } */ + void f(int x __attribute__((tls_model("initial-exec")))); /* { dg-warning "attribute ignored" } */ + __thread int a __attribute__((tls_model(1))); /* { dg-error "tls_model argument not a string" } */ + __thread int b __attribute__((tls_model("unknown"))); /* { dg-error "tls_model argument must be one of" } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr36891.c gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr36891.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr36891.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr36891.c Thu Jun 25 09:44:12 2009 *************** *** 0 **** --- 1,21 ---- + /* { dg-do compile } */ + /* { dg-options "-ffast-math" } */ + /* { dg-options "-ffast-math -msse" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */ + + #define __vector __attribute__((vector_size(16) )) + __vector float f(void); + void g(__vector float); + void RRB( __vector float vdist, __vector float vx) + { + int detail; + for(detail = 0; detail < 5;++detail) + { + __vector float frand = f(); + __vector float pullperc = frand/ vdist; + __vector float pullx = vx * pullperc; + g(pullx); + } + } + + /* Ignore a warning that is irrelevant to the purpose of this test. */ + /* { dg-prune-output ".*GCC vector returned by reference.*" } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr39241.c gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr39241.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr39241.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr39241.c Wed Feb 25 18:55:14 2009 *************** *** 0 **** --- 1,16 ---- + /* { dg-do compile } */ + /* { dg-options "-w" } */ + + static inline int + foo (float f) + { + return *((int *) &f) - 1; + } + + float + bar (float x, float y, float *z) + { + float c = y < 0.002f ? 0.002f : y; + float d = x < c ? c : x; + return z[foo (c)] + z[foo (d * 255.0f)]; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr39855.c gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr39855.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr39855.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr39855.c Fri Jun 19 12:23:16 2009 *************** *** 0 **** --- 1,24 ---- + /* PR c/39855 */ + /* { dg-do run { target { int32plus } } } */ + + extern void abort (void); + + int i, j, k; + + int + foo (void) + { + return ++i; + } + + int + main () + { + if (__CHAR_BIT__ != 8 || sizeof (int) != 4) + return 0; + j = foo () << 30 << 2; + k = (unsigned) foo () >> 16 >> 16; + if (i != 2 || j != 0 || k != 0) + abort (); + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr40328.c gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr40328.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr40328.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr40328.c Tue Jul 7 12:44:32 2009 *************** *** 0 **** --- 1,11 ---- + /* { dg-do compile } */ + /* { dg-options "-fno-tree-sra" } */ + + _Complex float foo(void) + { + _Complex float a[64] = {}; + _Complex float x; + x = a[1]; + return x; + } + diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr40470-1.c gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr40470-1.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr40470-1.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr40470-1.c Thu Jun 18 21:23:29 2009 *************** *** 0 **** --- 1,22 ---- + /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ + /* { dg-options "-msse4" } */ + #include + __m128i load (char *); + char * + foo (char *p1, char *p2, + int bmsk, __m128i mask1, __m128i mask2) + { + int len = 0; + __m128i frag1, frag2; + int cmp_s; + if( !p2[0]) return p1; + if( !p1[0] ) return NULL; + frag2 = load (p2); + frag1 = load (p1); + frag2 = _mm_blendv_epi8(frag2, mask2, mask1); + frag1 = _mm_blendv_epi8(frag1, mask2, mask1); + cmp_s = _mm_cmpistrs(frag2, frag1, 0x0c); + if( cmp_s ) + __asm("bsfl %[bmsk], %[len]" : [len] "=r" (len) : [bmsk] "r" (bmsk) ); + return p1 + len; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr40470-2.c gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr40470-2.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr40470-2.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr40470-2.c Thu Jun 18 21:23:29 2009 *************** *** 0 **** --- 1,27 ---- + /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ + /* { dg-options "-msse4" } */ + #include + __m128i load (char *); + char * + foo (const unsigned char *s1, const unsigned char *s2, + int bmsk, __m128i frag2) + { + int len = 0; + char *p1 = (char *) s1; + char *p2 = (char *) s2; + __m128i frag1, fruc, mask; + int cmp_c, cmp_s; + if( !p2[0]) return (char *) s1; + if( !p1[0] ) return NULL; + if( p2[1]) frag2 = load (p2); + frag1 = load (p1); + fruc = _mm_loadu_si128 ((__m128i *) s1); + mask = _mm_cmpistrm(fruc, frag2, 0x44); + frag2 = _mm_blendv_epi8(frag2, mask, mask); + frag1 = _mm_blendv_epi8(frag1, mask, mask); + cmp_c = _mm_cmpistrc(frag2, frag1, 0x0c); + cmp_s = _mm_cmpistrs(frag2, frag1, 0x0c); + if( cmp_s & cmp_c ) + __asm("bsfl %[bmsk], %[len]" : [len] "=r" (len) : [bmsk] "r" (bmsk) ); + return p2 + len; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr40470-3.c gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr40470-3.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr40470-3.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr40470-3.c Thu Jun 18 21:23:29 2009 *************** *** 0 **** --- 1,22 ---- + /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ + /* { dg-options "-msse4" } */ + #include + __m128i load (char *); + char * + foo (char *p1, char *p2, + int bmsk, __m128i mask1, __m128i mask2) + { + int len = 0; + __m128i frag1, frag2; + int cmp_s; + if( !p2[0]) return p1; + if( !p1[0] ) return NULL; + frag2 = load (p2); + frag1 = load (p1); + frag2 = _mm_blendv_epi8(frag2, mask2, mask1); + frag1 = _mm_blendv_epi8(frag1, mask1, mask2); + cmp_s = _mm_cmpistrs(frag2, frag1, 0x0c); + if( cmp_s ) + __asm("bsfl %[bmsk], %[len]" : [len] "=r" (len) : [bmsk] "r" (bmsk) ); + return p1 + len; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr40470-4.c gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr40470-4.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/torture/pr40470-4.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/torture/pr40470-4.c Thu Jun 18 21:23:29 2009 *************** *** 0 **** --- 1,29 ---- + /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ + /* { dg-options "-msse4" } */ + #include + __m128i load (char *); + char * + foo (const unsigned char *s1, const unsigned char *s2, + int bmsk, __m128i frag2) + { + int len = 0; + char *p1 = (char *) s1; + char *p2 = (char *) s2; + __m128i frag1, fruc1, fruc2, mask1, mask2; + int cmp_c, cmp_s; + if( !p2[0]) return (char *) s1; + if( !p1[0] ) return NULL; + if( p2[1]) frag2 = load (p2); + frag1 = load (p1); + fruc1 = _mm_loadu_si128 ((__m128i *) s1); + fruc2 = _mm_loadu_si128 ((__m128i *) s2); + mask1 = _mm_cmpistrm(fruc1, frag2, 0x44); + mask2 = _mm_cmpistrm(fruc2, frag1, 0x14); + frag2 = _mm_blendv_epi8(frag2, mask1, mask2); + frag1 = _mm_blendv_epi8(frag1, mask2, mask1); + cmp_c = _mm_cmpistrc(frag2, frag1, 0x0c); + cmp_s = _mm_cmpistrs(frag2, frag1, 0x0c); + if( cmp_s & cmp_c ) + __asm("bsfl %[bmsk], %[len]" : [len] "=r" (len) : [bmsk] "r" (bmsk) ); + return p2 + len; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/tree-ssa/pr32044.c gcc-4.3.4/gcc/testsuite/gcc.dg/tree-ssa/pr32044.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/tree-ssa/pr32044.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/tree-ssa/pr32044.c Tue May 26 10:17:19 2009 *************** *** 0 **** --- 1,55 ---- + /* { dg-do compile } */ + /* { dg-options "-O2 -fdump-tree-empty -fdump-tree-final_cleanup" } */ + + int foo (int n) + { + while (n >= 45) + n -= 45; + + return n; + } + + int bar (int n) + { + while (n >= 64) + n -= 64; + + return n; + } + + int bla (int n) + { + int i = 0; + + while (n >= 45) + { + i++; + n -= 45; + } + + return i; + } + + int baz (int n) + { + int i = 0; + + while (n >= 64) + { + i++; + n -= 64; + } + + return i; + } + + /* The loops computing division/modulo by 64 should be eliminated. */ + /* { dg-final { scan-tree-dump-times "Removing empty loop" 2 "empty" } } */ + + /* There should be no division/modulo in the final dump (division and modulo + by 64 are done using bit operations). */ + /* { dg-final { scan-tree-dump-times "/" 0 "final_cleanup" } } */ + /* { dg-final { scan-tree-dump-times "%" 0 "final_cleanup" } } */ + + /* { dg-final { cleanup-tree-dump "empty" } } */ + /* { dg-final { cleanup-tree-dump "final_cleanup" } } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/tree-ssa/pr40087.c gcc-4.3.4/gcc/testsuite/gcc.dg/tree-ssa/pr40087.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/tree-ssa/pr40087.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/tree-ssa/pr40087.c Wed Jun 17 19:45:52 2009 *************** *** 0 **** --- 1,30 ---- + /* { dg-do run } */ + /* { dg-options "-O1 " } */ + + extern void abort (void); + + static void __attribute__((always_inline)) + reverse(int *first, int *last) + { + if (first == last--) + return; + while (first != last) + { + int t = *first; + *first = *last; + *last = t; + if (++first == last--) + break; + } + } + + int main() + { + int seq[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; + + reverse(seq, seq + 8); + if (seq[3] != 5 || seq[4] != 4) + abort (); + + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c gcc-4.3.4/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c Fri Jan 30 17:31:24 2009 *************** *** 0 **** --- 1,15 ---- + /* { dg-do "compile" } */ + /* { dg-options "-O2 -fdump-tree-fre" } */ + + struct S { float f; }; + int __attribute__((noinline)) + foo (float *r, struct S *p) + { + int *q = (int *)&p->f; + int i = *q; + *r = 0.0; + return i + *q; + } + + /* { dg-final { scan-tree-dump-times "\\\*q" 1 "fre" } } */ + /* { dg-final { cleanup-tree-dump "fre" } } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/vect/pr40542.c gcc-4.3.4/gcc/testsuite/gcc.dg/vect/pr40542.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/vect/pr40542.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/vect/pr40542.c Tue Jun 30 11:48:51 2009 *************** *** 0 **** --- 1,14 ---- + /* { dg-do compile } */ + + void + volarr_cpy(char *d, volatile char *s) + { + int i; + + for (i = 0; i < 16; i++) + d[i] = s[i]; + } + + /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */ + /* { dg-final { cleanup-tree-dump "vect" } } */ + diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/vect/slp-10.c gcc-4.3.4/gcc/testsuite/gcc.dg/vect/slp-10.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/vect/slp-10.c Sun Oct 21 10:01:16 2007 --- gcc-4.3.4/gcc/testsuite/gcc.dg/vect/slp-10.c Tue Jul 21 09:57:46 2009 *************** int main (void) *** 104,114 **** return 0; } ! /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" {target {vect_intfloat_cvt && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" {target {{! { vect_intfloat_cvt}} && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" {target {{! { vect_intfloat_cvt}} && { ! {vect_int_mult}}} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target {vect_intfloat_cvt && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" {target {{! { vect_intfloat_cvt}} && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" {target {{! { vect_intfloat_cvt}} && { ! {vect_int_mult}}} } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ --- 104,114 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" {target {vect_uintfloat_cvt && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" {target {{! { vect_uintfloat_cvt}} && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" {target {{! { vect_uintfloat_cvt}} && { ! {vect_int_mult}}} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target {vect_uintfloat_cvt && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" {target {{! { vect_uintfloat_cvt}} && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" {target {{! { vect_uintfloat_cvt}} && { ! {vect_int_mult}}} } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/vect/slp-11.c gcc-4.3.4/gcc/testsuite/gcc.dg/vect/slp-11.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/vect/slp-11.c Sun Sep 9 08:46:12 2007 --- gcc-4.3.4/gcc/testsuite/gcc.dg/vect/slp-11.c Tue Jul 21 09:57:46 2009 *************** int main (void) *** 106,113 **** return 0; } ! /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { target { vect_strided && vect_int_mult } } } } */ ! /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" {target { ! { vect_int_mult && vect_strided } } } } } */ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ --- 106,113 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { target { { vect_uintfloat_cvt && vect_strided } && vect_int_mult } } } } */ ! /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { { { ! vect_uintfloat_cvt } && vect_strided } && vect_int_mult } } } } */ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/vect/slp-12b.c gcc-4.3.4/gcc/testsuite/gcc.dg/vect/slp-12b.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/vect/slp-12b.c Sun Sep 9 08:46:12 2007 --- gcc-4.3.4/gcc/testsuite/gcc.dg/vect/slp-12b.c Tue Jul 21 09:57:46 2009 *************** *** 1,4 **** ! /* { dg-require-effective-target vect_intfloat_cvt } */ #include #include --- 1,4 ---- ! /* { dg-require-effective-target vect_uintfloat_cvt } */ #include #include diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/vect/slp-33.c gcc-4.3.4/gcc/testsuite/gcc.dg/vect/slp-33.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/vect/slp-33.c Sun Oct 21 10:01:16 2007 --- gcc-4.3.4/gcc/testsuite/gcc.dg/vect/slp-33.c Tue Jul 21 09:57:46 2009 *************** int main (void) *** 102,112 **** return 0; } ! /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" {target {vect_intfloat_cvt && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" {target {{! { vect_intfloat_cvt}} && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" {target {{! { vect_intfloat_cvt}} && {! {vect_int_mult}}} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target {vect_intfloat_cvt && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" {target {{! { vect_intfloat_cvt}} && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" {target {{! { vect_intfloat_cvt}} && {! {vect_int_mult}}} } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ --- 102,112 ---- return 0; } ! /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" {target {vect_uintfloat_cvt && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" {target {{! { vect_uintfloat_cvt}} && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" {target {{! { vect_uintfloat_cvt}} && {! {vect_int_mult}}} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target {vect_uintfloat_cvt && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" {target {{! { vect_uintfloat_cvt}} && vect_int_mult} } } } */ ! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" {target {{! { vect_uintfloat_cvt}} && {! {vect_int_mult}}} } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/visibility-20.c gcc-4.3.4/gcc/testsuite/gcc.dg/visibility-20.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/visibility-20.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.dg/visibility-20.c Wed Mar 25 22:05:08 2009 *************** *** 0 **** --- 1,18 ---- + /* PR target/39175 */ + /* { dg-do compile } */ + /* { dg-require-visibility "" } */ + /* { dg-options "-O2 -fvisibility=hidden -fpic" { target fpic } } */ + + __attribute__((noinline)) int + foo (int x) + { + return x; + } + + int foo (int x); + + int + bar (int x) + { + return foo (x); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/vmx/3a-04.c gcc-4.3.4/gcc/testsuite/gcc.dg/vmx/3a-04.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/vmx/3a-04.c Sun Apr 18 01:01:41 2004 --- gcc-4.3.4/gcc/testsuite/gcc.dg/vmx/3a-04.c Tue Apr 28 19:13:03 2009 *************** f(vector float a, vector float b, vector *** 10,18 **** static void test() { ! check(vec_all_eq(f(((vector float){2,3,5,7}), ((vector float){11,13,17,19}), ((vector float){23,29,31,37})), ! ((vector float){23.1818085, 29.2307587, 32.2940826, 128.368393})), "f"); } --- 10,22 ---- static void test() { ! check(vec_all_gt(f(((vector float){2,3,5,7}), ((vector float){11,13,17,19}), ((vector float){23,29,31,37})), ! ((vector float){23.18, 29.23, 32.29, 128.36})) ! && vec_all_lt(f(((vector float){2,3,5,7}), ! ((vector float){11,13,17,19}), ! ((vector float){23,29,31,37})), ! ((vector float){23.19, 29.24, 32.30, 128.37})), "f"); } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/vmx/3a-04m.c gcc-4.3.4/gcc/testsuite/gcc.dg/vmx/3a-04m.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/vmx/3a-04m.c Sun Apr 18 01:01:41 2004 --- gcc-4.3.4/gcc/testsuite/gcc.dg/vmx/3a-04m.c Tue Apr 28 19:13:03 2009 *************** f(vector float a, vector float b, vector *** 10,18 **** static void test() { ! check(vec_all_eq(f(((vector float){2,3,5,7}), ((vector float){11,13,17,19}), ((vector float){23,29,31,37})), ! ((vector float){23.1818085, 29.2307587, 32.2940826, 128.368393})), "f"); } --- 10,22 ---- static void test() { ! check(vec_all_gt(f(((vector float){2,3,5,7}), ((vector float){11,13,17,19}), ((vector float){23,29,31,37})), ! ((vector float){23.18, 29.23, 32.29, 128.36})) ! && vec_all_lt(f(((vector float){2,3,5,7}), ! ((vector float){11,13,17,19}), ! ((vector float){23,29,31,37})), ! ((vector float){23.19, 29.24, 32.30, 128.37})), "f"); } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.dg/vmx/3a-05.c gcc-4.3.4/gcc/testsuite/gcc.dg/vmx/3a-05.c *** gcc-4.3.3/gcc/testsuite/gcc.dg/vmx/3a-05.c Sun Apr 18 01:01:41 2004 --- gcc-4.3.4/gcc/testsuite/gcc.dg/vmx/3a-05.c Tue Apr 28 19:13:03 2009 *************** f(vector float a, vector float b, vector *** 14,22 **** static void test() { ! check(vec_all_eq(f(((vector float){2,3,5,7}), ((vector float){11,13,17,19}), ((vector float){23,29,31,37})), ! ((vector float){16.9092026, 18.7693329, -2.8233242, -92.9472198})), ! "f"); } --- 14,26 ---- static void test() { ! check(vec_all_gt(f(((vector float){2,3,5,7}), ((vector float){11,13,17,19}), ((vector float){23,29,31,37})), ! ((vector float){16.90, 18.76, -2.83, -92.95})) ! && vec_all_lt(f(((vector float){2,3,5,7}), ! ((vector float){11,13,17,19}), ! ((vector float){23,29,31,37})), ! ((vector float){16.91, 18.77, -2.82, -92.94})), ! "f"); } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/alpha/pr39740.c gcc-4.3.4/gcc/testsuite/gcc.target/alpha/pr39740.c *** gcc-4.3.3/gcc/testsuite/gcc.target/alpha/pr39740.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.target/alpha/pr39740.c Tue Apr 14 10:31:29 2009 *************** *** 0 **** --- 1,162 ---- + /* { dg-do compile } */ + /* { dg-options "-O3 -std=c99 -mexplicit-relocs" } */ + + typedef int R_len_t; + typedef unsigned int SEXPTYPE; + struct sxpinfo_struct + { + SEXPTYPE type:5; + }; + + struct vecsxp_struct + { + R_len_t length; + R_len_t truelength; + }; + + struct listsxp_struct + { + struct SEXPREC *carval; + struct SEXPREC *cdrval; + struct SEXPREC *tagval; + }; + + typedef struct SEXPREC + { + struct sxpinfo_struct sxpinfo; + union + { + struct listsxp_struct listsxp; + } u; + } SEXPREC, *SEXP; + + typedef struct VECTOR_SEXPREC + { + struct vecsxp_struct vecsxp; + } VECTOR_SEXPREC, *VECSEXP; + + typedef union + { + VECTOR_SEXPREC s; + double align; + } SEXPREC_ALIGN; + + extern SEXP R_NilValue; + extern SEXP R_MissingArg; + + int Rf_envlength (SEXP rho); + SEXP Rf_protect (SEXP); + const char *Rf_translateChar (SEXP); + + inline R_len_t + Rf_length (SEXP s) + { + int i; + switch (((s)->sxpinfo.type)) + { + case 0: + return 0; + case 24: + return (((VECSEXP) (s))->vecsxp.length); + case 6: + case 17: + i = 0; + while (s != ((void *) 0) && s != R_NilValue) + { + i++; + s = ((s)->u.listsxp.cdrval); + } + return i; + case 4: + return Rf_envlength (s); + default: + return 1; + } + } + + inline SEXP + Rf_lang3 (SEXP s, SEXP t, SEXP u) + { + return s; + } + + typedef SEXP (*CCODE) (SEXP, SEXP, SEXP, SEXP); + + static SEXP PlusSymbol; + static SEXP MinusSymbol; + static SEXP DivideSymbol; + + int isZero (SEXP s); + SEXP PP (SEXP s); + SEXP AddParens (SEXP expr); + SEXP Rf_install (); + + static int + isUminus (SEXP s) + { + if (((s)->sxpinfo.type) == 6 && ((s)->u.listsxp.carval) == MinusSymbol) + { + switch (Rf_length (s)) + { + case 2: + return 1; + case 3: + if (((((((s)->u.listsxp.cdrval))->u.listsxp.cdrval))->u.listsxp. + carval) == R_MissingArg) + return 1; + else + return 0; + } + } + else + return 0; + } + + static SEXP + simplify (SEXP fun, SEXP arg1, SEXP arg2) + { + SEXP ans; + if (fun == PlusSymbol) + { + if (isZero (arg1)) + ans = arg2; + else if (isUminus (arg1)) + ans = + simplify (MinusSymbol, arg2, + ((((arg1)->u.listsxp.cdrval))->u.listsxp.carval)); + else if (isUminus (arg2)) + ans = + simplify (MinusSymbol, arg1, + ((((arg2)->u.listsxp.cdrval))->u.listsxp.carval)); + } + else if (fun == DivideSymbol) + { + ans = Rf_lang3 (DivideSymbol, arg1, arg2); + } + + return ans; + } + + + static SEXP + D (SEXP expr, SEXP var) + { + return simplify (PlusSymbol, + PP (D + (((((expr)->u.listsxp.cdrval))->u.listsxp.carval), + var)), + PP (D + (((((((expr)->u.listsxp.cdrval))->u.listsxp.cdrval))-> + u.listsxp.carval), var))); + } + + SEXP + do_D (SEXP call, SEXP op, SEXP args, SEXP env) + { + SEXP expr, var; + var = Rf_install (); + expr = ((args)->u.listsxp.carval); + Rf_protect (expr = D (expr, var)); + expr = AddParens (expr); + return expr; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr36578-1.c gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr36578-1.c *** gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr36578-1.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr36578-1.c Wed Feb 25 22:08:55 2009 *************** *** 0 **** --- 1,22 ---- + /* Test for unsafe floating-point conversions. PR 36578. */ + /* { dg-do run } */ + /* { dg-options "-msse2 -mfpmath=sse" } */ + + #include "sse2-check.h" + + extern void abort (void); + extern void exit (int); + extern int printf(const char *, ...); + + volatile double d1 = 1.0; + volatile double d2 = 0x1.00001p-53; + volatile double d3; + + static void + sse2_test (void) + { + d3 = (double)((long double)d1 + (long double)d2); + if (d3 != d1) + abort (); + exit (0); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr36578-2.c gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr36578-2.c *** gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr36578-2.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr36578-2.c Wed Feb 25 22:08:55 2009 *************** *** 0 **** --- 1,23 ---- + /* Test for unsafe floating-point conversions. */ + /* { dg-do run } */ + /* { dg-options "-msse2 -mfpmath=sse" } */ + + #include "sse2-check.h" + + extern void abort (void); + extern void exit (int); + extern int printf(const char *, ...); + + volatile double d1 = 0x1.000001p0; + volatile double d2 = 0x1p-54; + volatile float f = 0x1.000002p0f; + volatile float f2; + + static void + sse2_test (void) + { + f2 = (float)((long double)d1 + (long double)d2); + if (f != f2) + abort (); + exit (0); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr38931.c gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr38931.c *** gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr38931.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr38931.c Sun Jan 25 12:26:15 2009 *************** *** 0 **** --- 1,23 ---- + /* { dg-do compile } */ + /* { dg-options "-O2 -msse" } */ + + typedef int __m64 __attribute__ ((__vector_size__ (8))); + + extern __m64 foo () ; + + void bar (const int input_bpl, const unsigned char *input, + unsigned char *output, unsigned long x1) + { + unsigned char *pix_end_ptr = output + x1 * 4; + __m64 m_original = { 0, 0 }; + __m64 m_base_addr = __builtin_ia32_vec_init_v2si (0, input_bpl); + __m64 m_addr = __builtin_ia32_paddd (m_original, m_base_addr); + __m64 *a0 = (__m64 *) input; + + for (; output < pix_end_ptr; output += 4) + { + a0 = (__m64 *) (input + __builtin_ia32_vec_ext_v2si (m_addr, 0)); + m_addr = foo (); + __builtin_prefetch (a0, 0); + } + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr38988.c gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr38988.c *** gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr38988.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr38988.c Thu Jan 29 10:05:17 2009 *************** *** 0 **** --- 1,24 ---- + /* { dg-do compile } */ + /* { dg-require-effective-target lp64 } */ + /* { dg-require-effective-target fpic } */ + /* { dg-options "-O2 -fpic -mcmodel=large" } */ + + typedef long unsigned int size_t; + typedef void (*func_ptr) (void); + + static func_ptr __DTOR_LIST__[1] = { (func_ptr) (-1) }; + + void + __do_global_dtors_aux (void) + { + extern func_ptr __DTOR_END__[]; + size_t dtor_idx = 0; + const size_t max_idx = __DTOR_END__ - __DTOR_LIST__ - 1; + func_ptr f; + + while (dtor_idx < max_idx) + { + f = __DTOR_LIST__[++dtor_idx]; + f (); + } + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr39013-1.c gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr39013-1.c *** gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr39013-1.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr39013-1.c Fri Jun 19 12:23:16 2009 *************** *** 0 **** --- 1,15 ---- + /* PR target/39013 */ + /* { dg-do compile { target *-*-linux* } } */ + /* { dg-options "-O2 -fpie -std=gnu89" } */ + + inline int foo (void); + extern inline int bar (void); + + int + main (void) + { + return foo () + bar (); + } + + /* { dg-final { scan-assembler "foo@PLT" } } */ + /* { dg-final { scan-assembler "bar@PLT" } } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr39013-2.c gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr39013-2.c *** gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr39013-2.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr39013-2.c Fri Jun 19 12:23:16 2009 *************** *** 0 **** --- 1,15 ---- + /* PR target/39013 */ + /* { dg-do compile { target *-*-linux* } } */ + /* { dg-options "-O2 -fpie -std=gnu99" } */ + + inline int foo (void); /* { dg-warning "declared but never defined" } */ + extern inline int bar (void); /* { dg-warning "declared but never defined" } */ + + int + main (void) + { + return foo () + bar (); + } + + /* { dg-final { scan-assembler "foo@PLT" } } */ + /* { dg-final { scan-assembler "bar@PLT" } } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr39058.c gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr39058.c *** gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr39058.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr39058.c Thu Feb 26 07:06:48 2009 *************** *** 0 **** --- 1,34 ---- + /* PR inline-asm/39058 */ + /* { dg-options "-O2" } */ + + double + f1 () + { + double x; + asm ("" : "=r,r" (x) : "0,0" (x)); + return x; + } + + double + f2 () + { + double x; + asm ("" : "=r" (x) : "0" (x)); + return x; + } + + double + f3 () + { + double x, y; + asm ("" : "=r,r" (x), "=r,r" (y) : "%0,0" (x), "r,r" (0)); + return x; + } + + double + f4 () + { + double x, y; + asm ("" : "=r" (x), "=r" (y) : "0" (x), "r" (0)); + return x; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr39482.c gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr39482.c *** gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr39482.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr39482.c Mon Mar 23 11:19:41 2009 *************** *** 0 **** --- 1,9 ---- + /* { dg-do compile } */ + /* { dg-options "-mno-sse2" } */ + + extern double log (double __x); + + double foo (unsigned long int m_liOutputBufferLen) + { + return log ((double) m_liOutputBufferLen); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr39496.c gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr39496.c *** gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr39496.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr39496.c Mon Apr 27 08:17:39 2009 *************** *** 0 **** --- 1,35 ---- + /* PR target/39496 */ + /* { dg-do compile { target { { i?86-*-linux* x86_64-*-linux* } && ilp32 } } } */ + /* { dg-options "-O0 -fverbose-asm -fno-omit-frame-pointer -mtune=i686 -msse2 -mfpmath=sse" } */ + /* Verify that {foo,bar}{,2}param are all passed on the stack, using + normal calling conventions, when not optimizing. */ + /* { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*fooparam," } } */ + /* { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*barparam," } } */ + /* { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*foo2param," } } */ + /* { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*bar2param," } } */ + + static inline int foo (int fooparam) + { + return fooparam; + } + + static int bar (int barparam) + { + return foo (barparam); + } + + static inline double foo2 (double foo2param) + { + return foo2param; + } + + static double bar2 (double bar2param) + { + return foo2 (bar2param); + } + + int + main () + { + return bar (0) + bar2 (0.0); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr40809.c gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr40809.c *** gcc-4.3.3/gcc/testsuite/gcc.target/i386/pr40809.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.target/i386/pr40809.c Tue Jul 21 09:57:46 2009 *************** *** 0 **** --- 1,23 ---- + /* { dg-do run } */ + /* { dg-options "-O2 -ftree-vectorize -msse2" } */ + + #include "sse2-check.h" + + #define N 8 + + unsigned int u4[N] = { 4000000000u, 4000000000u, 4000000000u, 4000000000u, 4000000000u, 4000000000u, 4000000000u, 4000000000u }; + float f4[N]; + + static void + sse2_test (void) + { + int j; + + for (j = 0; j < N; j++) + f4[j] = u4[j]; + + /* check results: */ + for (j = 0; j < N; j++) + if (f4[j] != 4000000000.0) + abort (); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/i386/sse-recip-vec.c gcc-4.3.4/gcc/testsuite/gcc.target/i386/sse-recip-vec.c *** gcc-4.3.3/gcc/testsuite/gcc.target/i386/sse-recip-vec.c Tue Sep 4 09:02:56 2007 --- gcc-4.3.4/gcc/testsuite/gcc.target/i386/sse-recip-vec.c Wed Jul 15 07:01:54 2009 *************** extern float sqrtf (float); *** 7,21 **** #define N 8 static void sse_test (void) { - float a[N] = { 0.f, 18.f, 108.f, 324.f, 720.f, 1944.f, 3087.f, 5832.f }; - float b[N] = { 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f }; - float r[N]; - - float rc[N] = { 0.f, 3.f, 6.f, 9.f, 12.f, 18.f, 21.f, 27.f }; - int i; for (i = 0; i < N; i++) --- 7,21 ---- #define N 8 + float a[N] = { 0.f, 18.f, 108.f, 324.f, 720.f, 1944.f, 3087.f, 5832.f }; + float b[N] = { 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f }; + float r[N]; + + float rc[N] = { 0.f, 3.f, 6.f, 9.f, 12.f, 18.f, 21.f, 27.f }; + static void sse_test (void) { int i; for (i = 0; i < N; i++) diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/i386/sse2-lrint-vec.c gcc-4.3.4/gcc/testsuite/gcc.target/i386/sse2-lrint-vec.c *** gcc-4.3.3/gcc/testsuite/gcc.target/i386/sse2-lrint-vec.c Tue Sep 4 09:02:56 2007 --- gcc-4.3.4/gcc/testsuite/gcc.target/i386/sse2-lrint-vec.c Wed Jul 15 07:01:54 2009 *************** extern long lrint (double); *** 7,18 **** #define N 32 static void sse2_test (void) { - double a[N] = {0.4,3.5,6.6,9.4,12.5,15.6,18.4,21.5,24.6,27.4,30.5,33.6,36.4,39.5,42.6,45.4,0.5,3.6,6.4,9.5,12.6,15.4,18.5,21.6,24.4,27.5,30.6,33.4,36.5,39.6,42.4,45.5}; - long r[N]; - int i; for (i = 0; i < N; i++) --- 7,18 ---- #define N 32 + double a[N] = {0.4,3.5,6.6,9.4,12.5,15.6,18.4,21.5,24.6,27.4,30.5,33.6,36.4,39.5,42.6,45.4,0.5,3.6,6.4,9.5,12.6,15.4,18.5,21.6,24.4,27.5,30.6,33.4,36.5,39.6,42.4,45.5}; + long r[N]; + static void sse2_test (void) { int i; for (i = 0; i < N; i++) diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/i386/sse2-lrintf-vec.c gcc-4.3.4/gcc/testsuite/gcc.target/i386/sse2-lrintf-vec.c *** gcc-4.3.3/gcc/testsuite/gcc.target/i386/sse2-lrintf-vec.c Tue Sep 4 09:02:56 2007 --- gcc-4.3.4/gcc/testsuite/gcc.target/i386/sse2-lrintf-vec.c Wed Jul 15 07:01:54 2009 *************** extern long lrintf (float); *** 7,18 **** #define N 32 static void sse2_test (void) { - float a[N] = {0.4,3.5,6.6,9.4,12.5,15.6,18.4,21.5,24.6,27.4,30.5,33.6,36.4,39.5,42.6,45.4,0.5,3.6,6.4,9.5,12.6,15.4,18.5,21.6,24.4,27.5,30.6,33.4,36.5,39.6,42.4,45.5}; - long r[N]; - int i; for (i = 0; i < N; i++) --- 7,18 ---- #define N 32 + float a[N] = {0.4,3.5,6.6,9.4,12.5,15.6,18.4,21.5,24.6,27.4,30.5,33.6,36.4,39.5,42.6,45.4,0.5,3.6,6.4,9.5,12.6,15.4,18.5,21.6,24.4,27.5,30.6,33.4,36.5,39.6,42.4,45.5}; + long r[N]; + static void sse2_test (void) { int i; for (i = 0; i < N; i++) diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/ia64/sibcall-opt-1.c gcc-4.3.4/gcc/testsuite/gcc.target/ia64/sibcall-opt-1.c *** gcc-4.3.3/gcc/testsuite/gcc.target/ia64/sibcall-opt-1.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.target/ia64/sibcall-opt-1.c Fri Feb 20 17:18:20 2009 *************** *** 0 **** --- 1,12 ---- + /* PR target/38056. Do not do sibcall optimization across object file + boundery when -mconstant-gp is not used. */ + /* { dg-do compile } */ + /* { dg-options "-O2" } */ + /* { dg-final { scan-assembler "br.call.*bar" } } */ + + int bar(int x); + + int foo(int x) + { + return (bar(x + 1)); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/ia64/sibcall-opt-2.c gcc-4.3.4/gcc/testsuite/gcc.target/ia64/sibcall-opt-2.c *** gcc-4.3.3/gcc/testsuite/gcc.target/ia64/sibcall-opt-2.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.target/ia64/sibcall-opt-2.c Fri Feb 20 17:18:20 2009 *************** *** 0 **** --- 1,12 ---- + /* PR target/38056. Do sibcall optimization across object file + boundery when -mconstant-gp is used. */ + /* { dg-do compile } */ + /* { dg-options "-O2 -mconstant-gp" } */ + /* { dg-final { scan-assembler-not "br.call.*bar" } } */ + + int bar(int x); + + int foo(int x) + { + return (bar(x + 1)); + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/powerpc/pr39902-2.c gcc-4.3.4/gcc/testsuite/gcc.target/powerpc/pr39902-2.c *** gcc-4.3.3/gcc/testsuite/gcc.target/powerpc/pr39902-2.c Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gcc.target/powerpc/pr39902-2.c Mon Aug 3 21:49:12 2009 *************** *** 0 **** --- 1,28 ---- + /* Check that simplification "x*(-1)" -> "-x" is not performed for decimal + float types. */ + + /* { dg-do compile { target { powerpc*-*-linux* && powerpc_fprs } } } */ + /* { dg-options "-std=gnu99 -O -mcpu=power6" } */ + /* { dg-final { scan-assembler-not "fneg" } } */ + + extern _Decimal32 a32, b32; + extern _Decimal64 a64, b64; + extern _Decimal128 a128, b128; + + void + foo32 (void) + { + b32 = a32 * -1.0DF; + } + + void + foo64 (void) + { + b64 = a64 * -1.0DD; + } + + void + foo128 (void) + { + b128 = a128 * -1.0DL; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gcc.target/x86_64/abi/asm-support.s gcc-4.3.4/gcc/testsuite/gcc.target/x86_64/abi/asm-support.s *** gcc-4.3.3/gcc/testsuite/gcc.target/x86_64/abi/asm-support.s Wed Jun 22 14:51:07 2005 --- gcc-4.3.4/gcc/testsuite/gcc.target/x86_64/abi/asm-support.s Mon May 18 16:56:42 2009 *************** snapshot: *** 46,52 **** --- 46,54 ---- .type snapshot_ret, @function snapshot_ret: movq %rdi, rdi(%rip) + subq $8, %rsp call *callthis(%rip) + addq $8, %rsp movq %rax, rax(%rip) movq %rdx, rdx(%rip) movdqu %xmm0, xmm_regs+0(%rip) diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/alloc_comp_assign_10.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/alloc_comp_assign_10.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/alloc_comp_assign_10.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/alloc_comp_assign_10.f90 Sun May 10 16:09:02 2009 *************** *** 0 **** --- 1,61 ---- + ! { dg-do run } + ! + ! Test the fix for PR39879, in which gfc gagged on the double + ! defined assignment where the rhs had a default initialiser. + ! + ! Contributed by David Sagan + ! + module test_struct + interface assignment (=) + module procedure tao_lat_equal_tao_lat + end interface + type bunch_params_struct + integer n_live_particle + end type + type tao_lattice_struct + type (bunch_params_struct), allocatable :: bunch_params(:) + type (bunch_params_struct), allocatable :: bunch_params2(:) + end type + type tao_universe_struct + type (tao_lattice_struct), pointer :: model, design + character(200), pointer :: descrip => NULL() + end type + type tao_super_universe_struct + type (tao_universe_struct), allocatable :: u(:) + end type + type (tao_super_universe_struct), save, target :: s + contains + subroutine tao_lat_equal_tao_lat (lat1, lat2) + implicit none + type (tao_lattice_struct), intent(inout) :: lat1 + type (tao_lattice_struct), intent(in) :: lat2 + if (allocated(lat2%bunch_params)) then + lat1%bunch_params = lat2%bunch_params + end if + if (allocated(lat2%bunch_params2)) then + lat1%bunch_params2 = lat2%bunch_params2 + end if + end subroutine + end module + + program tao_program + use test_struct + implicit none + type (tao_universe_struct), pointer :: u + integer n, i + allocate (s%u(1)) + u => s%u(1) + allocate (u%design, u%model) + n = 112 + allocate (u%model%bunch_params(0:n), u%design%bunch_params(0:n)) + u%design%bunch_params%n_live_particle = [(i, i = 0, n)] + u%model = u%design + u%model = u%design ! The double assignment was the cause of the ICE + if (.not. allocated (u%model%bunch_params)) call abort + if (any (u%model%bunch_params%n_live_particle .ne. [(i, i = 0, n)])) call abort + Deallocate (u%model%bunch_params, u%design%bunch_params) + deallocate (u%design, u%model) + deallocate (s%u) + end program + + ! { dg-final { cleanup-modules "test_struct" } } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/alloc_comp_assign_9.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/alloc_comp_assign_9.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/alloc_comp_assign_9.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/alloc_comp_assign_9.f90 Sat Apr 4 14:47:23 2009 *************** *** 0 **** --- 1,20 ---- + ! { dg-do run } + ! Test the fix for PR39519, where the presence of the pointer + ! as the first component was preventing the second from passing + ! the "alloc_comp" attribute to the derived type. + ! + ! Contributed by Gilbert Scott + ! + PROGRAM X + TYPE T + INTEGER, POINTER :: P + INTEGER, ALLOCATABLE :: A(:) + END TYPE T + TYPE(T) :: T1,T2 + ALLOCATE ( T1%A(1) ) + ALLOCATE ( T2%A(1) ) + T1%A = 23 + T2 = T1 + T1%A = 42 + if (T2%A(1) .NE. 23) CALL ABORT + END PROGRAM X diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/bound_6.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/bound_6.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/bound_6.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/bound_6.f90 Thu Feb 19 06:43:15 2009 *************** *** 0 **** --- 1,48 ---- + ! { dg-do run } + ! Test the fix for PR38852 and PR39006 in which LBOUND did not work + ! for some arrays with negative strides. + ! + ! Contributed by Dick Hendrickson + ! and Clive Page + ! + program try_je0031 + integer ida(4) + real dda(5,5,5,5,5) + integer, parameter :: nx = 4, ny = 3 + integer :: array1(nx,ny), array2(nx,ny) + data array2 / 1,2,3,4, 10,20,30,40, 100,200,300,400 / + array1 = array2 + call PR38852(IDA,DDA,2,5,-2) + call PR39006(array1, array2(:,ny:1:-1)) + contains + subroutine PR39006(array1, array2) + integer, intent(in) :: array1(:,:), array2(:,:) + integer :: j + do j = 1, ubound(array2,2) + if (any (array1(:,j) .ne. array2(:,4-j))) call abort + end do + end subroutine + end + + SUBROUTINE PR38852(IDA,DDA,nf2,nf5,mf2) + INTEGER IDA(4) + REAL DLA(:,:,:,:) + REAL DDA(5,5,5,5,5) + POINTER DLA + TARGET DDA + DLA => DDA(2:3, 1:3:2, 5:4:-1, NF2, NF5:NF2:MF2) + IDA = UBOUND(DLA) + if (any(ida /= 2)) call abort + DLA => DDA(2:3, 1:3:2, 5:4:-1, 2, 5:2:-2) + IDA = UBOUND(DLA) + if (any(ida /= 2)) call abort + ! + ! These worked. + ! + DLA => DDA(2:3, 1:3:2, 5:4:-1, 2, 5:2:-2) + IDA = shape(DLA) + if (any(ida /= 2)) call abort + DLA => DDA(2:3, 1:3:2, 5:4:-1, 2, 5:2:-2) + IDA = LBOUND(DLA) + if (any(ida /= 1)) call abort + END SUBROUTINE diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/bounds_5.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/bounds_5.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/bounds_5.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/bounds_5.f90 Mon Jan 26 05:43:44 2009 *************** *** 0 **** --- 1,26 ---- + ! { dg-do run } + ! + ! PR fortran/38859 + ! Wrong bounds simplification + ! + ! Contributed by Dick Hendrickson + + type x + integer I + end type x + type (x) A(0:5, 2:8) + integer ida(2) + + ida = lbound(a) + if (any(ida /= (/0,2/))) call abort + + ida = lbound(a%i) + if (any(ida /= (/1,1/))) call abort + + ida = ubound(a) + if (any(ida /= (/5,8/))) call abort + + ida = ubound(a%i) + if (any(ida /= (/6,7/))) call abort + + end diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/host_assoc_blockdata_1.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/host_assoc_blockdata_1.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/host_assoc_blockdata_1.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/host_assoc_blockdata_1.f90 Sat Jan 24 21:49:28 2009 *************** *** 0 **** --- 1,11 ---- + ! { dg-do compile } + ! PR 38672 - this used to ICE. + MODULE globals + TYPE :: type1 + integer :: x + END TYPE type1 + TYPE (type1) :: pdm_bps + END module globals + BLOCK DATA + use globals + END BLOCK DATA diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/host_assoc_blockdata_2.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/host_assoc_blockdata_2.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/host_assoc_blockdata_2.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/host_assoc_blockdata_2.f90 Sat Jan 24 21:49:28 2009 *************** *** 0 **** --- 1,17 ---- + ! { dg-do compile } + MODULE globals + TYPE :: type1 + sequence + integer :: x + END TYPE type1 + TYPE (type1) :: pdm_bps + common /co/ pdm_bps + END module globals + BLOCK DATA + use globals + END BLOCK DATA + + program main + use globals + common /co/ pdm_bps ! { dg-error "already in a COMMON block" } + end program main diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/host_assoc_function_7.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/host_assoc_function_7.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/host_assoc_function_7.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/host_assoc_function_7.f90 Mon Jan 26 06:15:41 2009 *************** *** 0 **** --- 1,41 ---- + ! { dg-do run } + ! Tests the fix for PR38907, in which any expressions, including unary plus, + ! in front of the call to S_REAL_SUM_I (marked) would throw the mechanism + ! for correcting invalid host association. + ! + ! Contributed by Dick Hendrickson + ! + module sa0054_stuff + REAL :: S_REAL_SUM_2(10) = [(REAL (I), I = 1, 10)] + contains + ELEMENTAL FUNCTION S_REAL_SUM_I (A) + REAL :: S_REAL_SUM_I + REAL, INTENT(IN) :: A + X = 1.0 + S_REAL_SUM_I = X + END FUNCTION S_REAL_SUM_I + SUBROUTINE SA0054 (RDA) + REAL RDA(:) + RDA = + S_REAL_SUM_I (RDA) ! Reported problem => ICE + RDA = RDA + S_REAL_SUM_2 (INT (RDA)) ! Also failed + CONTAINS + ELEMENTAL FUNCTION S_REAL_SUM_I (A) + REAL :: S_REAL_SUM_I + REAL, INTENT(IN) :: A + S_REAL_SUM_I = 2.0 * A + END FUNCTION S_REAL_SUM_I + ELEMENTAL FUNCTION S_REAL_SUM_2 (A) + REAL :: S_REAL_SUM_2 + INTEGER, INTENT(IN) :: A + S_REAL_SUM_2 = 2.0 * A + END FUNCTION S_REAL_SUM_2 + END SUBROUTINE + end module sa0054_stuff + + use sa0054_stuff + REAL :: RDA(10) = [(REAL(I), I = 1, 10)] + call SA0054 (RDA) + IF (ANY (INT (RDA) .ne. [(6 * I, I = 1, 10)])) print *, rda + END + + ! { dg-final { cleanup-modules "sa0054_stuff" } } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/initialization_22.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/initialization_22.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/initialization_22.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/initialization_22.f90 Sat Mar 7 15:56:37 2009 *************** *** 0 **** --- 1,10 ---- + ! { dg-do run } + ! tests the fix for PR39292, where the intitialization expression + ! did not simplify and caused an ICE in gfc_conv_array_initializer. + ! + ! Contributed by Richard Guenther + ! + integer :: n + real, dimension(2) :: a = (/ ( (float(n))**(1.0), n=1,2) /) + if (any (a .ne. (/ ( (float(n))**(1.0), n=1,2) /))) call abort + end diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/interface_25.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/interface_25.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/interface_25.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/interface_25.f90 Sat Mar 7 15:58:49 2009 *************** *** 0 **** --- 1,45 ---- + ! { dg-do compile } + ! Tests the fix for PR39295, in which the check of the interfaces + ! at lines 25 and 42 failed because opfunc1 is identified as a + ! function by usage, whereas opfunc2 is not. + ! + ! Contributed by Jon Hurst + ! + MODULE funcs + CONTAINS + INTEGER FUNCTION test1(a,b,opfunc1) + INTEGER :: a,b + INTEGER, EXTERNAL :: opfunc1 + test1 = opfunc1( a, b ) + END FUNCTION test1 + INTEGER FUNCTION sumInts(a,b) + INTEGER :: a,b + sumInts = a + b + END FUNCTION sumInts + END MODULE funcs + + PROGRAM test + USE funcs + INTEGER :: rs + INTEGER, PARAMETER :: a = 2, b = 1 + rs = recSum( a, b, test1, sumInts ) + write(*,*) "Results", rs + CONTAINS + RECURSIVE INTEGER FUNCTION recSum( a,b,UserFunction,UserOp ) RESULT( res ) + IMPLICIT NONE + INTEGER :: a,b + INTERFACE + INTEGER FUNCTION UserFunction(a,b,opfunc2) + INTEGER :: a,b + INTEGER, EXTERNAL :: opfunc2 + END FUNCTION UserFunction + END INTERFACE + INTEGER, EXTERNAL :: UserOp + + res = UserFunction( a,b, UserOp ) + + if( res .lt. 10 ) then + res = recSum( a, res, UserFunction, UserOp ) + end if + END FUNCTION recSum + END PROGRAM test diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/interface_26.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/interface_26.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/interface_26.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/interface_26.f90 Sat Mar 7 15:58:49 2009 *************** *** 0 **** --- 1,46 ---- + ! { dg-do compile } + ! Tests the fix for PR39295, in which the check of the interfaces + ! at lines 26 and 43 failed because opfunc1 is identified as a + ! function by usage, whereas opfunc2 is not. This testcase checks + ! that TKR is stll OK in these cases. + ! + ! Contributed by Jon Hurst + ! + MODULE funcs + CONTAINS + INTEGER FUNCTION test1(a,b,opfunc1) + INTEGER :: a,b + INTEGER, EXTERNAL :: opfunc1 + test1 = opfunc1( a, b ) + END FUNCTION test1 + INTEGER FUNCTION sumInts(a,b) + INTEGER :: a,b + sumInts = a + b + END FUNCTION sumInts + END MODULE funcs + + PROGRAM test + USE funcs + INTEGER :: rs + INTEGER, PARAMETER :: a = 2, b = 1 + rs = recSum( a, b, test1, sumInts ) ! { dg-error "Type/rank mismatch in argument" } + write(*,*) "Results", rs + CONTAINS + RECURSIVE INTEGER FUNCTION recSum( a,b,UserFunction,UserOp ) RESULT( res ) + IMPLICIT NONE + INTEGER :: a,b + INTERFACE + INTEGER FUNCTION UserFunction(a,b,opfunc2) + INTEGER :: a,b + REAL, EXTERNAL :: opfunc2 + END FUNCTION UserFunction + END INTERFACE + INTEGER, EXTERNAL :: UserOp + + res = UserFunction( a,b, UserOp ) + + if( res .lt. 10 ) then + res = recSum( a, res, UserFunction, UserOp ) + end if + END FUNCTION recSum + END PROGRAM test diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/module_commons_3.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/module_commons_3.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/module_commons_3.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/module_commons_3.f90 Mon Jan 26 05:12:03 2009 *************** *** 0 **** --- 1,57 ---- + ! { dg-do run } + ! + ! PR fortran/38657, in which the mixture of PRIVATE and + ! COMMON in TEST4, would mess up the association with + ! TESTCHAR in TEST2. + ! + ! Contributed by Paul Thomas + ! From a report in clf by Chris Bradley. + ! + MODULE TEST4 + PRIVATE + CHARACTER(LEN=80) :: T1 = & + "Mary had a little lamb, Its fleece was white as snow;" + CHARACTER(LEN=80) :: T2 = & + "And everywhere that Mary went, The lamb was sure to go." + CHARACTER(LEN=80) :: TESTCHAR + COMMON /TESTCOMMON1/ TESTCHAR + PUBLIC T1, T2, FOOBAR + CONTAINS + subroutine FOOBAR (CHECK) + CHARACTER(LEN=80) :: CHECK + IF (TESTCHAR .NE. CHECK) CALL ABORT + end subroutine + END MODULE TEST4 + + MODULE TEST3 + CHARACTER(LEN=80) :: TESTCHAR + COMMON /TESTCOMMON1/ TESTCHAR + END MODULE TEST3 + + MODULE TEST2 + use TEST4 + USE TEST3, chr => testchar + PRIVATE + CHARACTER(LEN=80) :: TESTCHAR + COMMON /TESTCOMMON1/ TESTCHAR + PUBLIC TESTCHAR, FOO, BAR, CHR, T1, T2, FOOBAR + contains + subroutine FOO + TESTCHAR = T1 + end subroutine + subroutine BAR (CHECK) + CHARACTER(LEN=80) :: CHECK + IF (TESTCHAR .NE. CHECK) CALL ABORT + IF (CHR .NE. CHECK) CALL ABORT + end subroutine + END MODULE TEST2 + + PROGRAM TEST1 + USE TEST2 + call FOO + call BAR (T1) + TESTCHAR = T2 + call BAR (T2) + CALL FOOBAR (T2) + END PROGRAM TEST1 + ! { dg-final { cleanup-modules "TEST2 TEST3 TEST4" } } diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/mvbits_5.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/mvbits_5.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/mvbits_5.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/mvbits_5.f90 Thu Jan 29 17:43:14 2009 *************** *** 0 **** --- 1,17 ---- + ! { dg-do run } + + ! PR fortran/38887 + ! This aborted at runtime for the runtime zero-sized array arguments. + + ! Contributed by Dick Hendrickson + + program try_ya0013 + integer ida(9) + call ya0013(ida,1,5,6) + end program + + SUBROUTINE YA0013(IDA,nf1,nf5,nf6) + INTEGER IDA(9) + IDA = 1 + CALL MVBITS(IDA(NF5:NF1), 0, 1, IDA(NF6:NF1),2) + END SUBROUTINE diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/mvbits_6.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/mvbits_6.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/mvbits_6.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/mvbits_6.f90 Thu Jan 29 17:43:14 2009 *************** *** 0 **** --- 1,33 ---- + ! { dg-do compile } + + ! PR fortran/38883 + ! This ICE'd because the temporary-creation in the MVBITS call was wrong. + ! This is the original test from the PR, the complicated version. + + ! Contributed by Dick Hendrickson + + module yg0009_stuff + + type unseq + integer I + end type + + contains + + SUBROUTINE YG0009(TDA2L,NF4,NF3,NF1,MF1,MF4,MF3) + TYPE(UNSEQ) TDA2L(NF4,NF3) + + CALL MVBITS (TDA2L(NF4:NF1:MF1,NF1:NF3)%I,2, & + 4, TDA2L(-MF4:-MF1:-NF1,-MF1:-MF3)%I, 3) + + END SUBROUTINE + + end module yg0009_stuff + + program try_yg0009 + use yg0009_stuff + type(unseq) tda2l(4,3) + + call yg0009(tda2l,4,3,1,-1,-4,-3) + + end diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/mvbits_7.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/mvbits_7.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/mvbits_7.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/mvbits_7.f90 Thu Jan 29 17:43:14 2009 *************** *** 0 **** --- 1,30 ---- + ! { dg-do run } + + ! PR fortran/38883 + ! This ICE'd because the temporary-creation in the MVBITS call was wrong. + + ! Contributed by Paul Richard Thomas + + type t + integer :: I + character(9) :: chr + end type + type(t) :: x(4,3) + type(t) :: y(4,3) + x = reshape ([((t (i*j, "a"),i = 1,4), j=1,3)], [4,3]) + call foo (x) + y = reshape ([((t (i*j*2, "a"),i = 1,4), j=1,3)], [4,3]) + call bar(y, 4, 3, 1, -1, -4, -3) + if (any (x%i .ne. y%i)) call abort + contains + SUBROUTINE foo (x) + TYPE(t) x(4, 3) ! No dependency at all + CALL MVBITS (x%i, 0, 6, x%i, 8) + x%i = x%i * 2 + END SUBROUTINE + SUBROUTINE bar (x, NF4, NF3, NF1, MF1, MF4, MF3) + TYPE(t) x(NF4, NF3) ! Dependency through variable indices + CALL MVBITS (x(NF4:NF1:MF1, NF1:NF3)%i, 1, & + 6, x(-MF4:-MF1:-NF1, -MF1:-MF3)%i, 9) + END SUBROUTINE + end diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/mvbits_8.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/mvbits_8.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/mvbits_8.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/mvbits_8.f90 Thu Jan 29 17:43:14 2009 *************** *** 0 **** --- 1,36 ---- + ! { dg-do run } + + ! PR fortran/38883 + ! This ICE'd because the temporary-creation in the MVBITS call was wrong. + + PROGRAM main + IMPLICIT NONE + + TYPE inner + INTEGER :: i + INTEGER :: j + END TYPE inner + + TYPE outer + TYPE(inner) :: comp(2) + END TYPE outer + + TYPE(outer) :: var + + var%comp%i = (/ 1, 2 /) + var%comp%j = (/ 3, 4 /) + + CALL foobar (var, 1, 2) + + IF (ANY (var%comp%i /= (/ 1, 2 /))) CALL abort () + IF (ANY (var%comp%j /= (/ 3, 4 /))) CALL abort () + + CONTAINS + + SUBROUTINE foobar (x, lower, upper) + TYPE(outer), INTENT(INOUT) :: x + INTEGER, INTENT(IN) :: lower, upper + CALL MVBITS (x%comp%i, 1, 2, x%comp(lower:upper)%i, 1) + END SUBROUTINE foobar + + END PROGRAM main diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/pr38868.f gcc-4.3.4/gcc/testsuite/gfortran.dg/pr38868.f *** gcc-4.3.3/gcc/testsuite/gfortran.dg/pr38868.f Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/pr38868.f Sat Jan 24 15:26:14 2009 *************** *** 0 **** --- 1,17 ---- + ! { dg-do compile } + ! { dg-options "-O2 -fdump-rtl-expand" } + PROGRAM testcase + IMPLICIT NONE + + CHARACTER*4 ANER(18) + CHARACTER*80 LINE + aner = '' + ANER(1)='A ' + ANER(2)=' ' + LINE=' ' + LINE(78:80)='xyz' + WRITE(*,'(A82)') "'"//LINE//"'" + END + + ! { dg-final { scan-rtl-dump-times "line\\\+80" 0 "expand" } } + ! { dg-final { cleanup-rtl-dump "expand" } } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/read_repeat.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/read_repeat.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/read_repeat.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/read_repeat.f90 Sat Apr 4 19:04:53 2009 *************** *** 0 **** --- 1,24 ---- + ! { dg-do run } + ! PR39528 repeated entries not read when using list-directed input. + ! Test case derived from reporters example. + program rread + implicit none + integer :: iarr(1:7), ia, ib, i + + iarr = 0 + + write(10,*) " 2*1 3*2 /" + write(10,*) " 12" + write(10,*) " 13" + rewind(10) + + read(10,*) (iarr(i), i=1,7) + read(10,*) ia, ib + + if (any(iarr(1:2).ne.1)) call abort + if (any(iarr(3:5).ne.2)) call abort + if (any(iarr(6:7).ne.0)) call abort + if (ia .ne. 12 .or. ib .ne. 13) call abort + + close(10, status="delete") + end program rread diff -Nrcpad gcc-4.3.3/gcc/testsuite/gfortran.dg/unit_1.f90 gcc-4.3.4/gcc/testsuite/gfortran.dg/unit_1.f90 *** gcc-4.3.3/gcc/testsuite/gfortran.dg/unit_1.f90 Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/gfortran.dg/unit_1.f90 Sat Jul 4 04:20:24 2009 *************** *** 0 **** --- 1,24 ---- + ! { dg-do run } + ! PR40638 Run Time Error: Unit number in I/O statement too large + program main + integer(kind=2) :: lun, anum + integer(kind=1) :: looney, bin + lun = 12 + anum = 5 + looney = 42 + bin = 23 + open (lun, status='scratch') + write(lun,*) anum + anum = 0 + rewind(lun) + read (lun, *) anum + if (anum.ne.5) call abort + open (looney, status='scratch') + write(looney,*)bin + bin = 0 + rewind (looney) + read (looney,*)bin + if (bin.ne.23) call abort + close (lun) + close (looney) + end diff -Nrcpad gcc-4.3.3/gcc/testsuite/lib/target-supports.exp gcc-4.3.4/gcc/testsuite/lib/target-supports.exp *** gcc-4.3.3/gcc/testsuite/lib/target-supports.exp Fri Dec 5 21:08:17 2008 --- gcc-4.3.4/gcc/testsuite/lib/target-supports.exp Sat Jul 25 14:01:53 2009 *************** proc check_effective_target_pthread {} { *** 538,543 **** --- 538,550 ---- } "-pthread"] } + # Return 1 if the target supports -static + proc check_effective_target_static {} { + return [check_no_compiler_messages static executable { + int main (void) { return 0; } + } "-static"] + } + # Return 1 if the target supports -fstack-protector proc check_effective_target_fstack_protector {} { return [check_runtime fstack_protector { *************** proc check_effective_target_vect_int { } *** 1121,1127 **** return $et_vect_int_saved } ! # Return 1 if the target supports int->float conversion # proc check_effective_target_vect_intfloat_cvt { } { --- 1128,1134 ---- return $et_vect_int_saved } ! # Return 1 if the target supports signed int->float conversion # proc check_effective_target_vect_intfloat_cvt { } { *************** proc check_effective_target_vect_intfloa *** 1144,1150 **** } ! # Return 1 if the target supports float->int conversion # proc check_effective_target_vect_floatint_cvt { } { --- 1151,1178 ---- } ! # Return 1 if the target supports unsigned int->float conversion ! # ! ! proc check_effective_target_vect_uintfloat_cvt { } { ! global et_vect_uintfloat_cvt_saved ! ! if [info exists et_vect_uintfloat_cvt_saved] { ! verbose "check_effective_target_vect_uintfloat_cvt: using cached result" 2 ! } else { ! set et_vect_uintfloat_cvt_saved 0 ! if { ([istarget powerpc*-*-*] ! && ![istarget powerpc-*-linux*paired*]) } { ! set et_vect_uintfloat_cvt_saved 1 ! } ! } ! ! verbose "check_effective_target_vect_uintfloat_cvt: returning $et_vect_uintfloat_cvt_saved" 2 ! return $et_vect_uintfloat_cvt_saved ! } ! ! ! # Return 1 if the target supports signed float->int conversion # proc check_effective_target_vect_floatint_cvt { } { *************** proc check_effective_target_vect_floatin *** 1164,1169 **** --- 1192,1217 ---- return $et_vect_floatint_cvt_saved } + # Return 1 if the target supports unsigned float->int conversion + # + + proc check_effective_target_vect_floatuint_cvt { } { + global et_vect_floatuint_cvt_saved + + if [info exists et_vect_floatuint_cvt_saved] { + verbose "check_effective_target_vect_floatuint_cvt: using cached result" 2 + } else { + set et_vect_floatuint_cvt_saved 0 + if { ([istarget powerpc*-*-*] + && ![istarget powerpc-*-linux*paired*]) } { + set et_vect_floatuint_cvt_saved 1 + } + } + + verbose "check_effective_target_vect_floatuint_cvt: returning $et_vect_floatuint_cvt_saved" 2 + return $et_vect_floatuint_cvt_saved + } + # Return 1 is this is an arm target using 32-bit instructions proc check_effective_target_arm32 { } { return [check_no_compiler_messages arm32 assembly { diff -Nrcpad gcc-4.3.3/gcc/testsuite/objc.dg/bad-receiver-type-2.m gcc-4.3.4/gcc/testsuite/objc.dg/bad-receiver-type-2.m *** gcc-4.3.3/gcc/testsuite/objc.dg/bad-receiver-type-2.m Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/objc.dg/bad-receiver-type-2.m Thu Apr 2 21:51:26 2009 *************** *** 0 **** --- 1,41 ---- + /* { dg-do compile } */ + /* Contributed by Alexander Malmberg: PR18456 */ + + @interface Foo + -(void) foo; + @end + + void *ip; + + void (*func1)(void); + + struct + { + int a:2; + } struct1,struct2[2]; + + union + { + int a:2; + } union1,union2[2]; + + Foo **f; + + int main(int argc,char **argv) + { + [(struct {int a;} *)ip foo]; /* { dg-warning "invalid receiver type" } */ + [func1 foo]; /* { dg-warning "invalid receiver type" } */ + [struct1.a foo]; /* { dg-warning "invalid receiver type" } */ + /* { dg-warning "cast to pointer from integer" "" { target *-*-* } 28 } */ + [union1.a foo]; /* { dg-warning "invalid receiver type" } */ + /* { dg-warning "cast to pointer from integer" "" { target *-*-* } 30 } */ + [struct1 foo]; /* { dg-warning "invalid receiver type" } */ + /* { dg-error "cannot convert" "" { target *-*-* } 32 } */ + [union1 foo]; /* { dg-warning "invalid receiver type" } */ + /* { dg-error "cannot convert" "" { target *-*-* } 34 } */ + [struct2 foo]; /* { dg-warning "invalid receiver type" } */ + /* { dg-error "cannot convert" "" { target *-*-* } 36 } */ + [union2 foo]; /* { dg-warning "invalid receiver type" } */ + /* { dg-error "cannot convert" "" { target *-*-* } 38 } */ + [f foo]; /* { dg-warning "invalid receiver type" } */ + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/objc.dg/conditional-1.m gcc-4.3.4/gcc/testsuite/objc.dg/conditional-1.m *** gcc-4.3.3/gcc/testsuite/objc.dg/conditional-1.m Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/objc.dg/conditional-1.m Thu Apr 2 12:40:48 2009 *************** *** 0 **** --- 1,45 ---- + /* Testing conditional warnings (without headers). */ + /* Author: David Ayers */ + + /* { dg-do compile } */ + + #define nil ((id)0) + @interface MyObject + @end + + @protocol MyProtocol + @end + + @interface MyProtoObject + @end + + + int + main (int argc, char *argv[]) + { + id var_id = nil; + id var_id_p = nil; + MyObject *var_obj = nil; + MyProtoObject *var_obj_p = nil; + + var_id = (var_id == var_obj) ? var_id : var_obj; + var_id = (var_id == var_obj) ? var_id : var_obj_p; + + /* Ayers: Currently, the following test case passes for + technically the wrong reason (see below). + */ + var_obj_p = (var_id == var_obj) ? var_obj_p : var_obj; /* { dg-warning "distinct Objective-C types" } */ + var_obj_p = (var_id == var_obj) ? var_obj_p : var_id_p; + + /* Ayers: The first of the following test cases + should probably warn for var_obj_p = var_obj, + yet that would require extensive changes to + build_conditional_expr to create a tree with + multiple types that the assignment would have + to evaluate both versions for correct diagnostics. + */ + var_obj_p = (var_id == var_obj) ? var_id : var_obj; + var_obj_p = (var_id == var_obj) ? var_id : var_obj_p; + + return 0; + } diff -Nrcpad gcc-4.3.3/gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp gcc-4.3.4/gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp *** gcc-4.3.3/gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp Wed Aug 1 16:25:11 2007 --- gcc-4.3.4/gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp Mon Jan 26 18:13:58 2009 *************** set generator_src "$srcdir/$subdir/struc *** 37,44 **** --- 37,56 ---- set generator_src "$generator_src $srcdir/$subdir/generate-random.c" set generator_src "$generator_src $srcdir/$subdir/generate-random_r.c" set generator_cmd "-o $generator $generator_src" + # Temporarily unset GCC_EXEC_PREFIX from environment, as that might + # confuse the $HOSTCC. + set orig_gcc_exec_prefix_saved 0 + if [info exists env(GCC_EXEC_PREFIX)] { + set orig_gcc_exec_prefix "$env(GCC_EXEC_PREFIX)" + set orig_gcc_exec_prefix_saved 1 + unsetenv GCC_EXEC_PREFIX + } set status [remote_exec host "$HOSTCC $HOSTCFLAGS $generator_cmd"] set status [lindex $status 0] + if { $orig_gcc_exec_prefix_saved } { + set orig_gcc_exec_prefix_saved 0 + setenv GCC_EXEC_PREFIX "$orig_gcc_exec_prefix" + } if { $status == 0 } then { file delete -force $tstobjdir file mkdir $tstobjdir diff -Nrcpad gcc-4.3.3/gcc/testsuite/objc.dg/pr28050.m gcc-4.3.4/gcc/testsuite/objc.dg/pr28050.m *** gcc-4.3.3/gcc/testsuite/objc.dg/pr28050.m Thu Jan 1 00:00:00 1970 --- gcc-4.3.4/gcc/testsuite/objc.dg/pr28050.m Mon Jun 22 22:21:17 2009 *************** *** 0 **** --- 1,2 ---- + /* { dg-do compile } */ + int i = [0]; /* { dg-error "expected .:. before .\\]. token" } */ diff -Nrcpad gcc-4.3.3/gcc/testsuite/treelang/ChangeLog gcc-4.3.4/gcc/testsuite/treelang/ChangeLog *** gcc-4.3.3/gcc/testsuite/treelang/ChangeLog Sat Jan 24 10:15:18 2009 --- gcc-4.3.4/gcc/testsuite/treelang/ChangeLog Tue Aug 4 10:57:52 2009 *************** *** 1,3 **** --- 1,7 ---- + 2009-08-04 Release Manager + + * GCC 4.3.4 released. + 2009-01-24 Release Manager * GCC 4.3.3 released.