Bug 34964 - ICE with broken variable in #pragma omp threadprivate
Summary: ICE with broken variable in #pragma omp threadprivate
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 4.3.0
: P3 normal
Target Milestone: ---
Assignee: Jakub Jelinek
URL: http://gcc.gnu.org/ml/gcc-patches/200...
Keywords: error-recovery, ice-checking, ice-on-invalid-code, monitored, openmp
Depends on:
Blocks:
 
Reported: 2008-01-25 00:47 UTC by Volker Reichelt
Modified: 2008-03-10 10:25 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2008-02-18 13:49:43


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Volker Reichelt 2008-01-25 00:47:44 UTC
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.]
Comment 1 Jakub Jelinek 2008-02-19 10:17:20 UTC
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

Comment 2 Jakub Jelinek 2008-03-06 22:09:45 UTC
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

Comment 3 Jakub Jelinek 2008-03-10 10:25:37 UTC
Fixed.