aboutsummaryrefslogtreecommitdiff
path: root/libgomp/oacc-init.c
diff options
context:
space:
mode:
authorChung-Lin Tang <cltang@codesourcery.com>2016-05-17 08:07:52 +0000
committerChung-Lin Tang <cltang@gcc.gnu.org>2016-05-17 08:07:52 +0000
commite37288a608ed33f7789feff4f4ee7fa772e5a962 (patch)
treee3b174fc73b1ba4b2a489962bed55e58b39ca16c /libgomp/oacc-init.c
parentd35c169874df4bfb773c511b188754f6e22e4f55 (diff)
downloadgcc-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.c14
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;