aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMike Stump <mrs@gcc.gnu.org>1994-12-20 22:14:37 +0000
committerMike Stump <mrs@gcc.gnu.org>1994-12-20 22:14:37 +0000
commit5edb8b93cb7f3fcede08684ac9b525f82e0b824d (patch)
treeb7f815a9bbe06581882e28dc484ac80deaa41417 /gcc
parentbd8b57b05a29c3cc0428b7285b04c163b3cc16de (diff)
downloadgcc-5edb8b93cb7f3fcede08684ac9b525f82e0b824d.zip
gcc-5edb8b93cb7f3fcede08684ac9b525f82e0b824d.tar.gz
gcc-5edb8b93cb7f3fcede08684ac9b525f82e0b824d.tar.bz2
51st Cygnus<->FSF merge
From-SVN: r8676
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog13
-rw-r--r--gcc/cp/Make-lang.in3
-rw-r--r--gcc/cp/decl2.c12
-rw-r--r--gcc/cp/method.c5
4 files changed, 32 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 8fa9479..44511fc 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,16 @@
+Mon Dec 19 22:40:53 1994 Mike Stump <mrs@cygnus.com>
+
+ * decl2.c (check_classfn): Don't use decls_match yet, as it modifies
+ static functions to early.
+
+Thu Dec 19 22:37:48 1994 Mike Stump <mrs@cygnus.com>
+
+ * method.c (make_thunk): Handle encoding of positive thunk offsets.
+
+Sat Dec 17 13:29:50 1994 Doug Evans <dje@canuck.cygnus.com>
+
+ * Make-lang.in (.PHONY): Tell GNU make C++ and c++ are phony targets.
+
Thu Dec 15 16:32:12 1994 Mike Stump <mrs@cygnus.com>
* decl2.c (check_classfn): Use decls_match to check if this has
diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in
index 8442d23..d8bf23b 100644
--- a/gcc/cp/Make-lang.in
+++ b/gcc/cp/Make-lang.in
@@ -56,6 +56,9 @@ GXX_CROSS_NAME = `t='$(program_transform_cross_name)'; echo g++ | sed $$t`
# to do the right thing within all.cross.
C++ c++: cc1plus
+# Tell GNU make to ignore these if they exist.
+.PHONY: C++ c++
+
# Create the compiler driver for g++.
g++: $(srcdir)/cp/g++.c $(CONFIG_H) $(LIBDEPS)
$(CC) $(ALL_CFLAGS) $(INCLUDES) $(LDFLAGS) -o g++ $(srcdir)/cp/g++.c $(LIBS)
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 5e06572..af7d7d7 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -1147,10 +1147,22 @@ check_classfn (ctype, cname, function)
{
if (DECL_ASSEMBLER_NAME (function) == DECL_ASSEMBLER_NAME (fndecl))
return;
+#if 0
+ /* This should work, but causes libg++ to fail
+ make check-tFix. */
/* We have to do more extensive argument checking here, as
the name may have been changed by asm("new_name"). */
if (decls_match (function, fndecl))
return;
+#else
+ if (DECL_NAME (function) == DECL_NAME (fndecl)
+ && comptypes (TREE_TYPE (TREE_TYPE (function)),
+ TREE_TYPE (TREE_TYPE (fndecl)), 1)
+ && compparms (TYPE_ARG_TYPES (TREE_TYPE (function)),
+ TYPE_ARG_TYPES (TREE_TYPE (fndecl)),
+ 3))
+ return;
+#endif
fndecl = DECL_CHAIN (fndecl);
}
break; /* loser */
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index 90dd4df..da2a782 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -1749,7 +1749,10 @@ make_thunk (function, delta)
if (TREE_CODE (func_decl) != FUNCTION_DECL)
abort ();
func_name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (func_decl));
- sprintf (buffer, "__thunk_%d_%s", -delta, func_name);
+ if (delta<=0)
+ sprintf (buffer, "__thunk_%d_%s", -delta, func_name);
+ else
+ sprintf (buffer, "__thunk_n%d_%s", delta, func_name);
thunk_id = get_identifier (buffer);
thunk = IDENTIFIER_GLOBAL_VALUE (thunk_id);
if (thunk && TREE_CODE (thunk) != THUNK_DECL)