diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-03-03 17:09:55 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2011-03-03 17:09:55 +0100 |
commit | 423ed4163b160e8fa81758ed53e54c60040f3c0f (patch) | |
tree | 0f811ce7e5a3fe13add75d303194536c46f30e87 /gcc | |
parent | 71f3a3f5171d29dc3625fa7556c5732aa6b26241 (diff) | |
download | gcc-423ed4163b160e8fa81758ed53e54c60040f3c0f.zip gcc-423ed4163b160e8fa81758ed53e54c60040f3c0f.tar.gz gcc-423ed4163b160e8fa81758ed53e54c60040f3c0f.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/gimplify.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/gomp/pr47963.C | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/gomp/pr47963.c | 11 |
5 files changed, 35 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5d524d5..1273286 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 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. diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 350d793..cf9495c 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -1,6 +1,6 @@ /* 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)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7b13922..3f7a372 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +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. diff --git a/gcc/testsuite/g++.dg/gomp/pr47963.C b/gcc/testsuite/g++.dg/gomp/pr47963.C new file mode 100644 index 0000000..7c94e64 --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/pr47963.C @@ -0,0 +1,11 @@ +// 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) + ; +} diff --git a/gcc/testsuite/gcc.dg/gomp/pr47963.c b/gcc/testsuite/gcc.dg/gomp/pr47963.c new file mode 100644 index 0000000..636a9542 --- /dev/null +++ b/gcc/testsuite/gcc.dg/gomp/pr47963.c @@ -0,0 +1,11 @@ +/* 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) + ; +} |