From 5221d7a91b9d6b674fb473675274099f1da939dd Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 20 Apr 2010 17:36:45 +0200 Subject: re PR libgomp/43569 (libgomp: Conditional jump or move depends on uninitialised value) PR libgomp/43569 * sections.c (gomp_sections_init): Initialize ws->mode. From-SVN: r158564 --- libgomp/sections.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'libgomp/sections.c') diff --git a/libgomp/sections.c b/libgomp/sections.c index 7acd441..c7f49b7 100644 --- a/libgomp/sections.c +++ b/libgomp/sections.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc. +/* Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Richard Henderson . This file is part of the GNU OpenMP Library (libgomp). @@ -34,9 +34,25 @@ gomp_sections_init (struct gomp_work_share *ws, unsigned count) { ws->sched = GFS_DYNAMIC; ws->chunk_size = 1; - ws->end = count + 1; + ws->end = count + 1L; ws->incr = 1; ws->next = 1; +#ifdef HAVE_SYNC_BUILTINS + /* Prepare things to make each iteration faster. */ + if (sizeof (long) > sizeof (unsigned)) + ws->mode = 1; + else + { + struct gomp_thread *thr = gomp_thread (); + struct gomp_team *team = thr->ts.team; + long nthreads = team ? team->nthreads : 1; + + ws->mode = ((nthreads | ws->end) + < 1UL << (sizeof (long) * __CHAR_BIT__ / 2 - 1)); + } +#else + ws->mode = 0; +#endif } /* This routine is called when first encountering a sections construct -- cgit v1.1