aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJohn Carr <jfc@mit.edu>1998-04-29 12:41:21 +0000
committerJohn Carr <jfc@gcc.gnu.org>1998-04-29 12:41:21 +0000
commitbf5f0e909897688eec9f4f70eb88a805764675f1 (patch)
treedd1905278f46f2c7d59d423d9eab086e1c6e679b /gcc
parenta0281dae2f5b4def60e1f880d0046e581539bf29 (diff)
downloadgcc-bf5f0e909897688eec9f4f70eb88a805764675f1.zip
gcc-bf5f0e909897688eec9f4f70eb88a805764675f1.tar.gz
gcc-bf5f0e909897688eec9f4f70eb88a805764675f1.tar.bz2
calls.c (expand_call): Fix recognition of C++ operator new.
* calls.c (expand_call): Fix recognition of C++ operator new. * alias.c (mode_alias_check): Disable type based alias detection. From-SVN: r19492
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/alias.c6
-rw-r--r--gcc/calls.c8
3 files changed, 18 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4cb493c..341de00 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Wed Apr 29 15:34:40 1998 John Carr <jfc@mit.edu>
+
+ * calls.c (expand_call): Fix recognition of C++ operator new.
+
+ * alias.c (mode_alias_check): Disable type based alias detection.
+
Wed Apr 29 15:06:42 1998 Gavin Koch <gavin@cygnus.com>
* config/mips/elf.h (ASM_OUTPUT_DEF,ASM_WEAKEN_LABEL,
diff --git a/gcc/alias.c b/gcc/alias.c
index a9024b8..148b452 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -859,6 +859,11 @@ mode_alias_check (x, y, varies)
register rtx x, y;
int (*varies) PROTO ((rtx));
{
+#if 1
+ /* gcc rules: all type aliasing allowed */
+ return 1;
+#else
+ /* ANSI C rules: different types do not alias. */
enum machine_mode x_mode = GET_MODE (x), y_mode = GET_MODE (y);
rtx x_addr = XEXP (x, 0), y_addr = XEXP (y, 0);
int x_varies, y_varies, x_struct, y_struct;
@@ -903,6 +908,7 @@ mode_alias_check (x, y, varies)
/* Both are varying structs or fixed scalars. Check that they are not
the same type. */
return (x_struct == y_struct);
+#endif
}
/* Read dependence: X is read after read in MEM takes place. There can
diff --git a/gcc/calls.c b/gcc/calls.c
index 5c34913..51fa73b 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -901,8 +901,12 @@ expand_call (exp, target, ignore)
else if (! strcmp (tname, "malloc")
|| ! strcmp (tname, "calloc")
|| ! strcmp (tname, "realloc")
- || ! strcmp (tname, "__builtin_new")
- || ! strcmp (tname, "__builtin_vec_new"))
+ /* Note use of NAME rather than TNAME here. These functions
+ are only reserved when preceded with __. */
+ || ! strcmp (name, "__vn") /* mangled __builtin_vec_new */
+ || ! strcmp (name, "__nw") /* mangled __builtin_new */
+ || ! strcmp (name, "__builtin_new")
+ || ! strcmp (name, "__builtin_vec_new"))
is_malloc = 1;
}