summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorsteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-27 00:58:11 +0000
committersteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-27 00:58:11 +0000
commitb797d6d379dc400e41def460457d2a9ec57e6110 (patch)
tree4960857b959a431ea43e5af1b1a42bcea50d741c /gcc
parent018e2313bf4168a022a53518c91887624bd49e88 (diff)
downloadgcc-b797d6d379dc400e41def460457d2a9ec57e6110.tar.gz
* trans-decl.c (gfc_build_label_decl): Set DECL_ARTIFICAL and
TREE_USED for all labels. (gfc_trans_entry_master_switch): Use it instead of building a label by hand. * trans-io.c (add_case): Likewise. * trans-stmt.c (gfc_trans_integer_select): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94299 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog9
-rw-r--r--gcc/fortran/trans-decl.c29
-rw-r--r--gcc/fortran/trans-io.c3
-rw-r--r--gcc/fortran/trans-stmt.c3
4 files changed, 21 insertions, 23 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 2cb19583aca..18b7753f4bb 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,12 @@
+2004-01-27 Steven Bosscher <stevenb@suse.de>
+
+ * trans-decl.c (gfc_build_label_decl): Set DECL_ARTIFICAL and
+ TREE_USED for all labels.
+ (gfc_trans_entry_master_switch): Use it instead of building a
+ label by hand.
+ * trans-io.c (add_case): Likewise.
+ * trans-stmt.c (gfc_trans_integer_select): Likewise.
+
2004-01-23 Paul Brook <paul@codesourcery.com>
Steven G. Kargl <kargls@comcast.net>
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 65ba867948a..6567695ad29 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -148,9 +148,9 @@ gfc_add_decl_to_function (tree decl)
}
-/* Build a backend label declaration.
- Set TREE_USED for named lables. For artificial labels it's up to the
- caller to mark the label as used. */
+/* Build a backend label declaration. Set TREE_USED for named labels.
+ The context of the label is always the current_function_decl. All
+ labels are marked artificial. */
tree
gfc_build_label_decl (tree label_id)
@@ -174,19 +174,13 @@ gfc_build_label_decl (tree label_id)
DECL_CONTEXT (label_decl) = current_function_decl;
DECL_MODE (label_decl) = VOIDmode;
- if (label_name)
- {
- DECL_ARTIFICIAL (label_decl) = 1;
- }
- else
- {
- /* We always define the label as used, even if the original source
- file never references the label. We don't want all kinds of
- spurious warnings for old-style Fortran code with too many
- labels. */
- TREE_USED (label_decl) = 1;
- }
+ /* We always define the label as used, even if the original source
+ file never references the label. We don't want all kinds of
+ spurious warnings for old-style Fortran code with too many
+ labels. */
+ TREE_USED (label_decl) = 1;
+ DECL_ARTIFICIAL (label_decl) = 1;
return label_decl;
}
@@ -2122,16 +2116,13 @@ gfc_trans_entry_master_switch (gfc_entry_list * el)
for (; el; el = el->next)
{
/* Add the case label. */
- label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
- DECL_CONTEXT (label) = current_function_decl;
+ label = gfc_build_label_decl (NULL_TREE);
val = build_int_cst (gfc_array_index_type, el->id);
tmp = build3_v (CASE_LABEL_EXPR, val, NULL_TREE, label);
gfc_add_expr_to_block (&block, tmp);
/* And jump to the actual entry point. */
label = gfc_build_label_decl (NULL_TREE);
- TREE_USED (label) = 1;
- DECL_CONTEXT (label) = current_function_decl;
tmp = build1_v (GOTO_EXPR, label);
gfc_add_expr_to_block (&block, tmp);
diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c
index 67fc796f86f..b5ef13f5e16 100644
--- a/gcc/fortran/trans-io.c
+++ b/gcc/fortran/trans-io.c
@@ -452,8 +452,7 @@ add_case (int label_value, gfc_st_label * label, stmtblock_t * body)
value = build_int_cst (NULL_TREE, label_value);
/* Make a backend label for this case. */
- tmp = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
- DECL_CONTEXT (tmp) = current_function_decl;
+ tmp = gfc_build_label_decl (NULL_TREE);
/* And the case itself. */
tmp = build3_v (CASE_LABEL_EXPR, value, NULL_TREE, tmp);
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c
index 2d2fe8bf8b7..7a55cbc48c9 100644
--- a/gcc/fortran/trans-stmt.c
+++ b/gcc/fortran/trans-stmt.c
@@ -945,8 +945,7 @@ gfc_trans_integer_select (gfc_code * code)
}
/* Build a label. */
- label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
- DECL_CONTEXT (label) = current_function_decl;
+ label = gfc_build_label_decl (NULL_TREE);
/* Add this case label.
Add parameter 'label', make it match GCC backend. */