From e87789f197e47259c94349821d3446f7d959e08f Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Tue, 21 Sep 2021 08:54:49 +0200 Subject: [PATCH] Evaluate 'random ()' to '0' in 'pass_omp_oacc_neuter_broadcast' Julian Brown, : | [...] 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'. --- gcc/omp-oacc-neuter-broadcast.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gcc/omp-oacc-neuter-broadcast.cc b/gcc/omp-oacc-neuter-broadcast.cc index aa5990e..e43338f 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 base_inrng -- 2.7.4