This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Build fail on gthr-simple.h targets (Re: AsyncI/O patch committed)


Hi Andre,

sorry that it took so long for a fix. I am on holiday at the moment, so my hacking environment is somewhat restricted.

Expect a combined patch for async I/O which we expect to work for pthreads targets and which should not disturb others today or tomorrow.

I would appreciate testing on critical systems.

Regards

Thomas

> Am 31.07.2018 um 09:45 schrieb Andre Vieira (lists) <Andre.SimoesDiasVieira@arm.com>:
> 
>> On 27/07/18 13:25, David Edelsohn wrote:
>> Thomas,
>> 
>> Correct, the proposed patch does not fix the build failure on AIX.
>> 
>> Please see the information on the GCC Compile Farm wiki page for
>> instructions to bootstrap on gcc119.
>> https://gcc.gnu.org/wiki/CompileFarm#Projects_Ideas - at the bottom of
>> Project ideas.
>> 
>> Thanks, David
>>> On Fri, Jul 27, 2018 at 3:30 AM Thomas Koenig <tkoenig@netcologne.de> wrote:
>>> 
>>>> Am 26.07.2018 um 22:54 schrieb Thomas Koenig:
>>>> Hi Ulrich,
>>>> 
>>>>> The problem is that io/asynch.h unconditionally uses a couple of
>>>>> features that are not provided by gthr-simplex, in particular
>>>>>   __gthread_cond_t
>>>>> and
>>>>>   __gthread_equal / __gthread_self
>>>>> 
>>>>> According to the documentation in gthr.h, the former is only available
>>>>> if __GTHREAD_HAS_COND is defined, and the latter are only available if
>>>>> __GTHREADS_CXX0X is defined.  Neither is true for gthr-simple.h.
>>>> 
>>>> Thanks for the analysis, and the pointer to the macros.
>>>> 
>>>> Because the functionality depends on these features, it is best to
>>>> remove them if it is not present. So, here is a patch which does
>>>> just that.
>>>> 
>>>> This was reg-tested on Linux, which showed that the functionality is
>>>> still there. I tried bootstrapping on AIX on gcc119, but this failed
>>>> due to an unrelated issue (problem with compiling the inline
>>>> libraries).
>>>> 
>>> 
>>> OK, this does not work.
>>> 
>>> We have found a method of checking on Linux, and this does not work.
>>> We have also found a way of working in the next couple of days, so
>>> expect an update in one or two days.
>>> 
>>> If that is too much time, feel free to revert the async patch
>>> in the meantime.
>>> 
>>> Regards
>>> 
>>>        Thomas
>> 
> Hi Thomas,
> 
> Sorry but I had to revert your patch as it has been breaking our
> bare-metal builds for over 5 days now.
> 
> Comitted as r263082.
> 
> 
> 2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>
> 
>    Reverted 'AsyncI/O patch committed'
>    2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
>        Thomas Koenig <tkoenig@gcc.gnu.org>
> 
>        PR fortran/25829
>        * gfortran.texi: Add description of asynchronous I/O.
>        * trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables
>        as volatile.
>        * trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to
>        st_wait_async and change argument spec from ".X" to ".w".
>        (gfc_trans_wait): Pass ID argument via reference.
> 
>    Reverted 'AsyncI/O patch committed'
>    2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
>        Thomas Koenig <tkoenig@gcc.gnu.org>
> 
>        PR fortran/25829
>        * gfortran.dg/f2003_inquire_1.f03: Add write statement.
>        * gfortran.dg/f2003_io_1.f03: Add wait statement.
> 
>    Reverted 'AsyncI/O patch committed'
>    2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
>        Thomas Koenig <tkoenig@gcc.gnu.org>
> 
>        PR fortran/25829
>        * Makefile.am: Add async.c to gfor_io_src.
>        Add async.h to gfor_io_headers.
>        * Makefile.in: Regenerated.
>        * gfortran.map: Add _gfortran_st_wait_async.
>        * io/async.c: New file.
>        * io/async.h: New file.
>        * io/close.c: Include async.h.
>        (st_close): Call async_wait for an asynchronous unit.
>        * io/file_pos.c (st_backspace): Likewise.
>        (st_endfile): Likewise.
>        (st_rewind): Likewise.
>        (st_flush): Likewise.
>        * io/inquire.c: Add handling for asynchronous PENDING
>        and ID arguments.
>        * io/io.h (st_parameter_dt): Add async bit.
>        (st_parameter_wait): Correct.
>        (gfc_unit): Add au pointer.
>        (st_wait_async): Add prototype.
>        (transfer_array_inner): Likewise.
>        (st_write_done_worker): Likewise.
>        * io/open.c: Include async.h.
>        (new_unit): Initialize asynchronous unit.
>        * io/transfer.c (async_opt): New struct.
>        (wrap_scalar_transfer): New function.
>        (transfer_integer): Call wrap_scalar_transfer to do the work.
>        (transfer_real): Likewise.
>        (transfer_real_write): Likewise.
>        (transfer_character): Likewise.
>        (transfer_character_wide): Likewise.
>        (transfer_complex): Likewise.
>        (transfer_array_inner): New function.
>        (transfer_array): Call transfer_array_inner.
>        (transfer_derived): Call wrap_scalar_transfer.
>        (data_transfer_init): Check for asynchronous I/O.
>        Perform a wait operation on any pending asynchronous I/O
>        if the data transfer is synchronous. Copy PDT and enqueue
>        thread for data transfer.
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]