aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2004-12-23 21:55:12 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2004-12-23 21:55:12 +0000
commit058e32b336f75d77847ecdd938cb30ff493b9018 (patch)
treefe6597866e3145314348d9f88fb30b8bdf3054fb
parent05f5e885564e730c6700bb57abfd75ce734b7e1b (diff)
downloadgcc-058e32b336f75d77847ecdd938cb30ff493b9018.zip
gcc-058e32b336f75d77847ecdd938cb30ff493b9018.tar.gz
gcc-058e32b336f75d77847ecdd938cb30ff493b9018.tar.bz2
gimplify.c (gimplify_modify_expr_rhs): Use types_compatible_p.
* gimplify.c (gimplify_modify_expr_rhs): Use types_compatible_p. * g++.dg/opt/temp1.C: Make memcpy actually copy bytes. From-SVN: r92571
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/gimplify.c5
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/opt/temp1.C4
4 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9f8e174..c84ae79 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2004-12-23 Mark Mitchell <mark@codesourcery.com>
+
+ * gimplify.c (gimplify_modify_expr_rhs): Use types_compatible_p.
+
2004-12-23 DJ Delorie <dj@redhat.com>
* genrecog.c (did_you_mean_codes): New.
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 0f610e4..9bf4c4e 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -2817,8 +2817,9 @@ gimplify_modify_expr_rhs (tree *expr_p, tree *from_p, tree *to_p, tree *pre_p,
pointer = TREE_OPERAND (*from_p, 0);
STRIP_NOPS (pointer);
if (TREE_CODE (pointer) == ADDR_EXPR
- && (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_OPERAND (pointer, 0)))
- == TYPE_MAIN_VARIANT (TREE_TYPE (*from_p))))
+ && (lang_hooks.types_compatible_p
+ (TREE_TYPE (TREE_OPERAND (pointer, 0)),
+ TREE_TYPE (*from_p))))
{
*from_p = TREE_OPERAND (pointer, 0);
ret = GS_OK;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 518cf3d..e3e6ae7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2004-12-23 Mark Mitchell <mark@codesourcery.com>
+
+ * g++.dg/opt/temp1.C: Make memcpy actually copy bytes.
+
2004-12-23 Alexandre Oliva <aoliva@redhat.com>
* gcc.dg/empty2.c: Add missing dg-warning.
diff --git a/gcc/testsuite/g++.dg/opt/temp1.C b/gcc/testsuite/g++.dg/opt/temp1.C
index 6454cdb..05dd269 100644
--- a/gcc/testsuite/g++.dg/opt/temp1.C
+++ b/gcc/testsuite/g++.dg/opt/temp1.C
@@ -15,6 +15,10 @@ int i;
extern "C"
void *memcpy (void *dest, const void *src, __SIZE_TYPE__ n)
{
+ char *d = (char *) dest;
+ const char *s = (const char *) src;
+ while (n--)
+ d[n] = s[n];
++i;
}