Re: RFA: darwin PATCH to fix build, internal visibility

2012-10-11 Thread Jason Merrill

OK, I've checked this in:
commit 2425dc8daa33d8b5d15c803c9bf2f51f5e1915a0
Author: Jason Merrill ja...@redhat.com
Date:   Tue Oct 9 21:16:52 2012 -0400

	* g++.dg/ext/visibility/pragma-override1.C: Fix target markup.
	* g++.dg/ext/visibility/pragma-override2.C: Fix target markup.

diff --git a/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C b/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C
index b813390..c13161d 100644
--- a/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C
+++ b/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C
@@ -1,7 +1,7 @@
 /* Test that #pragma GCC visibility does not override class member specific settings. */
 /* { dg-do compile } */
 /* { dg-require-visibility internal } */
-/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! *-*-solaris2* } { ! *-*-darwin* } } } }*/
+/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! { *-*-solaris2* *-*-darwin* } } } } } */
 /* { dg-final { scan-assembler \\.(internal|hidden).*Foo.methodEv { target *-*-solaris2* } } } */
 
 #pragma GCC visibility push(hidden)
diff --git a/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C b/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C
index 3ceaf4a..25e9cea 100644
--- a/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C
+++ b/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C
@@ -1,7 +1,7 @@
 /* Test that #pragma GCC visibility does not override class member specific settings. */
 /* { dg-do compile } */
 /* { dg-require-visibility internal } */
-/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! *-*-solaris2* } { ! *-*-darwin* } } } } */
+/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! { *-*-solaris2* *-*-darwin* } } } } } */
 /* { dg-final { scan-assembler \\.(internal|hidden).*Foo.methodEv { target *-*-solaris2* } } } */
 
 #pragma GCC visibility push(hidden)


Re: RFA: darwin PATCH to fix build, internal visibility

2012-10-09 Thread Dominique Dhumieres
  These tests are still failing on darwin. I think tha
  target { ! *-*-solaris2* } { ! *-*-darwin* }
  sould be replaced with
  target { ! { *-*-solaris2* *-*-darwin* } }

 Could someone with a darwin box handy make the appropriate change?

I have never really understood the logic of the target syntax,
so IMO the problem with the proposed change is not with darwin,
but with other platforms I don't have access to.

Indeed I have checked on x86_64-apple-darwin10 and powerpc-apple-darwin9
that the failures go away with the following patch:

diff -up ../_clean/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C 
gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C
--- ../_clean/gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C
2012-10-04 19:50:52.0 +0200
+++ gcc/testsuite/g++.dg/ext/visibility/pragma-override1.C  2012-10-08 
10:29:40.0 +0200
@@ -1,7 +1,7 @@
 /* Test that #pragma GCC visibility does not override class member specific 
settings. */
 /* { dg-do compile } */
 /* { dg-require-visibility internal } */
-/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! 
*-*-solaris2* } { ! *-*-darwin* } } } }*/
+/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! { 
*-*-solaris2* *-*-darwin* } } } } }*/
 /* { dg-final { scan-assembler \\.(internal|hidden).*Foo.methodEv { target 
*-*-solaris2* } } } */
 
 #pragma GCC visibility push(hidden)
diff -up ../_clean/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C 
gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C
--- ../_clean/gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C
2012-10-04 19:50:52.0 +0200
+++ gcc/testsuite/g++.dg/ext/visibility/pragma-override2.C  2012-10-08 
10:30:32.0 +0200
@@ -1,7 +1,7 @@
 /* Test that #pragma GCC visibility does not override class member specific 
settings. */
 /* { dg-do compile } */
 /* { dg-require-visibility internal } */
-/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! 
*-*-solaris2* } { ! *-*-darwin* } } } } */
+/* { dg-final { scan-assembler \\.internal.*Foo.methodEv { target { ! { 
*-*-solaris2* *-*-darwin* } } } } } */
 /* { dg-final { scan-assembler \\.(internal|hidden).*Foo.methodEv { target 
*-*-solaris2* } } } */
 
 #pragma GCC visibility push(hidden)

Dominique


Re: RFA: darwin PATCH to fix build, internal visibility

2012-10-09 Thread Mike Stump
On Oct 9, 2012, at 6:48 AM, Dominique Dhumieres domi...@lps.ens.fr wrote:
 These tests are still failing on darwin. I think tha
 target { ! *-*-solaris2* } { ! *-*-darwin* }
 sould be replaced with
 target { ! { *-*-solaris2* *-*-darwin* } }
 
 Could someone with a darwin box handy make the appropriate change?
 
 I have never really understood the logic of the target syntax,
 so IMO the problem with the proposed change is not with darwin,
 but with other platforms I don't have access to.

Ok.  I think it is pretty safe, if darwin works.


Re: RFA: darwin PATCH to fix build, internal visibility

2012-10-08 Thread Dominique Dhumieres
  It appears that the patch should also special case the scan-assembler 
  .internal.*Foo.methodEv
  tests in g++.dg/ext/visibility/pragma-override1.C and 
  g++.dg/ext/visibility/pragma-override2.C
  on darwin as well...

 Done, thanks.

Jason,

These tests are still failing on darwin. I think that
target { ! *-*-solaris2* } { ! *-*-darwin* }
sould be replaced with
target { ! { *-*-solaris2* *-*-darwin* } }

TIA

Dominique


Re: RFA: darwin PATCH to fix build, internal visibility

2012-10-08 Thread Jason Merrill

On 10/08/2012 08:28 AM, Dominique Dhumieres wrote:

These tests are still failing on darwin. I think that
target { ! *-*-solaris2* } { ! *-*-darwin* }
sould be replaced with
target { ! { *-*-solaris2* *-*-darwin* } }


Could someone with a darwin box handy make the appropriate change?

Thanks.

Jason




Re: RFA: darwin PATCH to fix build, internal visibility

2012-10-04 Thread Jack Howarth
On Wed, Oct 03, 2012 at 03:26:14PM -0700, Mike Stump wrote:
 On Oct 3, 2012, at 12:04 PM, Jason Merrill ja...@redhat.com wrote:
  This patch fixes a couple of Darwin issues I noticed with a cross-compiler:
  
  1) Adds a couple of consts to avoid const-correctness errors.
  2) Treats visibility internal like hidden rather than like default.  
  The documentation says that internal is hidden + processor-specific 
  semantics, so treating it as just hidden makes sense to me.
  
  OK for trunk?
 
 Ok.


FYI, the x86_64-apple-darwin12 testsuite results with the proposed patch are 
at...

http://gcc.gnu.org/ml/gcc-testresults/2012-10/msg00434.html

It appears that the patch should also special case the scan-assembler 
.internal.*Foo.methodEv
tests in g++.dg/ext/visibility/pragma-override1.C and 
g++.dg/ext/visibility/pragma-override2.C 
on darwin as well...

FAIL: g++.dg/ext/visibility/pragma-override1.C -std=c++98  scan-assembler 
.internal.*Foo.methodEv
FAIL: g++.dg/ext/visibility/pragma-override1.C -std=c++11  scan-assembler 
.internal.*Foo.methodEv
FAIL: g++.dg/ext/visibility/pragma-override2.C -std=c++98  scan-assembler 
.internal.*Foo.methodEv
FAIL: g++.dg/ext/visibility/pragma-override2.C -std=c++11  scan-assembler 
.internal.*Foo.methodEv

   Jack



RFA: darwin PATCH to fix build, internal visibility

2012-10-03 Thread Jason Merrill

This patch fixes a couple of Darwin issues I noticed with a cross-compiler:

1) Adds a couple of consts to avoid const-correctness errors.
2) Treats visibility internal like hidden rather than like 
default.  The documentation says that internal is hidden + 
processor-specific semantics, so treating it as just hidden makes sense 
to me.


OK for trunk?

Jason
commit 907f8d9588da2e65cf938985639bfaf0dde53c6f
Author: Jason Merrill ja...@redhat.com
Date:   Wed Oct 3 09:55:25 2012 -0400

	* config/darwin.c (darwin_assemble_visibility): Treat
	VISIBILITY_INTERNAL as hidden.

	* config/darwin-c.c (find_subframework_file): Add missing const.
	(framework_construct_pathname): Likewise.

diff --git a/gcc/config/darwin-c.c b/gcc/config/darwin-c.c
index a642f66..8e48c30 100644
--- a/gcc/config/darwin-c.c
+++ b/gcc/config/darwin-c.c
@@ -267,7 +267,7 @@ static struct framework_header framework_header_dirs[] = {
 static char *
 framework_construct_pathname (const char *fname, cpp_dir *dir)
 {
-  char *buf;
+  const char *buf;
   size_t fname_len, frname_len;
   cpp_dir *fast_dir;
   char *frname;
@@ -344,7 +344,7 @@ find_subframework_file (const char *fname, const char *pname)
 {
   char *sfrname;
   const char *dot_framework = .framework/;
-  char *bufptr;
+  const char *bufptr;
   int sfrname_len, i, fname_len;
   struct cpp_dir *fast_dir;
   static struct cpp_dir subframe_dir;
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index 54c92d1..5a9f50a 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -2623,7 +2623,7 @@ darwin_assemble_visibility (tree decl, int vis)
 {
   if (vis == VISIBILITY_DEFAULT)
 ;
-  else if (vis == VISIBILITY_HIDDEN)
+  else if (vis == VISIBILITY_HIDDEN || vis == VISIBILITY_INTERNAL)
 {
   fputs (\t.private_extern , asm_out_file);
   assemble_name (asm_out_file,
@@ -2631,7 +2631,7 @@ darwin_assemble_visibility (tree decl, int vis)
   fputs (\n, asm_out_file);
 }
   else
-warning (OPT_Wattributes, internal and protected visibility attributes 
+warning (OPT_Wattributes, protected visibility attribute 
 	 not supported in this configuration; ignored);
 }
 


Re: RFA: darwin PATCH to fix build, internal visibility

2012-10-03 Thread Mike Stump
On Oct 3, 2012, at 12:04 PM, Jason Merrill ja...@redhat.com wrote:
 This patch fixes a couple of Darwin issues I noticed with a cross-compiler:
 
 1) Adds a couple of consts to avoid const-correctness errors.
 2) Treats visibility internal like hidden rather than like default.  
 The documentation says that internal is hidden + processor-specific 
 semantics, so treating it as just hidden makes sense to me.
 
 OK for trunk?

Ok.