Commit 423ed416 by Jakub Jelinek Committed by Jakub Jelinek

re PR c/47963 (ICE: tree check: expected tree that contains 'decl common'…

re PR c/47963 (ICE: tree check: expected tree that contains 'decl common' structure, have 'integer_cst' in is_global_var, at tree-flow-inline.h:599 on invalid code with -fopenmp)

	PR c/47963
	* gimplify.c (omp_add_variable): Only call omp_notice_variable
	on TYPE_SIZE_UNIT if it is a DECL.

	* gcc.dg/gomp/pr47963.c: New test.
	* g++.dg/gomp/pr47963.C: New test.

From-SVN: r170655
parent 71f3a3f5
2011-03-03 Jakub Jelinek <jakub@redhat.com>
PR c/47963
* gimplify.c (omp_add_variable): Only call omp_notice_variable
on TYPE_SIZE_UNIT if it is a DECL.
PR debug/47283
* cfgexpand.c (expand_debug_expr) <case MEM_REF>: If MEM_REF
first operand is not is_gimple_mem_ref_addr, try to fold it.
......
/* Tree lowering pass. This pass converts the GENERIC functions-as-trees
tree representation into the GIMPLE form.
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
Major work done by Sebastian Pop <s.pop@laposte.net>,
Diego Novillo <dnovillo@redhat.com> and Jason Merrill <jason@redhat.com>.
......@@ -5511,7 +5511,8 @@ omp_add_variable (struct gimplify_omp_ctx *ctx, tree decl, unsigned int flags)
For local variables TYPE_SIZE_UNIT might not be gimplified yet,
in this case omp_notice_variable will be called later
on when it is gimplified. */
else if (! (flags & GOVD_LOCAL))
else if (! (flags & GOVD_LOCAL)
&& DECL_P (TYPE_SIZE_UNIT (TREE_TYPE (decl))))
omp_notice_variable (ctx, TYPE_SIZE_UNIT (TREE_TYPE (decl)), true);
}
else if (lang_hooks.decls.omp_privatize_by_reference (decl))
......
2011-03-03 Jakub Jelinek <jakub@redhat.com>
PR c/47963
* gcc.dg/gomp/pr47963.c: New test.
* g++.dg/gomp/pr47963.C: New test.
2011-03-02 Jason Merrill <jason@redhat.com>
* g++.dg/cpp0x/regress/condition1.C: New.
......
// PR c/47963
// { dg-do compile }
// { dg-options "-fopenmp" }
void
foo (float n)
{
int A[n][n]; // { dg-error "has non-integral type" }
#pragma omp parallel private(A)
;
}
/* PR c/47963 */
/* { dg-do compile } */
/* { dg-options "-fopenmp" } */
void
foo (float n)
{
int A[n][n]; /* { dg-error "has non-integer type" } */
#pragma omp parallel private(A)
;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment