diff options
author | Tobias Schlüter <tobi@gcc.gnu.org> | 2004-10-04 22:55:49 +0200 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2004-10-04 22:55:49 +0200 |
commit | 95638988cb96e12a6472bfdde500fa5105d7c251 (patch) | |
tree | 3bc67b7ed0b9882c2945e7136e69be9b705e553d /gcc/fortran | |
parent | ee569894e73717bcc0ee7598a0fd250d0e07b50f (diff) | |
download | gcc-95638988cb96e12a6472bfdde500fa5105d7c251.zip gcc-95638988cb96e12a6472bfdde500fa5105d7c251.tar.gz gcc-95638988cb96e12a6472bfdde500fa5105d7c251.tar.bz2 |
trans-const.c (gfc_build_cstring_const): New function.
* trans-const.c (gfc_build_cstring_const): New function.
(gfc_init_cst): Use new function.
* trans-const.h (gfc_build_cstring_const): Add prototype.
* trans-io.c (set_string, set_error_locus): Use new function.
* trans-stmt.c (gfc_trans_goto): Use new function.
From-SVN: r88528
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/trans-const.c | 17 | ||||
-rw-r--r-- | gcc/fortran/trans-const.h | 1 | ||||
-rw-r--r-- | gcc/fortran/trans-io.c | 4 | ||||
-rw-r--r-- | gcc/fortran/trans-stmt.c | 5 |
4 files changed, 17 insertions, 10 deletions
diff --git a/gcc/fortran/trans-const.c b/gcc/fortran/trans-const.c index e3c5850..c0572da 100644 --- a/gcc/fortran/trans-const.c +++ b/gcc/fortran/trans-const.c @@ -89,6 +89,14 @@ gfc_build_string_const (int length, const char *s) return str; } +/* Build a Fortran character constant from a zero-terminated string. */ + +tree +gfc_build_cstring_const (const char *s) +{ + return gfc_build_string_const (strlen (s) + 1, s); +} + /* Return a string constant with the given length. Used for static initializers. The constant will be padded or truncated to match length. */ @@ -147,17 +155,16 @@ gfc_init_constants (void) for (n = 0; n <= GFC_MAX_DIMENSIONS; n++) gfc_rank_cst[n] = build_int_cst (gfc_array_index_type, n); - gfc_strconst_bounds = gfc_build_string_const (21, "Array bound mismatch"); + gfc_strconst_bounds = gfc_build_cstring_const ("Array bound mismatch"); gfc_strconst_fault = - gfc_build_string_const (30, "Array reference out of bounds"); + gfc_build_cstring_const ("Array reference out of bounds"); gfc_strconst_wrong_return = - gfc_build_string_const (32, "Incorrect function return value"); + gfc_build_cstring_const ("Incorrect function return value"); gfc_strconst_current_filename = - gfc_build_string_const (strlen (gfc_option.source) + 1, - gfc_option.source); + gfc_build_cstring_const (gfc_option.source); } /* Converts a GMP integer into a backend tree node. */ diff --git a/gcc/fortran/trans-const.h b/gcc/fortran/trans-const.h index 0fe2d3a..d38a90f 100644 --- a/gcc/fortran/trans-const.h +++ b/gcc/fortran/trans-const.h @@ -35,6 +35,7 @@ tree gfc_conv_constant_to_tree (gfc_expr *); void gfc_conv_constant (gfc_se *, gfc_expr *); tree gfc_build_string_const (int, const char *); +tree gfc_build_cstring_const (const char *); /* Translate a string constant for a static initializer. */ tree gfc_conv_string_init (tree, gfc_expr *); diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c index c674228..ada8297 100644 --- a/gcc/fortran/trans-io.c +++ b/gcc/fortran/trans-io.c @@ -409,7 +409,7 @@ set_string (stmtblock_t * block, stmtblock_t * postblock, tree var, if (e->ts.type == BT_INTEGER && e->symtree->n.sym->attr.assign == 1) { msg = - gfc_build_string_const (37, "Assigned label is not a format label"); + gfc_build_cstring_const ("Assigned label is not a format label"); tmp = GFC_DECL_STRING_LEN (se.expr); tmp = build2 (LE_EXPR, boolean_type_node, tmp, convert (TREE_TYPE (tmp), integer_minus_one_node)); @@ -518,7 +518,7 @@ set_error_locus (stmtblock_t * block, locus * where) int line; f = where->lb->file; - tmp = gfc_build_string_const (strlen (f->filename) + 1, f->filename); + tmp = gfc_build_cstring_const (f->filename); tmp = gfc_build_addr_expr (pchar_type_node, tmp); gfc_add_modify_expr (block, locus_file, tmp); diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index 53e9a85..8fd8ff8 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -144,7 +144,7 @@ gfc_trans_goto (gfc_code * code) gfc_start_block (&se.pre); gfc_conv_expr (&se, code->expr); assign_error = - gfc_build_string_const (37, "Assigned label is not a target label"); + gfc_build_cstring_const ("Assigned label is not a target label"); tmp = GFC_DECL_STRING_LEN (se.expr); tmp = build2 (NE_EXPR, boolean_type_node, tmp, integer_minus_one_node); gfc_trans_runtime_check (tmp, assign_error, &se.pre); @@ -160,8 +160,7 @@ gfc_trans_goto (gfc_code * code) } /* Check the label list. */ - range_error = - gfc_build_string_const (34, "Assigned label is not in the list"); + range_error = gfc_build_cstring_const ("Assigned label is not in the list"); do { |