aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin v. Löwis <loewis@informatik.hu-berlin.de>2000-03-17 09:11:17 +0000
committerMartin v. Löwis <loewis@gcc.gnu.org>2000-03-17 09:11:17 +0000
commit91d024d568448e334ecc60b0c55a30b7c3ead9e4 (patch)
treea18b85b8268fd7d336f378776d0453c2bf1571ad
parent9dd8851b96d1f7a9035882874953f3dfe54aa8e0 (diff)
downloadgcc-91d024d568448e334ecc60b0c55a30b7c3ead9e4.zip
gcc-91d024d568448e334ecc60b0c55a30b7c3ead9e4.tar.gz
gcc-91d024d568448e334ecc60b0c55a30b7c3ead9e4.tar.bz2
call.c (special_function_p): It is only malloc if it returns Pmode.
* call.c (special_function_p): It is only malloc if it returns Pmode. From-SVN: r32604
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/calls.c7
2 files changed, 9 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7f1fc13..09dffc1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-03-17 Martin v. Löwis <loewis@informatik.hu-berlin.de>
+
+ * call.c (special_function_p): It is only malloc if it returns
+ Pmode.
+
2000-03-17 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
* config/c4x/c4x.h (ASM_SPEC, CPP_SPEC, LINK_SPEC): Support C33.
diff --git a/gcc/calls.c b/gcc/calls.c
index 7ae7b3d..6a4c148 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -645,9 +645,10 @@ special_function_p (fndecl, returns_twice, is_longjmp, fork_or_exec,
C++ operator new is not suitable because it is not required
to return a unique pointer; indeed, the standard placement new
just returns its argument. */
- else if (! strcmp (tname, "malloc")
- || ! strcmp (tname, "calloc")
- || ! strcmp (tname, "strdup"))
+ else if (TYPE_MODE (TREE_TYPE (TREE_TYPE (fndecl))) == Pmode
+ && (! strcmp (tname, "malloc")
+ || ! strcmp (tname, "calloc")
+ || ! strcmp (tname, "strdup")))
*is_malloc = 1;
}
}