Ping: RFA: Testsuite fixes (3/3): USER_LABEL_PREFIX
diff mbox

Message ID 20110925083739.73ok1i1rdwo488gg-nzlynne@webmail.spamcop.net
State New
Headers show

Commit Message

Joern Rennecke Sept. 25, 2011, 12:37 p.m. UTC
This patch has not been reviewed for eight weeks.

----- Forwarded message from amylaar@spamcop.net -----
     Date: Mon, 01 Aug 2011 01:01:30 -0400
     From: Joern Rennecke <amylaar@spamcop.net>
Reply-To: Joern Rennecke <amylaar@spamcop.net>
  Subject: RFA: Testsuite fixes (3/3): USER_LABEL_PREFIX
       To: gcc-patches@gcc.gnu.org

We have some new tests that use assembler names without regard to
USER_LABEL_PREFIX.  These tests fail for targets with non-empty
USER_LABEL_PREFIX during the assembly phase.

Fixed by using ASMNAME macro like in e.g. gcc.dg/alias-7.c .

Regression tested with x86_64-unknown-linux-gnu X sh-elf .
This fixes 15 spurious FAILures, giving 27 more expected PASSes.


----- End forwarded message -----
2011-07-26  Joern Rennecke <joern.rennecke@embecosm.com>

	* gcc.dg/pr47276.c (ASMNAME, ASMNAME2, STRING): Define.
	(__EI___vsyslog_chk, __EI_syslog, __EI_vsyslog): Use ASMNAME.  
	(syslog, vsyslog, __vsyslog_chk): Likewise.

	* gcc.dg/lto/20081222_1.c (ASMNAME, ASMNAME2, STRING): Define.
	(x, EXT_x): Use ASMNAME.

	* gcc.dg/torture/pr48044.c (ASMNAME, ASMNAME2, STRING): Define.
	(a, c): Use ASMNAME.

Comments

Richard Biener Sept. 25, 2011, 5:06 p.m. UTC | #1
On Sun, Sep 25, 2011 at 2:37 PM, Joern Rennecke <amylaar@spamcop.net> wrote:
> This patch has not been reviewed for eight weeks.
>
> ----- Forwarded message from amylaar@spamcop.net -----
>    Date: Mon, 01 Aug 2011 01:01:30 -0400
>    From: Joern Rennecke <amylaar@spamcop.net>
> Reply-To: Joern Rennecke <amylaar@spamcop.net>
>  Subject: RFA: Testsuite fixes (3/3): USER_LABEL_PREFIX
>      To: gcc-patches@gcc.gnu.org
>
> We have some new tests that use assembler names without regard to
> USER_LABEL_PREFIX.  These tests fail for targets with non-empty
> USER_LABEL_PREFIX during the assembly phase.
>
> Fixed by using ASMNAME macro like in e.g. gcc.dg/alias-7.c .
>
> Regression tested with x86_64-unknown-linux-gnu X sh-elf .
> This fixes 15 spurious FAILures, giving 27 more expected PASSes.

Ok.

Thanks,
Richard.

>
> ----- End forwarded message -----
>
>
> 2011-07-26  Joern Rennecke <joern.rennecke@embecosm.com>
>
>        * gcc.dg/pr47276.c (ASMNAME, ASMNAME2, STRING): Define.
>        (__EI___vsyslog_chk, __EI_syslog, __EI_vsyslog): Use ASMNAME.
>        (syslog, vsyslog, __vsyslog_chk): Likewise.
>
>        * gcc.dg/lto/20081222_1.c (ASMNAME, ASMNAME2, STRING): Define.
>        (x, EXT_x): Use ASMNAME.
>
>        * gcc.dg/torture/pr48044.c (ASMNAME, ASMNAME2, STRING): Define.
>        (a, c): Use ASMNAME.
>
> Index: gcc.dg/lto/20081222_1.c
> ===================================================================
> --- gcc.dg/lto/20081222_1.c     (.../GNU/fsf-gcc/trunk/gcc/testsuite)
> (revision 2013)
> +++ gcc.dg/lto/20081222_1.c
> (.../Customer-Projects/X/branches/Y-20110628/toolchain/gcc-4.7.0-20110701/gcc/testsuite)
>        (revision 2013)
> @@ -1,8 +1,12 @@
>  #include "20081222_0.h"
>
> +#define ASMNAME(cname)  ASMNAME2 (__USER_LABEL_PREFIX__, cname)
> +#define ASMNAME2(prefix, cname) STRING (prefix) cname
> +#define STRING(x)    #x
> +
>  /* Actually, call "x" "INT_X", and make it hidden.  */
>  extern __typeof (x) x
> -       __asm__ ("INT_x")
> +       __asm__ (ASMNAME ("INT_x"))
>        __attribute__ ((__visibility__ ("hidden")));
>
>  int x ()
> @@ -12,5 +16,5 @@ int x ()
>
>  /* Make an externally-visible symbol "X" that's an alias for INT_x.  */
>  extern __typeof (x) EXT_x
> -       __asm__ ("x")
> +       __asm__ (ASMNAME ("x"))
>        __attribute__ ((__alias__ ("INT_x")));
> Index: gcc.dg/torture/pr48044.c
> ===================================================================
> --- gcc.dg/torture/pr48044.c    (.../GNU/fsf-gcc/trunk/gcc/testsuite)
> (revision 2013)
> +++ gcc.dg/torture/pr48044.c
>  (.../Customer-Projects/X/branches/Y-20110628/toolchain/gcc-4.7.0-20110701/gcc/testsuite)
>        (revision 2013)
> @@ -2,6 +2,10 @@
>  /* { dg-do compile } */
>  /* { dg-require-alias "" } */
>
> -int a __asm__ ("b") = 0;
> -extern int c __asm__ ("a") __attribute__ ((alias ("b")));
> +#define ASMNAME(cname)  ASMNAME2 (__USER_LABEL_PREFIX__, cname)
> +#define ASMNAME2(prefix, cname) STRING (prefix) cname
> +#define STRING(x)    #x
> +
> +int a __asm__ (ASMNAME ("b")) = 0;
> +extern int c __asm__ (ASMNAME ("a")) __attribute__ ((alias ("b")));
>  extern int d __attribute__ ((weak, alias ("a")));
> Index: gcc.dg/pr47276.c
> ===================================================================
> --- gcc.dg/pr47276.c    (.../GNU/fsf-gcc/trunk/gcc/testsuite)   (revision
> 2013)
> +++ gcc.dg/pr47276.c
>  (.../Customer-Projects/X/branches/Y-20110628/toolchain/gcc-4.7.0-20110701/gcc/testsuite)
>        (revision 2013)
> @@ -1,6 +1,11 @@
>  /* { dg-do compile } */
>  /* { dg-require-alias "" } */
>  /* { dg-require-visibility "" } */
> +
> +#define ASMNAME(cname)  ASMNAME2 (__USER_LABEL_PREFIX__, cname)
> +#define ASMNAME2(prefix, cname) STRING (prefix) cname
> +#define STRING(x)    #x
> +
>  extern void syslog (int __pri, __const char *__fmt, ...)
>      __attribute__ ((__format__ (__printf__, 2, 3)));
>  extern void vsyslog (int __pri, __const char *__fmt, int __ap)
> @@ -17,15 +22,15 @@ __syslog_chk(int pri, int flag, const ch
>  __vsyslog_chk(int pri, int flag, const char *fmt, int ap)
>  {
>  }
> -extern __typeof (__vsyslog_chk) __EI___vsyslog_chk __asm__(""
> "__vsyslog_chk"); extern __typeof (__vsyslog_chk) __EI___vsyslog_chk
> __attribute__((alias ("" "__GI___vsyslog_chk")));
> +extern __typeof (__vsyslog_chk) __EI___vsyslog_chk __asm__("" ASMNAME
> ("__vsyslog_chk")); extern __typeof (__vsyslog_chk) __EI___vsyslog_chk
> __attribute__((alias ("" "__GI___vsyslog_chk")));
>  void
>  __syslog(int pri, const char *fmt, ...)
>  {
>  }
>  extern __typeof (__syslog) syslog __attribute__ ((alias ("__syslog")));
> -extern __typeof (syslog) __EI_syslog __asm__("" "syslog"); extern __typeof
> (syslog) __EI_syslog __attribute__((alias ("" "__GI_syslog")));
> +extern __typeof (syslog) __EI_syslog __asm__("" ASMNAME ("syslog")); extern
> __typeof (syslog) __EI_syslog __attribute__((alias ("" "__GI_syslog")));
>  extern __typeof (__vsyslog) vsyslog __attribute__ ((alias ("__vsyslog")));
> -extern __typeof (vsyslog) __EI_vsyslog __asm__("" "vsyslog"); extern
> __typeof (vsyslog) __EI_vsyslog __attribute__((alias ("" "__GI_vsyslog")));
> -extern __typeof (syslog) syslog __asm__ ("" "__GI_syslog") __attribute__
> ((visibility ("hidden")));
> -extern __typeof (vsyslog) vsyslog __asm__ ("" "__GI_vsyslog") __attribute__
> ((visibility ("hidden")));
> -extern __typeof (__vsyslog_chk) __vsyslog_chk __asm__ (""
> "__GI___vsyslog_chk") __attribute__ ((visibility ("hidden")));
> +extern __typeof (vsyslog) __EI_vsyslog __asm__("" ASMNAME ("vsyslog"));
> extern __typeof (vsyslog) __EI_vsyslog __attribute__((alias (""
> "__GI_vsyslog")));
> +extern __typeof (syslog) syslog __asm__ ("" ASMNAME ("__GI_syslog"))
> __attribute__ ((visibility ("hidden")));
> +extern __typeof (vsyslog) vsyslog __asm__ ("" ASMNAME ("__GI_vsyslog"))
> __attribute__ ((visibility ("hidden")));
> +extern __typeof (__vsyslog_chk) __vsyslog_chk __asm__ ("" ASMNAME
> ("__GI___vsyslog_chk")) __attribute__ ((visibility ("hidden")));
>
>
Joseph Myers Sept. 25, 2011, 5:06 p.m. UTC | #2
On Sun, 25 Sep 2011, Joern Rennecke wrote:

> We have some new tests that use assembler names without regard to
> USER_LABEL_PREFIX.  These tests fail for targets with non-empty
> USER_LABEL_PREFIX during the assembly phase.
> 
> Fixed by using ASMNAME macro like in e.g. gcc.dg/alias-7.c .

OK in the absence of testsuite maintainer objections within 48 hours.

Patch
diff mbox

Index: gcc.dg/lto/20081222_1.c
===================================================================
--- gcc.dg/lto/20081222_1.c	(.../GNU/fsf-gcc/trunk/gcc/testsuite)	(revision 2013)
+++ gcc.dg/lto/20081222_1.c	(.../Customer-Projects/X/branches/Y-20110628/toolchain/gcc-4.7.0-20110701/gcc/testsuite)	(revision 2013)
@@ -1,8 +1,12 @@ 
 #include "20081222_0.h"
 
+#define ASMNAME(cname)  ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+#define ASMNAME2(prefix, cname) STRING (prefix) cname
+#define STRING(x)    #x
+
 /* Actually, call "x" "INT_X", and make it hidden.  */
 extern __typeof (x) x
-	__asm__ ("INT_x")
+	__asm__ (ASMNAME ("INT_x"))
 	__attribute__ ((__visibility__ ("hidden")));
 
 int x ()
@@ -12,5 +16,5 @@  int x ()
 
 /* Make an externally-visible symbol "X" that's an alias for INT_x.  */
 extern __typeof (x) EXT_x
-	__asm__ ("x")
+	__asm__ (ASMNAME ("x"))
 	__attribute__ ((__alias__ ("INT_x")));
Index: gcc.dg/torture/pr48044.c
===================================================================
--- gcc.dg/torture/pr48044.c	(.../GNU/fsf-gcc/trunk/gcc/testsuite)	(revision 2013)
+++ gcc.dg/torture/pr48044.c	(.../Customer-Projects/X/branches/Y-20110628/toolchain/gcc-4.7.0-20110701/gcc/testsuite)	(revision 2013)
@@ -2,6 +2,10 @@ 
 /* { dg-do compile } */
 /* { dg-require-alias "" } */
 
-int a __asm__ ("b") = 0;
-extern int c __asm__ ("a") __attribute__ ((alias ("b")));
+#define ASMNAME(cname)  ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+#define ASMNAME2(prefix, cname) STRING (prefix) cname
+#define STRING(x)    #x
+
+int a __asm__ (ASMNAME ("b")) = 0;
+extern int c __asm__ (ASMNAME ("a")) __attribute__ ((alias ("b")));
 extern int d __attribute__ ((weak, alias ("a")));
Index: gcc.dg/pr47276.c
===================================================================
--- gcc.dg/pr47276.c	(.../GNU/fsf-gcc/trunk/gcc/testsuite)	(revision 2013)
+++ gcc.dg/pr47276.c	(.../Customer-Projects/X/branches/Y-20110628/toolchain/gcc-4.7.0-20110701/gcc/testsuite)	(revision 2013)
@@ -1,6 +1,11 @@ 
 /* { dg-do compile } */
 /* { dg-require-alias "" } */
 /* { dg-require-visibility "" } */
+
+#define ASMNAME(cname)  ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+#define ASMNAME2(prefix, cname) STRING (prefix) cname
+#define STRING(x)    #x
+
 extern void syslog (int __pri, __const char *__fmt, ...)
      __attribute__ ((__format__ (__printf__, 2, 3)));
 extern void vsyslog (int __pri, __const char *__fmt, int __ap)
@@ -17,15 +22,15 @@  __syslog_chk(int pri, int flag, const ch
 __vsyslog_chk(int pri, int flag, const char *fmt, int ap)
 {
 }
-extern __typeof (__vsyslog_chk) __EI___vsyslog_chk __asm__("" "__vsyslog_chk"); extern __typeof (__vsyslog_chk) __EI___vsyslog_chk __attribute__((alias ("" "__GI___vsyslog_chk")));
+extern __typeof (__vsyslog_chk) __EI___vsyslog_chk __asm__("" ASMNAME ("__vsyslog_chk")); extern __typeof (__vsyslog_chk) __EI___vsyslog_chk __attribute__((alias ("" "__GI___vsyslog_chk")));
 void
 __syslog(int pri, const char *fmt, ...)
 {
 }
 extern __typeof (__syslog) syslog __attribute__ ((alias ("__syslog")));
-extern __typeof (syslog) __EI_syslog __asm__("" "syslog"); extern __typeof (syslog) __EI_syslog __attribute__((alias ("" "__GI_syslog")));
+extern __typeof (syslog) __EI_syslog __asm__("" ASMNAME ("syslog")); extern __typeof (syslog) __EI_syslog __attribute__((alias ("" "__GI_syslog")));
 extern __typeof (__vsyslog) vsyslog __attribute__ ((alias ("__vsyslog")));
-extern __typeof (vsyslog) __EI_vsyslog __asm__("" "vsyslog"); extern __typeof (vsyslog) __EI_vsyslog __attribute__((alias ("" "__GI_vsyslog")));
-extern __typeof (syslog) syslog __asm__ ("" "__GI_syslog") __attribute__ ((visibility ("hidden")));
-extern __typeof (vsyslog) vsyslog __asm__ ("" "__GI_vsyslog") __attribute__ ((visibility ("hidden")));
-extern __typeof (__vsyslog_chk) __vsyslog_chk __asm__ ("" "__GI___vsyslog_chk") __attribute__ ((visibility ("hidden")));
+extern __typeof (vsyslog) __EI_vsyslog __asm__("" ASMNAME ("vsyslog")); extern __typeof (vsyslog) __EI_vsyslog __attribute__((alias ("" "__GI_vsyslog")));
+extern __typeof (syslog) syslog __asm__ ("" ASMNAME ("__GI_syslog")) __attribute__ ((visibility ("hidden")));
+extern __typeof (vsyslog) vsyslog __asm__ ("" ASMNAME ("__GI_vsyslog")) __attribute__ ((visibility ("hidden")));
+extern __typeof (__vsyslog_chk) __vsyslog_chk __asm__ ("" ASMNAME ("__GI___vsyslog_chk")) __attribute__ ((visibility ("hidden")));