aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-04-04 12:41:33 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2017-04-04 12:41:33 +0200
commitc4060df4b1ae72421aa0da0fbb0acdc7af3b7c68 (patch)
tree5a3168b71a136e04b15bf32d997bde9d51232721
parent248179b5fc812b294e2488b23fedaaabe099ad9d (diff)
downloadgcc-c4060df4b1ae72421aa0da0fbb0acdc7af3b7c68.zip
gcc-c4060df4b1ae72421aa0da0fbb0acdc7af3b7c68.tar.gz
gcc-c4060df4b1ae72421aa0da0fbb0acdc7af3b7c68.tar.bz2
re PR libgomp/79876 (FAIL: libgomp.fortran/strassen.f90 -O execution test on x86_64-apple-darwin16)
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
-rw-r--r--libgomp/ChangeLog11
-rw-r--r--libgomp/config/darwin/thread-stacksize.h29
-rw-r--r--libgomp/config/nvptx/thread-stacksize.h27
-rw-r--r--libgomp/config/posix/thread-stacksize.h27
-rw-r--r--libgomp/env.c6
5 files changed, 98 insertions, 2 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index ece8ff0..5beaaa7 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -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
index 0000000..ae3910d
--- /dev/null
+++ b/libgomp/config/darwin/thread-stacksize.h
@@ -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
index 0000000..19da63f
--- /dev/null
+++ b/libgomp/config/nvptx/thread-stacksize.h
@@ -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
index 0000000..570c486
--- /dev/null
+++ b/libgomp/config/posix/thread-stacksize.h
@@ -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
diff --git a/libgomp/env.c b/libgomp/env.c
index 7c6c022..ced752d 100644
--- a/libgomp/env.c
+++ b/libgomp/env.c
@@ -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;