aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@phydeaux.cygnus.com>1995-05-11 21:36:16 +0000
committerMike Stump <mrs@gcc.gnu.org>1995-05-11 21:36:16 +0000
commitfd378c9ddf0580248f4380419114208b5f2b4eab (patch)
treea761b29cb12350638670b79f0323f029220952d1
parent0982a4b872aa0f8c0d3ec8f8cf66aeaf0be97380 (diff)
downloadgcc-fd378c9ddf0580248f4380419114208b5f2b4eab.zip
gcc-fd378c9ddf0580248f4380419114208b5f2b4eab.tar.gz
gcc-fd378c9ddf0580248f4380419114208b5f2b4eab.tar.bz2
70th Cygnus<->FSF merge
From-SVN: r9624
-rw-r--r--gcc/cp/ChangeLog16
-rw-r--r--gcc/cp/decl.c2
-rw-r--r--gcc/cp/decl2.c11
-rw-r--r--gcc/cp/parse.y4
-rw-r--r--gcc/cp/typeck.c9
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));