On Thu, Jan 08, 2026 at 09:42:53PM +0100, Thomas Koenig wrote:
> Am 08.01.26 um 16:56 schrieb Hans-Peter Nilsson:
> > > From: Hans-Peter Nilsson <[email protected]>
> > > Date: Thu, 8 Jan 2026 09:01:56 +0100
> > 
> > > That appears to do it!  With your "p3a.diff" patch applied
> > > to r16-6514 (i.e. in place of the faulty r16-6515), build is
> > > restored for cris-elf.  Test-results are not yet ready.
> > 
> > Test results are clean at r16-6514 + p3a.diff (i.e. no
> > regressions compared to r16-6514).  Thanks again for the
> > fix, I hope it gets committed soon.
> 
> Committed as r16-6586-gd5964a270de33349ff137b1835046e65ec81fa1e
> (this may be pushing obvious and simple for a bit, but I did want
> to get this out of the way as fast as possible).
> 
> Sorry for breaking bootstrap, and thanks a lot for the help!
> 

Unfortunately, it is still broken. (unit)->self has a type
of __gthread_t, which appears to be mapped to pthread_t
on FreeBSD, which is a struct pthread *.  

In file included from ../../../gcc/libgfortran/io/unit.c:30:
../../../gcc/libgfortran/io/unit.c: In function 'insert_unit':
../../../gcc/libgfortran/io/async.h:396:18: error: assignment to '__gthread_t' 
{aka 'struct pthread *'} from 'int' makes pointer from integer without a cast 
[-Wint-conversion]
  396 |     (unit)->self = 1;                                           \
      |                  ^
../../../gcc/libgfortran/io/unit.c:250:3: note: in expansion of macro 'LOCK_UNI'
  250 |   LOCK_UNIT (u);
      |   ^~~~~~~~~
../../../gcc/libgfortran/io/unit.c: In function 'check_for_recursive':
../../../gcc/libgfortran/io/async.h:436:13: error: assignment to 'int' from 
'__gthread_t' {aka 'struct pthread *'} makes integer from pointer without a 
cast [-Wint-conversion]
  436 |         res = (unit)->self;                                     \
      |             ^
../../../gcc/libgfortran/io/unit.c:366:19: note: in expansion of macro 
'TRYLOCK_UNIT'
  366 |               if (TRYLOCK_UNIT(p))
      |                   ^~~~~~~~~~~~
../../../gcc/libgfortran/io/async.h:437:22: error: assignment to '__gthread_t' 
{aka 'struct pthread *'} from 'int' makes pointer from integer without a cast 
[-Wint-conversion]
  437 |         (unit)->self = 1;                                       \
      |                      ^
../../../gcc/libgfortran/io/unit.c:366:19: note: in expansion of macro 
'TRYLOCK_ UNIT'                                                                 
           
  366 |               if (TRYLOCK_UNIT(p))                                      
 
      |                   ^~~~~~~~~~~~                                          
 
../../../gcc/libgfortran/io/async.h:558:66: error: pointer/integer type 
mismatch  in conditional expression [-Wint-conversion]                          
          
  558 | #define OWN_THREAD_ID (__gthread_active_p () ? __gthread_self () : 1)   
 
      |                                                                  ^      
 
../../../gcc/libgfortran/io/unit.c:373:71: note: in expansion of macro 
'OWN_THRE AD_ID'                                                                
           
  373 |                   if (__atomic_load_n (&p->self, __ATOMIC_RELAXED) == 
OW N_THREAD_ID)
      |                                                                       
^~ ~~~~~~~~~~~
../../../gcc/libgfortran/io/unit.c: In function 'get_gfc_unit':                 
 
../../../gcc/libgfortran/io/async.h:436:13: error: assignment to 'int' from 
'__g thread_t' {aka 'struct pthread *'} makes integer from pointer without a 
cast [-W int-conversion]
  436 |         res = (unit)->self;                                     \       
 
      |             ^                                                           
 
../../../gcc/libgfortran/io/unit.c:450:13: note: in expansion of macro 
'TRYLOCK_ UNIT'
  450 |       if (! TRYLOCK_UNIT (p))
      |             ^~~~~~~~~~~~
../../../gcc/libgfortran/io/async.h:437:22: error: assignment to '__gthread_t' 
{aka 'struct pthread *'} from 'int' makes pointer from integer without a cast 
[-Wint-conversion]
  437 |         (unit)->self = 1;                                       \
      |                      ^
../../../gcc/libgfortran/io/unit.c:450:13: note: in expansion of macro 
'TRYLOCK_UNIT'
  450 |       if (! TRYLOCK_UNIT (p))
      |             ^~~~~~~~~~~~
../../../gcc/libgfortran/io/async.h:396:18: error: assignment to '__gthread_t' 
{aka 'struct pthread *'} from 'int' makes pointer from integer without a cast 
[-Wint-conversion]
  396 |     (unit)->self = 1;                                           \
      |                  ^
../../../gcc/libgfortran/io/unit.c:465:7: note: in expansion of macro 'LOCK_UNI'
  465 |       LOCK_UNIT (p);
      |       ^~~~~~~~~

-- 
Steve

Reply via email to