This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix ICE on #pragma omp atomic (PR c/35738)


Hi!

c_parser_omp_atomic wasn't applying default_function_array_conversion,
which caused ICE in default_conversion and/or errors about invalid
use of vars with ARRAY_TYPE.  Fixed thusly, regtested on x86_64-linux.
Committed trunk and will commit soon to 4.3 branch.

2008-04-03  Jakub Jelinek  <jakub@redhat.com>

	PR c/35738
	* c-parser.c (c_parser_omp_atomic): Call
	default_function_array_conversion on the RHS.

	* gcc.dg/gomp/pr35738.c: New test.

--- gcc/c-parser.c.jj	2008-04-03 09:41:42.000000000 +0200
+++ gcc/c-parser.c	2008-04-03 21:15:45.000000000 +0200
@@ -7381,6 +7381,7 @@ c_parser_omp_atomic (c_parser *parser)
   tree lhs, rhs;
   tree stmt;
   enum tree_code code;
+  struct c_expr rhs_expr;
 
   c_parser_skip_to_pragma_eol (parser);
 
@@ -7443,7 +7444,9 @@ c_parser_omp_atomic (c_parser *parser)
 	}
 
       c_parser_consume_token (parser);
-      rhs = c_parser_expression (parser).value;
+      rhs_expr = c_parser_expression (parser);
+      rhs_expr = default_function_array_conversion (rhs_expr);
+      rhs = rhs_expr.value;
       break;
     }
   stmt = c_finish_omp_atomic (code, lhs, rhs);
--- gcc/testsuite/gcc.dg/gomp/pr35738.c.jj	2008-04-03 21:22:07.000000000 +0200
+++ gcc/testsuite/gcc.dg/gomp/pr35738.c	2008-04-03 21:21:37.000000000 +0200
@@ -0,0 +1,18 @@
+/* PR c/35738 */
+/* { dg-do compile } */
+/* { dg-options "-fopenmp" } */
+
+void foo (void);
+
+void
+bar (void *p)
+{
+  int i = 0;
+  char q[10];
+#pragma omp atomic
+  i += q;		/* { dg-warning "makes integer from pointer without a cast" } */
+#pragma omp atomic
+  i += foo;		/* { dg-warning "makes integer from pointer without a cast" } */
+#pragma omp atomic
+  i += p;		/* { dg-warning "makes integer from pointer without a cast" } */
+}

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]