The following invalid code snippet triggers an ICE since GCC 4.2.0: ================================================================= char x[] = 0; #pragma omp threadprivate (x) ================================================================= bug.cc:1: error: initializer fails to determine size of 'x' bug.cc:2: internal compiler error: tree check: expected class 'type', have 'exceptional' (error_mark) in finish_omp_threadprivate, at cp/semantics.c:3749 Please submit a full bug report, [etc.]
Subject: Bug 34964 Author: jakub Date: Tue Feb 19 10:16:29 2008 New Revision: 132425 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=132425 Log: PR c++/34964 PR c++/35244 * semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p vars. Afterwards ensure v is VAR_DECL. * gcc.dg/gomp/pr34964.c: New test. * g++.dg/gomp/pr34964.C: New test. * gcc.dg/gomp/pr35244.c: New test. * g++.dg/gomp/pr35244.C: New test. Added: trunk/gcc/testsuite/g++.dg/gomp/pr34964.C trunk/gcc/testsuite/g++.dg/gomp/pr35244.C trunk/gcc/testsuite/gcc.dg/gomp/pr34964.c trunk/gcc/testsuite/gcc.dg/gomp/pr35244.c Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/semantics.c trunk/gcc/testsuite/ChangeLog
Subject: Bug 34964 Author: jakub Date: Thu Mar 6 22:08:55 2008 New Revision: 132992 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=132992 Log: * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes for the same VAR_DECL. PR c++/35028 * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle vararg copy ctors. PR c++/34964 PR c++/35244 * semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p vars. Afterwards ensure v is VAR_DECL. PR c++/35078 * parser.c (cp_parser_omp_for_loop): If DECL has REFERENCE_TYPE, don't call cp_finish_decl. * semantics.c (finish_omp_for): Fail if DECL doesn't have integral type early. PR c++/35028 * g++.dg/gomp/pr35028.C: New test. PR c++/34964 PR c++/35244 * gcc.dg/gomp/pr34964.c: New test. * g++.dg/gomp/pr34964.C: New test. * gcc.dg/gomp/pr35244.c: New test. * g++.dg/gomp/pr35244.C: New test. PR c++/35078 * g++.dg/gomp/pr35078.C: New test. * testsuite/libgomp.c/atomic-3.c: New test. Added: branches/gcc-4_3-branch/gcc/testsuite/g++.dg/gomp/pr34964.C - copied unchanged from r132426, trunk/gcc/testsuite/g++.dg/gomp/pr34964.C branches/gcc-4_3-branch/gcc/testsuite/g++.dg/gomp/pr35028.C - copied unchanged from r132426, trunk/gcc/testsuite/g++.dg/gomp/pr35028.C branches/gcc-4_3-branch/gcc/testsuite/g++.dg/gomp/pr35078.C - copied unchanged from r132426, trunk/gcc/testsuite/g++.dg/gomp/pr35078.C branches/gcc-4_3-branch/gcc/testsuite/g++.dg/gomp/pr35244.C - copied unchanged from r132426, trunk/gcc/testsuite/g++.dg/gomp/pr35244.C branches/gcc-4_3-branch/gcc/testsuite/gcc.dg/gomp/pr34964.c - copied unchanged from r132426, trunk/gcc/testsuite/gcc.dg/gomp/pr34964.c branches/gcc-4_3-branch/gcc/testsuite/gcc.dg/gomp/pr35244.c - copied unchanged from r132426, trunk/gcc/testsuite/gcc.dg/gomp/pr35244.c branches/gcc-4_3-branch/libgomp/testsuite/libgomp.c/atomic-3.c - copied unchanged from r132979, trunk/libgomp/testsuite/libgomp.c/atomic-3.c Modified: branches/gcc-4_3-branch/gcc/ChangeLog branches/gcc-4_3-branch/gcc/cp/ChangeLog branches/gcc-4_3-branch/gcc/cp/cp-gimplify.c branches/gcc-4_3-branch/gcc/cp/parser.c branches/gcc-4_3-branch/gcc/cp/semantics.c branches/gcc-4_3-branch/gcc/gimplify.c branches/gcc-4_3-branch/gcc/testsuite/ChangeLog branches/gcc-4_3-branch/libgomp/ChangeLog
Fixed.