diff options
author | Chung-Lin Tang <cltang@codesourcery.com> | 2016-05-17 08:07:52 +0000 |
---|---|---|
committer | Chung-Lin Tang <cltang@gcc.gnu.org> | 2016-05-17 08:07:52 +0000 |
commit | e37288a608ed33f7789feff4f4ee7fa772e5a962 (patch) | |
tree | e3b174fc73b1ba4b2a489962bed55e58b39ca16c /libgomp/oacc-init.c | |
parent | d35c169874df4bfb773c511b188754f6e22e4f55 (diff) | |
download | gcc-e37288a608ed33f7789feff4f4ee7fa772e5a962.zip gcc-e37288a608ed33f7789feff4f4ee7fa772e5a962.tar.gz gcc-e37288a608ed33f7789feff4f4ee7fa772e5a962.tar.bz2 |
oacc-init.c (acc_init): Remove !cached_base_dev condition on call to gomp_init_targets_once.
2016-05-17 Chung-Lin Tang <cltang@codesourcery.com>
libgomp/
* oacc-init.c (acc_init): Remove !cached_base_dev condition on call
to gomp_init_targets_once.
(acc_set_device_type): Remove !cached_base_dev condition on call to
gomp_init_targets_once, move call to before acc_device_lock acquire,
to avoid deadlock.
(acc_get_device_num): Remove !cached_base_dev condition on call to
gomp_init_targets_once.
(acc_set_device_num): Likewise.
From-SVN: r236310
Diffstat (limited to 'libgomp/oacc-init.c')
-rw-r--r-- | libgomp/oacc-init.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/libgomp/oacc-init.c b/libgomp/oacc-init.c index 42d005d..f6176ec 100644 --- a/libgomp/oacc-init.c +++ b/libgomp/oacc-init.c @@ -433,8 +433,7 @@ goacc_attach_host_thread_to_device (int ord) void acc_init (acc_device_t d) { - if (!cached_base_dev) - gomp_init_targets_once (); + gomp_init_targets_once (); gomp_mutex_lock (&acc_device_lock); @@ -498,10 +497,9 @@ acc_set_device_type (acc_device_t d) struct gomp_device_descr *base_dev, *acc_dev; struct goacc_thread *thr = goacc_thread (); - gomp_mutex_lock (&acc_device_lock); + gomp_init_targets_once (); - if (!cached_base_dev) - gomp_init_targets_once (); + gomp_mutex_lock (&acc_device_lock); cached_base_dev = base_dev = resolve_device (d, true); acc_dev = &base_dev[goacc_device_num]; @@ -563,8 +561,7 @@ acc_get_device_num (acc_device_t d) if (d >= _ACC_device_hwm) gomp_fatal ("unknown device type %u", (unsigned) d); - if (!cached_base_dev) - gomp_init_targets_once (); + gomp_init_targets_once (); gomp_mutex_lock (&acc_device_lock); dev = resolve_device (d, true); @@ -584,8 +581,7 @@ acc_set_device_num (int ord, acc_device_t d) struct gomp_device_descr *base_dev, *acc_dev; int num_devices; - if (!cached_base_dev) - gomp_init_targets_once (); + gomp_init_targets_once (); if (ord < 0) ord = goacc_device_num; |