Commit Graph
238 Commits
Author SHA1 Message Date
Jonathan Peyton d62fdbdc17 Fix honoring of OMP_THREAD_LIMIT in the teams construct
Fix for crash in the teams construct in case user sets OMP_THREAD_LIMIT to a
number less than the number of processors. Now the number of threads will be
silently reduced if the user didn't specify teams parameters or with a
warning if the user specified teams parameters conflicting with
OMP_THREAD_LIMIT.

Differential Revision: http://reviews.llvm.org/D14732


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@254322 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-30 20:14:05 +00:00
Jonathan Peyton c33a75a1ae Fix crash when __kmp_task_team_setup called for single threaded team
The task_team pointer is dereferenced unconditionally which causes a SEGFAULT
when it is NULL (e.g. for serialized parallel, that can happen for "teams"
construct or for "target nowait").  The solution is to skip second task team
setup for single thread team.

Differential Revision: http://reviews.llvm.org/D14729


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@254321 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-30 20:05:13 +00:00
Jonathan Peyton 8d8e4657d1 Adding Hwloc library option for affinity mechanism
These changes allow libhwloc to be used as the topology discovery/affinity
mechanism for libomp.  It is supported on Unices. The code additions:
* Canonicalize KMP_CPU_* interface macros so bitmask operations are
  implementation independent and work with both hwloc bitmaps and libomp
  bitmaps.  So there are new KMP_CPU_ALLOC_* and KMP_CPU_ITERATE() macros and
  the like. These are all in kmp.h and appropriately placed.
* Hwloc topology discovery code in kmp_affinity.cpp. This uses the hwloc
  interface to create a libomp address2os object which the rest of libomp knows
  how to handle already.
* To build, use -DLIBOMP_USE_HWLOC=on and
  -DLIBOMP_HWLOC_INSTALL_DIR=/path/to/install/dir [default /usr/local]. If CMake
  can't find the library or hwloc.h, then it will tell you and exit.

Differential Revision: http://reviews.llvm.org/D13991


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@254320 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-30 20:02:59 +00:00
Jonathan Peyton 271a72612d Add newlines to debug TRACE messages in kmp_taskdeps.cpp
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@253265 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-16 22:53:38 +00:00
Jonathan Peyton 59fd2d5636 Add missing KMP_NESTED_HOT_TEAMS guards
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@253264 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-16 22:48:41 +00:00
Alexey Bataev 5fedb90a30 [OPENMP] Fixed tests for gcc build.
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@253200 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-16 11:35:57 +00:00
Jonathan Peyton 22361cf975 Add debug trace message for hierarchical barrier
Trace when thread is waiting at join phase for oncore children.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@252954 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-12 21:40:39 +00:00
Jonathan Peyton de99836584 Remove outdated comment
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@252953 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-12 21:34:29 +00:00
Jonathan Peyton e2b86ca4e4 Fix for ittnotify loop reporting
Fix ittnotify loop metadata reporting for schedule(runtime) and
chunked schedule set via OMP_SCHEDULE. The bug was that chunk=1 
reported always.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@252952 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-12 21:26:22 +00:00
Jonathan Peyton 0d94178f2d [OMPT] Add ompt_event_task_switch event into OMPT/OpenMP
The patch adds support for ompt_event_task_switch into LLVM/OpenMP. Note that
the patch has also updated the signature of ompt_event_task_switch to
ompt_task_pair_callback_t (rather than the previous ompt_task_switch_callback_t).

Patch by Harald Servat

Differential Revision: http://reviews.llvm.org/D14566


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@252761 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-11 17:49:50 +00:00
Jonathan Peyton 18e13ca264 [OMPT] Remove unnecessary header in ompt-general.c
Patch by Harald Servat

Differential Revision: http://reviews.llvm.org/D14565


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@252756 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-11 17:30:26 +00:00
Jonathan Peyton 21b23ce699 Fixes to wait-loop code
1) Add get_ptr_type() method to all wait flag types.
2) Flag in sleep_loc may change type by the time the resume is called from
   __kmp_null_resume_wrapper. We use get_ptr_type to obtain the real type
   and compare it to the casted object received. If they don't match, we know
   the flag has changed (already resumed and replaced by another flag). If they
   match, it doesn't hurt to go ahead and resume it.

Differential Revision: http://reviews.llvm.org/D14458


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@252487 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-09 16:31:51 +00:00
Jonathan Peyton 6e98151883 Fixes and improvements to tasking in barriers
1) When the number of threads in a team increases, new threads need to have all
   their barrier struct fields initialized. We were missing the parent_bar and
   team fields.
2) For non-forkjoin barriers, we now do the __kmp_task_team_setup before the
   gather. The setup now sets up the task_team that all the threads will switch
   to after the barrier, but it needs to be done before other threads do the
   switch.
3) Remove an unneeded assignment of tt_found_tasks in task team free function.

Differential Revision: http://reviews.llvm.org/D14456


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@252486 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-09 16:28:32 +00:00
Jonathan Peyton 9543a7dad8 Improvements to machine_hierarchy code for re-sizing
These changes include:
 1) Machine hierarchy now uses the base_num_threads field to indicate the 
    maximum number of threads the current hierarchy can handle without a resize.
 2) In __kmp_get_hierarchy, we need to get depth after any potential resize
    is done.
 3) Cleanup of hierarchy resize code to support 1 above.

Differential Revision: http://reviews.llvm.org/D14455


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@252475 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-09 16:24:53 +00:00
Jonathan Peyton 5677b5095c [OMPT] Add OMPT events for the OpenMP taskwait construct.
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@252472 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-09 15:57:04 +00:00
Jonathan Peyton f15a791e85 Fix for zero chunk size
Setting dynamic schedule with chunk size 0 via omp_set_schedule(dynamic,0)
and then using "schedule (runtime)" causes infinite loop because for the 
chunked dynamic schedule we didn't correct zero chunk to the default (1).


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@252338 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-06 20:32:44 +00:00
Jonathan Peyton 103648dd39 Improve OMPT initialization code
Use of #ifdef OMPT_DEBUG was causing messages to be generated under normal
operation when the OpenMP library was compiled with KMP_DEBUG enabled.
Elsewhere, KMP_DEBUG evaluates assertions, but never produces messages during
normal operation. To avoid this inconsistency, set OMPT_DEBUG using a cmake
variable LIBOMP_OMPT_DEBUG.

While I was editing the associated ompt-specific.h and ompt-general.c files,
make the spacing and comments consistent.

Patch by John Mellor-Crummey

Differential Revision: http://reviews.llvm.org/D14355


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@252173 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-05 16:54:55 +00:00
Jonathan Peyton dfa0ba085a Remove incorrect debug assert.
in __kmp_free_team(), the team's number of processors can be == 1.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@252086 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-04 22:31:57 +00:00
Jonathan Peyton 2332aabedb Remove some empty lines.
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@252084 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-04 22:06:07 +00:00
Jonathan Peyton b9e8048db1 Refactor of task_team code.
This is a refactoring of the task_team code that more elegantly handles the two
task_team case. Two task_teams per team are kept in use for the lifetime of the
team. Thus no reference counting is needed.

Differential Revision: http://reviews.llvm.org/D13993


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@252082 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-04 21:37:48 +00:00
Alexey Bataev e73ff632d5 [OPENMP] Add dependency to clang/clang-headers etc. for in-tree build of libomp.
Add additional dependency to clang/clang-headers/FileCheck to avoid possible troubles with in-tree build/test of libomp + allow parallel testing of libomp. Also includes bugfixes for tests + improvements to avoid possible race conditions.
Differential Revision: http://reviews.llvm.org/D14055


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@251797 91177308-0d34-0410-b5e6-96231b3b80d8
2015-11-02 13:43:32 +00:00
Jonathan Peyton 7e9ea404f1 [OMPT] Adding missing free() calls to ompt_tool_windows() function.
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@251719 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-30 20:24:25 +00:00
Jonathan Peyton a4032ada02 [OMPT] Windows Support for OMPT
The problem is that the ompt_tool() function (which must be implemented by a
performance tool) should be defined in the RTL as well to cover the case when
the tool is not present in the address space of the process. This functionality
is accomplished with weak symbols in Unices. Unfortunately, Windows does not
support weak symbols.

The solution in these changes is to grab the list of all modules loaded by the
process and then search for symbol "ompt_tool()" within them. The function
ompt_tool_windows() performs the search of the ompt_tool symbol. If ompt_tool is
found, then its return value is used to initialize the tool. If ompt_tool is not
found, then ompt_tool_windows() returns NULL and OMPT is thus, disabled.

While doing these changes, the OMPT_SUPPORT detection in CMake was changed to
test for the required featuers for OMPT_SUPPORT, namely: builtin_frame_address()
existence, weak attribute existence and psapi.dll existence. For
LIBOMP_HAVE_OMPT_SUPPORT to be true, it must be that the builtin_frame_address()
intrinsic exists AND one of: either weak attributes exist or psapi.dll exists.

Also, since Process Status API is used I had to add new dependency -- psapi.dll
to the library dependency micro test.

Differential Revision: http://reviews.llvm.org/D14027


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@251654 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-29 20:56:24 +00:00
Jonathan Peyton dfa603c6ec Removed zeroing th.th_task_state for master thread at start of nested parallel.
The th.th_task_state for the master thread at the start of a nested parallel
should not be zeroed in __kmp_allocate_team() because it is later put in the
stack of states in __kmp_fork_call() for further re-use after exiting the
nested region. It is zeroed after being put in the stack.

Differential Revision: http://reviews.llvm.org/D13702


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@250847 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-20 19:21:04 +00:00
Jonathan Peyton 73bdc170b5 Removed '@' from delimiters, added it as offset designator.
Moved '@' from delimiters to offset designators for the KMP_PLACE_THREADS
environment variable. Only one of: postfix "o" or prefix @, should be used
in the value of KMP_PLACE_THREADS. For example, '2s@2,4c@2,1t'. This is also
the format of KMP_SETTINGS=1 output now (removed "o" from there).
e.g., 2s,2o,4c,2o,1t.

Differential Revision: http://reviews.llvm.org/D13701


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@250846 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-20 19:15:48 +00:00
Jonathan Peyton 120e5c4db4 Fix OMP_PLACES negation operator parsing (!place)
Just moved the *scan++ line up before the recursive call.  Otherwise,
infinite recursion occurs and leads to a segmentation fault.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@250729 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-19 19:43:01 +00:00
Jonathan Peyton 62e3cf352c Clean-up cancellation state flag between parallel regions
Without this fix, cancellation requests in one parallel region cause
cancellation of the second region even though the second one was
not intended to be cancelled.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@250727 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-19 19:33:38 +00:00
Dimitry Andric 5e4f900fd0 On FreeBSD, PTHREADS_THREADS_MAX does not fit into an int, leading to
warnings similar to the following:

    runtime/src/kmp_global.c:117:35: warning: implicit conversion from
    'unsigned long' to 'int' changes value from 18446744073709551615 to -1
    [-Wconstant-conversion]
    int           __kmp_sys_max_nth = KMP_MAX_NTH;
                  ~~~~~~~~~~~~~~~~~   ^~~~~~~~~~~
    runtime/src/kmp.h:849:34: note: expanded from macro 'KMP_MAX_NTH'
    #    define KMP_MAX_NTH          PTHREAD_THREADS_MAX
                                     ^~~~~~~~~~~~~~~~~~~

Clamp KMP_MAX_NTH to INT_MAX to avoid these warnings.  Also use INT_MAX
whenever PTHREAD_THREADS_MAX is not defined at all.

Differential Revision: http://reviews.llvm.org/D13827


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@250708 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-19 17:32:04 +00:00
Jonathan Peyton d1e8ef1834 [OMPT] Add OMPT events for API locking
This fix implements the following OMPT events for the API locking routines:
* ompt_event_acquired_lock
* ompt_event_acquired_nest_lock_first
* ompt_event_acquired_nest_lock_next
* ompt_event_init_lock
* ompt_event_init_nest_lock
* ompt_event_destroy_lock
* ompt_event_destroy_nest_lock

For the acquired events the depths of the locks ist required, so a return value
was added similiar to the return values we already have for the release lock
routines.

Patch by Tim Cramer

Differential Revision: http://reviews.llvm.org/D13689


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@250526 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-16 16:52:58 +00:00
Jonathan Peyton eee928503e Detect final task in GOMP interface.
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@250198 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-13 18:36:22 +00:00
Jonathan Peyton 8ec4ec3838 [OPENMP][TESTSUITE] Undefined variable in test omp_task_final.c
Patch by Alexey Bataev

Differential Revision: http://reviews.llvm.org/D13661


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@250066 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-12 17:01:05 +00:00
Jonathan Peyton 2a541f0d91 [OMPT] Reduce overhead of OMPT
* Avoid computing state needed only by OMPT unless the ompt_enabled flag is set.
* Properly handle a corner case in OMPT where team == NULL.

Patch by John Mellor-Crummey

Differential Revision: http://reviews.llvm.org/D13502


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@249857 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-09 17:42:52 +00:00
Jonathan Peyton c64cfb2ef1 [OMPT] Initialize task fields only if needed
Because __kmp_task_init_ompt is called for every initial task in each thread
and always generated task ids, this was a big performance issue on bigger
systems even without any tool attached.  After changing the initialization 
interface to ompt_tool, we can now rely on already knowing whether a tool is
attached and OMPT is enabled at this point.

Patch by Jonas Hahnfeld

Differential Revision: http://reviews.llvm.org/D13494


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@249855 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-09 17:38:05 +00:00
Jonathan Peyton d76e1838f1 Formatting/Whitespace/Comment changes associated with wait/release improvements.
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@249725 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 19:44:16 +00:00
Jonathan Peyton 90185a5f18 Debug trace and assert statement changes for wait/release improvements.
These changes improve/update the trace messages and debug asserts related to
the previous wait/release checkin.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@249717 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 18:49:40 +00:00
Jonathan Peyton fd69bc2810 OpenMP Wait/release improvements.
These changes improve the wait/release mechanism for threads spinning in 
barriers that are handling tasks while spinnin by providing feedback to the 
barriers about any task stealing that occurs.

Differential Revision: http://reviews.llvm.org/D13353


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@249711 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 18:23:38 +00:00
Jonathan Peyton 89eb36ffe7 Added sockets to the syntax of KMP_PLACE_THREADS environment variable.
Added (optional) sockets to the syntax of the KMP_PLACE_THREADS environment variable.
Some limitations:
* The number of sockets and then optional offset should be specified first (before other parameters).
* The letter designation is mandatory for sockets and then for other parameters.
* If number of cores is specified first, then the number of sockets is defaulted to all sockets on the machine; also, the old syntax is partially supported if sockets are skipped.
* If number of threads per core is specified first, then the number of sockets and cores per socket are defaulted to all sockets and all cores per socket respectively.
* The number of cores per socket cannot be specified before sockets or after threads per core.
* The number of threads per core can be specified before or after core-offset (old syntax required it to be before core-offset);
* Parameters delimiter can be: empty, comma, lower-case x;
* Spaces are allowed around numbers, around letters, around delimiter.
Approximate shorthand specification:
KMP_PLACE_THREADS="[num_sockets(S|s)[[delim]offset(O|o)][delim]][num_cores_per_socket(C|c)[[delim]offset(O|o)][delim]][num_threads_per_core(T|t)]"

Differential Revision: http://reviews.llvm.org/D13175


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@249708 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-08 17:55:54 +00:00
Jonathan Peyton 25344f9ecc Fix memory corruption in Windows debug library
This patch adjusts the buffer size when reducing the buffer used for printing.
This solves the memory corruption in Windows debug library, and potential
memory corruption in other builds.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@248588 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-25 17:23:17 +00:00
Jonathan Peyton a2b144ab95 [OpenMP Testsuite] Change omp_get_wtime.c timer resolution to 3 percent
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@248501 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-24 15:10:57 +00:00
Jonathan Peyton b62edcf6b8 [OpenMP Testsuite] Mac rpath specified when compiling tests
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@248500 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-24 15:09:51 +00:00
Jonathan Peyton d18f8d4d8c Fix stats build problem.
This change removes the KMP_STATS_ENABLED macro inside kmp_stats.cpp since it
is only compiled anyways when LIBOMP_STATS=on.  Also, include kmp_config.h in
kmp_stats.h to ensure KMP_STATS_ENABLED is defined.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@248494 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-24 14:47:51 +00:00
Jonathan Peyton 7811d1db7f Update Reference.pdf files.
This updates the Reference.pdf files to say LLVM OpenMP Runtime Library and
also updates the build documentation to show how to build with CMake.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@248407 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-23 18:09:47 +00:00
Jonathan Peyton 9e321cbfc5 OpenMP Initial testsuite change to purely llvm-lit based testing
This change introduces a check-libomp target which is based upon llvm's lit
test infrastructure. Each test (generated from the University of Houston's
OpenMP testsuite) is compiled and then run. For each test, an exit status of 0
indicates success and non-zero indicates failure. This way, FileCheck is not
needed. I've added a bit of logic to generate symlinks (libiomp5 and libgomp)
in the build tree so that gcc can be tested as well.  When building out-of-
tree builds, the user will have to provide llvm-lit either by specifying
-DLIBOMP_LLVM_LIT_EXECUTABLE or having llvm-lit in their PATH.

Differential Revision: http://reviews.llvm.org/D11821


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@248211 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-21 20:41:31 +00:00
Joerg Sonnenberger 2aec68db20 Use sysconf for the number of cores on FreeBSD too.
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@248209 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-21 20:29:12 +00:00
Joerg Sonnenberger 61bb8dd178 Complex division requires libm on NetBSD, add it.
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@248207 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-21 20:21:02 +00:00
Joerg Sonnenberger 70eac4ffbd Add basic NetBSD support.
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@248204 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-21 20:02:45 +00:00
Joerg Sonnenberger 60a90c830f Teach the Perl modules about NetBSD.
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@248203 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-21 19:42:05 +00:00
Joerg Sonnenberger 8cd13fe13e libomp on NetBSD needs libc, libpthread and libm.
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@248200 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-21 19:40:59 +00:00
Joerg Sonnenberger 98bea25703 Assume that all Unix-like systems will want to handle signals and
simplify conditional.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@248199 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-21 19:38:56 +00:00
Joerg Sonnenberger cecce61d1e Darwin is the exception when it comes to accessing environ, all other
Unix-like systems can follow the same code path.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@248198 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-21 19:37:05 +00:00