diff --git a/.cvsignore b/.cvsignore index 0785a37..9581c22 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -gcc-4.1.1-20061011.tar.bz2 +gcc-4.1.1-20061025.tar.bz2 diff --git a/gcc41-pr29299.patch b/gcc41-pr29299.patch new file mode 100644 index 0000000..ff0acf5 --- /dev/null +++ b/gcc41-pr29299.patch @@ -0,0 +1,93 @@ +2006-10-18 Jan Hubicka + + PR middle-end/29299 + * cfgexpand.c (expand_used_vars_for_block): Vars marked used by user + are used. + +2006-10-15 Jan Hubicka + Richard Guenther + + PR middle-end/29299 + * cgraphunit.c (cgraph_finalize_compilation_unit): Call + process_function_and_variable_attributes on all variables, including + those discovered during cgraph construction phase. + + * gcc.dg/pr29299.c: New testcase. + +--- gcc/cgraphunit.c (revision 117745) ++++ gcc/cgraphunit.c (revision 117863) +@@ -1055,6 +1055,7 @@ cgraph_finalize_compilation_unit (void) + /* Keep track of already processed nodes when called multiple times for + intermodule optimization. */ + static struct cgraph_node *first_analyzed; ++ struct cgraph_node *first_processed = first_analyzed; + static struct cgraph_varpool_node *first_analyzed_var; + + if (errorcount || sorrycount) +@@ -1077,7 +1078,10 @@ cgraph_finalize_compilation_unit (void) + } + + timevar_push (TV_CGRAPH); +- process_function_and_variable_attributes (first_analyzed, first_analyzed_var); ++ process_function_and_variable_attributes (first_processed, ++ first_analyzed_var); ++ first_processed = cgraph_nodes; ++ first_analyzed_var = cgraph_varpool_nodes; + cgraph_varpool_analyze_pending_decls (); + if (cgraph_dump_file) + { +@@ -1119,11 +1123,16 @@ cgraph_finalize_compilation_unit (void) + if (!edge->callee->reachable) + cgraph_mark_reachable_node (edge->callee); + ++ /* We finalize local static variables during constructing callgraph ++ edges. Process their attributes too. */ ++ process_function_and_variable_attributes (first_processed, ++ first_analyzed_var); ++ first_processed = cgraph_nodes; ++ first_analyzed_var = cgraph_varpool_nodes; + cgraph_varpool_analyze_pending_decls (); + } + + /* Collect entry points to the unit. */ +- + if (cgraph_dump_file) + { + fprintf (cgraph_dump_file, "Unit entry points:"); +@@ -1163,7 +1172,6 @@ cgraph_finalize_compilation_unit (void) + dump_cgraph (cgraph_dump_file); + } + first_analyzed = cgraph_nodes; +- first_analyzed_var = cgraph_varpool_nodes; + ggc_collect (); + timevar_pop (TV_CGRAPH); + } +--- gcc/cfgexpand.c (revision 117745) ++++ gcc/cfgexpand.c (revision 117863) +@@ -764,7 +764,12 @@ expand_used_vars_for_block (tree block, + + /* Expand all variables at this level. */ + for (t = BLOCK_VARS (block); t ; t = TREE_CHAIN (t)) +- if (TREE_USED (t)) ++ if (TREE_USED (t) ++ /* Force local static variables to be output when marked by ++ used attribute. For unit-at-a-time, cgraph code already takes ++ care of this. */ ++ || (!flag_unit_at_a_time && TREE_STATIC (t) ++ && DECL_PRESERVE_P (t))) + expand_one_var (t, toplevel); + + this_sv_num = stack_vars_num; +--- gcc/testsuite/gcc.dg/pr29299.c (revision 0) ++++ gcc/testsuite/gcc.dg/pr29299.c (revision 117863) +@@ -0,0 +1,10 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O" } */ ++ ++static int bof __attribute__((used)); ++int foo() ++{ ++ static int barbarbarbar __attribute__((used)); ++}; ++ ++/* { dg-final { scan-assembler "barbarbarbar" } } */ diff --git a/gcc41.spec b/gcc41.spec index d06ab60..9e382d5 100644 --- a/gcc41.spec +++ b/gcc41.spec @@ -1,6 +1,6 @@ -%define DATE 20061011 +%define DATE 20061025 %define gcc_version 4.1.1 -%define gcc_release 30 +%define gcc_release 31 %define _unpackaged_files_terminate_build 0 %define multilib_64_archs sparc64 ppc64 s390x x86_64 %ifarch %{ix86} x86_64 ia64 @@ -122,7 +122,7 @@ Patch13: gcc41-pr20297-test.patch Patch14: gcc41-objc-rh185398.patch Patch15: gcc41-tests.patch Patch16: gcc41-pr25874.patch -Patch17: gcc41-pr26881.patch +Patch17: gcc41-pr29241.patch Patch18: gcc41-i386-tune-geode.patch Patch19: gcc41-hash-style-gnu.patch Patch20: gcc41-power6.patch @@ -136,7 +136,7 @@ Patch27: gcc41-pr29272.patch Patch28: gcc41-pr29059.patch Patch29: gcc41-strncat-chk.patch Patch30: gcc41-power6x.patch -Patch31: gcc41-pr29091.patch +Patch31: gcc41-pr29299.patch %define _gnu %{nil} %ifarch sparc @@ -436,7 +436,7 @@ which are required to run programs compiled with the GNAT. %patch14 -p0 -b .objc-rh185398~ %patch15 -p0 -b .tests~ %patch16 -p0 -b .pr25874~ -%patch17 -p0 -b .pr26881~ +%patch17 -p0 -b .pr29241~ %patch18 -p0 -b .i386-tune-geode~ %patch19 -p0 -b .hash-style-gnu~ %patch20 -p0 -b .power6~ @@ -450,7 +450,7 @@ which are required to run programs compiled with the GNAT. %patch28 -p0 -b .pr29059~ %patch29 -p0 -b .strncat-chk~ %patch30 -p0 -b .power6x~ -%patch31 -p0 -b .pr29091~ +%patch31 -p0 -b .pr29299~ sed -i -e 's/4\.1\.2/4.1.1/' gcc/BASE-VER gcc/version.c sed -i -e 's/" (Red Hat[^)]*)"/" (Red Hat %{version}-%{gcc_release})"/' gcc/version.c @@ -1512,6 +1512,20 @@ fi %doc rpm.doc/changelogs/libmudflap/ChangeLog* %changelog +* Wed Oct 25 2006 Jakub Jelinek 4.1.1-31 +- update from gcc-4_1-branch (-r117629:118025) + - PRs c++/20647, c++/25878, c++/26884, c++/27787, c++/28506, c++/28906, + c++/29020, c++/29175, c++/29318, c++/29408, c++/29435, c/27184, + c/29092, fortran/25091, fortran/25092, fortran/29284, fortran/29321, + fortran/29322, fortran/29393, fortran/29403, gcov/profile/26570, + inline-asm/29119, middle-end/20491, rtl-optimization/29323, + target/25519, target/28825, target/28960, target/29300, + testsuite/28829, tree-optimization/26969 + - fix libstdc++.so backwards compatibility with GCC 3.4.x (#210452) +- fix always_inline attribute at -O0 (Jan Hubicka, PR middle-end/29241) +- fix function local static vars with used attribute (Jan Hubicka, + Richard Guenther, PR middle-end/29299) + * Wed Oct 11 2006 Jakub Jelinek 4.1.1-30 - update from gcc-4_1-branch (-r117464:117629) - PRs c++/28302, c++/28349, c++/28450, c++/29002, libstdc++/29095, diff --git a/sources b/sources index d736097..f7eb391 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -69307646aecf759e4c30ceaba2d05241 gcc-4.1.1-20061011.tar.bz2 +9db4dad4ecc23133d87e4e93d2c47869 gcc-4.1.1-20061025.tar.bz2