Commit 81871c2a by Jakub Jelinek

trans-common.c (build_field): Fix comment typo.

	* trans-common.c (build_field): Fix comment typo.
	(create_common): Set backend_decl of COMMON or EQUIVALENCEd
	variables to a VAR_DECL with the COMPONENT_REF in
	DECL_HAS_VALUE_EXPR rather than COMPONENT_REF directly.
	* f95-lang.c (gfc_expand_function): Emit debug info for
	EQUIVALENCEd variables if the equiv union is going to be output.

From-SVN: r105288
parent 595cf76b
2005-10-11 Steven G. Kargl <kargls@comcast.net> 2005-10-12 Jakub Jelinek <jakub@redhat.com>
* trans-common.c (build_field): Fix comment typo.
(create_common): Set backend_decl of COMMON or EQUIVALENCEd
variables to a VAR_DECL with the COMPONENT_REF in
DECL_HAS_VALUE_EXPR rather than COMPONENT_REF directly.
* f95-lang.c (gfc_expand_function): Emit debug info for
EQUIVALENCEd variables if the equiv union is going to be output.
2005-10-11 Steven G. Kargl <kargls@comcast.net>
PR fortran/20786 PR fortran/20786
*iresolve.c (gfc_resolve_aint, gfc_resolve_anint ): Type conversion * iresolve.c (gfc_resolve_aint, gfc_resolve_anint): Type conversion
of the argument. of the argument.
2005-10-11 Jakub Jelinek <jakub@redhat.com> 2005-10-11 Jakub Jelinek <jakub@redhat.com>
...@@ -707,7 +716,7 @@ ...@@ -707,7 +716,7 @@
* scanner.c (preprocessor_line): Don't write beyond the end of flag * scanner.c (preprocessor_line): Don't write beyond the end of flag
buffer. buffer.
2005-08-07 Janne Blomqvist <jblomqvi@cc.hut.fi> 2005-08-07 Janne Blomqvist <jblomqvi@cc.hut.fi>
PR fortran/22390 PR fortran/22390
* dump-parse-tree.c (gfc_show_code_node): Add case for FLUSH. * dump-parse-tree.c (gfc_show_code_node): Add case for FLUSH.
...@@ -998,7 +1007,7 @@ ...@@ -998,7 +1007,7 @@
* all files: Update FSF address in copyright headers. * all files: Update FSF address in copyright headers.
2005-06-24 Jerry DeLisle <jvdelisle@verizon.net> 2005-06-24 Jerry DeLisle <jvdelisle@verizon.net>
PR fortran/21915 PR fortran/21915
* gfortran.h: Add symbols for new intrinsic functions. * gfortran.h: Add symbols for new intrinsic functions.
...@@ -1055,7 +1064,7 @@ ...@@ -1055,7 +1064,7 @@
in a warning message. in a warning message.
2005-06-18 Erik Edelman <eedelman@acclab.helsinki.fi> 2005-06-18 Erik Edelman <eedelman@acclab.helsinki.fi>
Steven G. Kargl <kargls@comast.net> Steven G. Kargl <kargls@comast.net>
PR fortran/19926 PR fortran/19926
* primary.c (gfc_match_rvalue): expr_type can be EXPR_CONSTANT * primary.c (gfc_match_rvalue): expr_type can be EXPR_CONSTANT
...@@ -1127,7 +1136,7 @@ ...@@ -1127,7 +1136,7 @@
* trans-decl.c (gfc_build_builtin_function_decls): update declaration * trans-decl.c (gfc_build_builtin_function_decls): update declaration
* trans-stmt.c (gfc_trans_deallocate): Implement STAT= feature. * trans-stmt.c (gfc_trans_deallocate): Implement STAT= feature.
2005-06-07 Jerry DeLisle <jvdelisle@verizon.net> 2005-06-07 Jerry DeLisle <jvdelisle@verizon.net>
* intrinsic.texi: Add documentation for dcmplx, digits, * intrinsic.texi: Add documentation for dcmplx, digits,
dim, idim, ddim, dot_product, dprod, dreal, and dtime. dim, idim, ddim, dot_product, dprod, dreal, and dtime.
...@@ -1160,7 +1169,7 @@ ...@@ -1160,7 +1169,7 @@
* array.c (gfc_match_array_constructor): Disallow empty array * array.c (gfc_match_array_constructor): Disallow empty array
constructor. constructor.
2005-06-03 Jerry DeLisle <jvdelisle@verizon.net> 2005-06-03 Jerry DeLisle <jvdelisle@verizon.net>
* fortran/intrinsic.texi: Add documentation for * fortran/intrinsic.texi: Add documentation for
command_argument_count, conjg, dconjg, count, command_argument_count, conjg, dconjg, count,
...@@ -1312,7 +1321,7 @@ ...@@ -1312,7 +1321,7 @@
gfc_type_letter (BT_COMPLEX) for complex to gfc_type_letter (BT_COMPLEX) for complex to
to resolved function name. to resolved function name.
2005-05-18 Erik Edelmann <erik.edelmann@iki.fi> 2005-05-18 Erik Edelmann <erik.edelmann@iki.fi>
* array.c (gfc_match_array_constructor): Support [ ... ] * array.c (gfc_match_array_constructor): Support [ ... ]
style array constructors. style array constructors.
...@@ -1367,8 +1376,8 @@ ...@@ -1367,8 +1376,8 @@
(gfc_trans_where_2): Initialize mask indexes before calling (gfc_trans_where_2): Initialize mask indexes before calling
gfc_trans_nested_forall_loop. gfc_trans_nested_forall_loop.
2005-05-15 Feng Wang <fengwang@nudt.edu.cn> 2005-05-15 Feng Wang <fengwang@nudt.edu.cn>
Jerry DeLisle <jvdelisle@verizon.net> Jerry DeLisle <jvdelisle@verizon.net>
PR fortran/17432 PR fortran/17432
* trans-stmt.c (gfc_trans_label_assign): fix pointer type, to * trans-stmt.c (gfc_trans_label_assign): fix pointer type, to
...@@ -1563,7 +1572,7 @@ ...@@ -1563,7 +1572,7 @@
* resolve.c (resolve_variable): If e->symtree is not set, this * resolve.c (resolve_variable): If e->symtree is not set, this
ought to be a FAILURE, and not a segfault. ought to be a FAILURE, and not a segfault.
2005-04-17 Paul Thomas <pault@gcc.gnu.org> 2005-04-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/17472 PR fortran/17472
PR fortran/18209 PR fortran/18209
...@@ -2986,7 +2995,7 @@ ...@@ -2986,7 +2995,7 @@
* gfortran.texi: Fix a typo. * gfortran.texi: Fix a typo.
2004-09-15 Aaron W. LaFramboise <aaronavay62@aaronwl.com> 2004-09-15 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
* parse.c (eof_buf): Rename eof to eof_buf. * parse.c (eof_buf): Rename eof to eof_buf.
(unexpected_eof): Same. (unexpected_eof): Same.
...@@ -4379,7 +4388,7 @@ ...@@ -4379,7 +4388,7 @@
unused variables if they're use associated. unused variables if they're use associated.
2004-06-14 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> 2004-06-14 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
Andrew Vaught <andyv@firstinter.net> Andrew Vaught <andyv@firstinter.net>
PR fortran/14928 PR fortran/14928
* gfortran.h (gfc_check_f): Add new field f3ml. * gfortran.h (gfc_check_f): Add new field f3ml.
...@@ -4746,7 +4755,7 @@ ...@@ -4746,7 +4755,7 @@
* arith.c: Fix comment typos. * arith.c: Fix comment typos.
2004-05-15 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> 2004-05-15 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/13742 PR fortran/13742
* decl.c (add_init_expr_to_sym): Verify that COMMON variable is * decl.c (add_init_expr_to_sym): Verify that COMMON variable is
...@@ -4849,7 +4858,7 @@ ...@@ -4849,7 +4858,7 @@
* decl.c (variable_decl): Always apply default initializer. * decl.c (variable_decl): Always apply default initializer.
2004-05-08 Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de> 2004-05-08 Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/15206 PR fortran/15206
* trans-intrinsic.c (gfc_conv_intrinsic_rrspacing): Fixed to * trans-intrinsic.c (gfc_conv_intrinsic_rrspacing): Fixed to
...@@ -4933,20 +4942,20 @@ ...@@ -4933,20 +4942,20 @@
* primary.c (match_digits, match_integer_constant): Add comment * primary.c (match_digits, match_integer_constant): Add comment
explaining signflag. explaining signflag.
2004-05-01 Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de> 2004-05-01 Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/13940 PR fortran/13940
* primary.c: Include system.h and flags.h, needed for pedantic. * primary.c: Include system.h and flags.h, needed for pedantic.
(match_boz_constant): Allow "x" for hexadecimal constants, warn if (match_boz_constant): Allow "x" for hexadecimal constants, warn if
pedantic is set. pedantic is set.
2004-05-01 Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de> 2004-05-01 Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/13940 PR fortran/13940
* match.c (match_data_constant): Handle case where * match.c (match_data_constant): Handle case where
gfc_find_symbol sets sym to NULL gfc_find_symbol sets sym to NULL
2004-04-28 Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de> 2004-04-28 Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>
* Make-lang.in (f95-lang.o, trans-intrinsic.o): Add missing * Make-lang.in (f95-lang.o, trans-intrinsic.o): Add missing
dependency on mathbuiltins.def dependency on mathbuiltins.def
...@@ -5257,7 +5266,7 @@ ...@@ -5257,7 +5266,7 @@
* resolve.c (resolve_branch): Get error message right way round. * resolve.c (resolve_branch): Get error message right way round.
2004-01-10 Canqun Yang <canqun@nudt.edu.cn> 2004-01-10 Canqun Yang <canqun@nudt.edu.cn>
* trans-array (gfc_conv_loop_setup): Adjust comment to track * trans-array (gfc_conv_loop_setup): Adjust comment to track
reality. reality.
...@@ -5346,7 +5355,7 @@ ...@@ -5346,7 +5355,7 @@
(GFC_DECL_ASSIGN_ADDR(node)): New macro to access this. (GFC_DECL_ASSIGN_ADDR(node)): New macro to access this.
(GFC_DECL_ASSIGN(node)): New macro to access flag. (GFC_DECL_ASSIGN(node)): New macro to access flag.
2003-12-31 Huang Chun <chunhuang73@hotmail.com> 2003-12-31 Huang Chun <chunhuang73@hotmail.com>
PR fortran/13434 PR fortran/13434
* trans-intrinsic.c (gfc_conv_intrinsic_minmaxval): Fixed bug in * trans-intrinsic.c (gfc_conv_intrinsic_minmaxval): Fixed bug in
...@@ -5363,7 +5372,7 @@ ...@@ -5363,7 +5372,7 @@
* trans-expr.c (gfc_conv_expr_op): Fold the result expression. * trans-expr.c (gfc_conv_expr_op): Fold the result expression.
* trans.c (gfc_add_modify_expr, gfc_add_expr_to_block): Likewise. * trans.c (gfc_add_modify_expr, gfc_add_expr_to_block): Likewise.
2003-12-12 Huang Chun <chunhuang73@hotmail.com> 2003-12-12 Huang Chun <chunhuang73@hotmail.com>
* primary.c (match_substring): Fix substring bug for start point * primary.c (match_substring): Fix substring bug for start point
or end point is NULL. or end point is NULL.
...@@ -5408,7 +5417,7 @@ ...@@ -5408,7 +5417,7 @@
* io.c (gfc_match_format): Check for missing format label. * io.c (gfc_match_format): Check for missing format label.
2003-11-30 Huang Chun <chunhuang73@hotmail.com> 2003-11-30 Huang Chun <chunhuang73@hotmail.com>
PR fortran/13155 PR fortran/13155
* trans-decl.c (gfc_sym_mangled_function_id): Don't mangle symbols * trans-decl.c (gfc_sym_mangled_function_id): Don't mangle symbols
...@@ -5444,7 +5453,7 @@ ...@@ -5444,7 +5453,7 @@
* trans.c (gfc_create_var_np): Use create_tmp_var_raw. * trans.c (gfc_create_var_np): Use create_tmp_var_raw.
2003-11-28 Huang Chun <chunhuang73@hotmail.com> 2003-11-28 Huang Chun <chunhuang73@hotmail.com>
* trans.h (has_alternate_specifier): New global variable. * trans.h (has_alternate_specifier): New global variable.
* match.c (gfc_match_call): Handle actual arguments associated with * match.c (gfc_match_call): Handle actual arguments associated with
...@@ -7865,7 +7874,7 @@ ...@@ -7865,7 +7874,7 @@
NON_LVALUE_EXPR. NON_LVALUE_EXPR.
* trans-stmt.c (g95_trans_arithmetic_if): Implement this. * trans-stmt.c (g95_trans_arithmetic_if): Implement this.
2002-09-18 Steven Bosscher <s.bosscher@student.tudelft.nl> 2002-09-18 Steven Bosscher <s.bosscher@student.tudelft.nl>
* Make-lang.in (F95_ADDITIONAL_OBJS): Add tree-ssa-dce.o * Make-lang.in (F95_ADDITIONAL_OBJS): Add tree-ssa-dce.o
...@@ -7943,7 +7952,7 @@ ...@@ -7943,7 +7952,7 @@
* trans-intrinsic.c: Implement PRODUCT, COUNT. MINLOC and MAXLOC * trans-intrinsic.c: Implement PRODUCT, COUNT. MINLOC and MAXLOC
intrinsics. intrinsics.
2002-09-02 Steven Bosscher <s.bosscher@student.tudelft.nl> 2002-09-02 Steven Bosscher <s.bosscher@student.tudelft.nl>
* trans-array.c, trans-types.c: Add rank information to descriptor. * trans-array.c, trans-types.c: Add rank information to descriptor.
...@@ -7960,7 +7969,7 @@ ...@@ -7960,7 +7969,7 @@
* trans-types.c (g95_init_types): Always name integer and char types. * trans-types.c (g95_init_types): Always name integer and char types.
(g95_get_array_type_bounds): TYPE_NAME may be a TYPE_DECL. (g95_get_array_type_bounds): TYPE_NAME may be a TYPE_DECL.
2002-09-02 Steven Bosscher <s.bosscher@student.tudelft.nl> 2002-09-02 Steven Bosscher <s.bosscher@student.tudelft.nl>
* Make-lang.in: Add options.c to F95_PARSER_OBJS * Make-lang.in: Add options.c to F95_PARSER_OBJS
......
...@@ -187,6 +187,36 @@ tree *ridpointers = NULL; ...@@ -187,6 +187,36 @@ tree *ridpointers = NULL;
static void static void
gfc_expand_function (tree fndecl) gfc_expand_function (tree fndecl)
{ {
tree t;
if (DECL_INITIAL (fndecl)
&& BLOCK_SUBBLOCKS (DECL_INITIAL (fndecl)))
{
/* Local static equivalenced variables are never seen by
check_global_declarations, so we need to output debug
info by hand. */
t = BLOCK_SUBBLOCKS (DECL_INITIAL (fndecl));
for (t = BLOCK_VARS (t); t; t = TREE_CHAIN (t))
if (TREE_CODE (t) == VAR_DECL && DECL_HAS_VALUE_EXPR_P (t)
&& TREE_STATIC (t))
{
tree expr = DECL_VALUE_EXPR (t);
if (TREE_CODE (expr) == COMPONENT_REF
&& TREE_CODE (TREE_OPERAND (expr, 0)) == VAR_DECL
&& TREE_CODE (TREE_TYPE (TREE_OPERAND (expr, 0)))
== UNION_TYPE
&& cgraph_varpool_node (TREE_OPERAND (expr, 0))->needed
&& errorcount == 0 && sorrycount == 0)
{
timevar_push (TV_SYMOUT);
(*debug_hooks->global_decl) (t);
timevar_pop (TV_SYMOUT);
}
}
}
tree_rest_of_compilation (fndecl); tree_rest_of_compilation (fndecl);
} }
......
...@@ -241,7 +241,7 @@ build_field (segment_info *h, tree union_type, record_layout_info rli) ...@@ -241,7 +241,7 @@ build_field (segment_info *h, tree union_type, record_layout_info rli)
DECL_FIELD_OFFSET (field), DECL_FIELD_OFFSET (field),
DECL_SIZE_UNIT (field))); DECL_SIZE_UNIT (field)));
/* If this field is assigned to a label, we create another two variables. /* If this field is assigned to a label, we create another two variables.
One will hold the address of taget label or format label. The other will One will hold the address of target label or format label. The other will
hold the length of format label string. */ hold the length of format label string. */
if (h->sym->attr.assign) if (h->sym->attr.assign)
{ {
...@@ -471,8 +471,38 @@ create_common (gfc_common_head *com, segment_info * head, bool saw_equiv) ...@@ -471,8 +471,38 @@ create_common (gfc_common_head *com, segment_info * head, bool saw_equiv)
/* Build component reference for each variable. */ /* Build component reference for each variable. */
for (s = head; s; s = next_s) for (s = head; s; s = next_s)
{ {
s->sym->backend_decl = build3 (COMPONENT_REF, TREE_TYPE (s->field), tree var_decl;
decl, s->field, NULL_TREE);
var_decl = build_decl (VAR_DECL, DECL_NAME (s->field),
TREE_TYPE (s->field));
gfc_set_decl_location (var_decl, &s->sym->declared_at);
TREE_PUBLIC (var_decl) = TREE_PUBLIC (decl);
TREE_STATIC (var_decl) = TREE_STATIC (decl);
TREE_USED (var_decl) = TREE_USED (decl);
if (s->sym->attr.target)
TREE_ADDRESSABLE (var_decl) = 1;
/* This is a fake variable just for debugging purposes. */
TREE_ASM_WRITTEN (var_decl) = 1;
if (com)
var_decl = pushdecl_top_level (var_decl);
else
gfc_add_decl_to_function (var_decl);
SET_DECL_VALUE_EXPR (var_decl,
build3 (COMPONENT_REF, TREE_TYPE (s->field),
decl, s->field, NULL_TREE));
DECL_HAS_VALUE_EXPR_P (var_decl) = 1;
if (s->sym->attr.assign)
{
gfc_allocate_lang_decl (var_decl);
GFC_DECL_ASSIGN (var_decl) = 1;
GFC_DECL_STRING_LEN (var_decl) = GFC_DECL_STRING_LEN (s->field);
GFC_DECL_ASSIGN_ADDR (var_decl) = GFC_DECL_ASSIGN_ADDR (s->field);
}
s->sym->backend_decl = var_decl;
next_s = s->next; next_s = s->next;
gfc_free (s); gfc_free (s);
......
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