diff -u gcc-4.4-4.4.3/debian/rules.parameters gcc-4.4-4.4.3/debian/rules.parameters --- gcc-4.4-4.4.3/debian/rules.parameters +++ gcc-4.4-4.4.3/debian/rules.parameters @@ -2,9 +2,9 @@ GCC_VERSION := 4.4.3 NEXT_GCC_VERSION := 4.4.4 BASE_VERSION := 4.4 -SOURCE_VERSION := 4.4.3-4ubuntu3~ppa5 -DEB_VERSION := 4.4.3-4ubuntu3~ppa5 -DEB_EVERSION := 1:4.4.3-4ubuntu3~ppa5 +SOURCE_VERSION := 4.4.3-4ubuntu5 +DEB_VERSION := 4.4.3-4ubuntu5 +DEB_EVERSION := 1:4.4.3-4ubuntu5 GPC_BASE_VERSION := GDC_BASE_VERSION := DEB_GPC_VERSION := @@ -12,7 +12,7 @@ DEB_SOVERSION := 4.4 DEB_SOEVERSION := 1:4.4 DEB_LIBGCC_SOVERSION := 1:4.4 -DEB_LIBGCC_VERSION := 1:4.4.3-4ubuntu3~ppa5 +DEB_LIBGCC_VERSION := 1:4.4.3-4ubuntu5 DEB_STDCXX_SOVERSION := 4.4 DEB_GCJ_SOVERSION := 4.4 PKG_GCJ_EXT := 10 diff -u gcc-4.4-4.4.3/debian/rules.patch gcc-4.4-4.4.3/debian/rules.patch --- gcc-4.4-4.4.3/debian/rules.patch +++ gcc-4.4-4.4.3/debian/rules.patch @@ -183,10 +183,6 @@ debian_patches += pr40133 pr40134 -ifneq (,$(findstring $(DEB_TARGET_ARCH),arm armel ia64 sparc)) - debian_patches += pr42233-rev -endif - #ifeq ($(DEB_TARGET_ARCH),lpia) # debian_patches += gcc-atom gcc-atom-doc #endif diff -u gcc-4.4-4.4.3/debian/changelog gcc-4.4-4.4.3/debian/changelog --- gcc-4.4-4.4.3/debian/changelog +++ gcc-4.4-4.4.3/debian/changelog @@ -1,3 +1,11 @@ +gcc-4.4 (4.4.3-4ubuntu5) lucid; urgency=low + + * Revert the change for PR middle-end/42233 from the last upload, + import the the fix for PR c/43385 from the 4.4 branch. + * Import fix for PR libfortran/43517. + + -- Matthias Klose Fri, 26 Mar 2010 17:57:06 +0100 + gcc-4.4 (4.4.3-4ubuntu4) lucid; urgency=low * Revert PR middle-end/42233 for arm, armel, ia64, sparc; causing diff -u gcc-4.4-4.4.3/debian/patches/svn-updates.diff gcc-4.4-4.4.3/debian/patches/svn-updates.diff --- gcc-4.4-4.4.3/debian/patches/svn-updates.diff +++ gcc-4.4-4.4.3/debian/patches/svn-updates.diff @@ -1,10 +1,10 @@ -# DP: updates from the 4.4 branch upto 20100323 (r157680). +# DP: updates from the 4.4 branch upto 20100326 (r157754). last_updated() { cat > ${dir}LAST_UPDATED < ++ ++ PR c/43385 ++ * gimplify.c (gimple_boolify): Only recurse on __builtin_expect ++ argument if the argument is truth_value_p. ++ ++2010-03-23 Kaz Kojima ++ ++ Backport from mainline: ++ 2010-01-08 DJ Delorie ++ ++ * config/sh/sh.c (sh_expand_epilogue): Fix interrupt handler ++ register popping order. ++ +2010-03-22 James E. Wilson + + PR target/43348 @@ -712,7 +726,7 @@ 2010-01-21 Release Manager * GCC 4.4.3 released. -@@ -108,9 +443,9 @@ +@@ -108,9 +457,9 @@ * Backport from mainline 2010-01-12 Julian Brown @@ -821,6 +835,70 @@ + + return 0; +} +Index: gcc/testsuite/gcc.c-torture/execute/pr43385.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr43385.c (.../tags/gcc_4_4_3_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr43385.c (.../branches/gcc-4_4-branch) +@@ -0,0 +1,59 @@ ++/* PR c/43385 */ ++ ++extern void abort (void); ++ ++int e; ++ ++__attribute__((noinline)) void ++foo (int x, int y) ++{ ++ if (__builtin_expect (x, 0) && y != 0) ++ e++; ++} ++ ++__attribute__((noinline)) int ++bar (int x, int y) ++{ ++ if (__builtin_expect (x, 0) && y != 0) ++ return 1; ++ else ++ return 0; ++} ++ ++int ++main (void) ++{ ++ int z = 0; ++ asm ("" : "+r" (z)); ++ foo (z + 2, z + 1); ++ if (e != 1) ++ abort (); ++ foo (z + 2, z); ++ if (e != 1) ++ abort (); ++ foo (z + 1, z + 1); ++ if (e != 2) ++ abort (); ++ foo (z + 1, z); ++ if (e != 2) ++ abort (); ++ foo (z, z + 1); ++ if (e != 2) ++ abort (); ++ foo (z, z); ++ if (e != 2) ++ abort (); ++ if (bar (z + 2, z + 1) != 1) ++ abort (); ++ if (bar (z + 2, z) != 0) ++ abort (); ++ if (bar (z + 1, z + 1) != 1) ++ abort (); ++ if (bar (z + 1, z) != 0) ++ abort (); ++ if (bar (z, z + 1) != 0) ++ abort (); ++ if (bar (z, z) != 0) ++ abort (); ++ return 0; ++} Index: gcc/testsuite/gcc.c-torture/execute/pr43008.c =================================================================== --- a/src/gcc/testsuite/gcc.c-torture/execute/pr43008.c (.../tags/gcc_4_4_3_release) @@ -1067,6 +1145,41 @@ + { + } +} +Index: gcc/testsuite/gcc.c-torture/compile/pr43367.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr43367.c (.../tags/gcc_4_4_3_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr43367.c (.../branches/gcc-4_4-branch) +@@ -0,0 +1,30 @@ ++unsigned char g_17; ++ ++const unsigned char func_39 (unsigned char p_40, unsigned char * p_41) ++{ ++ return 0; ++} ++ ++void int327 (const unsigned char p_48, unsigned char p_49) ++{ ++ unsigned l_52; ++ unsigned char l_58[2]; ++ int i, j; ++ if (func_39 (l_52, &p_49), p_48) { ++ unsigned char *l_60; ++ unsigned char *l = &l_58[1]; ++ for (j; j; j++) { ++lbl_59: ++ break; ++ } ++ for (l = 0; 1; l += 1) { ++ for (p_49 = 1; p_49; p_49 += 0) { ++ unsigned char **l_61[1][6]; ++ for (j = 0; j < 1; j++) ++ l_61[i][j] = &l_60; ++ goto lbl_59; ++ } ++ } ++ } ++} ++ Index: gcc/testsuite/gcc.c-torture/compile/pr42927.c =================================================================== --- a/src/gcc/testsuite/gcc.c-torture/compile/pr42927.c (.../tags/gcc_4_4_3_release) @@ -1966,6 +2079,74 @@ +} + +/* { dg-final { scan-assembler "do_not_optimize_away" } } */ +Index: gcc/testsuite/gcc.dg/pr42427.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr42427.c (.../tags/gcc_4_4_3_release) ++++ b/src/gcc/testsuite/gcc.dg/pr42427.c (.../branches/gcc-4_4-branch) +@@ -0,0 +1,21 @@ ++/* { dg-do assemble } */ ++/* { dg-options "-O2 -fexceptions -fnon-call-exceptions -fpeel-loops" } */ ++/* { dg-require-effective-target ilp32 } */ ++ ++#include ++ ++extern double myabs (complex double); ++ ++void ++test (double *help, complex double *wm, long nz) ++{ ++ long k; ++ double znew; ++ double zold; ++ for (k = 0; k < nz; k++) ++ { ++ znew = myabs (wm[k]); ++ zold = help[k]; ++ help[k] = znew; ++ } ++} +Index: gcc/testsuite/gcc.dg/pr43300.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr43300.c (.../tags/gcc_4_4_3_release) ++++ b/src/gcc/testsuite/gcc.dg/pr43300.c (.../branches/gcc-4_4-branch) +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++/* { dg-options "-Os -w" } */ ++typedef float V2SF __attribute__ ((vector_size (128))); ++ ++V2SF ++foo (int x, V2SF a) ++{ ++ V2SF b; ++ if (x & 42) ++ b = a; ++ else ++ b = a + (V2SF) {1.0f/0.0f - 1.0f/0.0f, 1.0f/0.0f - 1.0f/0.0f}; ++ while (x--) ++ a += b; ++ ++ return a; ++} +Index: gcc/testsuite/gcc.dg/pr43211.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr43211.c (.../tags/gcc_4_4_3_release) ++++ b/src/gcc/testsuite/gcc.dg/pr43211.c (.../branches/gcc-4_4-branch) +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++ ++struct T; ++ ++struct S { ++ void (*bar)(struct S); ++}; ++ ++void bar(struct T t) {} /* { dg-error "" } */ ++ ++void foo(struct S *s) ++{ ++ s->bar = bar; ++} ++ Index: gcc/testsuite/gcc.dg/vla-22.c =================================================================== --- a/src/gcc/testsuite/gcc.dg/vla-22.c (.../tags/gcc_4_4_3_release) @@ -2013,6 +2194,69 @@ + +/* { dg-final { scan-tree-dump "spi_bias = spi_bias / 1008;" "original" } } */ +/* { dg-final { cleanup-tree-dump "original" } } */ +Index: gcc/testsuite/gcc.dg/pr43402.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr43402.c (.../tags/gcc_4_4_3_release) ++++ b/src/gcc/testsuite/gcc.dg/pr43402.c (.../branches/gcc-4_4-branch) +@@ -0,0 +1,58 @@ ++/* { dg-do run } */ ++/* { dg-options "-O1 -fno-inline" } */ ++extern void abort (void); ++ ++static int something; ++ ++static int * converterData[2]={ ++ &something, &something, ++}; ++ ++static struct { ++ const char *name; ++ int type; ++} const cnvNameType[] = { ++ { "bocu1", 1 }, ++ { "utf7", 1 }, ++ { "utf8", 1 } ++}; ++ ++ ++const int * getAlgorithmicTypeFromName(const char *realName); ++const int * ++getAlgorithmicTypeFromName(const char *realName) ++{ ++ unsigned mid, start, limit; ++ unsigned lastMid; ++ int result; ++ start = 0; ++ limit = sizeof(cnvNameType)/sizeof(cnvNameType[0]); ++ mid = limit; ++ lastMid = 0xffffffff; ++ ++ for (;;) { ++ mid = (start + limit) / 2; ++ if (lastMid == mid) { /* Have we moved? */ ++ break; /* We haven't moved, and it wasn't found. */ ++ } ++ lastMid = mid; ++ result = __builtin_strcmp(realName, cnvNameType[mid].name); ++ ++ if (result < 0) { ++ limit = mid; ++ } else if (result > 0) { ++ start = mid; ++ } else { ++ return converterData[cnvNameType[mid].type]; ++ } ++ } ++ ++ return 0; ++} ++ ++int main (void) ++{ ++ if (!getAlgorithmicTypeFromName ("utf8")) ++ abort (); ++ return 0; ++} Index: gcc/testsuite/gcc.dg/torture/pr42952.c =================================================================== --- a/src/gcc/testsuite/gcc.dg/torture/pr42952.c (.../tags/gcc_4_4_3_release) @@ -2770,6 +3014,22 @@ + ntrans += trans_sram_bit * nlevels; + return (ntrans); +} +Index: gcc/testsuite/gcc.dg/pr43379.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr43379.c (.../tags/gcc_4_4_3_release) ++++ b/src/gcc/testsuite/gcc.dg/pr43379.c (.../branches/gcc-4_4-branch) +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -ftracer -w" } */ ++ ++void *foo(int i, int *p) ++{ ++lab: ++ if (p) *p = i; ++ goto *p; ++ return &&lab; ++} ++ Index: gcc/testsuite/gcc.dg/pr43299.c =================================================================== --- a/src/gcc/testsuite/gcc.dg/pr43299.c (.../tags/gcc_4_4_3_release) @@ -2937,7 +3197,80 @@ =================================================================== --- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_4_4_3_release) +++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-4_4-branch) -@@ -1,3 +1,655 @@ +@@ -1,3 +1,728 @@ ++2010-03-26 Volker Reichelt ++ ++ PR c++/43024 ++ * g++.dg/opt/ice1.C: New. ++ ++2010-03-25 Jerry DeLisle ++ ++ PR libfortran/43517 ++ * gfortran.dg/read_eof_7.f90: New test. ++ ++2010-03-25 H.J. Lu ++ ++ Backport from mainline: ++ 2010-03-22 Jason Merrill ++ ++ PR c++/43333 ++ * g++.dg/ext/is_pod_98.C: New. ++ ++ 2010-03-22 Michael Matz ++ ++ PR middle-end/43475 ++ * gfortran.dg/pr43475.f90: New testcase. ++ ++ 2010-03-22 Richard Guenther ++ ++ PR tree-optimization/43390 ++ * gfortran.fortran-torture/execute/pr43390.f90: New testcase. ++ ++ 2010-03-20 Dodji Seketeli ++ ++ PR c++/43375 ++ * g++.dg/abi/mangle42.C: New test. ++ ++ 2010-03-19 Andrew Pinski ++ ++ PR C/43211 ++ * gcc.dg/pr43211.c: New test. ++ ++ 2010-03-18 Martin Jambor ++ ++ PR middle-end/42450 ++ * g++.dg/torture/pr42450.C: New test. ++ ++ 2010-03-18 Michael Matz ++ ++ PR tree-optimization/43402 ++ * gcc.dg/pr43402.c: New testcase. ++ ++ 2010-03-17 Peter Bergner ++ ++ PR target/42427 ++ * gcc.dg/pr42427.c: New test. ++ ++ 2010-03-16 Richard Guenther ++ ++ PR middle-end/43379 ++ * gcc.dg/pr43379.c: New testcase. ++ ++ 2010-03-15 Michael Matz ++ ++ PR middle-end/43300 ++ * gcc.dg/pr43300.c: New testcase. ++ ++ 2010-03-15 Richard Guenther ++ ++ PR tree-optimization/43367 ++ * gcc.c-torture/compile/pr43367.c: New testcase. ++ ++2010-03-25 Jakub Jelinek ++ ++ PR c/43385 ++ * gcc.c-torture/execute/pr43385.c: New test. ++ +2010-03-22 Richard Guenther + + Backport from mainline: @@ -3620,6 +3953,20 @@ // Origin: "Weidmann, Nicholas" typedef void (function_ptr)(int); +Index: gcc/testsuite/gfortran.fortran-torture/execute/pr43390.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.fortran-torture/execute/pr43390.f90 (.../tags/gcc_4_4_3_release) ++++ b/src/gcc/testsuite/gfortran.fortran-torture/execute/pr43390.f90 (.../branches/gcc-4_4-branch) +@@ -0,0 +1,9 @@ ++ logical :: l1(4) ++ logical :: l2(4) ++ l1 = (/.TRUE.,.FALSE.,.TRUE.,.FALSE./) ++ l2 = (/.FALSE.,.TRUE.,.FALSE.,.TRUE./) ++ if (dot_product (l1, l2)) call abort () ++ l2 = .TRUE. ++ if (.not.dot_product (l1, l2)) call abort () ++end ++ Index: gcc/testsuite/gfortran.fortran-torture/compile/pr42781.f90 =================================================================== --- a/src/gcc/testsuite/gfortran.fortran-torture/compile/pr42781.f90 (.../tags/gcc_4_4_3_release) @@ -4032,6 +4379,73 @@ + __builtin_va_start(v, i); // { dg-error "not declared" } + i = __builtin_va_arg(v, int); +} +Index: gcc/testsuite/g++.dg/ext/is_pod_98.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/is_pod_98.C (.../tags/gcc_4_4_3_release) ++++ b/src/gcc/testsuite/g++.dg/ext/is_pod_98.C (.../branches/gcc-4_4-branch) +@@ -0,0 +1,16 @@ ++// PR c++/43333 ++// { dg-options "-std=c++98" } ++// { dg-do run } ++ ++struct strPOD ++{ ++ const char *const foo; ++ const char *const bar; ++}; ++extern "C" void abort (void); ++int main () ++{ ++ if (!__is_pod (strPOD)) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/g++.dg/opt/ice1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/opt/ice1.C (.../tags/gcc_4_4_3_release) ++++ b/src/gcc/testsuite/g++.dg/opt/ice1.C (.../branches/gcc-4_4-branch) +@@ -0,0 +1,41 @@ ++// PR c++/43024 ++// { dg-options "-O2" } ++ ++void foo(); ++ ++template struct X ++{ ++ enum { e }; ++ typedef int Y; ++}; ++ ++template struct A ++{ ++ ~A() { foo(); } ++ A() { a<0>(0); } ++ template void a(typename X::e>::Y); ++ struct B b(); ++}; ++ ++struct B ++{ ++ A<> b0, b1, b2, b3; ++ B operator+ (const B&); ++}; ++ ++struct C ++{ ++ A<> c0, c1, c2, c3, c4, c5, c6, c7, c8; ++}; ++ ++inline void bar(int i) ++{ ++ A<> a0, a1; ++ if (i) a0.b() + a0.b() + a0.b() + a0.b(); ++} ++ ++void baz() ++{ ++ C c; ++ bar(0); ++} Index: gcc/testsuite/g++.dg/parse/attr-externally-visible-1.C =================================================================== --- a/src/gcc/testsuite/g++.dg/parse/attr-externally-visible-1.C (.../tags/gcc_4_4_3_release) @@ -4068,6 +4482,25 @@ + struct S {}; + } +} +Index: gcc/testsuite/g++.dg/abi/mangle42.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/abi/mangle42.C (.../tags/gcc_4_4_3_release) ++++ b/src/gcc/testsuite/g++.dg/abi/mangle42.C (.../branches/gcc-4_4-branch) +@@ -0,0 +1,14 @@ ++// Origin: PR c++/43375 ++// { dg-do compile { target i?86-*-* x86_64-*-* } } ++// { dg-options "-msse2 -std=gnu++0x" } ++ ++typedef float __v4sf __attribute__ ((__vector_size__ (16))); ++typedef int __v4si __attribute__ ((__vector_size__ (16))); ++__v4sf my_asin(__v4sf x) ++{ ++ static const __v4si g_Mask{0x7fffffff, ++ 0x00000000, ++ 0x7fffffff, ++ 0x7fffffff }; ++ return __builtin_ia32_andnps ((__v4sf) g_Mask, x); ++} Index: gcc/testsuite/g++.dg/eh/pr42859.C =================================================================== --- a/src/gcc/testsuite/g++.dg/eh/pr42859.C (.../tags/gcc_4_4_3_release) @@ -4248,6 +4681,123 @@ + vtkConvexPointSet::New(); + } +} +Index: gcc/testsuite/g++.dg/torture/pr42450.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr42450.C (.../tags/gcc_4_4_3_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr42450.C (.../branches/gcc-4_4-branch) +@@ -0,0 +1,112 @@ ++/* { dg-do compile } */ ++ ++template < typename > class basic_stringstream; ++ ++struct basic_string { ++ basic_string(); ++}; ++ ++struct ios_base { ++ virtual ~ios_base(); ++}; ++ ++class ostream:ios_base {}; ++class istream:virtual ios_base {}; ++ ++template < typename > struct basic_iostream:public istream, ostream { ++ ~basic_iostream () {} ++}; ++extern template class basic_iostream < char >; ++ ++template < typename > struct basic_stringstream:public basic_iostream < char > { ++ basic_string _M_stringbuf; ++ ~basic_stringstream () {} ++}; ++extern template class basic_stringstream < char >; ++ ++template < typename > struct AnyMatrixBase; ++template < typename, int _Rows, int _Cols, int = _Rows, int = _Cols > class Matrix; ++template < typename > class CwiseNullaryOp; ++ ++template < typename Derived > struct MatrixBase:public AnyMatrixBase < Derived > { ++ typedef CwiseNullaryOp < Derived > ConstantReturnType; ++ ConstantReturnType Constant (); ++ template < typename > Derived cast (); ++ static CwiseNullaryOp < Derived > Random (int); ++}; ++ ++template < typename Derived > struct AnyMatrixBase { ++ Derived derived () {} ++ Derived & derived () const {} ++}; ++ ++template < typename, int > struct ei_matrix_storage {}; ++ ++template < typename _Scalar, int, int, int _MaxRows, int _MaxCols > struct Matrix:MatrixBase < Matrix < _Scalar, _MaxRows, _MaxCols > > { ++ typedef MatrixBase < Matrix > Base; ++ ei_matrix_storage < int, _MaxCols > m_storage; ++ Matrix operator= (const Matrix other) { ++ _resize_to_match (other); ++ lazyAssign (other.derived ()); ++ } ++ template < typename OtherDerived > Matrix lazyAssign (MatrixBase < OtherDerived > other) { ++ _resize_to_match (other); ++ return Base (other.derived ()); ++ } ++ Matrix (); ++ template < typename OtherDerived > Matrix (const MatrixBase < OtherDerived > &other) { ++ *this = other; ++ } ++ template < typename OtherDerived > void _resize_to_match (const MatrixBase < OtherDerived > &) { ++ throw 1; ++ } ++}; ++ ++template < typename MatrixType > class CwiseNullaryOp: ++public MatrixBase < CwiseNullaryOp < MatrixType > > {}; ++ ++int f() ++{ ++ bool align_cols; ++ if (align_cols) { ++ basic_stringstream sstr; ++ f(); ++ } ++} ++ ++template < typename > struct AutoDiffScalar; ++template < typename Functor > struct AutoDiffJacobian:Functor { ++ AutoDiffJacobian (Functor); ++ typedef typename Functor::InputType InputType; ++ typedef typename Functor::ValueType ValueType; ++ typedef Matrix < int, Functor::InputsAtCompileTime, 1 > DerivativeType; ++ typedef AutoDiffScalar < DerivativeType > ActiveScalar; ++ typedef Matrix < ActiveScalar, Functor::InputsAtCompileTime, 1 > ActiveInput; ++ void operator () (InputType x, ValueType *) { ++ ActiveInput ax = x.template cast < ActiveScalar > (); ++ } ++}; ++ ++template < int NX, int NY > struct TestFunc1 { ++ enum { ++ InputsAtCompileTime = NX ++ }; ++ typedef Matrix < float, NX, 1 > InputType; ++ typedef Matrix < float, NY, 1 > ValueType; ++ typedef Matrix < float, NY, NX > JacobianType; ++ int inputs (); ++}; ++ ++template < typename Func > void forward_jacobian (Func f) { ++ typename Func::InputType x = Func::InputType::Random (f.inputs ()); ++ typename Func::ValueType y; ++ typename Func::JacobianType jref = jref.Constant (); ++ AutoDiffJacobian < Func > autoj (f); ++ autoj (x, &y); ++} ++ ++void test_autodiff_scalar () ++{ ++ forward_jacobian (TestFunc1 < 2, 2 > ()); ++ forward_jacobian (TestFunc1 < 3, 2 > ()); ++} Index: gcc/testsuite/g++.dg/torture/pr42714.C =================================================================== --- a/src/gcc/testsuite/g++.dg/torture/pr42714.C (.../tags/gcc_4_4_3_release) @@ -5044,6 +5594,25 @@ + type(t), parameter :: a(1) = t(4) ! [t(4)] worked OK + real(a(1)%i) :: b +end +Index: gcc/testsuite/gfortran.dg/pr43475.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr43475.f90 (.../tags/gcc_4_4_3_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr43475.f90 (.../branches/gcc-4_4-branch) +@@ -0,0 +1,14 @@ ++! PR middle-end/43475 ++! { dg-do compile } ++! { dg-options "-O2" } ++subroutine ss(w) ++ implicit none ++ integer :: w(:) ++ integer :: b,c,d ++ b = w(8) ++ c = 5 ++ d = 3 ++ call s1(c) ++ call s2(b+c) ++ call s3(w(b)) ++end subroutine ss Index: gcc/testsuite/gfortran.dg/pr42294.f =================================================================== --- a/src/gcc/testsuite/gfortran.dg/pr42294.f (.../tags/gcc_4_4_3_release) @@ -5497,6 +6066,31 @@ + read(lines,nml=cmd,iostat=ios,iomsg=message) + if (ios.ne.0) call abort +end subroutine process +Index: gcc/testsuite/gfortran.dg/read_eof_7.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/read_eof_7.f90 (.../tags/gcc_4_4_3_release) ++++ b/src/gcc/testsuite/gfortran.dg/read_eof_7.f90 (.../branches/gcc-4_4-branch) +@@ -0,0 +1,20 @@ ++! { dg-do run } ++! PR43517 Spurious EOF condition when namelist read follows formatted read ++! Test case from the problem reporter - Michael Richmond ++program main ++ namelist /name/ j ++ open (10,status='scratch',form='formatted') ++ write(10,'(a)') "999999" ++ write(10,'(a)') " $name" ++ write(10,'(a)') " j=73," ++ write(10,'(a)') " /" ++ rewind(10) ++ i = 54321 ++ idum = 6789 ++ read (10,'(2i5,4x)') i, idum ! Trailing 4x was setting EOF condition ++ if (i /= 99999 .and. idum /= 9) call abort ++ j = 12345 ++ read (10,name) ! EOF condition tripped here. ++ if (j /= 73) call abort ++end program main ++ Index: gcc/testsuite/gfortran.dg/read_eof_6.f =================================================================== --- a/src/gcc/testsuite/gfortran.dg/read_eof_6.f (.../tags/gcc_4_4_3_release) @@ -7829,7 +8423,7 @@ Free Software Foundation, Inc. Major work done by Sebastian Pop , Diego Novillo and Jason Merrill . -@@ -2762,6 +2762,32 @@ +@@ -2762,6 +2762,36 @@ { tree type = TREE_TYPE (expr); @@ -7840,7 +8434,8 @@ + tree call = TREE_OPERAND (expr, 0); + tree fn = get_callee_fndecl (call); + -+ /* For __builtin_expect ((long) (x), y) recurse into x as well. */ ++ /* For __builtin_expect ((long) (x), y) recurse into x as well ++ if x is truth_value_p. */ + if (fn + && DECL_BUILT_IN_CLASS (fn) == BUILT_IN_NORMAL + && DECL_FUNCTION_CODE (fn) == BUILT_IN_EXPECT @@ -7852,9 +8447,12 @@ + if (TREE_CODE (arg) == NOP_EXPR + && TREE_TYPE (arg) == TREE_TYPE (call)) + arg = TREE_OPERAND (arg, 0); -+ arg = gimple_boolify (arg); -+ CALL_EXPR_ARG (call, 0) -+ = fold_convert (TREE_TYPE (call), arg); ++ if (truth_value_p (TREE_CODE (arg))) ++ { ++ arg = gimple_boolify (arg); ++ CALL_EXPR_ARG (call, 0) ++ = fold_convert (TREE_TYPE (call), arg); ++ } + } + } + } @@ -7862,7 +8460,7 @@ if (TREE_CODE (type) == BOOLEAN_TYPE) return expr; -@@ -3684,6 +3710,21 @@ +@@ -3684,6 +3714,21 @@ } } @@ -7884,7 +8482,7 @@ if (notify_temp_creation) return GS_OK; -@@ -3931,11 +3972,14 @@ +@@ -3931,11 +3976,14 @@ switch (TREE_CODE (*from_p)) { case VAR_DECL: @@ -8690,6 +9288,14 @@ =================================================================== --- a/src/gcc/config/sh/sh.c (.../tags/gcc_4_4_3_release) +++ b/src/gcc/config/sh/sh.c (.../branches/gcc-4_4-branch) +@@ -1,6 +1,6 @@ + /* Output routines for GCC for Renesas / SuperH SH. + Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +- 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. ++ 2003, 2004, 2005, 2006, 2007, 2008, 2010 Free Software Foundation, Inc. + Contributed by Steve Chamberlain (sac@cygnus.com). + Improved by Jim Wilson (wilson@cygnus.com). + @@ -4061,6 +4061,13 @@ && ! TARGET_SMALLCODE) new_align = 4; @@ -8704,6 +9310,24 @@ if (found_si) { count_si += inc; +@@ -6764,13 +6771,13 @@ + pop (PR_REG); + } + +- /* Banked registers are poped first to avoid being scheduled in the ++ /* Banked registers are popped first to avoid being scheduled in the + delay slot. RTE switches banks before the ds instruction. */ + if (current_function_interrupt) + { +- for (i = FIRST_BANKED_REG; i <= LAST_BANKED_REG; i++) +- if (TEST_HARD_REG_BIT (live_regs_mask, i)) +- pop (LAST_BANKED_REG - i); ++ for (i = LAST_BANKED_REG; i >= FIRST_BANKED_REG; i--) ++ if (TEST_HARD_REG_BIT (live_regs_mask, i)) ++ pop (i); + + last_reg = FIRST_PSEUDO_REGISTER - LAST_BANKED_REG - 1; + } @@ -8721,9 +8728,7 @@ && GET_CODE (PATTERN (insn)) != USE && GET_CODE (PATTERN (insn)) != CLOBBER) @@ -9549,7 +10173,12 @@ =================================================================== --- a/src/libgfortran/ChangeLog (.../tags/gcc_4_4_3_release) +++ b/src/libgfortran/ChangeLog (.../branches/gcc-4_4-branch) -@@ -1,3 +1,45 @@ +@@ -1,3 +1,50 @@ ++2010-03-25 Jerry DeLisle ++ ++ PR libfortran/43517 ++ * io/read.c (read_x): Return if seen EOR condition. ++ +2010-03-17 Jerry DeLisle + + PR libfortran/43265 @@ -9721,7 +10350,7 @@ =================================================================== --- a/src/libgfortran/io/read.c (.../tags/gcc_4_4_3_release) +++ b/src/libgfortran/io/read.c (.../branches/gcc-4_4-branch) -@@ -1019,16 +1019,81 @@ +@@ -1019,16 +1019,84 @@ * and never look at it. */ void @@ -9752,6 +10381,9 @@ + goto done; + } + ++ if (dtp->u.p.sf_seen_eor) ++ return; ++ + p = fbuf_read (dtp->u.p.current_unit, &length); + if (p == NULL) + { reverted: --- gcc-4.4-4.4.3/debian/patches/pr42233-rev.diff +++ gcc-4.4-4.4.3.orig/debian/patches/pr42233-rev.diff @@ -1,1109 +0,0 @@ -# DP: Revert 157274, PR42233 - - PR middle-end/42233 - * dojump.c (do_jump) : Invert priority. - - PR bootstrap/43121 - * except.c (sjlj_emit_function_enter): Don't call - add_reg_br_prob_note, instead add REG_BR_PROB note to the last insn - directly. - * rtl.h (add_reg_br_prob_note): Remove prototype. - - PR middle-end/42233 - * loop-doloop.c (add_test): Adjust do_compare_rtx_and_jump caller. - - PR middle-end/42233 - * expr.h (jumpifnot, jumpifnot_1, jumpif, jumpif_1, do_jump, - do_jump_1, do_compare_rtx_and_jump): Add PROB argument. - * dojump.c: Include output.h. - (inv): New inline function. - (jumpifnot, jumpifnot_1, jumpif, jumpif_1, do_jump_1, do_jump, - do_jump_by_parts_greater_rtx, do_jump_by_parts_greater, - do_jump_by_parts_zero_rtx, do_jump_by_parts_equality_rtx, - do_jump_by_parts_equality, do_compare_and_jump): Add PROB - argument, pass it down to other calls. - (do_compare_rtx_and_jump): Likewise. If PROB is not -1, - add REG_BR_PROB note to the conditional jump. - * cfgexpand.c (add_reg_br_prob_note): Removed. - (expand_gimple_cond): Don't call it, add the probability - as last argument to jumpif_1/jumpifnot_1. - * Makefile.in (dojump.o): Depend on output.h. - * builtins.c (expand_errno_check): Adjust do_compare_rtx_and_jump - callers. - * expmed.c (emit_store_flag_force, do_cmp_and_jump): Likewise. - * stmt.c (do_jump_if_equal): Likewise. - * cfgrtl.c (rtl_lv_add_condition_to_bb): Likewise. - * loop-unswitch.c (compare_and_jump_seq): Likewise. - * config/rs6000/rs6000.c (rs6000_aix_emit_builtin_unwind_init): - Likewise. - * optabs.c (expand_doubleword_shift, expand_abs): Likewise. - * expr.c (expand_expr_real_1): Adjust do_jump, jumpifnot and - jumpifnot_1 callers. - (expand_expr_real_2): Adjust jumpifnot_1 and do_compare_rtx_and_jump - callers. - (store_expr): Adjust jumpifnot caller. - (store_constructor): Adjust jumpif caller. - - PR middle-end/42233 - * gimplify.c (gimple_boolify): For __builtin_expect call - gimple_boolify also on its first argument. - -Index: gcc/loop-unswitch.c -=================================================================== ---- a/src/gcc/loop-unswitch.c (revision -+++ b/src/gcc/loop-unswitch.c (working -@@ -1,5 +1,5 @@ - /* Loop unswitching for GNU compiler. -- Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2010 -+ Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008 - Free Software Foundation, Inc. - - This file is part of GCC. -@@ -121,7 +121,7 @@ - op0 = force_operand (op0, NULL_RTX); - op1 = force_operand (op1, NULL_RTX); - do_compare_rtx_and_jump (op0, op1, comp, 0, -- mode, NULL_RTX, NULL_RTX, label, -1); -+ mode, NULL_RTX, NULL_RTX, label); - jump = get_last_insn (); - JUMP_LABEL (jump) = label; - LABEL_NUSES (label)++; -Index: gcc/optabs.c -=================================================================== ---- a/src/gcc/optabs.c (revision -+++ b/src/gcc/optabs.c (working -@@ -1,6 +1,6 @@ - /* Expand the basic unary and binary arithmetic operations, for GNU compiler. - Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 -+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 - Free Software Foundation, Inc. - - This file is part of GCC. -@@ -1149,7 +1149,7 @@ - - NO_DEFER_POP; - do_compare_rtx_and_jump (cmp1, cmp2, cmp_code, false, op1_mode, -- 0, 0, subword_label, -1); -+ 0, 0, subword_label); - OK_DEFER_POP; - - if (!expand_superword_shift (binoptab, outof_input, superword_op1, -@@ -3498,7 +3498,7 @@ - NO_DEFER_POP; - - do_compare_rtx_and_jump (target, CONST0_RTX (mode), GE, 0, mode, -- NULL_RTX, NULL_RTX, op1, -1); -+ NULL_RTX, NULL_RTX, op1); - - op0 = expand_unop (mode, result_unsignedp ? neg_optab : negv_optab, - target, target, 0); -Index: gcc/dojump.c -=================================================================== ---- a/src/gcc/dojump.c (revision -+++ b/src/gcc/dojump.c (working -@@ -1,6 +1,6 @@ - /* Convert tree expression to rtl instructions, for GNU compiler. - Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -+ 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. - - This file is part of GCC. -@@ -35,22 +35,13 @@ - #include "langhooks.h" - #include "ggc.h" - #include "basic-block.h" --#include "output.h" - - static bool prefer_and_bit_test (enum machine_mode, int); --static void do_jump_by_parts_greater (tree, int, rtx, rtx, int); --static void do_jump_by_parts_equality (tree, rtx, rtx, int); -+static void do_jump_by_parts_greater (tree, int, rtx, rtx); -+static void do_jump_by_parts_equality (tree, rtx, rtx); - static void do_compare_and_jump (tree, enum rtx_code, enum rtx_code, rtx, -- rtx, int); -+ rtx); - --/* Invert probability if there is any. -1 stands for unknown. */ -- --static inline int --inv (int prob) --{ -- return prob == -1 ? -1 : REG_BR_PROB_BASE - prob; --} -- - /* At the start of a function, record that we have no previously-pushed - arguments waiting to be popped. */ - -@@ -105,17 +96,17 @@ - functions here. */ - - void --jumpifnot (tree exp, rtx label, int prob) -+jumpifnot (tree exp, rtx label) - { -- do_jump (exp, label, NULL_RTX, inv (prob)); -+ do_jump (exp, label, NULL_RTX); - } - - /* Generate code to evaluate EXP and jump to LABEL if the value is nonzero. */ - - void --jumpif (tree exp, rtx label, int prob) -+jumpif (tree exp, rtx label) - { -- do_jump (exp, NULL_RTX, label, prob); -+ do_jump (exp, NULL_RTX, label); - } - - /* Used internally by prefer_and_bit_test. */ -@@ -165,12 +156,10 @@ - - do_jump always does any pending stack adjust except when it does not - actually perform a jump. An example where there is no jump -- is when EXP is `(foo (), 0)' and IF_FALSE_LABEL is null. -+ is when EXP is `(foo (), 0)' and IF_FALSE_LABEL is null. */ - -- PROB is probability of jump to if_true_label, or -1 if unknown. */ -- - void --do_jump (tree exp, rtx if_false_label, rtx if_true_label, int prob) -+do_jump (tree exp, rtx if_false_label, rtx if_true_label) - { - enum tree_code code = TREE_CODE (exp); - rtx temp; -@@ -217,12 +206,11 @@ - case LROTATE_EXPR: - case RROTATE_EXPR: - /* These cannot change zero->nonzero or vice versa. */ -- do_jump (TREE_OPERAND (exp, 0), if_false_label, if_true_label, prob); -+ do_jump (TREE_OPERAND (exp, 0), if_false_label, if_true_label); - break; - - case TRUTH_NOT_EXPR: -- do_jump (TREE_OPERAND (exp, 0), if_true_label, if_false_label, -- inv (prob)); -+ do_jump (TREE_OPERAND (exp, 0), if_true_label, if_false_label); - break; - - case COND_EXPR: -@@ -238,10 +226,10 @@ - } - - do_pending_stack_adjust (); -- do_jump (TREE_OPERAND (exp, 0), label1, NULL_RTX, -1); -- do_jump (TREE_OPERAND (exp, 1), if_false_label, if_true_label, prob); -+ do_jump (TREE_OPERAND (exp, 0), label1, NULL_RTX); -+ do_jump (TREE_OPERAND (exp, 1), if_false_label, if_true_label); - emit_label (label1); -- do_jump (TREE_OPERAND (exp, 2), if_false_label, if_true_label, prob); -+ do_jump (TREE_OPERAND (exp, 2), if_false_label, if_true_label); - break; - } - -@@ -273,8 +261,7 @@ - && (optab_handler (cmp_optab, TYPE_MODE (type))->insn_code - != CODE_FOR_nothing)) - { -- do_jump (fold_convert (type, exp), if_false_label, if_true_label, -- prob); -+ do_jump (fold_convert (type, exp), if_false_label, if_true_label); - break; - } - goto normal; -@@ -290,14 +277,12 @@ - != MODE_COMPLEX_INT); - - if (integer_zerop (TREE_OPERAND (exp, 1))) -- do_jump (TREE_OPERAND (exp, 0), if_true_label, if_false_label, -- inv (prob)); -+ do_jump (TREE_OPERAND (exp, 0), if_true_label, if_false_label); - else if (GET_MODE_CLASS (TYPE_MODE (inner_type)) == MODE_INT - && !can_compare_p (EQ, TYPE_MODE (inner_type), ccp_jump)) -- do_jump_by_parts_equality (exp, if_false_label, if_true_label, prob); -+ do_jump_by_parts_equality (exp, if_false_label, if_true_label); - else -- do_compare_and_jump (exp, EQ, EQ, if_false_label, if_true_label, -- prob); -+ do_compare_and_jump (exp, EQ, EQ, if_false_label, if_true_label); - break; - } - -@@ -317,14 +302,12 @@ - != MODE_COMPLEX_INT); - - if (integer_zerop (TREE_OPERAND (exp, 1))) -- do_jump (TREE_OPERAND (exp, 0), if_false_label, if_true_label, prob); -+ do_jump (TREE_OPERAND (exp, 0), if_false_label, if_true_label); - else if (GET_MODE_CLASS (TYPE_MODE (inner_type)) == MODE_INT - && !can_compare_p (NE, TYPE_MODE (inner_type), ccp_jump)) -- do_jump_by_parts_equality (exp, if_true_label, if_false_label, -- inv (prob)); -+ do_jump_by_parts_equality (exp, if_true_label, if_false_label); - else -- do_compare_and_jump (exp, NE, NE, if_false_label, if_true_label, -- prob); -+ do_compare_and_jump (exp, NE, NE, if_false_label, if_true_label); - break; - } - -@@ -332,43 +315,36 @@ - mode = TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0))); - if (GET_MODE_CLASS (mode) == MODE_INT - && ! can_compare_p (LT, mode, ccp_jump)) -- do_jump_by_parts_greater (exp, 1, if_false_label, if_true_label, prob); -+ do_jump_by_parts_greater (exp, 1, if_false_label, if_true_label); - else -- do_compare_and_jump (exp, LT, LTU, if_false_label, if_true_label, -- prob); -+ do_compare_and_jump (exp, LT, LTU, if_false_label, if_true_label); - break; - - case LE_EXPR: - mode = TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0))); - if (GET_MODE_CLASS (mode) == MODE_INT - && ! can_compare_p (LE, mode, ccp_jump)) -- do_jump_by_parts_greater (exp, 0, if_true_label, if_false_label, -- inv (prob)); -+ do_jump_by_parts_greater (exp, 0, if_true_label, if_false_label); - else -- do_compare_and_jump (exp, LE, LEU, if_false_label, if_true_label, -- prob); -+ do_compare_and_jump (exp, LE, LEU, if_false_label, if_true_label); - break; - - case GT_EXPR: - mode = TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0))); - if (GET_MODE_CLASS (mode) == MODE_INT - && ! can_compare_p (GT, mode, ccp_jump)) -- do_jump_by_parts_greater (exp, 0, if_false_label, if_true_label, -- prob); -+ do_jump_by_parts_greater (exp, 0, if_false_label, if_true_label); - else -- do_compare_and_jump (exp, GT, GTU, if_false_label, if_true_label, -- prob); -+ do_compare_and_jump (exp, GT, GTU, if_false_label, if_true_label); - break; - - case GE_EXPR: - mode = TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0))); - if (GET_MODE_CLASS (mode) == MODE_INT - && ! can_compare_p (GE, mode, ccp_jump)) -- do_jump_by_parts_greater (exp, 1, if_true_label, if_false_label, -- inv (prob)); -+ do_jump_by_parts_greater (exp, 1, if_true_label, if_false_label); - else -- do_compare_and_jump (exp, GE, GEU, if_false_label, if_true_label, -- prob); -+ do_compare_and_jump (exp, GE, GEU, if_false_label, if_true_label); - break; - - case UNORDERED_EXPR: -@@ -392,10 +368,9 @@ - do_rev = 1; - - if (! do_rev) -- do_compare_and_jump (exp, cmp, cmp, if_false_label, if_true_label, prob); -+ do_compare_and_jump (exp, cmp, cmp, if_false_label, if_true_label); - else -- do_compare_and_jump (exp, rcmp, rcmp, if_true_label, if_false_label, -- inv (prob)); -+ do_compare_and_jump (exp, rcmp, rcmp, if_true_label, if_false_label); - } - break; - -@@ -440,7 +415,7 @@ - mode = TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0))); - if (can_compare_p (rcode1, mode, ccp_jump)) - do_compare_and_jump (exp, rcode1, rcode1, if_false_label, -- if_true_label, prob); -+ if_true_label); - else - { - tree op0 = save_expr (TREE_OPERAND (exp, 0)); -@@ -454,8 +429,8 @@ - - cmp0 = fold_build2 (tcode1, TREE_TYPE (exp), op0, op1); - cmp1 = fold_build2 (tcode2, TREE_TYPE (exp), op0, op1); -- do_jump (cmp0, 0, if_true_label, prob); -- do_jump (cmp1, if_false_label, if_true_label, prob); -+ do_jump (cmp0, 0, if_true_label); -+ do_jump (cmp1, if_false_label, if_true_label); - } - break; - } -@@ -468,7 +443,6 @@ - { - tree exp0 = TREE_OPERAND (exp, 0); - rtx set_label, clr_label; -- int setclr_prob = prob; - - /* Strip narrowing integral type conversions. */ - while (CONVERT_EXPR_P (exp0) -@@ -484,7 +458,6 @@ - exp0 = TREE_OPERAND (exp0, 0); - clr_label = if_true_label; - set_label = if_false_label; -- setclr_prob = inv (prob); - } - else - { -@@ -507,7 +480,7 @@ - = (unsigned HOST_WIDE_INT) 1 << TREE_INT_CST_LOW (shift); - do_jump (build2 (BIT_AND_EXPR, argtype, arg, - build_int_cst_wide_type (argtype, mask, 0)), -- clr_label, set_label, setclr_prob); -+ clr_label, set_label); - break; - } - } -@@ -530,8 +503,7 @@ - && (optab_handler (cmp_optab, TYPE_MODE (type))->insn_code - != CODE_FOR_nothing)) - { -- do_jump (fold_convert (type, exp), if_false_label, if_true_label, -- prob); -+ do_jump (fold_convert (type, exp), if_false_label, if_true_label); - break; - } - -@@ -554,13 +526,13 @@ - if (if_false_label == NULL_RTX) - { - drop_through_label = gen_label_rtx (); -- do_jump (TREE_OPERAND (exp, 0), drop_through_label, NULL_RTX, prob); -- do_jump (TREE_OPERAND (exp, 1), NULL_RTX, if_true_label, prob); -+ do_jump (TREE_OPERAND (exp, 0), drop_through_label, NULL_RTX); -+ do_jump (TREE_OPERAND (exp, 1), NULL_RTX, if_true_label); - } - else - { -- do_jump (TREE_OPERAND (exp, 0), if_false_label, NULL_RTX, prob); -- do_jump (TREE_OPERAND (exp, 1), if_false_label, if_true_label, prob); -+ do_jump (TREE_OPERAND (exp, 0), if_false_label, NULL_RTX); -+ do_jump (TREE_OPERAND (exp, 1), if_false_label, if_true_label); - } - break; - -@@ -569,7 +541,7 @@ - /* High branch cost, expand as the bitwise OR of the conditions. - Do the same if the RHS has side effects, because we're effectively - turning a TRUTH_OR_EXPR into a TRUTH_ORIF_EXPR. */ -- if (BRANCH_COST (optimize_insn_for_speed_p (), false) >= 4 -+ if (BRANCH_COST (optimize_insn_for_speed_p (), false)>= 4 - || TREE_SIDE_EFFECTS (TREE_OPERAND (exp, 1))) - goto normal; - -@@ -577,13 +549,13 @@ - if (if_true_label == NULL_RTX) - { - drop_through_label = gen_label_rtx (); -- do_jump (TREE_OPERAND (exp, 0), NULL_RTX, drop_through_label, prob); -- do_jump (TREE_OPERAND (exp, 1), if_false_label, NULL_RTX, prob); -+ do_jump (TREE_OPERAND (exp, 0), NULL_RTX, drop_through_label); -+ do_jump (TREE_OPERAND (exp, 1), if_false_label, NULL_RTX); - } - else - { -- do_jump (TREE_OPERAND (exp, 0), NULL_RTX, if_true_label, prob); -- do_jump (TREE_OPERAND (exp, 1), if_false_label, if_true_label, prob); -+ do_jump (TREE_OPERAND (exp, 0), NULL_RTX, if_true_label); -+ do_jump (TREE_OPERAND (exp, 1), if_false_label, if_true_label); - } - break; - -@@ -605,7 +577,7 @@ - do_compare_rtx_and_jump (temp, CONST0_RTX (GET_MODE (temp)), - NE, TYPE_UNSIGNED (TREE_TYPE (exp)), - GET_MODE (temp), NULL_RTX, -- if_false_label, if_true_label, prob); -+ if_false_label, if_true_label); - } - - if (drop_through_label) -@@ -621,8 +593,7 @@ - - static void - do_jump_by_parts_greater_rtx (enum machine_mode mode, int unsignedp, rtx op0, -- rtx op1, rtx if_false_label, rtx if_true_label, -- int prob) -+ rtx op1, rtx if_false_label, rtx if_true_label) - { - int nwords = (GET_MODE_SIZE (mode) / UNITS_PER_WORD); - rtx drop_through_label = 0; -@@ -654,12 +625,11 @@ - /* All but high-order word must be compared as unsigned. */ - do_compare_rtx_and_jump (op0_word, op1_word, GT, - (unsignedp || i > 0), word_mode, NULL_RTX, -- NULL_RTX, if_true_label, prob); -+ NULL_RTX, if_true_label); - - /* Consider lower words only if these are equal. */ - do_compare_rtx_and_jump (op0_word, op1_word, NE, unsignedp, word_mode, -- NULL_RTX, NULL_RTX, if_false_label, -- inv (prob)); -+ NULL_RTX, NULL_RTX, if_false_label); - } - - if (if_false_label) -@@ -675,7 +645,7 @@ - - static void - do_jump_by_parts_greater (tree exp, int swap, rtx if_false_label, -- rtx if_true_label, int prob) -+ rtx if_true_label) - { - rtx op0 = expand_normal (TREE_OPERAND (exp, swap)); - rtx op1 = expand_normal (TREE_OPERAND (exp, !swap)); -@@ -683,7 +653,7 @@ - int unsignedp = TYPE_UNSIGNED (TREE_TYPE (TREE_OPERAND (exp, 0))); - - do_jump_by_parts_greater_rtx (mode, unsignedp, op0, op1, if_false_label, -- if_true_label, prob); -+ if_true_label); - } - - /* Jump according to whether OP0 is 0. We assume that OP0 has an integer -@@ -693,7 +663,7 @@ - - static void - do_jump_by_parts_zero_rtx (enum machine_mode mode, rtx op0, -- rtx if_false_label, rtx if_true_label, int prob) -+ rtx if_false_label, rtx if_true_label) - { - int nwords = GET_MODE_SIZE (mode) / UNITS_PER_WORD; - rtx part; -@@ -715,7 +685,8 @@ - if (part != 0) - { - do_compare_rtx_and_jump (part, const0_rtx, EQ, 1, word_mode, -- NULL_RTX, if_false_label, if_true_label, prob); -+ NULL_RTX, if_false_label, if_true_label); -+ - return; - } - -@@ -726,7 +697,7 @@ - for (i = 0; i < nwords; i++) - do_compare_rtx_and_jump (operand_subword_force (op0, i, mode), - const0_rtx, EQ, 1, word_mode, NULL_RTX, -- if_false_label, NULL_RTX, prob); -+ if_false_label, NULL_RTX); - - if (if_true_label) - emit_jump (if_true_label); -@@ -742,7 +713,7 @@ - - static void - do_jump_by_parts_equality_rtx (enum machine_mode mode, rtx op0, rtx op1, -- rtx if_false_label, rtx if_true_label, int prob) -+ rtx if_false_label, rtx if_true_label) - { - int nwords = (GET_MODE_SIZE (mode) / UNITS_PER_WORD); - rtx drop_through_label = 0; -@@ -750,14 +721,12 @@ - - if (op1 == const0_rtx) - { -- do_jump_by_parts_zero_rtx (mode, op0, if_false_label, if_true_label, -- prob); -+ do_jump_by_parts_zero_rtx (mode, op0, if_false_label, if_true_label); - return; - } - else if (op0 == const0_rtx) - { -- do_jump_by_parts_zero_rtx (mode, op1, if_false_label, if_true_label, -- prob); -+ do_jump_by_parts_zero_rtx (mode, op1, if_false_label, if_true_label); - return; - } - -@@ -768,7 +737,7 @@ - do_compare_rtx_and_jump (operand_subword_force (op0, i, mode), - operand_subword_force (op1, i, mode), - EQ, 0, word_mode, NULL_RTX, -- if_false_label, NULL_RTX, prob); -+ if_false_label, NULL_RTX); - - if (if_true_label) - emit_jump (if_true_label); -@@ -780,14 +749,13 @@ - with one insn, test the comparison and jump to the appropriate label. */ - - static void --do_jump_by_parts_equality (tree exp, rtx if_false_label, rtx if_true_label, -- int prob) -+do_jump_by_parts_equality (tree exp, rtx if_false_label, rtx if_true_label) - { - rtx op0 = expand_normal (TREE_OPERAND (exp, 0)); - rtx op1 = expand_normal (TREE_OPERAND (exp, 1)); - enum machine_mode mode = TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0))); - do_jump_by_parts_equality_rtx (mode, op0, op1, if_false_label, -- if_true_label, prob); -+ if_true_label); - } - - /* Generate code for a comparison of OP0 and OP1 with rtx code CODE. -@@ -857,7 +825,7 @@ - void - do_compare_rtx_and_jump (rtx op0, rtx op1, enum rtx_code code, int unsignedp, - enum machine_mode mode, rtx size, rtx if_false_label, -- rtx if_true_label, int prob) -+ rtx if_true_label) - { - rtx tem; - int dummy_true_label = 0; -@@ -869,7 +837,6 @@ - if_true_label = if_false_label; - if_false_label = 0; - code = reverse_condition (code); -- prob = inv (prob); - } - - /* If one operand is constant, make it the second one. Only do this -@@ -919,56 +886,52 @@ - { - case LTU: - do_jump_by_parts_greater_rtx (mode, 1, op1, op0, -- if_false_label, if_true_label, prob); -+ if_false_label, if_true_label); - break; - - case LEU: - do_jump_by_parts_greater_rtx (mode, 1, op0, op1, -- if_true_label, if_false_label, -- inv (prob)); -+ if_true_label, if_false_label); - break; - - case GTU: - do_jump_by_parts_greater_rtx (mode, 1, op0, op1, -- if_false_label, if_true_label, prob); -+ if_false_label, if_true_label); - break; - - case GEU: - do_jump_by_parts_greater_rtx (mode, 1, op1, op0, -- if_true_label, if_false_label, -- inv (prob)); -+ if_true_label, if_false_label); - break; - - case LT: - do_jump_by_parts_greater_rtx (mode, 0, op1, op0, -- if_false_label, if_true_label, prob); -+ if_false_label, if_true_label); - break; - - case LE: - do_jump_by_parts_greater_rtx (mode, 0, op0, op1, -- if_true_label, if_false_label, -- inv (prob)); -+ if_true_label, if_false_label); - break; - - case GT: - do_jump_by_parts_greater_rtx (mode, 0, op0, op1, -- if_false_label, if_true_label, prob); -+ if_false_label, if_true_label); - break; - - case GE: - do_jump_by_parts_greater_rtx (mode, 0, op1, op0, -- if_true_label, if_false_label, -- inv (prob)); -+ if_true_label, if_false_label); - break; - - case EQ: - do_jump_by_parts_equality_rtx (mode, op0, op1, if_false_label, -- if_true_label, prob); -+ if_true_label); - break; - - case NE: - do_jump_by_parts_equality_rtx (mode, op0, op1, if_true_label, -- if_false_label, inv (prob)); -+ if_false_label); - break; - - default: -@@ -976,32 +939,8 @@ - } - } - else -- { -- rtx last = get_last_insn (); -- emit_cmp_and_jump_insns (op0, op1, code, size, mode, unsignedp, -- if_true_label); -- if (prob != -1 && profile_status != PROFILE_ABSENT) -- { -- for (last = NEXT_INSN (last); -- last && NEXT_INSN (last); -- last = NEXT_INSN (last)) -- if (JUMP_P (last)) -- break; -- if (!last -- || !JUMP_P (last) -- || NEXT_INSN (last) -- || !any_condjump_p (last)) -- { -- if (dump_file) -- fprintf (dump_file, "Failed to add probability note\n"); -- } -- else -- { -- gcc_assert (!find_reg_note (last, REG_BR_PROB, 0)); -- add_reg_note (last, REG_BR_PROB, GEN_INT (prob)); -- } -- } -- } -+ emit_cmp_and_jump_insns (op0, op1, code, size, mode, unsignedp, -+ if_true_label); - - if (if_false_label) - emit_jump (if_false_label); -@@ -1022,7 +961,7 @@ - static void - do_compare_and_jump (tree exp, enum rtx_code signed_code, - enum rtx_code unsigned_code, rtx if_false_label, -- rtx if_true_label, int prob) -+ rtx if_true_label) - { - rtx op0, op1; - tree type; -@@ -1083,7 +1022,7 @@ - do_compare_rtx_and_jump (op0, op1, code, unsignedp, mode, - ((mode == BLKmode) - ? expr_size (TREE_OPERAND (exp, 0)) : NULL_RTX), -- if_false_label, if_true_label, prob); -+ if_false_label, if_true_label); - } - - #include "gt-dojump.h" -Index: gcc/expr.c -=================================================================== ---- a/src/gcc/expr.c (revision -+++ b/src/gcc/expr.c (working -@@ -4483,7 +4483,7 @@ - - do_pending_stack_adjust (); - NO_DEFER_POP; -- jumpifnot (TREE_OPERAND (exp, 0), lab1, -1); -+ jumpifnot (TREE_OPERAND (exp, 0), lab1); - store_expr (TREE_OPERAND (exp, 1), target, call_param_p, - nontemporal); - emit_jump_insn (gen_jump (lab2)); -@@ -5503,7 +5503,7 @@ - /* Generate a conditional jump to exit the loop. */ - exit_cond = build2 (LT_EXPR, integer_type_node, - index, hi_index); -- jumpif (exit_cond, loop_end, -1); -+ jumpif (exit_cond, loop_end); - - /* Update the loop counter, and jump to the head of - the loop. */ -@@ -8974,8 +8974,7 @@ - - temp = gen_label_rtx (); - do_compare_rtx_and_jump (target, cmpop1, comparison_code, -- unsignedp, mode, NULL_RTX, NULL_RTX, temp, -- -1); -+ unsignedp, mode, NULL_RTX, NULL_RTX, temp); - } - emit_move_insn (target, op1); - emit_label (temp); -@@ -9126,7 +9125,7 @@ - emit_move_insn (target, const0_rtx); - - op1 = gen_label_rtx (); -- jumpifnot (exp, op1, -1); -+ jumpifnot (exp, op1); - - if (target) - emit_move_insn (target, const1_rtx); -@@ -9195,7 +9194,7 @@ - NO_DEFER_POP; - op0 = gen_label_rtx (); - op1 = gen_label_rtx (); -- jumpifnot (TREE_OPERAND (exp, 0), op0, -1); -+ jumpifnot (TREE_OPERAND (exp, 0), op0); - store_expr (TREE_OPERAND (exp, 1), temp, - modifier == EXPAND_STACK_PARM, - false); -@@ -9241,7 +9240,7 @@ - int value = TREE_CODE (rhs) == BIT_IOR_EXPR; - do_jump (TREE_OPERAND (rhs, 1), - value ? label : 0, -- value ? 0 : label, -1); -+ value ? 0 : label); - expand_assignment (lhs, build_int_cst (TREE_TYPE (rhs), value), - MOVE_NONTEMPORAL (exp)); - do_pending_stack_adjust (); -@@ -9925,7 +9924,7 @@ - emit_move_insn (target, invert ? const0_rtx : const1_rtx); - label = gen_label_rtx (); - do_compare_rtx_and_jump (op0, op1, code, unsignedp, operand_mode, NULL_RTX, -- NULL_RTX, label, -1); -+ NULL_RTX, label); - - emit_move_insn (target, invert ? const1_rtx : const0_rtx); - emit_label (label); -Index: gcc/expr.h -=================================================================== ---- a/src/gcc/expr.h (revision -+++ b/src/gcc/expr.h (working -@@ -1,6 +1,6 @@ - /* Definitions for code generation pass of GNU compiler. - Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. - - This file is part of GCC. -@@ -564,20 +564,20 @@ - extern tree string_constant (tree, tree *); - - /* Generate code to evaluate EXP and jump to LABEL if the value is zero. */ --extern void jumpifnot (tree, rtx, int); -+extern void jumpifnot (tree, rtx); - - /* Generate code to evaluate EXP and jump to LABEL if the value is nonzero. */ --extern void jumpif (tree, rtx, int); -+extern void jumpif (tree, rtx); - - /* Generate code to evaluate EXP and jump to IF_FALSE_LABEL if - the result is zero, or IF_TRUE_LABEL if the result is one. */ --extern void do_jump (tree, rtx, rtx, int); -+extern void do_jump (tree, rtx, rtx); - - /* Generate rtl to compare two rtx's, will call emit_cmp_insn. */ - extern rtx compare_from_rtx (rtx, rtx, enum rtx_code, int, enum machine_mode, - rtx); - extern void do_compare_rtx_and_jump (rtx, rtx, enum rtx_code, int, -- enum machine_mode, rtx, rtx, rtx, int); -+ enum machine_mode, rtx, rtx, rtx); - - /* Two different ways of generating switch statements. */ - extern int try_casesi (tree, tree, tree, tree, rtx, rtx, rtx); -Index: gcc/gimplify.c -=================================================================== ---- a/src/gcc/gimplify.c (revision -+++ b/src/gcc/gimplify.c (working -@@ -1,6 +1,6 @@ - /* Tree lowering pass. This pass converts the GENERIC functions-as-trees - tree representation into the GIMPLE form. -- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. - Major work done by Sebastian Pop , - Diego Novillo and Jason Merrill . -@@ -2762,32 +2762,6 @@ - { - tree type = TREE_TYPE (expr); - -- if (TREE_CODE (expr) == NE_EXPR -- && TREE_CODE (TREE_OPERAND (expr, 0)) == CALL_EXPR -- && integer_zerop (TREE_OPERAND (expr, 1))) -- { -- tree call = TREE_OPERAND (expr, 0); -- tree fn = get_callee_fndecl (call); -- -- /* For __builtin_expect ((long) (x), y) recurse into x as well. */ -- if (fn -- && DECL_BUILT_IN_CLASS (fn) == BUILT_IN_NORMAL -- && DECL_FUNCTION_CODE (fn) == BUILT_IN_EXPECT -- && call_expr_nargs (call) == 2) -- { -- tree arg = CALL_EXPR_ARG (call, 0); -- if (arg) -- { -- if (TREE_CODE (arg) == NOP_EXPR -- && TREE_TYPE (arg) == TREE_TYPE (call)) -- arg = TREE_OPERAND (arg, 0); -- arg = gimple_boolify (arg); -- CALL_EXPR_ARG (call, 0) -- = fold_convert (TREE_TYPE (call), arg); -- } -- } -- } -- - if (TREE_CODE (type) == BOOLEAN_TYPE) - return expr; - -Index: gcc/loop-doloop.c -=================================================================== ---- a/src/gcc/loop-doloop.c (revision -+++ b/src/gcc/loop-doloop.c (working -@@ -1,5 +1,5 @@ - /* Perform doloop optimizations -- Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010 Free Software Foundation, -+ Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, - Inc. - Based on code by Michael P. Hayes (m.hayes@elec.canterbury.ac.nz) - -@@ -291,8 +291,7 @@ - op0 = force_operand (op0, NULL_RTX); - op1 = force_operand (op1, NULL_RTX); - label = block_label (dest); -- do_compare_rtx_and_jump (op0, op1, code, 0, mode, NULL_RTX, -- NULL_RTX, label, -1); -+ do_compare_rtx_and_jump (op0, op1, code, 0, mode, NULL_RTX, NULL_RTX, label); - - jump = get_last_insn (); - if (!jump || !JUMP_P (jump)) -Index: gcc/expmed.c -=================================================================== ---- a/src/gcc/expmed.c (revision -+++ b/src/gcc/expmed.c (working -@@ -1,7 +1,7 @@ - /* Medium-level subroutines: convert bit-field store and extract - and shifts, multiplies and divides to rtl instructions. - Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. - - This file is part of GCC. -@@ -5608,7 +5608,7 @@ - emit_move_insn (target, const1_rtx); - label = gen_label_rtx (); - do_compare_rtx_and_jump (op0, op1, code, unsignedp, mode, NULL_RTX, -- NULL_RTX, label, -1); -+ NULL_RTX, label); - - emit_move_insn (target, const0_rtx); - emit_label (label); -@@ -5626,5 +5626,5 @@ - { - int unsignedp = (op == LTU || op == LEU || op == GTU || op == GEU); - do_compare_rtx_and_jump (arg1, arg2, op, unsignedp, mode, -- NULL_RTX, NULL_RTX, label, -1); -+ NULL_RTX, NULL_RTX, label); - } -Index: gcc/except.c -=================================================================== ---- a/src/gcc/except.c (revision -+++ b/src/gcc/except.c (working -@@ -1,6 +1,6 @@ - /* Implements exception handling. - Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. - Contributed by Mike Stump . - -@@ -1834,7 +1834,7 @@ - - #ifdef DONT_USE_BUILTIN_SETJMP - { -- rtx x, last; -+ rtx x; - x = emit_library_call_value (setjmp_libfunc, NULL_RTX, LCT_RETURNS_TWICE, - TYPE_MODE (integer_type_node), 1, - plus_constant (XEXP (fc, 0), -@@ -1842,12 +1842,7 @@ - - emit_cmp_and_jump_insns (x, const0_rtx, NE, 0, - TYPE_MODE (integer_type_node), 0, dispatch_label); -- last = get_last_insn (); -- if (JUMP_P (last) && any_condjump_p (last)) -- { -- gcc_assert (!find_reg_note (last, REG_BR_PROB, 0)); -- add_reg_note (last, REG_BR_PROB, GEN_INT (REG_BR_PROB_BASE / 100)); -- } -+ add_reg_br_prob_note (get_insns (), REG_BR_PROB_BASE/100); - } - #else - expand_builtin_setjmp_setup (plus_constant (XEXP (fc, 0), sjlj_fc_jbuf_ofs), -Index: gcc/cfgexpand.c -=================================================================== ---- a/src/gcc/cfgexpand.c (revision -+++ b/src/gcc/cfgexpand.c (working -@@ -379,6 +379,46 @@ - } - - -+/* Verify that there is exactly single jump instruction since last and attach -+ REG_BR_PROB note specifying probability. -+ ??? We really ought to pass the probability down to RTL expanders and let it -+ re-distribute it when the conditional expands into multiple conditionals. -+ This is however difficult to do. */ -+void -+add_reg_br_prob_note (rtx last, int probability) -+{ -+ if (profile_status == PROFILE_ABSENT) -+ return; -+ for (last = NEXT_INSN (last); last && NEXT_INSN (last); last = NEXT_INSN (last)) -+ if (JUMP_P (last)) -+ { -+ /* It is common to emit condjump-around-jump sequence when we don't know -+ how to reverse the conditional. Special case this. */ -+ if (!any_condjump_p (last) -+ || !JUMP_P (NEXT_INSN (last)) -+ || !simplejump_p (NEXT_INSN (last)) -+ || !NEXT_INSN (NEXT_INSN (last)) -+ || !BARRIER_P (NEXT_INSN (NEXT_INSN (last))) -+ || !NEXT_INSN (NEXT_INSN (NEXT_INSN (last))) -+ || !LABEL_P (NEXT_INSN (NEXT_INSN (NEXT_INSN (last)))) -+ || NEXT_INSN (NEXT_INSN (NEXT_INSN (NEXT_INSN (last))))) -+ goto failed; -+ gcc_assert (!find_reg_note (last, REG_BR_PROB, 0)); -+ add_reg_note (last, REG_BR_PROB, -+ GEN_INT (REG_BR_PROB_BASE - probability)); -+ return; -+ } -+ if (!last || !JUMP_P (last) || !any_condjump_p (last)) -+ goto failed; -+ gcc_assert (!find_reg_note (last, REG_BR_PROB, 0)); -+ add_reg_note (last, REG_BR_PROB, GEN_INT (probability)); -+ return; -+failed: -+ if (dump_file) -+ fprintf (dump_file, "Failed to add probability note\n"); -+} -+ -+ - #ifndef STACK_ALIGNMENT_NEEDED - #define STACK_ALIGNMENT_NEEDED 1 - #endif -@@ -1629,8 +1669,8 @@ - two-way jump that needs to be decomposed into two basic blocks. */ - if (false_edge->dest == bb->next_bb) - { -- jumpif (pred, label_rtx_for_bb (true_edge->dest), -- true_edge->probability); -+ jumpif (pred, label_rtx_for_bb (true_edge->dest)); -+ add_reg_br_prob_note (last, true_edge->probability); - maybe_dump_rtl_for_gimple_stmt (stmt, last); - if (true_edge->goto_locus) - { -@@ -1645,8 +1685,8 @@ - } - if (true_edge->dest == bb->next_bb) - { -- jumpifnot (pred, label_rtx_for_bb (false_edge->dest), -- false_edge->probability); -+ jumpifnot (pred, label_rtx_for_bb (false_edge->dest)); -+ add_reg_br_prob_note (last, false_edge->probability); - maybe_dump_rtl_for_gimple_stmt (stmt, last); - if (false_edge->goto_locus) - { -@@ -1660,7 +1700,8 @@ - return NULL; - } - -- jumpif (pred, label_rtx_for_bb (true_edge->dest), true_edge->probability); -+ jumpif (pred, label_rtx_for_bb (true_edge->dest)); -+ add_reg_br_prob_note (last, true_edge->probability); - last = get_last_insn (); - if (false_edge->goto_locus) - { -Index: gcc/rtl.h -=================================================================== ---- a/src/gcc/rtl.h (revision -+++ b/src/gcc/rtl.h (working -@@ -1,6 +1,6 @@ - /* Register Transfer Language (RTL) definitions for GCC - Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -+ 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. - - This file is part of GCC. -@@ -2305,6 +2305,8 @@ - /* In predict.c */ - extern void invert_br_probabilities (rtx); - extern bool expensive_function_p (int); -+/* In cfgexpand.c */ -+extern void add_reg_br_prob_note (rtx last, int probability); - - /* In var-tracking.c */ - extern unsigned int variable_tracking_main (void); -Index: gcc/Makefile.in -=================================================================== ---- a/src/gcc/Makefile.in (revision -+++ b/src/gcc/Makefile.in (working -@@ -3,7 +3,7 @@ - - # Copyright (C) 1987, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 1996, - # 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, --# 2008, 2009, 2010 Free Software Foundation, Inc. -+# 2008, 2009 Free Software Foundation, Inc. - - #This file is part of GCC. - -@@ -2514,7 +2514,7 @@ - tree-pass.h $(DF_H) $(DIAGNOSTIC_H) vecprim.h - dojump.o : dojump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \ - $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) $(OPTABS_H) $(INSN_ATTR_H) insn-config.h \ -- langhooks.h $(GGC_H) gt-dojump.h vecprim.h $(BASIC_BLOCK_H) output.h -+ langhooks.h $(GGC_H) gt-dojump.h vecprim.h $(BASIC_BLOCK_H) - builtins.o : builtins.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ - $(TREE_H) $(GIMPLE_H) $(FLAGS_H) $(TARGET_H) $(FUNCTION_H) $(REGS_H) \ - $(EXPR_H) $(OPTABS_H) insn-config.h $(RECOG_H) output.h typeclass.h \ -Index: gcc/config/rs6000/rs6000.c -=================================================================== ---- a/src/gcc/config/rs6000/rs6000.c (revision -+++ b/src/gcc/config/rs6000/rs6000.c (working -@@ -1,6 +1,6 @@ - /* Subroutines used for code generation on IBM RS/6000. - Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -+ 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. - Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) - -@@ -15534,7 +15534,7 @@ - - do_compare_rtx_and_jump (opcode, tocompare, EQ, 1, - SImode, NULL_RTX, NULL_RTX, -- no_toc_save_needed, -1); -+ no_toc_save_needed); - - mem = gen_frame_mem (Pmode, - gen_rtx_PLUS (Pmode, stack_top, -Index: gcc/cfgrtl.c -=================================================================== ---- a/src/gcc/cfgrtl.c (revision -+++ b/src/gcc/cfgrtl.c (working -@@ -1,6 +1,6 @@ - /* Control flow graph manipulation code for GNU compiler. - Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 -+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 - Free Software Foundation, Inc. - - This file is part of GCC. -@@ -2951,7 +2951,7 @@ - op0 = force_operand (op0, NULL_RTX); - op1 = force_operand (op1, NULL_RTX); - do_compare_rtx_and_jump (op0, op1, comp, 0, -- mode, NULL_RTX, NULL_RTX, label, -1); -+ mode, NULL_RTX, NULL_RTX, label); - jump = get_last_insn (); - JUMP_LABEL (jump) = label; - LABEL_NUSES (label)++; -Index: gcc/stmt.c -=================================================================== ---- a/src/gcc/stmt.c (revision -+++ b/src/gcc/stmt.c (working -@@ -1,6 +1,6 @@ - /* Expands front end tree to back end RTL for GCC -- Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -+ Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, -+ 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 - Free Software Foundation, Inc. - - This file is part of GCC. -@@ -2472,7 +2472,7 @@ - int unsignedp) - { - do_compare_rtx_and_jump (op0, op1, EQ, unsignedp, mode, -- NULL_RTX, NULL_RTX, label, -1); -+ NULL_RTX, NULL_RTX, label); - } - - /* Not all case values are encountered equally. This function