Commit 636dff67 by Steven G. Kargl

decl.c, [...]: Update Copyright dates.

2007-01-07  Steven G. Kargl  <kargl@gcc.gnu.org>

    * decl.c, dump-parse-tree.c, error.c, data.c, expr.c, dependency.c,
    convert.c:  Update Copyright dates.  Fix whitespace.

From-SVN: r120552
parent cd85e27a
2007-01-07 Steven G. Kargl <kargl@gcc.gnu.org>
* decl.c, dump-parse-tree.c, error.c, data.c, expr.c, dependency.c,
convert.c: Update Copyright dates. Fix whitespace.
2007-01-07 Bernhard Fischer <aldot@gcc.gnu.org> 2007-01-07 Bernhard Fischer <aldot@gcc.gnu.org>
* data.c (gfc_assign_data_value): Fix whitespace. * data.c (gfc_assign_data_value): Fix whitespace.
......
/* Language-level data type conversion for GNU C. /* Language-level data type conversion for GNU C.
Copyright (C) 1987, 1988, 1991, 1998, 2002 Free Software Foundation, Inc. Copyright (C) 1987, 1988, 1991, 1998, 2002, 2007
Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -61,7 +62,6 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA ...@@ -61,7 +62,6 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
/* Subroutines of `convert'. */ /* Subroutines of `convert'. */
/* Create an expression whose value is that of EXPR, /* Create an expression whose value is that of EXPR,
converted to type TYPE. The TREE_TYPE of the value converted to type TYPE. The TREE_TYPE of the value
is always TYPE. This function implements all reasonable is always TYPE. This function implements all reasonable
......
/* Supporting functions for resolving DATA statement. /* Supporting functions for resolving DATA statement.
Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
Foundation, Inc. Free Software Foundation, Inc.
Contributed by Lifang Zeng <zlf605@hotmail.com> Contributed by Lifang Zeng <zlf605@hotmail.com>
This file is part of GCC. This file is part of GCC.
...@@ -42,7 +42,7 @@ static void formalize_init_expr (gfc_expr *); ...@@ -42,7 +42,7 @@ static void formalize_init_expr (gfc_expr *);
/* Calculate the array element offset. */ /* Calculate the array element offset. */
static void static void
get_array_index (gfc_array_ref * ar, mpz_t * offset) get_array_index (gfc_array_ref *ar, mpz_t *offset)
{ {
gfc_expr *e; gfc_expr *e;
int i; int i;
...@@ -62,6 +62,7 @@ get_array_index (gfc_array_ref * ar, mpz_t * offset) ...@@ -62,6 +62,7 @@ get_array_index (gfc_array_ref * ar, mpz_t * offset)
|| (gfc_is_constant_expr (ar->as->upper[i]) == 0) || (gfc_is_constant_expr (ar->as->upper[i]) == 0)
|| (gfc_is_constant_expr (e) == 0)) || (gfc_is_constant_expr (e) == 0))
gfc_error ("non-constant array in DATA statement %L", &ar->where); gfc_error ("non-constant array in DATA statement %L", &ar->where);
mpz_set (tmp, e->value.integer); mpz_set (tmp, e->value.integer);
mpz_sub (tmp, tmp, ar->as->lower[i]->value.integer); mpz_sub (tmp, tmp, ar->as->lower[i]->value.integer);
mpz_mul (tmp, tmp, delta); mpz_mul (tmp, tmp, delta);
...@@ -87,15 +88,15 @@ find_con_by_offset (splay_tree spt, mpz_t offset) ...@@ -87,15 +88,15 @@ find_con_by_offset (splay_tree spt, mpz_t offset)
gfc_constructor *con; gfc_constructor *con;
splay_tree_node sptn; splay_tree_node sptn;
/* The complexity is due to needing quick access to the linked list of /* The complexity is due to needing quick access to the linked list of
constructors. Both a linked list and a splay tree are used, and both are constructors. Both a linked list and a splay tree are used, and both
kept up to date if they are array elements (which is the only time that are kept up to date if they are array elements (which is the only time
a specific constructor has to be found). */ that a specific constructor has to be found). */
gcc_assert (spt != NULL); gcc_assert (spt != NULL);
mpz_init (tmp); mpz_init (tmp);
sptn = splay_tree_lookup (spt, (splay_tree_key) mpz_get_si(offset)); sptn = splay_tree_lookup (spt, (splay_tree_key) mpz_get_si (offset));
if (sptn) if (sptn)
ret = (gfc_constructor*) sptn->value; ret = (gfc_constructor*) sptn->value;
...@@ -103,7 +104,8 @@ find_con_by_offset (splay_tree spt, mpz_t offset) ...@@ -103,7 +104,8 @@ find_con_by_offset (splay_tree spt, mpz_t offset)
{ {
/* Need to check and see if we match a range, so we will pull /* Need to check and see if we match a range, so we will pull
the next lowest index and see if the range matches. */ the next lowest index and see if the range matches. */
sptn = splay_tree_predecessor (spt, (splay_tree_key) mpz_get_si(offset)); sptn = splay_tree_predecessor (spt,
(splay_tree_key) mpz_get_si (offset));
if (sptn) if (sptn)
{ {
con = (gfc_constructor*) sptn->value; con = (gfc_constructor*) sptn->value;
...@@ -146,8 +148,8 @@ find_con_by_component (gfc_component *com, gfc_constructor *con) ...@@ -146,8 +148,8 @@ find_con_by_component (gfc_component *com, gfc_constructor *con)
according to normal assignment rules. */ according to normal assignment rules. */
static gfc_expr * static gfc_expr *
create_character_intializer (gfc_expr * init, gfc_typespec * ts, create_character_intializer (gfc_expr *init, gfc_typespec *ts,
gfc_ref * ref, gfc_expr * rvalue) gfc_ref *ref, gfc_expr *rvalue)
{ {
int len; int len;
int start; int start;
...@@ -188,7 +190,7 @@ create_character_intializer (gfc_expr * init, gfc_typespec * ts, ...@@ -188,7 +190,7 @@ create_character_intializer (gfc_expr * init, gfc_typespec * ts,
if ((gfc_simplify_expr (start_expr, 1) == FAILURE) if ((gfc_simplify_expr (start_expr, 1) == FAILURE)
|| (gfc_simplify_expr (end_expr, 1)) == FAILURE) || (gfc_simplify_expr (end_expr, 1)) == FAILURE)
{ {
gfc_error ("failure to simplify substring reference in DATA" gfc_error ("failure to simplify substring reference in DATA "
"statement at %L", &ref->u.ss.start->where); "statement at %L", &ref->u.ss.start->where);
return NULL; return NULL;
} }
...@@ -225,12 +227,13 @@ create_character_intializer (gfc_expr * init, gfc_typespec * ts, ...@@ -225,12 +227,13 @@ create_character_intializer (gfc_expr * init, gfc_typespec * ts,
return init; return init;
} }
/* Assign the initial value RVALUE to LVALUE's symbol->value. If the /* Assign the initial value RVALUE to LVALUE's symbol->value. If the
LVALUE already has an initialization, we extend this, otherwise we LVALUE already has an initialization, we extend this, otherwise we
create a new one. */ create a new one. */
void void
gfc_assign_data_value (gfc_expr * lvalue, gfc_expr * rvalue, mpz_t index) gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, mpz_t index)
{ {
gfc_ref *ref; gfc_ref *ref;
gfc_expr *init; gfc_expr *init;
...@@ -294,7 +297,7 @@ gfc_assign_data_value (gfc_expr * lvalue, gfc_expr * rvalue, mpz_t index) ...@@ -294,7 +297,7 @@ gfc_assign_data_value (gfc_expr * lvalue, gfc_expr * rvalue, mpz_t index)
if (spt == NULL) if (spt == NULL)
{ {
spt = splay_tree_new (splay_tree_compare_ints,NULL,NULL); spt = splay_tree_new (splay_tree_compare_ints, NULL, NULL);
expr->con_by_offset = spt; expr->con_by_offset = spt;
con = NULL; con = NULL;
} }
...@@ -303,13 +306,15 @@ gfc_assign_data_value (gfc_expr * lvalue, gfc_expr * rvalue, mpz_t index) ...@@ -303,13 +306,15 @@ gfc_assign_data_value (gfc_expr * lvalue, gfc_expr * rvalue, mpz_t index)
if (con == NULL) if (con == NULL)
{ {
splay_tree_key j;
/* Create a new constructor. */ /* Create a new constructor. */
con = gfc_get_constructor (); con = gfc_get_constructor ();
mpz_set (con->n.offset, offset); mpz_set (con->n.offset, offset);
sptn = splay_tree_insert (spt, (splay_tree_key) mpz_get_si(offset), j = (splay_tree_key) mpz_get_si (offset);
(splay_tree_value) con); sptn = splay_tree_insert (spt, j, (splay_tree_value) con);
/* Fix up the linked list. */ /* Fix up the linked list. */
sptn = splay_tree_predecessor (spt, (splay_tree_key) mpz_get_si(offset)); sptn = splay_tree_predecessor (spt, j);
if (sptn == NULL) if (sptn == NULL)
{ /* Insert at the head. */ { /* Insert at the head. */
con->next = expr->value.constructor; con->next = expr->value.constructor;
...@@ -374,16 +379,16 @@ gfc_assign_data_value (gfc_expr * lvalue, gfc_expr * rvalue, mpz_t index) ...@@ -374,16 +379,16 @@ gfc_assign_data_value (gfc_expr * lvalue, gfc_expr * rvalue, mpz_t index)
provokes a warning from other compilers. */ provokes a warning from other compilers. */
if (init != NULL) if (init != NULL)
{ {
/* Order in which the expressions arrive here depends on whether they /* Order in which the expressions arrive here depends on whether
are from data statements or F95 style declarations. Therefore, they are from data statements or F95 style declarations.
check which is the most recent. */ Therefore, check which is the most recent. */
#ifdef USE_MAPPED_LOCATION #ifdef USE_MAPPED_LOCATION
expr = (LOCATION_LINE (init->where.lb->location) expr = (LOCATION_LINE (init->where.lb->location)
> LOCATION_LINE (rvalue->where.lb->location)) > LOCATION_LINE (rvalue->where.lb->location))
? init : rvalue; ? init : rvalue;
#else #else
expr = (init->where.lb->linenum > rvalue->where.lb->linenum) ? expr = (init->where.lb->linenum > rvalue->where.lb->linenum)
init : rvalue; ? init : rvalue;
#endif #endif
gfc_notify_std (GFC_STD_GNU, "Extension: re-initialization " gfc_notify_std (GFC_STD_GNU, "Extension: re-initialization "
"of '%s' at %L", symbol->name, &expr->where); "of '%s' at %L", symbol->name, &expr->where);
...@@ -400,12 +405,13 @@ gfc_assign_data_value (gfc_expr * lvalue, gfc_expr * rvalue, mpz_t index) ...@@ -400,12 +405,13 @@ gfc_assign_data_value (gfc_expr * lvalue, gfc_expr * rvalue, mpz_t index)
last_con->expr = expr; last_con->expr = expr;
} }
/* Similarly, but initialize REPEAT consecutive values in LVALUE the same /* Similarly, but initialize REPEAT consecutive values in LVALUE the same
value in RVALUE. For the nonce, LVALUE must refer to a full array, not value in RVALUE. For the nonce, LVALUE must refer to a full array, not
an array section. */ an array section. */
void void
gfc_assign_data_value_range (gfc_expr * lvalue, gfc_expr * rvalue, gfc_assign_data_value_range (gfc_expr *lvalue, gfc_expr *rvalue,
mpz_t index, mpz_t repeat) mpz_t index, mpz_t repeat)
{ {
gfc_ref *ref; gfc_ref *ref;
...@@ -476,7 +482,7 @@ gfc_assign_data_value_range (gfc_expr * lvalue, gfc_expr * rvalue, ...@@ -476,7 +482,7 @@ gfc_assign_data_value_range (gfc_expr * lvalue, gfc_expr * rvalue,
if (spt == NULL) if (spt == NULL)
{ {
spt = splay_tree_new (splay_tree_compare_ints,NULL,NULL); spt = splay_tree_new (splay_tree_compare_ints, NULL, NULL);
expr->con_by_offset = spt; expr->con_by_offset = spt;
con = NULL; con = NULL;
} }
...@@ -485,15 +491,17 @@ gfc_assign_data_value_range (gfc_expr * lvalue, gfc_expr * rvalue, ...@@ -485,15 +491,17 @@ gfc_assign_data_value_range (gfc_expr * lvalue, gfc_expr * rvalue,
if (con == NULL) if (con == NULL)
{ {
splay_tree_key j;
/* Create a new constructor. */ /* Create a new constructor. */
con = gfc_get_constructor (); con = gfc_get_constructor ();
mpz_set (con->n.offset, offset); mpz_set (con->n.offset, offset);
j = (splay_tree_key) mpz_get_si (offset);
if (ref->next == NULL) if (ref->next == NULL)
mpz_set (con->repeat, repeat); mpz_set (con->repeat, repeat);
sptn = splay_tree_insert (spt, (splay_tree_key) mpz_get_si(offset), sptn = splay_tree_insert (spt, j, (splay_tree_value) con);
(splay_tree_value) con);
/* Fix up the linked list. */ /* Fix up the linked list. */
sptn = splay_tree_predecessor (spt, (splay_tree_key) mpz_get_si(offset)); sptn = splay_tree_predecessor (spt, j);
if (sptn == NULL) if (sptn == NULL)
{ /* Insert at the head. */ { /* Insert at the head. */
con->next = expr->value.constructor; con->next = expr->value.constructor;
...@@ -612,8 +620,7 @@ gfc_advance_section (mpz_t *section_index, gfc_array_ref *ar, ...@@ -612,8 +620,7 @@ gfc_advance_section (mpz_t *section_index, gfc_array_ref *ar,
else else
cmp = mpz_cmp (section_index[i], ar->as->upper[i]->value.integer); cmp = mpz_cmp (section_index[i], ar->as->upper[i]->value.integer);
if ((cmp > 0 && forwards) if ((cmp > 0 && forwards) || (cmp < 0 && !forwards))
|| (cmp < 0 && ! forwards))
{ {
/* Reset index to start, then loop to advance the next index. */ /* Reset index to start, then loop to advance the next index. */
if (ar->start[i]) if (ar->start[i])
...@@ -648,7 +655,7 @@ gfc_advance_section (mpz_t *section_index, gfc_array_ref *ar, ...@@ -648,7 +655,7 @@ gfc_advance_section (mpz_t *section_index, gfc_array_ref *ar,
order. Also insert NULL entries if necessary. */ order. Also insert NULL entries if necessary. */
static void static void
formalize_structure_cons (gfc_expr * expr) formalize_structure_cons (gfc_expr *expr)
{ {
gfc_constructor *head; gfc_constructor *head;
gfc_constructor *tail; gfc_constructor *tail;
...@@ -710,7 +717,7 @@ formalize_structure_cons (gfc_expr * expr) ...@@ -710,7 +717,7 @@ formalize_structure_cons (gfc_expr * expr)
elements of the constructors are in the correct order. */ elements of the constructors are in the correct order. */
static void static void
formalize_init_expr (gfc_expr * expr) formalize_init_expr (gfc_expr *expr)
{ {
expr_t type; expr_t type;
gfc_constructor *c; gfc_constructor *c;
......
/* Dependency analysis /* Dependency analysis
Copyright (C) 2000, 2001, 2002, 2005, 2006 Free Software Foundation, Inc. Copyright (C) 2000, 2001, 2002, 2005, 2006, 2007
Free Software Foundation, Inc.
Contributed by Paul Brook <paul@nowt.org> Contributed by Paul Brook <paul@nowt.org>
This file is part of GCC. This file is part of GCC.
...@@ -24,7 +25,6 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA ...@@ -24,7 +25,6 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
have different dependency checking functions for different types have different dependency checking functions for different types
if dependencies. Ideally these would probably be merged. */ if dependencies. Ideally these would probably be merged. */
#include "config.h" #include "config.h"
#include "gfortran.h" #include "gfortran.h"
#include "dependency.h" #include "dependency.h"
...@@ -52,7 +52,7 @@ gfc_dependency; ...@@ -52,7 +52,7 @@ gfc_dependency;
def if the value could not be determined. */ def if the value could not be determined. */
int int
gfc_expr_is_one (gfc_expr * expr, int def) gfc_expr_is_one (gfc_expr *expr, int def)
{ {
gcc_assert (expr != NULL); gcc_assert (expr != NULL);
...@@ -70,7 +70,7 @@ gfc_expr_is_one (gfc_expr * expr, int def) ...@@ -70,7 +70,7 @@ gfc_expr_is_one (gfc_expr * expr, int def)
and -2 if the relationship could not be determined. */ and -2 if the relationship could not be determined. */
int int
gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2) gfc_dep_compare_expr (gfc_expr *e1, gfc_expr *e2)
{ {
gfc_actual_arglist *args1; gfc_actual_arglist *args1;
gfc_actual_arglist *args2; gfc_actual_arglist *args2;
...@@ -85,8 +85,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2) ...@@ -85,8 +85,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2)
|| e2->value.op.operator == INTRINSIC_PARENTHESES)) || e2->value.op.operator == INTRINSIC_PARENTHESES))
return gfc_dep_compare_expr (e1, e2->value.op.op1); return gfc_dep_compare_expr (e1, e2->value.op.op1);
if (e1->expr_type == EXPR_OP if (e1->expr_type == EXPR_OP && e1->value.op.operator == INTRINSIC_PLUS)
&& e1->value.op.operator == INTRINSIC_PLUS)
{ {
/* Compare X+C vs. X. */ /* Compare X+C vs. X. */
if (e1->value.op.op2->expr_type == EXPR_CONSTANT if (e1->value.op.op2->expr_type == EXPR_CONSTANT
...@@ -95,8 +94,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2) ...@@ -95,8 +94,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2)
return mpz_sgn (e1->value.op.op2->value.integer); return mpz_sgn (e1->value.op.op2->value.integer);
/* Compare P+Q vs. R+S. */ /* Compare P+Q vs. R+S. */
if (e2->expr_type == EXPR_OP if (e2->expr_type == EXPR_OP && e2->value.op.operator == INTRINSIC_PLUS)
&& e2->value.op.operator == INTRINSIC_PLUS)
{ {
int l, r; int l, r;
...@@ -129,8 +127,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2) ...@@ -129,8 +127,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2)
} }
/* Compare X vs. X+C. */ /* Compare X vs. X+C. */
if (e2->expr_type == EXPR_OP if (e2->expr_type == EXPR_OP && e2->value.op.operator == INTRINSIC_PLUS)
&& e2->value.op.operator == INTRINSIC_PLUS)
{ {
if (e2->value.op.op2->expr_type == EXPR_CONSTANT if (e2->value.op.op2->expr_type == EXPR_CONSTANT
&& e2->value.op.op2->ts.type == BT_INTEGER && e2->value.op.op2->ts.type == BT_INTEGER
...@@ -139,8 +136,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2) ...@@ -139,8 +136,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2)
} }
/* Compare X-C vs. X. */ /* Compare X-C vs. X. */
if (e1->expr_type == EXPR_OP if (e1->expr_type == EXPR_OP && e1->value.op.operator == INTRINSIC_MINUS)
&& e1->value.op.operator == INTRINSIC_MINUS)
{ {
if (e1->value.op.op2->expr_type == EXPR_CONSTANT if (e1->value.op.op2->expr_type == EXPR_CONSTANT
&& e1->value.op.op2->ts.type == BT_INTEGER && e1->value.op.op2->ts.type == BT_INTEGER
...@@ -148,8 +144,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2) ...@@ -148,8 +144,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2)
return -mpz_sgn (e1->value.op.op2->value.integer); return -mpz_sgn (e1->value.op.op2->value.integer);
/* Compare P-Q vs. R-S. */ /* Compare P-Q vs. R-S. */
if (e2->expr_type == EXPR_OP if (e2->expr_type == EXPR_OP && e2->value.op.operator == INTRINSIC_MINUS)
&& e2->value.op.operator == INTRINSIC_MINUS)
{ {
int l, r; int l, r;
...@@ -169,8 +164,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2) ...@@ -169,8 +164,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2)
} }
/* Compare X vs. X-C. */ /* Compare X vs. X-C. */
if (e2->expr_type == EXPR_OP if (e2->expr_type == EXPR_OP && e2->value.op.operator == INTRINSIC_MINUS)
&& e2->value.op.operator == INTRINSIC_MINUS)
{ {
if (e2->value.op.op2->expr_type == EXPR_CONSTANT if (e2->value.op.op2->expr_type == EXPR_CONSTANT
&& e2->value.op.op2->ts.type == BT_INTEGER && e2->value.op.op2->ts.type == BT_INTEGER
...@@ -218,8 +212,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2) ...@@ -218,8 +212,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2)
case EXPR_FUNCTION: case EXPR_FUNCTION:
/* We can only compare calls to the same intrinsic function. */ /* We can only compare calls to the same intrinsic function. */
if (e1->value.function.isym == 0 if (e1->value.function.isym == 0 || e2->value.function.isym == 0
|| e2->value.function.isym == 0
|| e1->value.function.isym != e2->value.function.isym) || e1->value.function.isym != e2->value.function.isym)
return -2; return -2;
...@@ -275,7 +268,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2) ...@@ -275,7 +268,7 @@ gfc_dep_compare_expr (gfc_expr * e1, gfc_expr * e2)
if the results are indeterminate. N is the dimension to compare. */ if the results are indeterminate. N is the dimension to compare. */
int int
gfc_is_same_range (gfc_array_ref * ar1, gfc_array_ref * ar2, int n, int def) gfc_is_same_range (gfc_array_ref *ar1, gfc_array_ref *ar2, int n, int def)
{ {
gfc_expr *e1; gfc_expr *e1;
gfc_expr *e2; gfc_expr *e2;
...@@ -375,7 +368,7 @@ gfc_is_same_range (gfc_array_ref * ar1, gfc_array_ref * ar2, int n, int def) ...@@ -375,7 +368,7 @@ gfc_is_same_range (gfc_array_ref * ar1, gfc_array_ref * ar2, int n, int def)
whose data can be reused, otherwise return NULL. */ whose data can be reused, otherwise return NULL. */
gfc_expr * gfc_expr *
gfc_get_noncopying_intrinsic_argument (gfc_expr * expr) gfc_get_noncopying_intrinsic_argument (gfc_expr *expr)
{ {
if (expr->expr_type != EXPR_FUNCTION || !expr->value.function.isym) if (expr->expr_type != EXPR_FUNCTION || !expr->value.function.isym)
return NULL; return NULL;
...@@ -439,8 +432,8 @@ gfc_ref_needs_temporary_p (gfc_ref *ref) ...@@ -439,8 +432,8 @@ gfc_ref_needs_temporary_p (gfc_ref *ref)
temporary. */ temporary. */
static int static int
gfc_check_argument_var_dependency (gfc_expr * var, sym_intent intent, gfc_check_argument_var_dependency (gfc_expr *var, sym_intent intent,
gfc_expr * expr) gfc_expr *expr)
{ {
gcc_assert (var->expr_type == EXPR_VARIABLE); gcc_assert (var->expr_type == EXPR_VARIABLE);
gcc_assert (var->rank > 0); gcc_assert (var->rank > 0);
...@@ -472,8 +465,8 @@ gfc_check_argument_var_dependency (gfc_expr * var, sym_intent intent, ...@@ -472,8 +465,8 @@ gfc_check_argument_var_dependency (gfc_expr * var, sym_intent intent,
array expression OTHER, not just variables. */ array expression OTHER, not just variables. */
static int static int
gfc_check_argument_dependency (gfc_expr * other, sym_intent intent, gfc_check_argument_dependency (gfc_expr *other, sym_intent intent,
gfc_expr * expr) gfc_expr *expr)
{ {
switch (other->expr_type) switch (other->expr_type)
{ {
...@@ -498,8 +491,8 @@ gfc_check_argument_dependency (gfc_expr * other, sym_intent intent, ...@@ -498,8 +491,8 @@ gfc_check_argument_dependency (gfc_expr * other, sym_intent intent,
FNSYM is the function being called, or NULL if not known. */ FNSYM is the function being called, or NULL if not known. */
int int
gfc_check_fncall_dependency (gfc_expr * other, sym_intent intent, gfc_check_fncall_dependency (gfc_expr *other, sym_intent intent,
gfc_symbol * fnsym, gfc_actual_arglist * actual) gfc_symbol *fnsym, gfc_actual_arglist *actual)
{ {
gfc_formal_arglist *formal; gfc_formal_arglist *formal;
gfc_expr *expr; gfc_expr *expr;
...@@ -518,8 +511,7 @@ gfc_check_fncall_dependency (gfc_expr * other, sym_intent intent, ...@@ -518,8 +511,7 @@ gfc_check_fncall_dependency (gfc_expr * other, sym_intent intent,
continue; continue;
/* Skip intent(in) arguments if OTHER itself is intent(in). */ /* Skip intent(in) arguments if OTHER itself is intent(in). */
if (formal if (formal && intent == INTENT_IN
&& intent == INTENT_IN
&& formal->sym->attr.intent == INTENT_IN) && formal->sym->attr.intent == INTENT_IN)
continue; continue;
...@@ -553,9 +545,7 @@ gfc_are_equivalenced_arrays (gfc_expr *e1, gfc_expr *e2) ...@@ -553,9 +545,7 @@ gfc_are_equivalenced_arrays (gfc_expr *e1, gfc_expr *e2)
&& e2->expr_type == EXPR_VARIABLE); && e2->expr_type == EXPR_VARIABLE);
if (!e1->symtree->n.sym->attr.in_equivalence if (!e1->symtree->n.sym->attr.in_equivalence
|| !e2->symtree->n.sym->attr.in_equivalence || !e2->symtree->n.sym->attr.in_equivalence|| !e1->rank || !e2->rank)
|| !e1->rank
|| !e2->rank)
return 0; return 0;
/* Go through the equiv_lists and return 1 if the variables /* Go through the equiv_lists and return 1 if the variables
...@@ -607,7 +597,7 @@ gfc_are_equivalenced_arrays (gfc_expr *e1, gfc_expr *e2) ...@@ -607,7 +597,7 @@ gfc_are_equivalenced_arrays (gfc_expr *e1, gfc_expr *e2)
temporary. */ temporary. */
int int
gfc_check_dependency (gfc_expr * expr1, gfc_expr * expr2, bool identical) gfc_check_dependency (gfc_expr *expr1, gfc_expr *expr2, bool identical)
{ {
gfc_ref *ref; gfc_ref *ref;
int n; int n;
...@@ -637,13 +627,10 @@ gfc_check_dependency (gfc_expr * expr1, gfc_expr * expr2, bool identical) ...@@ -637,13 +627,10 @@ gfc_check_dependency (gfc_expr * expr1, gfc_expr * expr2, bool identical)
return 1; return 1;
/* Symbols can only alias if they have the same type. */ /* Symbols can only alias if they have the same type. */
if (ts1->type != BT_UNKNOWN if (ts1->type != BT_UNKNOWN && ts2->type != BT_UNKNOWN
&& ts2->type != BT_UNKNOWN && ts1->type != BT_DERIVED && ts2->type != BT_DERIVED)
&& ts1->type != BT_DERIVED
&& ts2->type != BT_DERIVED)
{ {
if (ts1->type != ts2->type if (ts1->type != ts2->type || ts1->kind != ts2->kind)
|| ts1->kind != ts2->kind)
return 0; return 0;
} }
...@@ -710,7 +697,7 @@ gfc_check_dependency (gfc_expr * expr1, gfc_expr * expr2, bool identical) ...@@ -710,7 +697,7 @@ gfc_check_dependency (gfc_expr * expr1, gfc_expr * expr2, bool identical)
/* Determines overlapping for two array sections. */ /* Determines overlapping for two array sections. */
static gfc_dependency static gfc_dependency
gfc_check_section_vs_section (gfc_ref * lref, gfc_ref * rref, int n) gfc_check_section_vs_section (gfc_ref *lref, gfc_ref *rref, int n)
{ {
gfc_array_ref l_ar; gfc_array_ref l_ar;
gfc_expr *l_start; gfc_expr *l_start;
...@@ -874,7 +861,7 @@ gfc_check_section_vs_section (gfc_ref * lref, gfc_ref * rref, int n) ...@@ -874,7 +861,7 @@ gfc_check_section_vs_section (gfc_ref * lref, gfc_ref * rref, int n)
/* Determines overlapping for a single element and a section. */ /* Determines overlapping for a single element and a section. */
static gfc_dependency static gfc_dependency
gfc_check_element_vs_section( gfc_ref * lref, gfc_ref * rref, int n) gfc_check_element_vs_section( gfc_ref *lref, gfc_ref *rref, int n)
{ {
gfc_array_ref *ref; gfc_array_ref *ref;
gfc_expr *elem; gfc_expr *elem;
...@@ -999,7 +986,7 @@ gfc_check_element_vs_section( gfc_ref * lref, gfc_ref * rref, int n) ...@@ -999,7 +986,7 @@ gfc_check_element_vs_section( gfc_ref * lref, gfc_ref * rref, int n)
return true, and assume a dependency. */ return true, and assume a dependency. */
static bool static bool
contains_forall_index_p (gfc_expr * expr) contains_forall_index_p (gfc_expr *expr)
{ {
gfc_actual_arglist *arg; gfc_actual_arglist *arg;
gfc_constructor *c; gfc_constructor *c;
...@@ -1074,7 +1061,7 @@ contains_forall_index_p (gfc_expr * expr) ...@@ -1074,7 +1061,7 @@ contains_forall_index_p (gfc_expr * expr)
/* Determines overlapping for two single element array references. */ /* Determines overlapping for two single element array references. */
static gfc_dependency static gfc_dependency
gfc_check_element_vs_element (gfc_ref * lref, gfc_ref * rref, int n) gfc_check_element_vs_element (gfc_ref *lref, gfc_ref *rref, int n)
{ {
gfc_array_ref l_ar; gfc_array_ref l_ar;
gfc_array_ref r_ar; gfc_array_ref r_ar;
...@@ -1099,8 +1086,7 @@ gfc_check_element_vs_element (gfc_ref * lref, gfc_ref * rref, int n) ...@@ -1099,8 +1086,7 @@ gfc_check_element_vs_element (gfc_ref * lref, gfc_ref * rref, int n)
/* However, we need to be careful when either scalar expression /* However, we need to be careful when either scalar expression
contains a FORALL index, as these can potentially change value contains a FORALL index, as these can potentially change value
during the scalarization/traversal of this array reference. */ during the scalarization/traversal of this array reference. */
if (contains_forall_index_p (r_start) if (contains_forall_index_p (r_start) || contains_forall_index_p (l_start))
|| contains_forall_index_p (l_start))
return GFC_DEP_OVERLAP; return GFC_DEP_OVERLAP;
if (i != -2) if (i != -2)
...@@ -1141,8 +1127,7 @@ gfc_full_array_ref_p (gfc_ref *ref) ...@@ -1141,8 +1127,7 @@ gfc_full_array_ref_p (gfc_ref *ref)
ref->u.ar.as->upper[i]))) ref->u.ar.as->upper[i])))
return false; return false;
/* Check the stride. */ /* Check the stride. */
if (ref->u.ar.stride[i] if (ref->u.ar.stride[i] && !gfc_expr_is_one (ref->u.ar.stride[i], 0))
&& !gfc_expr_is_one (ref->u.ar.stride[i], 0))
return false; return false;
} }
return true; return true;
...@@ -1155,13 +1140,12 @@ gfc_full_array_ref_p (gfc_ref *ref) ...@@ -1155,13 +1140,12 @@ gfc_full_array_ref_p (gfc_ref *ref)
0 : array references are identical or not overlapping. */ 0 : array references are identical or not overlapping. */
int int
gfc_dep_resolver (gfc_ref * lref, gfc_ref * rref) gfc_dep_resolver (gfc_ref *lref, gfc_ref *rref)
{ {
int n; int n;
gfc_dependency fin_dep; gfc_dependency fin_dep;
gfc_dependency this_dep; gfc_dependency this_dep;
fin_dep = GFC_DEP_ERROR; fin_dep = GFC_DEP_ERROR;
/* Dependencies due to pointers should already have been identified. /* Dependencies due to pointers should already have been identified.
We only need to check for overlapping array references. */ We only need to check for overlapping array references. */
......
/* Parse tree dumper /* Parse tree dumper
Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. Copyright (C) 2003, 2004, 2005, 2006, 2007
Free Software Foundation, Inc.
Contributed by Steven Bosscher Contributed by Steven Bosscher
This file is part of GCC. This file is part of GCC.
...@@ -40,7 +41,7 @@ static int show_level = 0; ...@@ -40,7 +41,7 @@ static int show_level = 0;
/* Do indentation for a specific level. */ /* Do indentation for a specific level. */
static inline void static inline void
code_indent (int level, gfc_st_label * label) code_indent (int level, gfc_st_label *label)
{ {
int i; int i;
...@@ -68,9 +69,8 @@ show_indent (void) ...@@ -68,9 +69,8 @@ show_indent (void)
/* Show type-specific information. */ /* Show type-specific information. */
void void
gfc_show_typespec (gfc_typespec * ts) gfc_show_typespec (gfc_typespec *ts)
{ {
gfc_status ("(%s ", gfc_basic_typename (ts->type)); gfc_status ("(%s ", gfc_basic_typename (ts->type));
switch (ts->type) switch (ts->type)
...@@ -95,9 +95,8 @@ gfc_show_typespec (gfc_typespec * ts) ...@@ -95,9 +95,8 @@ gfc_show_typespec (gfc_typespec * ts)
/* Show an actual argument list. */ /* Show an actual argument list. */
void void
gfc_show_actual_arglist (gfc_actual_arglist * a) gfc_show_actual_arglist (gfc_actual_arglist *a)
{ {
gfc_status ("("); gfc_status ("(");
for (; a; a = a->next) for (; a; a = a->next)
...@@ -122,7 +121,7 @@ gfc_show_actual_arglist (gfc_actual_arglist * a) ...@@ -122,7 +121,7 @@ gfc_show_actual_arglist (gfc_actual_arglist * a)
/* Show a gfc_array_spec array specification structure. */ /* Show a gfc_array_spec array specification structure. */
void void
gfc_show_array_spec (gfc_array_spec * as) gfc_show_array_spec (gfc_array_spec *as)
{ {
const char *c; const char *c;
int i; int i;
...@@ -144,8 +143,8 @@ gfc_show_array_spec (gfc_array_spec * as) ...@@ -144,8 +143,8 @@ gfc_show_array_spec (gfc_array_spec * as)
case AS_ASSUMED_SIZE: c = "AS_ASSUMED_SIZE"; break; case AS_ASSUMED_SIZE: c = "AS_ASSUMED_SIZE"; break;
case AS_ASSUMED_SHAPE: c = "AS_ASSUMED_SHAPE"; break; case AS_ASSUMED_SHAPE: c = "AS_ASSUMED_SHAPE"; break;
default: default:
gfc_internal_error gfc_internal_error ("gfc_show_array_spec(): Unhandled array shape "
("gfc_show_array_spec(): Unhandled array shape type."); "type.");
} }
gfc_status (" %s ", c); gfc_status (" %s ", c);
...@@ -233,9 +232,8 @@ gfc_show_array_ref (gfc_array_ref * ar) ...@@ -233,9 +232,8 @@ gfc_show_array_ref (gfc_array_ref * ar)
/* Show a list of gfc_ref structures. */ /* Show a list of gfc_ref structures. */
void void
gfc_show_ref (gfc_ref * p) gfc_show_ref (gfc_ref *p)
{ {
for (; p; p = p->next) for (; p; p = p->next)
switch (p->type) switch (p->type)
{ {
...@@ -264,9 +262,8 @@ gfc_show_ref (gfc_ref * p) ...@@ -264,9 +262,8 @@ gfc_show_ref (gfc_ref * p)
/* Display a constructor. Works recursively for array constructors. */ /* Display a constructor. Works recursively for array constructors. */
void void
gfc_show_constructor (gfc_constructor * c) gfc_show_constructor (gfc_constructor *c)
{ {
for (; c; c = c->next) for (; c; c = c->next)
{ {
if (c->iterator == NULL) if (c->iterator == NULL)
...@@ -297,7 +294,7 @@ gfc_show_constructor (gfc_constructor * c) ...@@ -297,7 +294,7 @@ gfc_show_constructor (gfc_constructor * c)
/* Show an expression. */ /* Show an expression. */
void void
gfc_show_expr (gfc_expr * p) gfc_show_expr (gfc_expr *p)
{ {
const char *c; const char *c;
int i; int i;
...@@ -530,7 +527,7 @@ gfc_show_expr (gfc_expr * p) ...@@ -530,7 +527,7 @@ gfc_show_expr (gfc_expr * p)
whatever single bit attributes are present. */ whatever single bit attributes are present. */
void void
gfc_show_attr (symbol_attribute * attr) gfc_show_attr (symbol_attribute *attr)
{ {
gfc_status ("(%s %s %s %s", gfc_code2string (flavors, attr->flavor), gfc_status ("(%s %s %s %s", gfc_code2string (flavors, attr->flavor),
...@@ -601,7 +598,7 @@ gfc_show_attr (symbol_attribute * attr) ...@@ -601,7 +598,7 @@ gfc_show_attr (symbol_attribute * attr)
/* Show components of a derived type. */ /* Show components of a derived type. */
void void
gfc_show_components (gfc_symbol * sym) gfc_show_components (gfc_symbol *sym)
{ {
gfc_component *c; gfc_component *c;
...@@ -628,7 +625,7 @@ gfc_show_components (gfc_symbol * sym) ...@@ -628,7 +625,7 @@ gfc_show_components (gfc_symbol * sym)
that symbol. */ that symbol. */
void void
gfc_show_symbol (gfc_symbol * sym) gfc_show_symbol (gfc_symbol *sym)
{ {
gfc_formal_arglist *formal; gfc_formal_arglist *formal;
gfc_interface *intr; gfc_interface *intr;
...@@ -706,7 +703,7 @@ gfc_show_symbol (gfc_symbol * sym) ...@@ -706,7 +703,7 @@ gfc_show_symbol (gfc_symbol * sym)
and the name of the associated subroutine, really. */ and the name of the associated subroutine, really. */
static void static void
show_uop (gfc_user_op * uop) show_uop (gfc_user_op *uop)
{ {
gfc_interface *intr; gfc_interface *intr;
...@@ -721,9 +718,8 @@ show_uop (gfc_user_op * uop) ...@@ -721,9 +718,8 @@ show_uop (gfc_user_op * uop)
/* Workhorse function for traversing the user operator symtree. */ /* Workhorse function for traversing the user operator symtree. */
static void static void
traverse_uop (gfc_symtree * st, void (*func) (gfc_user_op *)) traverse_uop (gfc_symtree *st, void (*func) (gfc_user_op *))
{ {
if (st == NULL) if (st == NULL)
return; return;
...@@ -737,9 +733,8 @@ traverse_uop (gfc_symtree * st, void (*func) (gfc_user_op *)) ...@@ -737,9 +733,8 @@ traverse_uop (gfc_symtree * st, void (*func) (gfc_user_op *))
/* Traverse the tree of user operator nodes. */ /* Traverse the tree of user operator nodes. */
void void
gfc_traverse_user_op (gfc_namespace * ns, void (*func) (gfc_user_op *)) gfc_traverse_user_op (gfc_namespace *ns, void (*func) (gfc_user_op *))
{ {
traverse_uop (ns->uop_root, func); traverse_uop (ns->uop_root, func);
} }
...@@ -747,7 +742,7 @@ gfc_traverse_user_op (gfc_namespace * ns, void (*func) (gfc_user_op *)) ...@@ -747,7 +742,7 @@ gfc_traverse_user_op (gfc_namespace * ns, void (*func) (gfc_user_op *))
/* Function to display a common block. */ /* Function to display a common block. */
static void static void
show_common (gfc_symtree * st) show_common (gfc_symtree *st)
{ {
gfc_symbol *s; gfc_symbol *s;
...@@ -769,9 +764,8 @@ show_common (gfc_symtree * st) ...@@ -769,9 +764,8 @@ show_common (gfc_symtree * st)
/* Worker function to display the symbol tree. */ /* Worker function to display the symbol tree. */
static void static void
show_symtree (gfc_symtree * st) show_symtree (gfc_symtree *st)
{ {
show_indent (); show_indent ();
gfc_status ("symtree: %s Ambig %d", st->name, st->ambiguous); gfc_status ("symtree: %s Ambig %d", st->name, st->ambiguous);
...@@ -786,15 +780,14 @@ show_symtree (gfc_symtree * st) ...@@ -786,15 +780,14 @@ show_symtree (gfc_symtree * st)
static void gfc_show_code_node (int level, gfc_code * c); static void gfc_show_code_node (int, gfc_code *);
/* Show a list of code structures. Mutually recursive with /* Show a list of code structures. Mutually recursive with
gfc_show_code_node(). */ gfc_show_code_node(). */
void void
gfc_show_code (int level, gfc_code * c) gfc_show_code (int level, gfc_code *c)
{ {
for (; c; c = c->next) for (; c; c = c->next)
gfc_show_code_node (level, c); gfc_show_code_node (level, c);
} }
...@@ -811,7 +804,7 @@ gfc_show_namelist (gfc_namelist *n) ...@@ -811,7 +804,7 @@ gfc_show_namelist (gfc_namelist *n)
if necessary. */ if necessary. */
static void static void
gfc_show_omp_node (int level, gfc_code * c) gfc_show_omp_node (int level, gfc_code *c)
{ {
gfc_omp_clauses *omp_clauses = NULL; gfc_omp_clauses *omp_clauses = NULL;
const char *name = NULL; const char *name = NULL;
...@@ -996,10 +989,11 @@ gfc_show_omp_node (int level, gfc_code * c) ...@@ -996,10 +989,11 @@ gfc_show_omp_node (int level, gfc_code * c)
gfc_status (" (%s)", c->ext.omp_name); gfc_status (" (%s)", c->ext.omp_name);
} }
/* Show a single code node and everything underneath it if necessary. */ /* Show a single code node and everything underneath it if necessary. */
static void static void
gfc_show_code_node (int level, gfc_code * c) gfc_show_code_node (int level, gfc_code *c)
{ {
gfc_forall_iterator *fa; gfc_forall_iterator *fa;
gfc_open *open; gfc_open *open;
...@@ -1709,7 +1703,7 @@ gfc_show_equiv (gfc_equiv *eq) ...@@ -1709,7 +1703,7 @@ gfc_show_equiv (gfc_equiv *eq)
/* Show a freakin' whole namespace. */ /* Show a freakin' whole namespace. */
void void
gfc_show_namespace (gfc_namespace * ns) gfc_show_namespace (gfc_namespace *ns)
{ {
gfc_interface *intr; gfc_interface *intr;
gfc_namespace *save; gfc_namespace *save;
......
/* Handle errors. /* Handle errors.
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
Foundation, Inc. Free Software Foundation, Inc.
Contributed by Andy Vaught & Niels Kristian Bech Jensen Contributed by Andy Vaught & Niels Kristian Bech Jensen
This file is part of GCC. This file is part of GCC.
...@@ -69,11 +69,9 @@ error_char (char c) ...@@ -69,11 +69,9 @@ error_char (char c)
{ {
if (cur_error_buffer->index >= cur_error_buffer->allocated) if (cur_error_buffer->index >= cur_error_buffer->allocated)
{ {
cur_error_buffer->allocated = cur_error_buffer->allocated = cur_error_buffer->allocated
cur_error_buffer->allocated
? cur_error_buffer->allocated * 2 : 1000; ? cur_error_buffer->allocated * 2 : 1000;
cur_error_buffer->message cur_error_buffer->message = xrealloc (cur_error_buffer->message,
= xrealloc (cur_error_buffer->message,
cur_error_buffer->allocated); cur_error_buffer->allocated);
} }
cur_error_buffer->message[cur_error_buffer->index++] = c; cur_error_buffer->message[cur_error_buffer->index++] = c;
...@@ -152,7 +150,7 @@ error_integer (int i) ...@@ -152,7 +150,7 @@ error_integer (int i)
static void error_printf (const char *, ...) ATTRIBUTE_GCC_GFC(1,2); static void error_printf (const char *, ...) ATTRIBUTE_GCC_GFC(1,2);
static void static void
show_locus (locus * loc, int c1, int c2) show_locus (locus *loc, int c1, int c2)
{ {
gfc_linebuf *lb; gfc_linebuf *lb;
gfc_file *f; gfc_file *f;
...@@ -308,7 +306,7 @@ show_locus (locus * loc, int c1, int c2) ...@@ -308,7 +306,7 @@ show_locus (locus * loc, int c1, int c2)
loci may or may not be on the same source line. */ loci may or may not be on the same source line. */
static void static void
show_loci (locus * l1, locus * l2) show_loci (locus *l1, locus *l2)
{ {
int m, c1, c2; int m, c1, c2;
...@@ -349,7 +347,6 @@ show_loci (locus * l1, locus * l2) ...@@ -349,7 +347,6 @@ show_loci (locus * l1, locus * l2)
show_locus (l1, c1, c2); show_locus (l1, c1, c2);
return; return;
} }
...@@ -545,10 +542,10 @@ error_print (const char *type, const char *format0, va_list argp) ...@@ -545,10 +542,10 @@ error_print (const char *type, const char *format0, va_list argp)
} }
format++; format++;
if (ISDIGIT(*format)) if (ISDIGIT (*format))
{ {
/* This is a position specifier. See comment above. */ /* This is a position specifier. See comment above. */
while (ISDIGIT(*format)) while (ISDIGIT (*format))
format++; format++;
/* Skip over the dollar sign. */ /* Skip over the dollar sign. */
...@@ -663,10 +660,8 @@ gfc_notify_std (int std, const char *nocmsgid, ...) ...@@ -663,10 +660,8 @@ gfc_notify_std (int std, const char *nocmsgid, ...)
va_list argp; va_list argp;
bool warning; bool warning;
warning = ((gfc_option.warn_std & std) != 0) warning = ((gfc_option.warn_std & std) != 0) && !inhibit_warnings;
&& !inhibit_warnings; if ((gfc_option.allow_std & std) != 0 && !warning)
if ((gfc_option.allow_std & std) != 0
&& !warning)
return SUCCESS; return SUCCESS;
if (gfc_suppress_error) if (gfc_suppress_error)
...@@ -889,7 +884,7 @@ gfc_error_check (void) ...@@ -889,7 +884,7 @@ gfc_error_check (void)
/* Save the existing error state. */ /* Save the existing error state. */
void void
gfc_push_error (gfc_error_buf * err) gfc_push_error (gfc_error_buf *err)
{ {
err->flag = error_buffer.flag; err->flag = error_buffer.flag;
if (error_buffer.flag) if (error_buffer.flag)
...@@ -902,7 +897,7 @@ gfc_push_error (gfc_error_buf * err) ...@@ -902,7 +897,7 @@ gfc_push_error (gfc_error_buf * err)
/* Restore a previous pushed error state. */ /* Restore a previous pushed error state. */
void void
gfc_pop_error (gfc_error_buf * err) gfc_pop_error (gfc_error_buf *err)
{ {
error_buffer.flag = err->flag; error_buffer.flag = err->flag;
if (error_buffer.flag) if (error_buffer.flag)
...@@ -918,7 +913,7 @@ gfc_pop_error (gfc_error_buf * err) ...@@ -918,7 +913,7 @@ gfc_pop_error (gfc_error_buf * err)
/* Free a pushed error state, but keep the current error state. */ /* Free a pushed error state, but keep the current error state. */
void void
gfc_free_error (gfc_error_buf * err) gfc_free_error (gfc_error_buf *err)
{ {
if (err->flag) if (err->flag)
gfc_free (err->message); gfc_free (err->message);
......
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