From: Danny Smith Date: Sat, 26 Jan 2008 09:31:30 +0000 (+0000) Subject: re PR target/34970 (name mangling broken for __attributte__((fastcall))) X-Git-Tag: releases/gcc-4.3.0~390 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=763a27ee730f23883d6ab6feacb9b22992a8d16c;p=thirdparty%2Fgcc.git re PR target/34970 (name mangling broken for __attributte__((fastcall))) PR target/34970 gcc * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define. testsuite * gcc.target/i386/fastcall-1.c: Scan for correct label. Use -std=gnu89 switch. From-SVN: r131859 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 32c53ea9a5c0..d05641da28a9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-01-26 Danny Smith + + PR target/34970 + * config/i386/cygming.h (ASM_OUTPUT_LABELREF): Define. + 2008-01-25 Joseph Myers PR other/31955 diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h index ee2631b2fb09..3b18af5ba0f0 100644 --- a/gcc/config/i386/cygming.h +++ b/gcc/config/i386/cygming.h @@ -1,7 +1,7 @@ /* Operating system specific defines to be used when targeting GCC for hosting on Windows32, using a Unix style C library and tools. Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2007 + 2004, 2005, 2007, 2008 Free Software Foundation, Inc. This file is part of GCC. @@ -197,6 +197,17 @@ do { \ ASM_OUTPUT_LABEL ((STREAM), (NAME)); \ } while (0) +/* Output a reference to a label. Fastcall function symbols + keep their '@' prefix, while other symbols are prefixed + with USER_LABEL_PREFIX. */ +#undef ASM_OUTPUT_LABELREF +#define ASM_OUTPUT_LABELREF(STREAM, NAME) \ +do { \ + if ((NAME)[0] != FASTCALL_PREFIX) \ + fputs (USER_LABEL_PREFIX, (STREAM)); \ + fputs ((NAME), (STREAM)); \ +} while (0) + /* Emit code to check the stack when allocating more than 4000 bytes in one go. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4bb6a972d417..a09d87711c66 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2008-01-26 Danny Smith + + PR target/34970 + * gcc.target/i386/fastcall-1.c: Scan for correct label. + Use -std=gnu89 switch. + 2008-01-25 Jerry DeLisle PR libfortran/34876 diff --git a/gcc/testsuite/gcc.target/i386/fastcall-1.c b/gcc/testsuite/gcc.target/i386/fastcall-1.c index ba1d6673313b..9d701239169f 100644 --- a/gcc/testsuite/gcc.target/i386/fastcall-1.c +++ b/gcc/testsuite/gcc.target/i386/fastcall-1.c @@ -1,4 +1,5 @@ /* { dg-do compile { target i?86-*-mingw32* i?86-*-cygwin* } } */ +/* { dg-options "-std=gnu89" } */ void __attribute__ ((fastcall)) @@ -15,3 +16,6 @@ f3() { } void __attribute__ ((fastcall)) f4(int x, int y, int z) { } + +/* Scan for global label with correct prefix and suffix. */ +/* { dg-final { scan-assembler "\.globl\[ \t\]@f4@12" } } */