re PR libgomp/79876 (FAIL: libgomp.fortran/strassen.f90 -O execution test on x86_6...
authorJakub Jelinek <jakub@redhat.com>
Tue, 4 Apr 2017 10:41:33 +0000 (12:41 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 4 Apr 2017 10:41:33 +0000 (12:41 +0200)
PR libgomp/79876
* config/posix/thread-stacksize.h: New file.
* config/darwin/thread-stacksize.h: New file.
* config/nvptx/thread-stacksize.h: New file.
* env.c: Include thread-stacksize.h.
(initialize_env): Initialize stacksize to GOMP_DEFAULT_STACKSIZE
instead of 0.  Call pthread_attr_setstacksize even if
GOMP_DEFAULT_STACKSIZE is non-zero.

From-SVN: r246675

libgomp/ChangeLog
libgomp/config/darwin/thread-stacksize.h [new file with mode: 0644]
libgomp/config/nvptx/thread-stacksize.h [new file with mode: 0644]
libgomp/config/posix/thread-stacksize.h [new file with mode: 0644]
libgomp/env.c

index ece8ff0..5beaaa7 100644 (file)
@@ -1,3 +1,14 @@
+2017-04-04  Jakub Jelinek  <jakub@redhat.com>
+
+       PR libgomp/79876
+       * config/posix/thread-stacksize.h: New file.
+       * config/darwin/thread-stacksize.h: New file.
+       * config/nvptx/thread-stacksize.h: New file.
+       * env.c: Include thread-stacksize.h.
+       (initialize_env): Initialize stacksize to GOMP_DEFAULT_STACKSIZE
+       instead of 0.  Call pthread_attr_setstacksize even if
+       GOMP_DEFAULT_STACKSIZE is non-zero.
+
 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
 
        * env.c (initialize_env): Initialize stacksize to 0.
diff --git a/libgomp/config/darwin/thread-stacksize.h b/libgomp/config/darwin/thread-stacksize.h
new file mode 100644 (file)
index 0000000..ae3910d
--- /dev/null
@@ -0,0 +1,29 @@
+/* Copyright (C) 2017 Free Software Foundation, Inc.
+   Contributed by Jakub Jelinek <jakub@redhat.com>
+
+   This file is part of the GNU Offloading and Multi Processing Library
+   (libgomp).
+
+   Libgomp is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+   FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+   more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* OSX uses too small default stack size (0.5MB), use a bigger default.
+   Users can still override it through OMP_STACKSIZE or GOMP_STACKSIZE
+   environment variables.  */
+#define GOMP_DEFAULT_STACKSIZE (2 * 1024 * 1024)
diff --git a/libgomp/config/nvptx/thread-stacksize.h b/libgomp/config/nvptx/thread-stacksize.h
new file mode 100644 (file)
index 0000000..19da63f
--- /dev/null
@@ -0,0 +1,27 @@
+/* Copyright (C) 2017 Free Software Foundation, Inc.
+   Contributed by Jakub Jelinek <jakub@redhat.com>
+
+   This file is part of the GNU Offloading and Multi Processing Library
+   (libgomp).
+
+   Libgomp is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+   FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+   more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Not really applicable to NVPTX.  */
+#define GOMP_DEFAULT_STACKSIZE 0
diff --git a/libgomp/config/posix/thread-stacksize.h b/libgomp/config/posix/thread-stacksize.h
new file mode 100644 (file)
index 0000000..570c486
--- /dev/null
@@ -0,0 +1,27 @@
+/* Copyright (C) 2017 Free Software Foundation, Inc.
+   Contributed by Jakub Jelinek <jakub@redhat.com>
+
+   This file is part of the GNU Offloading and Multi Processing Library
+   (libgomp).
+
+   Libgomp is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+   FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+   more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* 0 means use the system default.  */
+#define GOMP_DEFAULT_STACKSIZE 0
index 7c6c022..ced752d 100644 (file)
@@ -51,6 +51,7 @@
 # endif
 #endif
 #include <errno.h>
+#include "thread-stacksize.h"
 
 #ifndef HAVE_STRTOULL
 # define strtoull(ptr, eptr, base) strtoul (ptr, eptr, base)
@@ -1187,7 +1188,7 @@ handle_omp_display_env (unsigned long stacksize, int wait_policy)
 static void __attribute__((constructor))
 initialize_env (void)
 {
-  unsigned long thread_limit_var, stacksize = 0;
+  unsigned long thread_limit_var, stacksize = GOMP_DEFAULT_STACKSIZE;
   int wait_policy;
 
   /* Do a compile time check that mkomp_h.pl did good job.  */
@@ -1274,7 +1275,8 @@ initialize_env (void)
   pthread_attr_setdetachstate (&gomp_thread_attr, PTHREAD_CREATE_DETACHED);
 
   if (parse_stacksize ("OMP_STACKSIZE", &stacksize)
-      || parse_stacksize ("GOMP_STACKSIZE", &stacksize))
+      || parse_stacksize ("GOMP_STACKSIZE", &stacksize)
+      || GOMP_DEFAULT_STACKSIZE)
     {
       int err;