diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2021-09-21 08:54:49 +0200 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2021-09-21 12:38:44 +0200 |
commit | e87789f197e47259c94349821d3446f7d959e08f (patch) | |
tree | 162ed834715661ddbf2389ce359d2a7f969031fa | |
parent | 4e7a92c0ff3871d955ca8fb133f869b216d7224d (diff) |
Evaluate 'random ()' to '0' in 'pass_omp_oacc_neuter_broadcast'
Julian Brown,
<http://mid.mail-archive.com/20210920134603.16459021@squid.athome>:
| [...] the randomness shouldn't be necessary for the
| correctness of the patch (i.e. it could just be "base = bounds_lo", or
| indeed folded into the line after).
|
| The "ar.invalid ()" case happens when we fail to allocate a block of
| memory in LDS space for broadcasting a particular set of variables,
| and trigger a fall-back path in the broadcasting code that adds extra
| barriers around the broadcast in question. I imagine I was thinking
| that adding randomness could mean we can "get lucky" sometimes and
| avoid needing those barriers in some cases, but in fact I don't think
| that was implemented, so the randomness is useless. (Or it could just
| have been leftover debug code... oops).
gcc/
PR other/102408
* omp-oacc-neuter-broadcast.cc (oacc_do_neutering): Evaluate
'random ()' to '0'.
-rw-r--r-- | gcc/omp-oacc-neuter-broadcast.cc | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/gcc/omp-oacc-neuter-broadcast.cc b/gcc/omp-oacc-neuter-broadcast.cc index aa5990ed7a1..e43338f3abf 100644 --- a/gcc/omp-oacc-neuter-broadcast.cc +++ b/gcc/omp-oacc-neuter-broadcast.cc @@ -1782,9 +1782,8 @@ oacc_do_neutering (unsigned HOST_WIDE_INT bounds_lo, if (ar.invalid ()) { - unsigned HOST_WIDE_INT base; - base = bounds_lo + random () % 512; - base = (base + align - 1) & ~(align - 1); + unsigned HOST_WIDE_INT base + = (bounds_lo + align - 1) & ~(align - 1); if (base + size > bounds_hi) error_at (UNKNOWN_LOCATION, "shared-memory region overflow"); std::pair<unsigned HOST_WIDE_INT, bool> base_inrng |