Merge trunk version 194962 into gupc branch.
[official-gcc.git] / libgupc / ChangeLog
blob8c8cf091af1fa146c699777cb89ead0b569890bd
1 2012-12-11  Nenad Vukicevic  <nenad@intrepid.com>
3         * configure.ac: As libgupc is not built yet, make sure
4         that UPC compiler does not pre-include gcc-upc.h and
5         gcc-upc-lib.h while performing configuration checks.
6         * configure: Regenerate.
8 2012-11-27  Gary Funck  <gary@intrepid.com>
10         * config/default/upc-crt-config.h: Remove check for
11         TARGET_ASM_NAMED_SECTION.
12         * smp/upc_config.h: Avoid multiple definition of __USE_GNU.
13         * smp/upc_lock.upc: Use local search (") quoting in #include.
14         * upc-crtstuff.c: Update copyright notice and fix minor typos.
16 2012-11-19  Nenad Vukicevic  <nenad@intrepid.com>
18         * portals4/gupcr_mem.c (upc_memput): Add appropriate checks
19         for proper UPC data ordering.  All requests in size above the
20         GUPCR_PORTALS_MAX_ORDERED_SIZE must be treated as strict.
21         (upc_memcopy): Ditto.
22         (upc_memset): Ditto.
24 2012-11-08  Nenad Vukicevic  <nenad@intrepid.com>
26         * portals4/gupcr_portals.c (gupcr_get_datatype): Rename
27         to gupcr_get_atomic_datatype to name it correctly.  Use
28         PTL_DOUBLE_COMPLEX atomic type as a container for 16 bytes
29         CSWAP operations.  The MCS lock implementation requires CSWAP
30         on a pointer to shared which is 16 bytes in the struct
31         configuration.
32         * portals4/gupcr_portals.h: Rename gupcr_get_datatype.
33         * portals4/gupcr_lock_sup.c (gupcr_lock_swap): Ditto.
34         (gupcr_lock_cswap): Ditto.
36 2012-11-08  Nenad Vukicevic  <nenad@intrepid.com>
38         Prevent data tearing on accessing a pointer to shared in
39         the shared address space.
40         * portals4/gupcr_lock_sup.c (gupcr_lock_get): New.
41         * portals4/gupcr_lock_sup.h: Add extern def for gupcr_lock_get.
42         * portals4/gupcr_lock.upc (upc_unlock): Access data that can
43         be changed by other threads via Portals interface.
45 2012-11-08  Nenad Vukicevic  <nenad@intrepid.com>
47         Replace the usage of spin locks to regular UPC locks in
48         the heap allocation implementation.
49         * Makefile.am (UPC_RUNTIME_SRC): Remove spin lock source
50         files. Add gupcr_lock.h.
51         * Makefile.in; Regenerate.
52         * portals4/gupcr_lock.h: New. External definitions for heap
53         allocation locks.
54         * portals4/gupcr_lock.upc: Declare heap allocation locks.
55         (gupcr_lock_heap_sup_init): New. Initialize heap allocation locks.
56         * portals4/gupcr_alloc.upc: Remove spin lock declarations.
57         (gupcr_alloc_init): Remove spin lock initialization.
58         (gupcr_heap_init_info): Replace spin lock with UPC lock.
59         (gupcr_heap_region_alloc): Ditto.
60         (gupcr_heap_alloc): Ditto.
61         (gupcr_heap_free): Ditto.
62         * portals4/gupcr_lock_sup.h (gupcr_lock_heap_sup_init): Add external
63         definition.
64         * portals4/gupcr_lock_sup.c (gupcr_lock_init): Call the heap
65         allocation locks initialization.
66         * portals4/gupcr_slock.h: Delete.
67         * portals4/gupcr_slock.upc: Delete.
69 2012-11-08  Nenad Vukicevic  <nenad@intrepid.com>
71         * testsuite/lib/libgupc.exp: Set the "-B" option at the right
72         place so we support command that runs the tests on multiple
73         targets.  The previous version failed on building RPMs that
74         tested "unix,unix/-fstack-protector" targets.
76 2012-10-26  Nenad Vukicevic  <nenad@intrepid.com>
78         Place shared initialization code into the .text
79         section instead of a separate .upc_init section.
80         * config/default/upc-crt-config.h (UPC_INIT_SECTION_BEGIN):
81         Delete.
82         (UPC_INIT_SECTION_END): Delete.
83         * config/darwin/upc-crt-config.h: Ditto.
84         * upc-crtstuff.c: Remove declarations for .upc_init
85         section start/end.
87 2012-10-24  Nenad Vukicevic  <nenad@intrepid.com>
89         * smp/upc_main.c (__upc_monitor_threads): Allow for MPIR
90         debug connection while waiting for threads.  STAT requires
91         job launcher to periodically call MPIR_Breakpoint().  If
92         killpg() fails call exit() instead of abort to avoid recursion
93         in handling signals.
95 2012-10-24  Nenad Vukicevic  <nenad@intrepid.com>
97         * Makefile.am: Add more files for cleanup.
98         * Makefile.in: Regenerate.
99         * smp/upc_tick.c: Add proper casting for calculating
100           nanoseconds from sec/usec if gettimeofday() call was used.
102 2012-10-23  Nenad Vukicevic  <nenad@intrepid.com>
103             Gary Funck  <gary@intrepid.com>
105         Implement Portals4-based UPC runtime.
106         * configure.ac: Add a check for --with-upc-runtime=portals4.
107         Disable multilib when building libgupc for the portals4 based
108         UPC runtime.  Portals4 does not currently support
109         32-bit targets.  Implement additional UPC runtime configuration
110         switches, currently supported by the portals4 based UPC
111         runtime.  Check if the user has requested that 'doxygen'
112         design documentation generation is enabled.
113         * configure.tgt: Add portals4 library linker switches if
114         the portals4 based runtime has been enabled via a configure option.
115         * Makefile.am: Add make rules to build the portals4 based runtime
116         when enabled via a configuration option.
117         * aclocal.m4: Re-generate.
118         * config.h.in: Re-generate.
119         * configure: Re-generate.
120         * Makefile.in: Re-generate.
121         * testsuite/Makefile.in: Re-generate.
122         * ax_prog_doxygen.m4: New. Doxygen support.
123         * dox-filter-config-h: New. Doxygen support.
124         * doxygen-include.am: New. Doxygen support.
125         * doxygen.sty.in: New. Doxygen support.
126         * header.tex.in: New. Doxygen support.
127         * portals4/doxygen.cfg.in: New. Doxygen support.
128         * collectives/gen-upc-coll-reduce.pl: Add additional pattern
129         substitutions when expanding collectives customized for use
130         with portals.
131         * collectives/upc_coll_prefix_reduce.in: Ditto.
132         * collectives/upc_coll_reduce.in: Ditto.
133         * portals4/gcc-upc-lib.in: New.
134         * portals4/gupcr_access.c: New.
135         * portals4/gupcr_access.h: New.
136         * portals4/gupcr_addr.c: New.
137         * portals4/gupcr_alloc.h: New.
138         * portals4/gupcr_alloc.upc: New.
139         * portals4/gupcr_barrier.c: New.
140         * portals4/gupcr_barrier.h: New.
141         * portals4/gupcr_broadcast.c: New.
142         * portals4/gupcr_broadcast.h: New.
143         * portals4/gupcr_clock.c: New.
144         * portals4/gupcr_coll_broadcast.upc: New.  Collectives support
145         that uses portals4 collective operations.
146         * portals4/gupcr_coll_init.upc: New. Ditto.
147         * portals4/gupcr_coll_reduce.in: New. Ditto.
148         * portals4/gupcr_coll_reduce.upc: New. Ditto.
149         * portals4/gupcr_coll_sup.c: New. Ditto.
150         * portals4/gupcr_coll_sup.h: New. Ditto.
151         * portals4/upc_coll.h: New. Ditto.
152         * portals4/gupcr_config.h: New.
153         * portals4/gupcr_defs.h: New.
154         * portals4/gupcr_env.c: New.
155         * portals4/gupcr_gmem.c: New.
156         * portals4/gupcr_gmem.h: New.
157         * portals4/gupcr_lib.h: New.
158         * portals4/gupcr_lock_sup.c: New.
159         * portals4/gupcr_lock_sup.h: New.
160         * portals4/gupcr_lock.upc: New.
161         * portals4/gupcr_main.c: New.
162         * portals4/gupcr_mem.c: New.
163         * portals4/gupcr_node.c: New.
164         * portals4/gupcr_node.h: New.
165         * portals4/gupcr_node_mem_mmap.c: New.
166         * portals4/gupcr_node_mem_posix.c: New.
167         * portals4/gupcr_pgm_info.c: New.
168         * portals4/gupcr_portals.c: New.
169         * portals4/gupcr_portals.h: New.
170         * portals4/gupcr_pts.h: New.
171         * portals4/gupcr_runtime.c: New.
172         * portals4/gupcr_runtime.h: New.
173         * portals4/gupcr_shutdown.c: New.
174         * portals4/gupcr_shutdown.h: New.
175         * portals4/gupcr_slock.h: New.
176         * portals4/gupcr_slock.upc: New.
177         * portals4/gupcr_sup.h: New.
178         * portals4/gupcr_sync.h: New.
179         * portals4/gupcr_tick.c: New.
180         * portals4/gupcr_utils.c: New.
181         * portals4/gupcr_utils.h: New.
182         * testsuite/lib/libgupc-dg.exp: Build 'yod' command line
183         when running tests with the portals4 based UPC runtime.
184         * testsuite/lib/libgupc.exp: Add 'yod' switches
185         when running tests with the portals4 based UPC runtime.
187 2012-10-16  Nenad Vukicevic  <nenad@intrepid.com>
189         Add MCS lock implementation - fix for some 32 bit targets.
190         * Makefile.am (UPC_RUNTIME_SRC): Add upc_lock_sup.c file.
191         * Makefile.in: Regenerate.
192         * smp/upc_lock_sup.c: New. Provide 8 byte CSWAP for targets
193         that don't have it (PowerPC).
195 2012-10-15  Nenad Vukicevic  <nenad@intrepid.com>
197         Add MCS lock implementation.
198         * configure.ac: Add max number of locks held by a thread.
199         * configure: Regenerate.
200         * Makefile.am (UPC_RUNTIME_SRC): Add lock related new files.
201         Removed upc_lock.c.
202         * Makefile.in: Regenerate.
203         * config.h.in: Regenerate.
204         * smp/upc_defs.h: Remove definition of upc_lock_t (new
205         implementation has more fields that are lock implementation
206         specific). Remove alloc lock from the upc_info_p as UPC lock
207         is used to protect alloc routines.
208         * smp/upc_lock.c: Delete.
209         * smp/upc_lock.h: Add prototype for lock init routine.
210         * smp/upc_lock_sup.h: MCS lock support routines for
211         signalling, swap, and compare/swap.
212         * smp/upc_main.c (__upc_per_thread_init): Call lock init.
213           (GUPCR_START): Remove init of alloc lock.
214         * smp/upc_lock.upc: New. New MCS lock implementation.
216 2012-10-03  Gary Funck  <gary@intrepid.com>
218         * gen-inline-libgupc.pl: Add logic to check for //begin
219         directives with no matching end.
221 2012-10-02  nenad Vukicevic  <nenad@intrepid.com>
223         * configure.ac: Check for backtrace additional libraries only
224         if backtrace is enabled.
225         * configure: Regenerate.
226         * smp/upc_backtrace.c (__upc_backtrace): Change default trace
227         file to 'backtrace.THREAD-ID'.
228         (__upc_backtrace_init): Install backtrace signal handler only
229         if backtrace is enabled for faults.
230         (__upc_fault_handler): Do not announce signals, just restore
231         signals, print backtrace, and return.  This causes a signal to
232         be taken again, but this time monitor thread is informed.
233         (__upc_fatal_backtrace): No need to check env variable as signal
234         handler is conditionally installed.
236 2012-09-26  Gary Funck  <gary@intrepid.com>
238         * collectives/upc_coll_sort.upc: Remove reference to
239         deprecated upc_local_alloc function.
240         * configure.ac: Revert - do not restore saved LIBS value
241         when checking for librt.
242         * configure: Re-generate.
243         * include/upc.h (upc_all_free, upc_all_freeg, upc_all_lock_free,
244         upc_all_lock_freeg): New. Define collective de-allocation functions.
245         (upc_local_allocg, upc_local_alloc): Add "deprecated" attribute.
246         * include/upc_tick.h: New. Define wall/clock timer library functions.
247         * Makefile.am (include/upc_tick.h, smp/upc_tick.c): New.
248         * Makefile.in: Re-generate.
249         * smp/upc_allocg.upc (upc_all_freeg): New.
250         * smp/upc_alloc.upc (upc_local_alloc): Delete.
251         (upc_all_free): New.
252         * smp/upc_config.h: Include time-related system header files.
253         * smp/upc_libg.c (upc_all_lock_freeg): New.
254         * smp/upc_lib.h (upc_local_alloc): Delete prototype.
255         (upc_all_free, upc_all_lock_free): New prototype.
256         (upc_tick_t): New typedef.
257         (upc_ticks_now, upc_ticks_to_ns): New prototype.
258         * smp/upc_lock.c (upc_all_lock_free): New.
259         * smp/upc_tick.c: New.
261 2012-09-20  Nenad Vukicevic  <nenad@intrepid.com>
263         * smp/upc_main.c (__upc_monitor_threads): Install
264         SIGTERM handler for the monitor thread.  Use process
265         group (instead of PID) for killpg().  Announce child
266         KILL signal if upc global exit is not underway.
267         (__upc_sigterm_handler): New. Terminate the program on
268         SIGTERM to the monitor thread.
270 2012-09-04  Nenad Vukicevic  <nenad@intrepid.com>
272         Move MPIR related variables/functions into a separate file.
273         * Makefile.am (UPC_RUNTIME_SRC): Add upc_debug.c
274         * Makefile.in: Regenerate.
275         * smp/upc_main.c: Move MPIR specific variables into upc_debug.c.
276         (MPIR_Breakpoint): Delete. Move into upc_debug.c.
277         (MPIR_i_am_starter): Delete. Move into upc_debug.c.
278         (MPIR_ignore_queues): Delete. Move into upc_debug.c.
279         (MPIR_force_to_main): Delete. Move into upc_debug.c.
280         * smp/upc_debug.c: New. All MPIR related variables and procedures
281         are in this file now.
283 2012-09-04  Nenad Vukicevic  <nenad@intrepid.com>
285         Add backtrace logging into files.
286         * upc_backtrace.h (GUPCR_BACKTRACE_FILE_ENV): New. File prefix
287         for backtrace log file.
288         * upc_backtrace.c (__upc_backtrace): Save backtrace logs into the
289         file if environment variable UPC_BACKTRACEFILE is defined.  Do not
290         show traces above upc_main.
291         (__upc_backtrace_thread_map): Rename to __upc_backtrace_monitor.
292         (__upc_backtrace_monitor): If logging into files is specified, monitor
293         thread sends backtrace signal to all UPC threads.
295 2012-08-30  Nenad Vukicevic  <nenad@intrepid.com>
297         * upc_defs.h (upc_info_struct): Added host name and
298         flag for MPIR partial attach support.
299         * upc_main.c: Add MPIR_partial_attach_ok support.
300         (__upc_init): Set start flag for all threads based on
301         the debugging mode.  Initialize hostname in the info
302         structure.
303         (__upc_run_this_thread): Wait on start flag if necessary.
304         (__upc_run_threads): Release threads after MPIR_Breakpoint().
305         Set host_name and executable_name in the info structure.
306         (__upc_print_help_and_exit): Removed help for unused flag
307         -fupc-pthreads-per-process-N.
309 2012-08-29  Nenad Vukicevic  <nenad@intrepid.com>
311         * upc_backtrace.h (__upc_backtrace_restore_handlers): New.
312         Prototype.
313         * upc_backtrace.c (__upc_backtrace_restore_handlers): New.
314         Restore default signal handlers.
315         (__upc_backtrace_init): Install handlers for additional signals:
316         SIGABRT, SIGILL, SIGFPE, and SIGBUS.
317         (__upc_fault_handlers): Add handling of additional signals.
318         * upc_main.c (__upc_fatal): Restore default handlers before calling
319         backtrace and abort.
321 2012-08-28  Nenad Vukicevic  <nenad@intrepid.com>
323         * include/gcc-upc.h (upc_fence): Delete. Replaced with the
324         library specific definition in gcc-upc-lib.h
325         (__BERKELEY_UPC_RUNTIME__): Delete. Remove conditional compile
326         for upc_fence and upc_poll if compiled with the Berkeley
327         runtime as they are already provided in gcc-upc-lib.h.
328         * smp/gcc-upc-lib.in (upc_fence): Add.
329         * smp/upc_access.h (__upc_fence): Add prototype.
330         * smp/upc_access.c (__upc_fence): Add SMP upc_fence implementation.
332 2012-08-22  Nenad Vukicevic  <nenad@intrepid.com>
334         * upc_defs.h: Additianl clean-up related to the new barrier
335         implementation.
336         (upc_barrier_id_t): Delete.
337         (upc_barrier_info_t): Delete.
338         (upc_barrier_info_p): Delete.
339         (upc_info_t): Remove barrier from the upc info structure.
340         (__upc_barrier_id): New.
341         * upc_barrier.upc (__upc_barrier_id): Make it global.
342         * upc_backtrace.c (__upc_backtrace): Print barrier ID from the
343         new implementation.
345 2012-08-15  Nenad Vukicevic  <nenad@intrepid.com>
347         Add tree based barrier implementation for SMP-based UPC run-time.
348         * configure.ac: Add configuration for the barrier tree fanout.
349         Add checking for __sync_fetch_and_add built-in function.
350         * configure: Re-generate.
351         * config.h.in: Re-generate.
352         * Makefile.am (AM_UPCFLAGS): Added -fno-strict-aliasing
353         to prevent alias warning when converting from pointer-to-shared
354         into its internal representation.
355         (UPC_RUNTIME_SRC): Remove upc_barrier.c.
356         (UPC_RUNTIME_SRC): Add upc_barrier.upc.
357         * Makefile.in: Re-generate.
358         * smp/gcc-upc-lib.in: Add inclusion of atomic/spin_until code when
359         compiling inside the target library.  Replace lib_atomic_cas name
360         to lib_atomic to cover more then CAS atomic.
361         * smp/upc_barrier.c: Delete.
362         * smp/upc_barrier.upc: Add. A new tree based barrier implementation.
363         * smp/upc_config.h (INT_MIN): Make it available for inlined code
364         under int_min_max.
365         * smp/upc_main.c (__upc_per_thread_init): Add call to initialize
366         barrier implementation.
367         * smp/upc_sync.h (__upc_atomic_cas): Move from upc_sysdep.h.
368         (__upc_sync_fetch_and_add): New.
369         (__upc_spin_until): Move from upc_sysdep.h.
370         (__upc_num_cpus): Move from upc_sysdep.h.
371         * smp/upc_sysdep.h (__upc_atomic_cas): Delete.
372         (__upc_spin_until): Delete.
373         (__upc_num_cpus): Delete.
374         * smp/upc_sup.h (__upc_barrier_init): Add external definition.
375         (__upc_map_to_local): New.  Map shared pointer into local address.
377 2012-07-31  Nenad Vukicevic  <nenad@intrepid.com>
379         * configure.ac: Added help description for --with-bfd,
380         --with-bfd-include, and --with-bfd-lib.
381         * configure: Re-generate.
383 2012-07-31  Gary Funck  <gary@intrepid.com>
385         * configure.ac: Remove extra white space at end-of-line.
386         * Makefile.am: Ditto.
387         * Makefile.in: Re-generate.
389 2012-07-31  Gary Funck  <gary@intrepid.com>
391         * configure.ac: Improve diagnostics for options
392         that control UPC stack backtrace support.
393         * configure: Re-generate.
395 2012-07-31  Gary Funck  <gary@intrepid.com>
397         * configure.ac: Shorten long lines.  Improve the
398         consistency of first letter capitalization and
399         remove periods from all except AC_DEFINE's.
400         * acinclude.m4: Ditto.
401         * configure: Re-generate.
402         * config.h.in: Re-generate.
404 2012-07-14  Gary Funck  <gary@intrepid.com>
406         * acinclude.m4 (LIBGUPC_CHECK_SYNC_BUILTINS): Remove
407         set-but-not-used variable in the check for builtin sync. ops.
408         * configure: Re-generate.
410 2012-07-03  Gary Funck  <gary@intrepid.com>
412         * libgupc.texi: Include gpl_v3.texi instead of gpl.texi.
414 2012-06-09  Nenad Vukicevic  <nenad@intrepid.com>
416         * Makefile.am: Removed indented spaces on if/endif.
418 2012-06-08  Nenad Vukicevic  <nenad@intrepid.com>
419         
420         Add backtrace support for UPC SMP run-time.
421         * configure.ac: Added UPC backtrace configuration
422         options (--enable-upc-backtrace, --enable-upc-backtrace-gdb,
423         --with-upc-backtrace-gdb, --enable-upc-backtrace-signal,
424         --with_upc-backtrace-signal). Fix the check for 'gettime' to
425         save/restore libraries on the check line.
426         * configure: Regenerate.
427         * config.h.in: Regenerate.
428         * Makefile.am (AM_CPPFLAGS): Add include path for bfd.h.
429         (UPC_RUNTIME_SRC): Add new source files for backtrace.
430         (UPC_BACKTRACE_SUP): New.
431         * Makefile.in: Regenerate.
432         * testsuite/Makefile.in: Regenerate.
433         * configure.tgt (LIBS): Added options for linking with libbfd,
434         libdl. Added -export-dynamic if -rdynamic option is supported.
435         * smp/upc_backtrace.h: New. Backtrace API.
436         * smp/upc_backtrace.c: New. Backtrace support functions.
437         * smp/upc_backtrace_sup.c: New.  Source file/line search support
438         functions.
439         * smp/upc_main.c (__upc_fatal): Added call to backtrace.
440         (__upc_monitor_threads): Added code to continue monitoring threads
441         if the wait() was interrupted by a signal (e.g. backtrace request
442         signal).
443         * smp/upc_sysdep.h (__upc_create_temp_file): Add prototype.
444         * smp/upc_sysdep.c (__upc_create_temp_file): Made public.
446 2012-05-19  Gary Funck  <gary@intrepid.com>
448         * smp/upc_main.c (__upc_per_thread_init):
449         Change the declaration of GUPCR_INIT_ARRAY_START
450         and GUPCR_INIT_ARRAY_END so that the optimizer does
451         not conclude that the per-thread initialization procedure table
452         has only a single element.
454 2012-05-04  Nenad Vukicevic  <nenad@intrepid.com>
456         * configure.ac: Check for gupc driver only.
457         Use gupc driver instead of xgupc. Add -fno-upc-pre-include
458         on the command line to prevent inclusion of gcc-upc.h
459         * configure: Regenerate.
460         * Makefile.am (AM_CPPFLAGS): Add -isystem option to
461         allow compiler to find upc.h.
462         * Makefile.in: Regenerate.
463         * include/upc.h (upc_global_lock_alloc): Fix prototype.
464         (upc_all_lock_alloc): Fix prototype.
465         * include/upc_collective.h (upc_coll_init): Fix prototype.
466         * testsuite/lib/libgupc.exp: Added appropriate options to
467         compile the tests with gupc from the build tree.
469 2012-05-02  Nenad Vukicevic  <nenad@intrepid.com>
471         Add memory fence to the low level lock support routines
472         that are called for multiple places in the run-time.
473         * smp/upc_sysdep.c (__upc_acquire_lock): Add a memory fence
474         once lock is acquired.
475         (__upc_try_acquire_lock): Add a memory fence is lock is
476         acquired.
477         (__upc_release_lock): Add a memory fence before releasing
478         the lock.
479         * smp/upc_lock.c (upc_lock): Remove memory fence.
480         (upc_lock_attempt): Ditto.
481         (upc_unlock): Ditto.
483 2012-04-30  Nenad Vukicevic  <nenad@intrepid.com>
485         * testsuite/libgupc.upc/upc.exp: Use '-fupc-threads'
486         option instead of '-n' as the new GUPC driver does not
487         support it.
489 2012-04-16  Nenad Vukicevic  <nenad@intrepid.com>
491         * smp/upc_lock.c (upc_lock): Adding a fence as per the
492         language specification.  This also forces the processor to
493         discard all speculaive memory fetches.
494         (upc_lock_attempt): Ditto.
495         (upc_ulock): Ditto.
497 2012-04-13  Nenad Vukicevic  <nenad@intrepid.com>
499         * smp/upc_sync.h (GUPCR_WRITE_FENCE): Change write fence
500         for PPC processors to use light weight sync instruction.
501         * smp/upc_sysdep.c (__upc_atomic_get_bit): Introduce a read barrier
502         to force processor to discard all speculative memory fetches.
504 2012-03-26  Nenad Vukicevic  <nenad@intrepid.com>
506         * testsuite/lib/libgupc.exp: Added fortran-modules.exp
507         for explicit load from the gcc testsuite directory. It is
508         a required file for gcc-dg.exp.
510 2012-02-02  Nenad Vukicevic  <nenad@intrepid.com>
512         * Makefile.am: Prevent install from adding suffix to the
513         link script (gupc.ld).
514         (toolexeclib_SCRIPTS) remove upc link script.
515         (nodist_toolexeclib_HEADERS) add upc link script.
516         * Makefile: Regenerate.
517         * configure: Regenerate.
519 2012-01-24  Nenad Vukicevic  <nenad@intrepid.com>
521         * smp/upc_pgm_info.c (__upc_validate_pgm_info): Fix the error
522         where the very first entry on the compiled thread info list is
523         not checked.
525 2012-01-09  Gary Funck  <gary@intrepid.com>
527         * smp/upc_pgm_info.c (__upc_validate_pgm_info):  Ignore intervening
528         null bytes in the UPC program information section, to ensure that
529         all configuration information strings are processed.  Allow
530         static THREADS compilations to be mixed with dynamic THREADS
531         compilations as long as the static THREADS values all match.
533 2011-12-19  Nenad Vukicevic  <nenad@intrepid.com>
535         Improve handling of shared pointer vaddr field. Make sure
536         that upc_addrfield() always returns an offset of the shared variable
537         from the beginning of the shared section.
538         * smp/upc_pts.h (GUPCR_PTS_VADDR): Macro definition returns the
539         offset of the shared variable in the shared section.
540         (GUPCR_PTS_SET_VADDR): Macro definition accepts the offset of the
541         shared variable in the shared section and sets the value of the
542         vaddr: offset for packed pts rep, address for struct pts rep.
543         * smp/upc_main.c (__upc_init): Adjust the argument for setting of
544         pointer-to-shared vaddr field.
545         * smp/upc_alloc.upc: Adjust the argument for building a
546         pointer-to-shared to the offset of the shared variable in the
547         shared section.
549 2011-12-17  Nenad Vukicevic  <nenad@intrepid.com>
551         * configure.ac: Remove erroneous check for enable_shared. Build
552         libgupc only as a static library as shared data sections from
553         all the UPC compilations must be combined into a single
554         contiguous section.
555         * configure.tgt: Always include the necessary libraries required by
556         libgupc on the command line. This is necessary as we don't build
557         libgupc as a dynamic link library.
558         * configure: Re-generate.
560 2011-11-19  Gary Funck  <gary@intrepid.com>
562         * smp/upc_sync.h (GUPCR_WRITE_FENCE, GUPCR_READ_FENCE):
563         For powerpc, also check __PPC__ pre-processor definition,
564         as 'PPC' is apparently not defined on 64-bit PPC targets.
565         * smp/upc_sysdep.c (__upc_atomic_cas): Implement as external
566         procedure only if builtin compare-and-swap is unavailable.
567         * smp/upc_sysdep.h (__upc_atomic_cas): Ditto.
569 2011-11-09  Nenad Vukicevic  <nenad@intrepid.com>
571         * config/default/upc-crtstuff.mak (ALL_CRT_CFLAGS): Remove
572         $(INCLUDES) as it might contain relative include paths that
573         are not correct for current build directory.
574         (GCC_SRCDIR_INC): Rename from GCC_SRCDIR_CONF_INC.  Added necessary
575         include paths to build in the current libgupc build directory.
577 2011-10-27  Nenad Vukicevic  <nenad@intrepid.com>
579         * smp/upc_sup.h (__upc_sptr_to_addr): Fixed the warning where
580           'void *' type was used in arithmetic.
581         * smp/upc_mem.h (__upc_memget): Ditto.
582         * (__upc_memput): Ditto.
584 2011-10-27  Nenad Vukicevic  <nenad@intrepid.com>
586         * upc-crtstuff.c: Remove unnecessary includes that caused
587         multiple defined warnings.
589 2011-10-26  Gary Funck  <gary@intrepid.com>
591         Rename "GCC/UPC" to "GNU UPC", "UPC" to "GUPC", and
592         "libupc" to "libgupc".
593         * top-level/libgupc: rename from libupc.
594         * configure.ac: Change "GCC UPC" references to "GNU UPC".
595         Change "libupc" references to "libgupc".  Change "xupc" references
596         to "xgupc".  Change "upc-cmd" references to "gupc".
597         Change "gen-gccupc-ld-script.pl" references to "gen-upc-ld-script.pl".
598         Change "libupc.spec" references to "libgupc.spec".
599         * configure: Re-generate.
600         * Makefile.am: Change "libupc" references to "libgupc".
601         * Makefile.in: Re-generate.
602         * config.h.in: Adjust for rename of libupc to libgupc.
603         * configure.tgt: Ditto.
604         * acinclude.m4: Ditto.
605         * gen-inline-libgupc.pl: Re-name from gen-gccupc-inline-lib.pl
606         Change "GCC/UPC" to "GUPC".
607         * gen-upc-ld-script.pl: Re-name from gen-gccupc-ld-script.pl.
608         * libgupc.texi: Re-name from libupc.texi.
609         * libgupc.spec.in: Re-name from libupc.spec.in.
610         * smp/upc_pgm_info.c (__upc_validate_pgm_info): Change "GCC/UPC"
611         references to "GUPC".
612         * smp/upc_main.c (__upc_run_threads): Ditto.
613         * smp/upc_gasp.c: Ditto.
614         * smp/upc_sysdep.h: Ditto.
615         * testsuite/lib/libgupc-dg.exp: Re-name form libupc-dg.exp.
616         * testsuite/lib/libgupc.exp: Re-name from libupc.a.
617         * testsuite/libgupc.upc: Re-name from libupc.upc.
619 2011-10-18  Nenad Vukicevic  <nenad@intrepid.com>
621         Fix support for large file support on 32-bit machines.
623         * smp/upc_config.h: Move inclusion of 'config.h' to the top
624         of the include list. This allows all system include files
625         to see definition of _FILE_OFFSET_BITS=64 that enables large
626         file support.
628 2011-10-02  Gary Funck  <gary@intrepid.com>
630         Move the collectives library sources into their own directory
631         and add support for additional runtime implementation models.
632         * collectives/gen-upc-coll-reduce.pl: Moved from 'smp' directory.
633         * collectives/upc_coll_broadcast.upc: Ditto.
634         * collectives/upc_coll_err.upc: Ditto.
635         * collectives/upc_coll_exchange.upc: Ditto.
636         * collectives/upc_coll_gather_all.upc: Ditto.
637         * collectives/upc_coll_gather.upc: Ditto.
638         * collectives/upc_coll.h: Ditto.
639         * collectives/upc_coll_init.upc: Ditto.
640         * collectives/upc_coll_permute.upc: Ditto.
641         * collectives/upc_coll_prefix_reduce.in: Ditto.
642         * collectives/upc_coll_prefix_reduce.upc: Ditto.
643         * collectives/upc_coll_readme.txt: Ditto.
644         * collectives/upc_coll_reduce.in: Ditto.
645         * collectives/upc_coll_reduce.upc: Ditto.
646         * collectives/upc_coll_scatter.upc: Ditto.
647         * collectives/upc_coll_sort.upc: Ditto.
648         * smp/gcc-upc-lib.in: Moved from 'include' directory.
649         * gen-gccupc-inline-lib.pl: Moved from 'smp' directory.
650         * gen-gccupc-ld-script.pl: Ditto.
651         * configure.ac: Implement support for additional runtime
652         models. (Currently, only 'smp' is supported.)
653         Build the collectives library from sources in the
654         collectives directory.
655         * Makefile.am: Likewise.
656         * configure: Re-generate.
657         * config.h.in: Re-generate.
658         * Makefile.in: Re-generate.
660 2011-09-30  Gary Funck  <gary@intrepid.com>
662         Generalize collectives library to support indefinite block sizes.
663         * smp/upc_coll_prefix_reduce.in: If 'blk_size' is zero, then set it
664         to 'nelems'.
665         * smp/upc_coll_reduce.in: Ditto.
666         * smp/upc_coll_prefix_reduce.upc: Re-generate.
667         * smp/upc_coll_reduce.upc: Re-generate.
669 2011-09-19  Gary Funck  <gary@intrepid.com>
671         * libupc/smp/upc_access.c (__getstf2, __getsxf2):
672         Define temporary as "long double" rather than "double" to avoid
673         loss of precision.
674         * testsuite/libupc.upc/intrepid/test29.upc: Improve the test of
675         "long double" by adding checks that required accuracy
676         exceeds the accuracy of "double".
678 2011-09-02  Gary Funck  <gary@intrepid.com>
680         Align UPC pointers-to-shared, only if the target enforces
681         strict alignment.
682         * configure.ac: Derive GUPCR_PTS_ALIGN from __UPC_PTS_ALIGN__,
683           if present.  Define GUPCR_PTS_ALIGN as a config.h variable.
684         * smp/upc_pts.h (GUPCR_PTS_ALIGN): Use only if defined.
685         * config.h.in: Re-generate.
686         * configure: Re-generate.
688 2011-08-23  Nenad Vukicevic  <nenad@intrepid.com>
690         * configure.ac: Enable detection of large file support on
691           32-bit machines.
692         * configure: Re-generate.
693         * config.h.in: Added define for large file support on 32-bit
694           machines.
695         * smp/upc_config.h: Limit number of VM pages to the number
696           of configured VADDR bits.
697         * smp/upc_sup.h: Prototype change.
698         * smp/upc_vm.c (__upc_vm_alloc): Return an error if no
699           more virtual pages can be allocated.
700           (__upc_vm_alloc): Abort if initial number of VM pages cannot
701           be allocated.
702           (__upc_vm_get_cur_page_alloc): Check for error before NUMA
703           memory region mapping.
704         * smp/upc_alloc.upc (__upc_global_heap_alloc): Return NULL pointer
705           if VM pages cannot be allocated.
706           (__upc_local_alloc): Return NULL pointer if memory is not available.
708 2011-08-16  Gary Funck  <gary@intrepid.com>
710         * smp/upc_barrier.c (__upc_notify, __upc_wait):
711           Improve error messages.
713 2011-08-10  Gary Funck  <gary@intrepid.com>
715         Define UPCFLAGS so that it is available in the Makefile,
716         and assign CFLAGS as its default value.
718         * configure.ac (UPCFLAGS): Default to CFLAGS if not set.
719           (UPCFLAGS): Make it an AC_SUBST() so that it can
720           be referenced in the Makefile.
721         * Makefile.am (AM_UPCFLAGS): Make sure that it is update
722           the same as AM_CFLAGS.
723         * configure, Makefile.in: Re-generate.
725 2011-06-06  Nenad Vukicevic  <nenad@intrepid.com>
727         * smp/upc_config.h: Change default scheduling policy.
728           Allow the kernel to schedule UPC threads on its own.
730 2011-05-17  Gary Funck  <gary@intrepid.com>
732         * configure.ac (GUPCR_PTS_VADDR_FIELD,
733           Delete unused definitions.
734           configure: Regenerate.
736         * smp/upc_pts.h (GUPCR_PTS_THREAD_FIELD,
737           GUPCR_PTS_PHASE_FIELD): Delete unused definitions
738           and references.
740         * config.h.in (GUPCR_PTS_THREAD_FIELD,
741           GUPCR_PTS_PHASE_FIELD): Delete unused definitions
742           and references.
744         * upc-crtstuff.c: Delete include of "upc-conf.h".
746 2011-05-03  Gary Funck  <gary@intrepid.com>
748         * smp/upc_alloc.upc (__upc_global_heap_alloc,
749           upc_free): Remove extraneous FIXME/TODO comments.
751 2011-05-01  Gary Funck  <gary@intrepid.com>
753         * configure.ac (upc_crtstuff_mak): New AC_SUBST variable.
754         * configure.tgt (upc_crtstuff_mak): Find upc-crtstuff.mak
755           on $config_path.
756         * Makefile.am (upc_crtstuff_mak): Set make variable to value
757           of configured AC_SUBST value.  This eliminates an automake
758           error caused by a nested 'if' statement.
759         * configure, Makefile.in, testsuite/Makefile.in: Regenerate.
761 2011-04-13  Gary Funck  <gary@intrepid.com>
763         * testsuite/lib/libupc.exp (ALWAYS_CFLAGS):
764           Remove -lupc from required default switches.
765           The appropriate library is selected by the
766           libupc.spec file.
768 2011-03-22  Gary Funck  <gary@intrepid.com>
770         * configure.tgt: Move linker switches into libupc.spec.
772 2011-03-20  Gary Funck  <gary@intrepid.com>
774         Place error message strings directly into the calls to
775         __upc_fatal(), rather than listing them separately
776         as #define's.  The intent of this change is to make
777         it easier to internationalize the message text
778         using standard tools.
780         * include/gcc-upc-lib.in: Remove include of lib_config_msgs
781           named code segment.
783         * smp/upc_config.h: Remove #define's used to provide named
784           references to error messages.
786         * smp/upc_lock.c, smp/upc_numa.c, smp/upc_access.c,
787           smp/upc_vm.c, smp/upc_main.c, smp/upc_alloc.upc,
788           smp/upc_sysdep.c, smp/upc_affinity.c, smp/upc_addr.c,
789           smp/upc_mem.h, smp/upc_barrier.c: Replace named references
790           with actual error message text strings.
792 2011-03-20  Gary Funck  <gary@intrepid.com>
794         Move UPC start files, end files, and linker specs.
795         into libupc.  This reduces the impact on common GCC
796         configuration files, and ensures that these UPC-specific
797         components are only built when the UPC language dialect is built.
799         * upc-crtstuff.c: New file. Moved from gcc/upc/upc-crtstuff.c.
801         * config/darwin/upc-crt-config.h: New file. Move defines for
802           UPC-related section begins/ends from gcc/config/darwin.h to here.
804         * config/default/upc-crt-config.h: New file. Move defines for
805           UPC-related section begins/ends from gcc/config/upc-conf.h to here.
807         * config/default/upc-crtstuff.mak: New file. Default makefile fragment for
808           building the upc-crtbegin and upc-crtend object files.
809           This logic was moved from libgcc/Makefile.in to here.
811         * config.h.in: Regenerate with autoheader.  Rename HAVE_GUM_DEBUG
812           to GUPCR_HAVE_GUM_DEBUG.  Add define for HAVE_UPC_LINK_SCRIPT.
814         * configure.ac, configure: Include new configure.tgt script
815           towards the end of the logic that configures the smp runtime.
816           Define substitutions for 'config_path', 'XCFLAGS',
817           'XLDFLAGS', 'link_upc_spec', 'upc_crtbegin_spec',
818           'upc_crtend_spec', 'upc_crtstuff_objs'. Add LIBUPC_CRTSTUFF
819           automake conditional.  Fix copyright date in AM_TOP() comment.
820           Define upc-crtbegin.spec libupc.spec upc-crtend.spec as
821           autoconf generated config. files.  Regenerate 'configure'.
823         * configure.tgt: New. Target-specific configuration logic.
824           Defines 'config_path', 'upc_crtstuff', 'upc_crtbegin_spec',
825           'upc_crtend_spec', 'upc_crtstuff_objs' variables; these are used
826           to control the build of the UPC-related begin/end files
827           and associated target-specific compiler specification files.
829         * libupc.spec.in, upc-crtbegin.spec.in, upc-crtend.spec.in: New.
830           Define target-specific compiler specifications for linking
831           and for inclusion of UPC-related start/end object files
832           when a UPC program is linked.  These files are used
833           to create resulting .spec files that are included via
834           GCC's link spec. when a UPC program is linked.
836         * Makefile.am: Add rules to build and install upc-crtbegin.spec,
837           libupc.spec, and upc-crtend.spec from there .in files.
838           Add rules to build the UPC-specific start/end files if the
839           automake conditional LIBUPC_CRTSTUFF is enabled.
840           Fix references to make variables $(UPC_COLL_PREFIX_REDUCE_UPC)
841           and $(UPC_COLL_REDUCE_UPC) in MAINTAINER_MODE block.
843         * Makefile.in, testsuite/Makefile.in: Regenerate with automake.
845         * smp/Make-defs, smp/Make-deps, smp/Make-rules: Remove.
846           These Makefile fragments have not been used since libupc
847           was re-worked to use automake (when the gupc branch
848           was first checked in).
850         * smp/upc_config.h: Move the defintions of GUPCR_INIT_ARRAY_START
851           and GUPCR_INIT_ARRAY_END from smp/upc_main.c to here.
853         * smp/upc_main.c: Rename HAVE_GUM_DEBUG to GUPCR_HAVE_GUM_DEBUG.
854           Move the defintions of GUPCR_INIT_ARRAY_START and
855           GUPCR_INIT_ARRAY_END to smp/upc_config.h.
857 2011-02-22  Gary Funck  <gary@intrepid.com>
859         * include/gcc-upc.h (barrier, barrier_notify, barrier_wait,
860           forall, fence): Remove #define's that renamed these deprecated
861         UPC keywords into their equivalents in the current UPC
862         language specification.
864 2011-02-08  Gary Funck  <gary@intrepid.com>
866         * acinclude.m4, configure.ac, include/gasp.h,
867           include/gasp_upc.h, include/gcc-upc.h, include/gcc-upc-lib.in,
868           include/pupc.h, include/upc_collective.h, include/upc.h,
869           include/upc_relaxed.h, include/upc_strict.h, libupc.texi,
870           smp/upc_access.c, smp/upc_accessg.c, smp/upc_access.h,
871           smp/upc_addr.c, smp/upc_affinity.c, smp/upc_affinity.h,
872           smp/upc_affinity_stub.c, smp/upc_allocg.upc,
873           smp/upc_alloc.upc, smp/upc_barrier.c, smp/upc_config.h,
874           smp/upc_debug.h, smp/upc_defs.h, smp/upc_gasp.c, smp/upc_gum.c,
875           smp/upc_libg.c, smp/upc_lib.h, smp/upc_lock.c, smp/upc_main.c,
876           smp/upc_mem.c, smp/upc_mem.h, smp/upc_numa.c, smp/upc_numa.h,
877           smp/upc_numa_stub.c, smp/upc_pgm_info.c, smp/upc_pts.h,
878           smp/upc_pupc.c, smp/upc_pupc.h, smp/upc_sup.h, smp/upc_sync.h,
879           smp/upc_sysdep.c, smp/upc_sysdep.h, smp/upc_vm.c:
880         Update copyright notices.
882 2010-10-18  Gary Funck  <gary@intrepid.com>
884         * smp/upc_alloc.upc: upc_alloc.upc: remove pointer arithmetic on
885           (shared void *) types.
887           Now that GCC/UPC prohibits arithmetic on "(shared void *)" types,
888           re-work the logic in upc_alloc.upc to avoid operating directly on
889           "(shared void *)" type.
891 2010-10-16  Gary Funck  <gary@intrepid.com>
893         * smp/upc_main.c: Fix comment format.
895 2010-10-16  Gary Funck  <gary@intrepid.com>
897         * smp/: upc_access.c, upc_access.h, upc_accessg.c: Implement fixes
898           for SGI/IRIX/MIPS port.
900           The gcc/Makefile.in rules for install-plugin had to be re-written to
901           break up a long list of header files that exceeded the command line
902           limitation imposed by Irix.
904           Access functions for TFmode types had to be implemented.
905           Apparently, this is the mode used for the SGI/MIPS port to represent
906           "long float".
908           See also: gcc/Makefile.in libupc/smp/upc_access.c
909           libupc/smp/upc_access.h libupc/smp/upc_accessg.c
911 2010-10-16  Nenad Vukicevic  <nenad@intrepid.com>
913         * include/gcc-upc.h, smp/upc_main.c: Fix rand() implementation for
914           pthreads run-time.
916           For the pthreads implementation we keep a per-thread random seed
917           number.  This way, calls to rand() function will return the same
918           value on each thread.
920           rand() and srand() functions are redefined as __upc_random and
921           __upc_srandom.
923 2010-10-10  Gary Funck  <gary@intrepid.com>
925         * include/upc_collective.h, smp/gen-upc-coll-reduce.pl,
926           smp/upc_coll_prefix_reduce.upc, smp/upc_coll_reduce.upc:
927           Implement collectives on "long double" objects.
929           See also: libupc/include/upc_collective.h
930           libupc/smp/gen-upc-coll-reduce.pl
931           libupc/smp/upc_coll_prefix_reduce.upc libupc/smp/upc_coll_reduce.upc
933 2010-10-09  Gary Funck  <gary@intrepid.com>
935         * smp/: upc_access.c, upc_access.h, upc_accessg.c: Implement shared
936           access to "long float" data type.
938           See also: libupc/smp/upc_access.c libupc/smp/upc_access.h
939           libupc/smp/upc_accessg.c
941 2010-09-24  Gary Funck  <gary@intrepid.com>
943         * smp/upc_main.c: Fix bug: Failure to initialize per-thread
944           static variables that refer to shared addresses.
946           The shared data initialization routine created by the compiler needs
947           to be called on each threead, because in some cases it will
948           initialize per thread data.  At the moment, the compiler does not
949           generate code that will differentiate between initialization code
950           that should only occur on thread 0, so some additional work may get
951           done.  In the future, that aspect of initialization will be
952           corrected.
954 2010-09-22  Gary Funck  <gary@intrepid.com>
956         * include/gcc-upc-lib.in, include/upc.h, smp/upc_main.c:
957           Fix bug: Nested upc_forall() semantics are not implemented
959           The checkforall test in the Berkeley harness test suite indicated
960           that GCC/UPC was not properly implementing nested upc_forall
961           semantics.  Nested upc_forall statements (both statically or
962           dynamically nested) must implement their affinity clause as if it
963           were "continue"; thus all steps in the loop must execute without
964           regard for affinity.  To implement these semantics a global depth
965           counter, __upc_forall_depth, is maintained by the generated code
966           that implements upc_forall.
968           See also: gcc/c-parser.c gcc/c-tree.h gcc/stub-upc.c
969           gcc/upc/upc-act.c gcc/upc/upc-act.h libupc/include/gcc-upc-lib.in
970           libupc/include/upc.h libupc/smp/upc_main.c
972 2010-09-18  Gary Funck  <gary@intrepid.com>
974         * Makefile.in, config.h.in, configure, configure.ac, include/upc.h,
975           smp/Make-defs, smp/upc_accessg.c, smp/upc_allocg.upc,
976           smp/upc_defs.h, smp/upc_libg.c, smp/upc_main.c, smp/upc_sup.h:
977           Implement -fupc-debug switch.
979 2010-02-28  Gary Funck  <gary@intrepid.com>
981         Initial implementation and checkin.