Hello community, here is the log from the commit of package gcc45 for openSUSE:Factory checked in at Thu Mar 18 22:51:46 CET 2010. -------- --- gcc45/cross-avr-gcc45.changes 2010-03-12 14:56:10.000000000 +0100 +++ gcc45/cross-avr-gcc45.changes 2010-03-18 14:32:15.000000000 +0100 @@ -1,0 +2,5 @@ +Thu Mar 18 14:27:02 CET 2010 - matz@suse.de + +- Add patch for PR43402, miscompilation of libicu. + +------------------------------------------------------------------- cross-hppa-gcc-icecream-backend.changes: same change cross-i386-gcc-icecream-backend.changes: same change cross-ia64-gcc-icecream-backend.changes: same change cross-ppc-gcc-icecream-backend.changes: same change cross-ppc64-gcc-icecream-backend.changes: same change cross-s390-gcc-icecream-backend.changes: same change cross-s390x-gcc-icecream-backend.changes: same change cross-spu-gcc45-static.changes: same change cross-spu-gcc45.changes: same change cross-x86_64-gcc-icecream-backend.changes: same change gcc45-testresults.changes: same change gcc45.changes: same change libffi45.changes: same change libgcj45.changes: same change calling whatdependson for head-i586 New: ---- pr43402.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cross-avr-gcc45.spec ++++++ --- /var/tmp/diff_new_pack.eaY4rH/_old 2010-03-18 22:50:40.000000000 +0100 +++ /var/tmp/diff_new_pack.eaY4rH/_new 2010-03-18 22:50:40.000000000 +0100 @@ -74,7 +74,7 @@ Url: http://gcc.gnu.org/ Version: 4.5.0_20100311 -Release: 1 +Release: 2 %define gcc_version %(echo %version | sed 's/_.*//') %define gcc_dir_version %(echo %gcc_version | cut -d '.' -f 1-2) %define snapshot_date %(echo %version | sed 's/[34]\.[0-9]\.[0-6]//' | sed 's/_/-/') @@ -107,6 +107,7 @@ Patch29: build-id.diff Patch30: gcc43-no-unwind-tables.diff Patch31: pr43270.diff +Patch32: pr43402.diff # A set of patches from the RH srpm Patch51: gcc41-ia64-stack-protector.patch Patch55: gcc41-java-slow_pthread_self.patch @@ -193,6 +194,7 @@ %endif %patch30 %patch31 +%patch32 %patch51 %patch55 %patch57 cross-hppa-gcc-icecream-backend.spec: same change cross-i386-gcc-icecream-backend.spec: same change cross-ia64-gcc-icecream-backend.spec: same change cross-ppc-gcc-icecream-backend.spec: same change cross-ppc64-gcc-icecream-backend.spec: same change cross-s390-gcc-icecream-backend.spec: same change cross-s390x-gcc-icecream-backend.spec: same change cross-spu-gcc45-static.spec: same change cross-spu-gcc45.spec: same change cross-x86_64-gcc-icecream-backend.spec: same change gcc45-testresults.spec: same change gcc45.spec: same change libffi45.spec: same change libgcj45.spec: same change ++++++ gcc.spec.in ++++++ --- /var/tmp/diff_new_pack.eaY4rH/_old 2010-03-18 22:50:42.000000000 +0100 +++ /var/tmp/diff_new_pack.eaY4rH/_new 2010-03-18 22:50:42.000000000 +0100 @@ -206,6 +206,7 @@ Patch29: build-id.diff Patch30: gcc43-no-unwind-tables.diff Patch31: pr43270.diff +Patch32: pr43402.diff # A set of patches from the RH srpm Patch51: gcc41-ia64-stack-protector.patch Patch55: gcc41-java-slow_pthread_self.patch @@ -951,6 +952,7 @@ %endif %patch30 %patch31 +%patch32 %patch51 %patch55 %patch57 ++++++ pr43402.diff ++++++ PR tree-optimization/43402 * tree-cfgcleanup.c (cleanup_control_expr_graph): Don't follow PHI chains of ssa names registered for update. testsuite/ * gcc.dg/pr43402.c: New testcase. Index: gcc/tree-cfgcleanup.c =================================================================== --- gcc/tree-cfgcleanup.c (revision 157458) +++ gcc/tree-cfgcleanup.c (working copy) @@ -103,20 +103,28 @@ cleanup_control_expr_graph (basic_block /* For conditions try harder and lookup single-argument PHI nodes. Only do so from the same basic-block though as other basic-blocks may be dead already. */ - if (TREE_CODE (lhs) == SSA_NAME) + if (TREE_CODE (lhs) == SSA_NAME + && !name_registered_for_update_p (lhs)) { gimple def_stmt = SSA_NAME_DEF_STMT (lhs); if (gimple_code (def_stmt) == GIMPLE_PHI && gimple_phi_num_args (def_stmt) == 1 - && gimple_bb (def_stmt) == gimple_bb (stmt)) + && gimple_bb (def_stmt) == gimple_bb (stmt) + && (TREE_CODE (PHI_ARG_DEF (def_stmt, 0)) != SSA_NAME + || !name_registered_for_update_p (PHI_ARG_DEF (def_stmt, + 0)))) lhs = PHI_ARG_DEF (def_stmt, 0); } - if (TREE_CODE (rhs) == SSA_NAME) + if (TREE_CODE (rhs) == SSA_NAME + && !name_registered_for_update_p (rhs)) { gimple def_stmt = SSA_NAME_DEF_STMT (rhs); if (gimple_code (def_stmt) == GIMPLE_PHI && gimple_phi_num_args (def_stmt) == 1 - && gimple_bb (def_stmt) == gimple_bb (stmt)) + && gimple_bb (def_stmt) == gimple_bb (stmt) + && (TREE_CODE (PHI_ARG_DEF (def_stmt, 0)) != SSA_NAME + || !name_registered_for_update_p (PHI_ARG_DEF (def_stmt, + 0)))) rhs = PHI_ARG_DEF (def_stmt, 0); } val = fold_binary_loc (loc, gimple_cond_code (stmt), Index: gcc/testsuite/gcc.dg/pr43402.c =================================================================== --- gcc/testsuite/gcc.dg/pr43402.c (revision 0) +++ gcc/testsuite/gcc.dg/pr43402.c (revision 0) @@ -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; +} ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org