Index: gcc/gcc/fortran/st.c |
diff --git a/gcc/gcc/fortran/st.c b/gcc/gcc/fortran/st.c |
index 18f1b6d91c44c993a419fc8a416a30fb7092d714..f1765e6ed7ce4a7dd134bd427c838e1d25ec9603 100644 |
--- a/gcc/gcc/fortran/st.c |
+++ b/gcc/gcc/fortran/st.c |
@@ -1,5 +1,5 @@ |
/* Build executable statement trees. |
- Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008 |
+ Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009 |
Free Software Foundation, Inc. |
Contributed by Andy Vaught |
@@ -80,19 +80,21 @@ gfc_append_code (gfc_code *tail, gfc_code *new_code) |
void |
gfc_free_statement (gfc_code *p) |
{ |
- if (p->expr) |
- gfc_free_expr (p->expr); |
+ if (p->expr1) |
+ gfc_free_expr (p->expr1); |
if (p->expr2) |
gfc_free_expr (p->expr2); |
switch (p->op) |
{ |
case EXEC_NOP: |
+ case EXEC_END_BLOCK: |
case EXEC_ASSIGN: |
case EXEC_INIT_ASSIGN: |
case EXEC_GOTO: |
case EXEC_CYCLE: |
case EXEC_RETURN: |
+ case EXEC_END_PROCEDURE: |
case EXEC_IF: |
case EXEC_PAUSE: |
case EXEC_STOP: |
@@ -108,13 +110,19 @@ gfc_free_statement (gfc_code *p) |
case EXEC_ARITHMETIC_IF: |
break; |
+ case EXEC_BLOCK: |
+ gfc_free_namespace (p->ext.ns); |
+ break; |
+ |
case EXEC_COMPCALL: |
+ case EXEC_CALL_PPC: |
case EXEC_CALL: |
case EXEC_ASSIGN_CALL: |
gfc_free_actual_arglist (p->ext.actual); |
break; |
case EXEC_SELECT: |
+ case EXEC_SELECT_TYPE: |
if (p->ext.case_list) |
gfc_free_case_list (p->ext.case_list); |
break; |
@@ -125,7 +133,7 @@ gfc_free_statement (gfc_code *p) |
case EXEC_ALLOCATE: |
case EXEC_DEALLOCATE: |
- gfc_free_alloc_list (p->ext.alloc_list); |
+ gfc_free_alloc_list (p->ext.alloc.list); |
break; |
case EXEC_OPEN: |