From 058e32b336f75d77847ecdd938cb30ff493b9018 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Thu, 23 Dec 2004 21:55:12 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 4 ++++ gcc/gimplify.c | 5 +++-- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/g++.dg/opt/temp1.C | 4 ++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9f8e174b30d..c84ae79e586 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2004-12-23 Mark Mitchell + + * gimplify.c (gimplify_modify_expr_rhs): Use types_compatible_p. + 2004-12-23 DJ Delorie * genrecog.c (did_you_mean_codes): New. diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 0f610e4d242..9bf4c4ec6a9 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 518cf3dea6a..e3e6ae7033c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2004-12-23 Mark Mitchell + + * g++.dg/opt/temp1.C: Make memcpy actually copy bytes. + 2004-12-23 Alexandre Oliva * 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 6454cdb5035..05dd2697171 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; } -- 2.30.2