Commit fd378c9d by Jason Merrill Committed by Mike Stump

70th Cygnus<->FSF merge

From-SVN: r9624
parent 0982a4b8
Thu May 11 00:31:48 1995 Jason Merrill <jason@phydeaux.cygnus.com>
* typeck.c (default_conversion): Don't check for BLKmode before
pulling out the decl_constant_value.
* decl.c (start_function): Clear named_labels and shadowed_labels.
* typeck.c (build_function_call_real): Also synthesize methods here.
Wed May 10 00:55:59 1995 Jason Merrill <jason@phydeaux.cygnus.com>
* decl2.c (finish_file): Synthesize exported methods before the
reconsider loop.
* parse.y: Move declaration of flag_new_for_scope to file scope.
Tue May 9 19:10:33 1995 Mike Stump <mrs@cygnus.com> Tue May 9 19:10:33 1995 Mike Stump <mrs@cygnus.com>
* decl2.c: Add flag_new_for_scope for new -ffor-scope flag. * decl2.c: Add flag_new_for_scope for new -ffor-scope flag.
......
...@@ -10716,6 +10716,8 @@ start_function (declspecs, declarator, raises, pre_parsed_p) ...@@ -10716,6 +10716,8 @@ start_function (declspecs, declarator, raises, pre_parsed_p)
current_function_returns_value = 0; current_function_returns_value = 0;
current_function_returns_null = 0; current_function_returns_null = 0;
warn_about_return_type = 0; warn_about_return_type = 0;
named_labels = 0;
shadowed_labels = 0;
current_function_assigns_this = 0; current_function_assigns_this = 0;
current_function_just_assigned_this = 0; current_function_just_assigned_this = 0;
current_function_parms_stored = 0; current_function_parms_stored = 0;
......
...@@ -3112,7 +3112,13 @@ finish_file () ...@@ -3112,7 +3112,13 @@ finish_file ()
walk_sigtables ((void (*)())0, finish_sigtable_vardecl); walk_sigtables ((void (*)())0, finish_sigtable_vardecl);
for (fnname = saved_inlines; fnname; fnname = TREE_CHAIN (fnname)) for (fnname = saved_inlines; fnname; fnname = TREE_CHAIN (fnname))
import_export_inline (TREE_VALUE (fnname)); {
tree decl = TREE_VALUE (fnname);
import_export_inline (decl);
if (DECL_ARTIFICIAL (decl) && ! DECL_INITIAL (decl)
&& TREE_PUBLIC (decl) && DECL_NOT_REALLY_EXTERN (decl))
synthesize_method (decl);
}
/* Now write out inline functions which had their addresses taken and /* Now write out inline functions which had their addresses taken and
which were not declared virtual and which were not declared `extern which were not declared virtual and which were not declared `extern
...@@ -3144,8 +3150,7 @@ finish_file () ...@@ -3144,8 +3150,7 @@ finish_file ()
if (DECL_ARTIFICIAL (decl) && ! DECL_INITIAL (decl)) if (DECL_ARTIFICIAL (decl) && ! DECL_INITIAL (decl))
{ {
if (TREE_USED (decl) if (TREE_USED (decl))
|| (TREE_PUBLIC (decl) && DECL_NOT_REALLY_EXTERN (decl)))
{ {
synthesize_method (decl); synthesize_method (decl);
if (TREE_ASM_WRITTEN (decl)) if (TREE_ASM_WRITTEN (decl))
......
...@@ -54,6 +54,7 @@ extern int errno; ...@@ -54,6 +54,7 @@ extern int errno;
extern int end_of_file; extern int end_of_file;
extern int current_class_depth; extern int current_class_depth;
extern int flag_new_for_scope;
void yyerror (); void yyerror ();
...@@ -3225,8 +3226,7 @@ simple_stmt: ...@@ -3225,8 +3226,7 @@ simple_stmt:
clear_momentary (); clear_momentary ();
finish_stmt (); } finish_stmt (); }
| FOR | FOR
{ extern int flag_new_for_scope; { emit_line_note (input_filename, lineno);
emit_line_note (input_filename, lineno);
if (flag_new_for_scope) if (flag_new_for_scope)
{ {
/* Conditionalize .pushlevel */ /* Conditionalize .pushlevel */
......
...@@ -1363,7 +1363,7 @@ default_conversion (exp) ...@@ -1363,7 +1363,7 @@ default_conversion (exp)
if (TREE_CODE (exp) == CONST_DECL) if (TREE_CODE (exp) == CONST_DECL)
exp = DECL_INITIAL (exp); exp = DECL_INITIAL (exp);
/* Replace a nonvolatile const static variable with its value. */ /* Replace a nonvolatile const static variable with its value. */
else if (TREE_READONLY_DECL_P (exp) && DECL_MODE (exp) != BLKmode) else if (TREE_READONLY_DECL_P (exp))
{ {
exp = decl_constant_value (exp); exp = decl_constant_value (exp);
type = TREE_TYPE (exp); type = TREE_TYPE (exp);
...@@ -2373,6 +2373,13 @@ build_function_call_real (function, params, require_complete, flags) ...@@ -2373,6 +2373,13 @@ build_function_call_real (function, params, require_complete, flags)
if (DECL_INLINE (function)) if (DECL_INLINE (function))
{ {
/* Is it a synthesized method that needs to be synthesized? */
if (DECL_ARTIFICIAL (function) && ! flag_no_inline
&& ! DECL_INITIAL (function)
/* Kludge: don't synthesize for default args. */
&& current_function_decl)
synthesize_method (function);
fntype = build_type_variant (TREE_TYPE (function), fntype = build_type_variant (TREE_TYPE (function),
TREE_READONLY (function), TREE_READONLY (function),
TREE_THIS_VOLATILE (function)); TREE_THIS_VOLATILE (function));
......
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