Commit 04924d6a by Nathan Froyd Committed by Nathan Froyd

vec.h (vec_heap_free): Add parentheses around free.

gcc/
	* vec.h (vec_heap_free): Add parentheses around free.

gcc/fortran/
	* trans-openmp.c (dovar_init): Define.  Define VECs containing it.
	(gfc_trans_omp_do): Use a VEC to accumulate variables and their
	initializers.

From-SVN: r161486
parent 3b06d379
2010-06-28 Nathan Froyd <froydnj@codesourcery.com>
* vec.h (vec_heap_free): Add parentheses around free.
2010-06-28 Steven Bosscher <steven@gcc.gnu.org> 2010-06-28 Steven Bosscher <steven@gcc.gnu.org>
* system.h: Poison GCC_EXCEPT_H for front-end files. * system.h: Poison GCC_EXCEPT_H for front-end files.
......
2010-06-28 Nathan Froyd <froydnj@codesourcery.com>
* trans-openmp.c (dovar_init): Define. Define VECs containing it.
(gfc_trans_omp_do): Use a VEC to accumulate variables and their
initializers.
2010-06-28 Steven Bosscher <steven@gcc.gnu.org> 2010-06-28 Steven Bosscher <steven@gcc.gnu.org>
* Make-lang.in: Update dependencies. * Make-lang.in: Update dependencies.
......
...@@ -1150,6 +1150,14 @@ gfc_trans_omp_critical (gfc_code *code) ...@@ -1150,6 +1150,14 @@ gfc_trans_omp_critical (gfc_code *code)
return build2 (OMP_CRITICAL, void_type_node, stmt, name); return build2 (OMP_CRITICAL, void_type_node, stmt, name);
} }
typedef struct dovar_init_d {
tree var;
tree init;
} dovar_init;
DEF_VEC_O(dovar_init);
DEF_VEC_ALLOC_O(dovar_init,heap);
static tree static tree
gfc_trans_omp_do (gfc_code *code, stmtblock_t *pblock, gfc_trans_omp_do (gfc_code *code, stmtblock_t *pblock,
gfc_omp_clauses *do_clauses, tree par_clauses) gfc_omp_clauses *do_clauses, tree par_clauses)
...@@ -1161,7 +1169,9 @@ gfc_trans_omp_do (gfc_code *code, stmtblock_t *pblock, ...@@ -1161,7 +1169,9 @@ gfc_trans_omp_do (gfc_code *code, stmtblock_t *pblock,
stmtblock_t body; stmtblock_t body;
gfc_omp_clauses *clauses = code->ext.omp_clauses; gfc_omp_clauses *clauses = code->ext.omp_clauses;
int i, collapse = clauses->collapse; int i, collapse = clauses->collapse;
tree dovar_init = NULL_TREE; VEC(dovar_init,heap) *inits = NULL;
dovar_init *di;
unsigned ix;
if (collapse <= 0) if (collapse <= 0)
collapse = 1; collapse = 1;
...@@ -1276,7 +1286,9 @@ gfc_trans_omp_do (gfc_code *code, stmtblock_t *pblock, ...@@ -1276,7 +1286,9 @@ gfc_trans_omp_do (gfc_code *code, stmtblock_t *pblock,
/* Initialize DOVAR. */ /* Initialize DOVAR. */
tmp = fold_build2 (MULT_EXPR, type, count, step); tmp = fold_build2 (MULT_EXPR, type, count, step);
tmp = fold_build2 (PLUS_EXPR, type, from, tmp); tmp = fold_build2 (PLUS_EXPR, type, from, tmp);
dovar_init = tree_cons (dovar, tmp, dovar_init); di = VEC_safe_push (dovar_init, heap, inits, NULL);
di->var = dovar;
di->init = tmp;
} }
if (!dovar_found) if (!dovar_found)
...@@ -1345,13 +1357,9 @@ gfc_trans_omp_do (gfc_code *code, stmtblock_t *pblock, ...@@ -1345,13 +1357,9 @@ gfc_trans_omp_do (gfc_code *code, stmtblock_t *pblock,
gfc_start_block (&body); gfc_start_block (&body);
dovar_init = nreverse (dovar_init); for (ix = 0; VEC_iterate (dovar_init, inits, ix, di); ix++)
while (dovar_init) gfc_add_modify (&body, di->var, di->init);
{ VEC_free (dovar_init, heap, inits);
gfc_add_modify (&body, TREE_PURPOSE (dovar_init),
TREE_VALUE (dovar_init));
dovar_init = TREE_CHAIN (dovar_init);
}
/* Cycle statement is implemented with a goto. Exit statement must not be /* Cycle statement is implemented with a goto. Exit statement must not be
present for this loop. */ present for this loop. */
......
...@@ -436,7 +436,8 @@ extern void dump_vec_loc_statistics (void); ...@@ -436,7 +436,8 @@ extern void dump_vec_loc_statistics (void);
#ifdef GATHER_STATISTICS #ifdef GATHER_STATISTICS
void vec_heap_free (void *); void vec_heap_free (void *);
#else #else
#define vec_heap_free(V) free (V) /* Avoid problems with frontends that #define free(x). */
#define vec_heap_free(V) (free) (V)
#endif #endif
#if ENABLE_CHECKING #if ENABLE_CHECKING
......
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