From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27768 invoked by alias); 21 Sep 2006 18:49:10 -0000 Received: (qmail 27524 invoked by uid 48); 21 Sep 2006 18:49:00 -0000 Date: Thu, 21 Sep 2006 18:49:00 -0000 Message-ID: <20060921184900.27523.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug middle-end/29171] forgotten memcpy with -ffreestanding -fwhole-program --combine In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "acahalan at gmail dot com" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2006-09/txt/msg02092.txt.bz2 List-Id: ------- Comment #3 from acahalan at gmail dot com 2006-09-21 18:49 ------- foo 0 $ cat foo.c void *memcpy(void *restrict, const void *restrict, unsigned long); void *memcpy(void *restrict dst, const void *restrict src, unsigned long n) { const char *p = src; char *q = dst; while (n--) { *q++ = *p++; } return dst; } typedef struct S { int a[42]; }S; void __attribute__((used,unused)) _fini(void) { S *s1; S *s2; __asm__ __volatile__("":"=r"(s1)::"memory"); __asm__ __volatile__("":"=r"(s2)::"memory"); *s1 = *s2; __asm__ __volatile__(""::"r"(s1):"memory"); __asm__ __volatile__(""::"r"(s2):"memory"); } foo 0 $ make gcc -m32 -std=gnu99 -nostdinc -fPIC -Os -fvisibility=hidden -W -Wall -g3 -ffreestanding -fwhole-program --combine -c foo.c -o bigblob.pic rm -f tmp.so testcase.so.1.0.1 gcc -m32 -shared -nostartfiles -nodefaultlibs -nostdlib -o tmp.so bigblob.pic if nm tmp.so | grep -i --color=auto '.* u .*' ; then false ; else true ; fi U memcpy make: *** [testcase.so.1.0.1] Error 1 foo 2 $ -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29171