From: Alexander Monakov <amonakov@ispras.ru>
To: gcc-patches@gcc.gnu.org
Cc: Jakub Jelinek <jakub@redhat.com>, Dmitry Melnik <dm@ispras.ru>
Subject: [gomp4 11/14] libgomp: avoid variable-length stack allocation in team.c
Date: Tue, 20 Oct 2015 18:34:00 -0000 [thread overview]
Message-ID: <1445366076-16082-12-git-send-email-amonakov@ispras.ru> (raw)
In-Reply-To: <1445366076-16082-1-git-send-email-amonakov@ispras.ru>
NVPTX does not support alloca or variable-length stack allocations, thus
heap allocation needs to be used instead. I've opted to make this a generic
change instead of guarding it with an #ifdef: libgomp usually leaves thread
stack size up to libc, so avoiding unbounded stack allocation makes sense.
* task.c (GOMP_task): Use a fixed-size on-stack buffer or a heap
allocation instead of a variable-size on-stack allocation.
---
libgomp/task.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/libgomp/task.c b/libgomp/task.c
index 74920d5..ffb7ed2 100644
--- a/libgomp/task.c
+++ b/libgomp/task.c
@@ -162,11 +162,16 @@ GOMP_task (void (*fn) (void *), void *data, void (*cpyfn) (void *, void *),
thr->task = &task;
if (__builtin_expect (cpyfn != NULL, 0))
{
- char buf[arg_size + arg_align - 1];
+ long buf_size = arg_size + arg_align - 1;
+ char buf_fixed[2048], *buf = buf_fixed;
+ if (sizeof(buf_fixed) < buf_size)
+ buf = gomp_malloc (buf_size);
char *arg = (char *) (((uintptr_t) buf + arg_align - 1)
& ~(uintptr_t) (arg_align - 1));
cpyfn (arg, data);
fn (arg);
+ if (buf != buf_fixed)
+ free (buf);
}
else
fn (data);
next prev parent reply other threads:[~2015-10-20 18:34 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-20 18:34 [gomp4 00/14] NVPTX: further porting Alexander Monakov
2015-10-20 18:34 ` [gomp4 03/14] nvptx: expand support for address spaces Alexander Monakov
2015-10-20 20:56 ` Bernd Schmidt
2015-10-20 21:06 ` Alexander Monakov
2015-10-20 21:13 ` Bernd Schmidt
2015-10-20 21:41 ` Cesar Philippidis
2015-10-20 21:51 ` Bernd Schmidt
2015-10-20 18:34 ` [gomp4 05/14] omp-low: set 'omp target entrypoint' only on entypoints Alexander Monakov
2015-10-20 23:57 ` Bernd Schmidt
2015-10-21 8:20 ` Jakub Jelinek
2015-10-30 16:58 ` Alexander Monakov
2015-11-06 14:05 ` Bernd Schmidt
2015-11-06 14:08 ` Jakub Jelinek
2015-11-06 14:12 ` Bernd Schmidt
2015-11-06 17:16 ` Alexander Monakov
2015-10-20 18:34 ` Alexander Monakov [this message]
2015-10-20 20:48 ` [gomp4 11/14] libgomp: avoid variable-length stack allocation in team.c Bernd Schmidt
2015-10-20 21:41 ` Alexander Monakov
2015-10-20 21:46 ` Bernd Schmidt
2015-10-21 9:59 ` Jakub Jelinek
2015-10-20 18:34 ` [gomp4 01/14] nvptx: emit kernels for 'omp target entrypoint' only for OpenACC Alexander Monakov
2015-10-20 23:48 ` Bernd Schmidt
2015-10-21 5:40 ` Alexander Monakov
2015-10-21 8:11 ` Jakub Jelinek
2015-10-21 8:36 ` Alexander Monakov
2015-10-20 18:34 ` [gomp4 04/14] nvptx: fix output of _Bool global variables Alexander Monakov
2015-10-20 20:51 ` Bernd Schmidt
2015-10-20 21:04 ` Alexander Monakov
2015-10-28 16:56 ` Alexander Monakov
2015-10-28 17:01 ` Bernd Schmidt
2015-10-28 17:38 ` Alexander Monakov
2015-10-28 17:39 ` Bernd Schmidt
2015-10-28 17:51 ` Alexander Monakov
2015-10-28 18:06 ` Bernd Schmidt
2015-10-28 18:07 ` Alexander Monakov
2015-10-28 18:33 ` Bernd Schmidt
2015-10-28 19:37 ` Alexander Monakov
2015-10-29 11:13 ` Bernd Schmidt
2015-10-30 13:27 ` Alexander Monakov
2015-10-30 13:38 ` Bernd Schmidt
2015-10-20 18:34 ` [gomp4 08/14] libgomp nvptx: populate proc.c Alexander Monakov
2015-10-21 9:15 ` Jakub Jelinek
2015-10-20 18:34 ` [gomp4 14/14] libgomp: use more generic implementations on nvptx Alexander Monakov
2015-10-21 10:17 ` Jakub Jelinek
2015-10-20 18:34 ` [gomp4 07/14] libgomp nvptx plugin: launch target functions via gomp_nvptx_main Alexander Monakov
2015-10-20 21:12 ` Bernd Schmidt
2015-10-20 21:19 ` Alexander Monakov
2015-10-20 21:27 ` Bernd Schmidt
2015-10-21 9:07 ` Jakub Jelinek
2015-10-20 18:34 ` [gomp4 12/14] libgomp: fixup error.c on nvptx Alexander Monakov
2015-10-21 10:03 ` Jakub Jelinek
2015-10-20 18:34 ` [gomp4 06/14] omp-low: copy omp_data_o to shared memory on NVPTX Alexander Monakov
2015-10-21 0:07 ` Bernd Schmidt
2015-10-21 6:49 ` Alexander Monakov
2015-10-21 8:48 ` Jakub Jelinek
2015-10-21 9:09 ` Alexander Monakov
2015-10-21 9:24 ` Jakub Jelinek
2015-10-21 10:42 ` Bernd Schmidt
2015-10-21 14:06 ` Alexander Monakov
2015-11-03 14:25 ` Alexander Monakov
2015-11-06 14:00 ` Bernd Schmidt
2015-11-06 14:06 ` Jakub Jelinek
2015-11-10 10:39 ` Jakub Jelinek
2015-11-26 9:51 ` Jakub Jelinek
2015-10-20 18:52 ` [gomp4 10/14] libgomp: arrange a team of pre-started threads via gomp_nvptx_main Alexander Monakov
2015-10-21 9:49 ` Jakub Jelinek
2015-10-21 14:41 ` Alexander Monakov
2015-10-21 15:02 ` Jakub Jelinek
2015-10-20 18:52 ` [gomp4 13/14] libgomp: provide minimal GOMP_teams Alexander Monakov
2015-10-21 10:12 ` Jakub Jelinek
2015-10-20 18:53 ` [gomp4 09/14] libgomp: provide barriers on NVPTX Alexander Monakov
2015-10-20 20:56 ` Bernd Schmidt
2015-10-20 22:00 ` Alexander Monakov
2015-10-21 2:23 ` Bernd Schmidt
2015-10-21 9:39 ` Jakub Jelinek
2015-10-20 19:01 ` [gomp4 02/14] nvptx: emit pointers to OpenMP target region entry points Alexander Monakov
2015-10-21 7:55 ` [gomp4 00/14] NVPTX: further porting Martin Jambor
2015-10-21 8:56 ` Jakub Jelinek
2015-10-21 9:17 ` Alexander Monakov
2015-10-21 9:29 ` Jakub Jelinek
2015-10-28 17:22 ` Alexander Monakov
2015-10-29 8:54 ` Jakub Jelinek
2015-10-29 11:38 ` Alexander Monakov
2015-10-21 12:06 ` Bernd Schmidt
2015-10-21 15:48 ` Alexander Monakov
2015-10-21 16:10 ` Bernd Schmidt
2015-10-22 9:55 ` Jakub Jelinek
2015-10-22 16:42 ` Alexander Monakov
2015-10-22 17:16 ` Julian Brown
2015-10-22 18:19 ` Alexander Monakov
2015-10-22 17:17 ` Bernd Schmidt
2015-10-22 18:10 ` Alexander Monakov
2015-10-22 18:27 ` Bernd Schmidt
2015-10-22 19:28 ` Alexander Monakov
2015-10-23 8:23 ` Jakub Jelinek
2015-10-23 8:25 ` Jakub Jelinek
2015-10-23 10:24 ` Jakub Jelinek
2015-10-23 10:48 ` Bernd Schmidt
2015-10-23 17:36 ` Alexander Monakov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1445366076-16082-12-git-send-email-amonakov@ispras.ru \
--to=amonakov@ispras.ru \
--cc=dm@ispras.ru \
--cc=gcc-patches@gcc.gnu.org \
--cc=jakub@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).