+2016-05-17 Chung-Lin Tang <cltang@codesourcery.com>
+
+ * 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.
+
2016-05-16 Martin Jambor <mjambor@suse.cz>
* testsuite/libgomp.hsa.c/complex-align-2.c: New test.
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);
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];
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);
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;