aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2006-01-13 21:09:24 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2006-01-13 21:09:24 +0000
commitb5cbe7eee3cb428d07035b33c3d79684684e93bd (patch)
tree73dc7b36452565e4319d896f996e0d4c5bb875a3
parent47adc0164ed1ef318809797c43ff179cc756c90c (diff)
downloadgcc-b5cbe7eee3cb428d07035b33c3d79684684e93bd.zip
gcc-b5cbe7eee3cb428d07035b33c3d79684684e93bd.tar.gz
gcc-b5cbe7eee3cb428d07035b33c3d79684684e93bd.tar.bz2
[multiple changes]
2006-01-13 Steven G. Kargl <kargls@comcast.net> PR fortran/25756 * symbol.c (gfc_free_st_label): Give variable meaningful name. Remove unneeded parenthesis. Fix-up the head of the list (2 lines gleaned from g95). 2006-01-13 Bernhard Fischer <rep.nop@aon.at> PR fortran/25756 * gfortran.dg/label_3.f90: New test. From-SVN: r109674
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/symbol.c22
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/label_3.f905
4 files changed, 30 insertions, 9 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 5f18c76..29a4c77 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2006-01-13 Steven G. Kargl <kargls@comcast.net>
+
+ PR fortran/25756
+ * symbol.c (gfc_free_st_label): Give variable meaningful name. Remove
+ unneeded parenthesis. Fix-up the head of the list (2 lines gleaned
+ from g95).
+
2006-01-13 Diego Novillo <dnovillo@redhat.com>
* trans.c (gfc_add_expr_to_block): Do not fold tcc_statement
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
index bda1c1d..6eec853 100644
--- a/gcc/fortran/symbol.c
+++ b/gcc/fortran/symbol.c
@@ -1473,21 +1473,25 @@ gfc_get_component_attr (symbol_attribute * attr, gfc_component * c)
occurs. */
void
-gfc_free_st_label (gfc_st_label * l)
+gfc_free_st_label (gfc_st_label * label)
{
- if (l == NULL)
+ if (label == NULL)
return;
- if (l->prev)
- (l->prev->next = l->next);
+ if (label->prev)
+ label->prev->next = label->next;
- if (l->next)
- (l->next->prev = l->prev);
+ if (label->next)
+ label->next->prev = label->prev;
- if (l->format != NULL)
- gfc_free_expr (l->format);
- gfc_free (l);
+ if (gfc_current_ns->st_labels == label)
+ gfc_current_ns->st_labels = label->next;
+
+ if (label->format != NULL)
+ gfc_free_expr (label->format);
+
+ gfc_free (label);
}
/* Free a whole list of gfc_st_label structures. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1a59f59..daf4596 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-01-13 Bernhard Fischer <rep.nop@aon.at>
+
+ PR fortran/25756
+ * gfortran.dg/label_3.f90: New test.
+
2006-01-13 Daniel Berlin <dberlin@dberlin.org>
PR tree-optimization/25771
diff --git a/gcc/testsuite/gfortran.dg/label_3.f90 b/gcc/testsuite/gfortran.dg/label_3.f90
new file mode 100644
index 0000000..5cebe93
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/label_3.f90
@@ -0,0 +1,5 @@
+! { dg-do compile }
+! PR fortran/25756.
+! This used to ICE due to the space after the label.
+1 ! { dg-warning "Ignoring statement label in empty statement" }
+end