diff options
author | Jason Merrill <jason@phydeaux.cygnus.com> | 1995-05-11 21:36:16 +0000 |
---|---|---|
committer | Mike Stump <mrs@gcc.gnu.org> | 1995-05-11 21:36:16 +0000 |
commit | fd378c9ddf0580248f4380419114208b5f2b4eab (patch) | |
tree | a761b29cb12350638670b79f0323f029220952d1 /gcc | |
parent | 0982a4b872aa0f8c0d3ec8f8cf66aeaf0be97380 (diff) | |
download | gcc-fd378c9ddf0580248f4380419114208b5f2b4eab.zip gcc-fd378c9ddf0580248f4380419114208b5f2b4eab.tar.gz gcc-fd378c9ddf0580248f4380419114208b5f2b4eab.tar.bz2 |
70th Cygnus<->FSF merge
From-SVN: r9624
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 16 | ||||
-rw-r--r-- | gcc/cp/decl.c | 2 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 11 | ||||
-rw-r--r-- | gcc/cp/parse.y | 4 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 9 |
5 files changed, 36 insertions, 6 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 93af15d..f5f47c6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,19 @@ +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> * decl2.c: Add flag_new_for_scope for new -ffor-scope flag. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 2471c15..dc78309 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -10716,6 +10716,8 @@ start_function (declspecs, declarator, raises, pre_parsed_p) current_function_returns_value = 0; current_function_returns_null = 0; warn_about_return_type = 0; + named_labels = 0; + shadowed_labels = 0; current_function_assigns_this = 0; current_function_just_assigned_this = 0; current_function_parms_stored = 0; diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 5909f87..cb326c8 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -3112,7 +3112,13 @@ finish_file () walk_sigtables ((void (*)())0, finish_sigtable_vardecl); 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 which were not declared virtual and which were not declared `extern @@ -3144,8 +3150,7 @@ finish_file () if (DECL_ARTIFICIAL (decl) && ! DECL_INITIAL (decl)) { - if (TREE_USED (decl) - || (TREE_PUBLIC (decl) && DECL_NOT_REALLY_EXTERN (decl))) + if (TREE_USED (decl)) { synthesize_method (decl); if (TREE_ASM_WRITTEN (decl)) diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y index b66c32a..7b5fae4 100644 --- a/gcc/cp/parse.y +++ b/gcc/cp/parse.y @@ -54,6 +54,7 @@ extern int errno; extern int end_of_file; extern int current_class_depth; +extern int flag_new_for_scope; void yyerror (); @@ -3225,8 +3226,7 @@ simple_stmt: clear_momentary (); finish_stmt (); } | FOR - { extern int flag_new_for_scope; - emit_line_note (input_filename, lineno); + { emit_line_note (input_filename, lineno); if (flag_new_for_scope) { /* Conditionalize .pushlevel */ diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 0bede44..2927c32 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -1363,7 +1363,7 @@ default_conversion (exp) if (TREE_CODE (exp) == CONST_DECL) exp = DECL_INITIAL (exp); /* 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); type = TREE_TYPE (exp); @@ -2373,6 +2373,13 @@ build_function_call_real (function, params, require_complete, flags) 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), TREE_READONLY (function), TREE_THIS_VOLATILE (function)); |