diff --git a/.cvsignore b/.cvsignore index 232b5fb..68b3b04 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,2 @@ -gcc-4.3.0-20080326.tar.bz2 +gcc-4.3.0-20080404.tar.bz2 fastjar-0.95.tar.gz diff --git a/gcc43-pr35546.patch b/gcc43-pr35546.patch deleted file mode 100644 index bd67623..0000000 --- a/gcc43-pr35546.patch +++ /dev/null @@ -1,64 +0,0 @@ -2008-03-25 Jakub Jelinek - - PR c++/35546 - * pt.c (apply_late_template_attributes): Don't call tsubst on - first attribute argument if it is IDENTIFIER_NODE. - - * g++.dg/ext/attrib33.C: New test. - ---- gcc/cp/pt.c.jj 2008-03-10 17:11:48.000000000 +0100 -+++ gcc/cp/pt.c 2008-03-25 21:32:17.000000000 +0100 -@@ -6717,9 +6717,29 @@ apply_late_template_attributes (tree *de - { - *p = TREE_CHAIN (t); - TREE_CHAIN (t) = NULL_TREE; -- TREE_VALUE (t) -- = tsubst_expr (TREE_VALUE (t), args, complain, in_decl, -- /*integral_constant_expression_p=*/false); -+ /* If the first attribute argument is an identifier, don't -+ pass it through tsubst. Attributes like mode, format, -+ cleanup and several target specific attributes expect it -+ unmodified. */ -+ if (TREE_VALUE (t) -+ && TREE_CODE (TREE_VALUE (t)) == TREE_LIST -+ && TREE_VALUE (TREE_VALUE (t)) -+ && (TREE_CODE (TREE_VALUE (TREE_VALUE (t))) -+ == IDENTIFIER_NODE)) -+ { -+ tree chain -+ = tsubst_expr (TREE_CHAIN (TREE_VALUE (t)), args, complain, -+ in_decl, -+ /*integral_constant_expression_p=*/false); -+ if (chain != TREE_CHAIN (TREE_VALUE (t))) -+ TREE_VALUE (t) -+ = tree_cons (NULL_TREE, TREE_VALUE (TREE_VALUE (t)), -+ chain); -+ } -+ else -+ TREE_VALUE (t) -+ = tsubst_expr (TREE_VALUE (t), args, complain, in_decl, -+ /*integral_constant_expression_p=*/false); - *q = t; - q = &TREE_CHAIN (t); - } ---- gcc/testsuite/g++.dg/ext/attrib33.C.jj 2008-03-25 23:05:51.000000000 +0100 -+++ gcc/testsuite/g++.dg/ext/attrib33.C 2008-03-25 23:06:15.000000000 +0100 -@@ -0,0 +1,18 @@ -+// PR c++/35546 -+// { dg-do compile } -+ -+template -+struct T -+{ -+ void foo (char const * ...) __attribute__ ((format (printf,2,3))); -+}; -+ -+template struct T<3>; -+ -+template -+struct U -+{ -+ typedef T __attribute__((mode (SI))) V; -+}; -+ -+U::V v; diff --git a/gcc43-pr35751.patch b/gcc43-pr35751.patch new file mode 100644 index 0000000..37b8427 --- /dev/null +++ b/gcc43-pr35751.patch @@ -0,0 +1,114 @@ +2008-04-03 Jakub Jelinek + + PR c/35751 + * c-decl.c (finish_decl): If extern or static var has variable + size, set TREE_TYPE (decl) to error_mark_node. + + * decl.c (layout_var_decl): If extern or static var has variable + size, set TREE_TYPE (decl) to error_mark_node. + + * gcc.dg/gomp/pr35751.c: New test. + * g++.dg/gomp/pr35751.C: New test. + +--- gcc/c-decl.c.jj 2008-04-03 09:41:42.000000000 +0200 ++++ gcc/c-decl.c 2008-04-03 18:20:52.000000000 +0200 +@@ -3481,7 +3481,10 @@ finish_decl (tree decl, tree init, tree + if (TREE_CODE (DECL_SIZE (decl)) == INTEGER_CST) + constant_expression_warning (DECL_SIZE (decl)); + else +- error ("storage size of %q+D isn%'t constant", decl); ++ { ++ error ("storage size of %q+D isn%'t constant", decl); ++ TREE_TYPE (decl) = error_mark_node; ++ } + } + + if (TREE_USED (type)) +--- gcc/cp/decl.c.jj 2008-03-31 23:54:40.000000000 +0200 ++++ gcc/cp/decl.c 2008-04-03 18:30:19.000000000 +0200 +@@ -4442,7 +4442,10 @@ layout_var_decl (tree decl) + if (TREE_CODE (DECL_SIZE (decl)) == INTEGER_CST) + constant_expression_warning (DECL_SIZE (decl)); + else +- error ("storage size of %qD isn't constant", decl); ++ { ++ error ("storage size of %qD isn't constant", decl); ++ TREE_TYPE (decl) = error_mark_node; ++ } + } + } + +--- gcc/testsuite/gcc.dg/gomp/pr35751.c.jj 2008-04-03 18:26:12.000000000 +0200 ++++ gcc/testsuite/gcc.dg/gomp/pr35751.c 2008-04-03 18:25:51.000000000 +0200 +@@ -0,0 +1,34 @@ ++/* PR c/35751 */ ++/* { dg-do compile } */ ++/* { dg-options "-fopenmp" } */ ++ ++void ++foo (int i) ++{ ++ extern int a[i]; /* { dg-error "must have no linkage|storage size of" } */ ++ static int b[i]; /* { dg-error "storage size of" } */ ++ ++#pragma omp parallel ++ { ++ a[0] = 0; ++ b[0] = 0; ++ } ++ ++#pragma omp parallel shared (a, b) ++ { ++ a[0] = 0; ++ b[0] = 0; ++ } ++ ++#pragma omp parallel private (a, b) ++ { ++ a[0] = 0; ++ b[0] = 0; ++ } ++ ++#pragma omp parallel firstprivate (a, b) ++ { ++ a[0] = 0; ++ b[0] = 0; ++ } ++} +--- gcc/testsuite/g++.dg/gomp/pr35751.C.jj 2008-04-03 18:32:13.000000000 +0200 ++++ gcc/testsuite/g++.dg/gomp/pr35751.C 2008-04-03 18:32:32.000000000 +0200 +@@ -0,0 +1,34 @@ ++// PR c/35751 ++// { dg-do compile } ++// { dg-options "-fopenmp" } ++ ++void ++foo (int i) ++{ ++ extern int a[i]; // { dg-error "storage size of" } ++ static int b[i]; // { dg-error "storage size of" } ++ ++#pragma omp parallel ++ { ++ a[0] = 0; ++ b[0] = 0; ++ } ++ ++#pragma omp parallel shared (a, b) ++ { ++ a[0] = 0; ++ b[0] = 0; ++ } ++ ++#pragma omp parallel private (a, b) ++ { ++ a[0] = 0; ++ b[0] = 0; ++ } ++ ++#pragma omp parallel firstprivate (a, b) ++ { ++ a[0] = 0; ++ b[0] = 0; ++ } ++} diff --git a/gcc43-rh251682.patch b/gcc43-rh251682.patch new file mode 100644 index 0000000..e96ae6f --- /dev/null +++ b/gcc43-rh251682.patch @@ -0,0 +1,89 @@ +2008-04-01 Jakub Jelinek + + PR pch/13675 + * files.c (struct _cpp_file): Remove pch field. + (pch_open_file): Don't set file->pch, just file->pchname. + (should_stack_file): After pfile->cb.read_pch call + free pchname and clear pchname, don't close file->fd. + Test file->pchname instead of file->pch. Don't close fd after cb. + (_cpp_stack_include): Test file->pchname instead of file->pch. + + * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f). + +--- libcpp/files.c.jj 2008-02-18 23:50:17.000000000 +0100 ++++ libcpp/files.c 2008-03-31 15:59:01.000000000 +0200 +@@ -106,9 +106,6 @@ struct _cpp_file + + /* If BUFFER above contains the true contents of the file. */ + bool buffer_valid; +- +- /* File is a PCH (on return from find_include_file). */ +- bool pch; + }; + + /* A singly-linked list for all searches for a given file name, with +@@ -322,9 +319,7 @@ pch_open_file (cpp_reader *pfile, _cpp_f + } + closedir (pchdir); + } +- if (valid) +- file->pch = true; +- else ++ if (!valid) + *invalid_pch = true; + } + +@@ -703,11 +698,12 @@ should_stack_file (cpp_reader *pfile, _c + return false; + + /* Handle PCH files immediately; don't stack them. */ +- if (file->pch) ++ if (file->pchname) + { + pfile->cb.read_pch (pfile, file->pchname, file->fd, file->path); +- close (file->fd); + file->fd = -1; ++ free ((void *) file->pchname); ++ file->pchname = NULL; + return false; + } + +@@ -916,7 +912,7 @@ _cpp_stack_include (cpp_reader *pfile, c + complicates LAST_SOURCE_LINE_LOCATION. This does not apply if we + found a PCH file (in which case linemap_add is not called) or we + were included from the command-line. */ +- if (! file->pch && file->err_no == 0 && type != IT_CMDLINE) ++ if (file->pchname == NULL && file->err_no == 0 && type != IT_CMDLINE) + pfile->line_table->highest_location--; + + return _cpp_stack_file (pfile, file, type == IT_IMPORT); +--- gcc/c-pch.c.jj 2008-02-18 23:46:08.000000000 +0100 ++++ gcc/c-pch.c 2008-03-31 15:56:00.000000000 +0200 +@@ -372,6 +372,7 @@ c_common_read_pch (cpp_reader *pfile, co + if (f == NULL) + { + cpp_errno (pfile, CPP_DL_ERROR, "calling fdopen"); ++ close (fd); + return; + } + +@@ -380,6 +381,7 @@ c_common_read_pch (cpp_reader *pfile, co + if (fread (&h, sizeof (h), 1, f) != 1) + { + cpp_errno (pfile, CPP_DL_ERROR, "reading"); ++ fclose (f); + return; + } + +@@ -425,7 +427,10 @@ c_common_read_pch (cpp_reader *pfile, co + gt_pch_restore (f); + + if (cpp_read_state (pfile, name, f, smd) != 0) +- return; ++ { ++ fclose (f); ++ return; ++ } + + fclose (f); + diff --git a/gcc43.spec b/gcc43.spec index 6d06f5b..1b5f7cd 100644 --- a/gcc43.spec +++ b/gcc43.spec @@ -1,6 +1,6 @@ -%define DATE 20080326 +%define DATE 20080404 %define gcc_version 4.3.0 -%define gcc_release 5 +%define gcc_release 6 %define _unpackaged_files_terminate_build 0 %define multilib_64_archs sparc64 ppc64 s390x x86_64 %define include_gappletviewer 1 @@ -142,8 +142,9 @@ Patch12: gcc43-cpp-pragma.patch Patch13: gcc43-java-debug-iface-type.patch Patch14: gcc43-libgomp-speedup.patch Patch15: gcc43-pr35440.patch -Patch16: gcc43-pr35546.patch -Patch17: gcc43-i386-libgomp.patch +Patch16: gcc43-i386-libgomp.patch +Patch17: gcc43-pr35751.patch +Patch18: gcc43-rh251682.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -443,8 +444,9 @@ which are required to run programs compiled with the GNAT. %patch13 -p0 -b .java-debug-iface-type~ %patch14 -p0 -b .libgomp-speedup~ %patch15 -p0 -b .pr35440~ -%patch16 -p0 -b .pr35546~ -%patch17 -p0 -b .i386-libgomp~ +%patch16 -p0 -b .i386-libgomp~ +%patch17 -p0 -b .pr35751~ +%patch18 -p0 -b .rh251682~ tar xzf %{SOURCE4} @@ -1660,6 +1662,17 @@ fi %doc rpm.doc/changelogs/libmudflap/ChangeLog* %changelog +* Fri Apr 4 2008 Jakub Jelinek 4.3.0-6 +- update from gcc-4_3-branch + - PRs ada/33857, c++/35245, c++/35741, c/35738, fortran/35698, + fortran/35699, fortran/35702, fortran/35724, fortran/35740, + fortran/35786, libfortran/35699, libstdc++/35725, middle-end/35429, + middle-end/35705, middle-end/35818, target/31110, target/31232, + target/35657, tree-opt/35431 +- fix OpenMP ICE on invalid extern/static VLA (PR c/35751) +- fix PCH failure if a precompiled header is included more than + once (#251682, PR pch/13675) + * Thu Mar 27 2008 Jakub Jelinek 4.3.0-5 - fix libgomp when sync builtins aren't available - on i386 build libgomp and __cxa_guard_* as i486+, diff --git a/sources b/sources index 2a16371..d2ea01e 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -115ce1b73cce124647e910bd5da7fcff gcc-4.3.0-20080326.tar.bz2 +37e8ad834b055b24825a9c1fe383576e gcc-4.3.0-20080404.tar.bz2 92a70f9e56223b653bce0f58f90cf950 fastjar-0.95.tar.gz