@@ -291,15 +291,18 @@ int pthread_mutex_destroy(pthread_mutex_t *mutex)
291
291
#define __CPROVER_PTHREAD_H_INCLUDED
292
292
#endif
293
293
294
- __CPROVER_bool __CPROVER_threads_exited [__CPROVER_constant_infinity_uint ];
294
+ // Clang refuses anything larger than SIZE_MAX/8, thus using - 4 in the shift
295
+ // expression below
296
+ __CPROVER_bool __CPROVER_threads_exited
297
+ [(__CPROVER_size_t )1 << (sizeof (__CPROVER_size_t ) * 8 - 4 )];
295
298
__CPROVER_thread_local unsigned long __CPROVER_thread_id = 0 ;
296
299
#if 0
297
300
// Destructor support is disabled as it is too expensive due to its extensive
298
301
// use of shared variables.
299
302
__CPROVER_thread_local const void
300
- * __CPROVER_thread_keys [__CPROVER_constant_infinity_uint ];
303
+ * __CPROVER_thread_keys [( __CPROVER_size_t ) 1 << ( sizeof ( __CPROVER_size_t ) * 8 - 4 ) ];
301
304
__CPROVER_thread_local void (
302
- * __CPROVER_thread_key_dtors [__CPROVER_constant_infinity_uint ])(void * );
305
+ * __CPROVER_thread_key_dtors [( __CPROVER_size_t ) 1 << ( sizeof ( __CPROVER_size_t ) * 8 - 4 ) ])(void * );
303
306
__CPROVER_thread_local unsigned long __CPROVER_next_thread_key = 0 ;
304
307
#endif
305
308
@@ -337,7 +340,10 @@ void pthread_exit(void *value_ptr)
337
340
#define __CPROVER_ERRNO_H_INCLUDED
338
341
#endif
339
342
340
- __CPROVER_bool __CPROVER_threads_exited [__CPROVER_constant_infinity_uint ];
343
+ // Clang refuses anything larger than SIZE_MAX/8, thus using - 4 in the shift
344
+ // expression below
345
+ __CPROVER_bool __CPROVER_threads_exited
346
+ [(__CPROVER_size_t )1 << (sizeof (__CPROVER_size_t ) * 8 - 4 )];
341
347
#ifndef LIBRARY_CHECK
342
348
__CPROVER_thread_local unsigned long __CPROVER_thread_id = 0 ;
343
349
#endif
@@ -376,7 +382,8 @@ __CPROVER_HIDE:;
376
382
#endif
377
383
378
384
#ifdef __APPLE__
379
- __CPROVER_bool __CPROVER_threads_exited [__CPROVER_constant_infinity_uint ];
385
+ __CPROVER_bool __CPROVER_threads_exited
386
+ [(__CPROVER_size_t )1 << (sizeof (__CPROVER_size_t ) * 8 - 2 )];
380
387
# ifndef LIBRARY_CHECK
381
388
__CPROVER_thread_local unsigned long __CPROVER_thread_id = 0 ;
382
389
unsigned long __CPROVER_next_thread_id = 0 ;
@@ -544,17 +551,20 @@ int pthread_rwlock_wrlock(pthread_rwlock_t *lock)
544
551
545
552
/* FUNCTION: __spawned_thread */
546
553
547
- __CPROVER_bool __CPROVER_threads_exited [__CPROVER_constant_infinity_uint ];
554
+ // Clang refuses anything larger than SIZE_MAX/8, thus using - 4 in the shift
555
+ // expression below
556
+ __CPROVER_bool __CPROVER_threads_exited
557
+ [(__CPROVER_size_t )1 << (sizeof (__CPROVER_size_t ) * 8 - 4 )];
548
558
#ifndef LIBRARY_CHECK
549
559
__CPROVER_thread_local unsigned long __CPROVER_thread_id = 0 ;
550
560
#endif
551
561
#if 0
552
562
// Destructor support is disabled as it is too expensive due to its extensive
553
563
// use of shared variables.
554
564
__CPROVER_thread_local const void
555
- * __CPROVER_thread_keys [__CPROVER_constant_infinity_uint ];
565
+ * __CPROVER_thread_keys [( __CPROVER_size_t ) 1 << ( sizeof ( __CPROVER_size_t ) * 8 - 2 ) ];
556
566
__CPROVER_thread_local void (
557
- * __CPROVER_thread_key_dtors [__CPROVER_constant_infinity_uint ])(void * );
567
+ * __CPROVER_thread_key_dtors [( __CPROVER_size_t ) 1 << ( sizeof ( __CPROVER_size_t ) * 8 - 2 ) ])(void * );
558
568
#endif
559
569
__CPROVER_thread_local unsigned long __CPROVER_next_thread_key = 0 ;
560
570
@@ -618,7 +628,7 @@ __CPROVER_HIDE:;
618
628
unsigned long __CPROVER_next_thread_id = 0 ;
619
629
# if 0
620
630
__CPROVER_thread_local void (
621
- * __CPROVER_thread_key_dtors [__CPROVER_constant_infinity_uint ])(void * );
631
+ * __CPROVER_thread_key_dtors [( __CPROVER_size_t ) 1 << ( sizeof ( __CPROVER_size_t ) * 8 - 2 ) ])(void * );
622
632
# endif
623
633
__CPROVER_thread_local unsigned long __CPROVER_next_thread_key = 0 ;
624
634
#endif
@@ -952,12 +962,12 @@ int pthread_barrier_wait(pthread_barrier_t *barrier)
952
962
#define __CPROVER_PTHREAD_H_INCLUDED
953
963
#endif
954
964
955
- __CPROVER_thread_local const void
956
- * __CPROVER_thread_keys [ __CPROVER_constant_infinity_uint ];
965
+ __CPROVER_thread_local const void * __CPROVER_thread_keys
966
+ [( __CPROVER_size_t ) 1 << ( sizeof ( __CPROVER_size_t ) * 8 - 1 - sizeof ( void * )) ];
957
967
#ifndef LIBRARY_CHECK
958
968
# if 0
959
969
__CPROVER_thread_local void (
960
- * __CPROVER_thread_key_dtors [__CPROVER_constant_infinity_uint ])(void * );
970
+ * __CPROVER_thread_key_dtors [( __CPROVER_size_t ) 1 << ( sizeof ( __CPROVER_size_t ) * 8 - 2 ) ])(void * );
961
971
# endif
962
972
__CPROVER_thread_local unsigned long __CPROVER_next_thread_key = 0 ;
963
973
#endif
@@ -984,8 +994,8 @@ __CPROVER_HIDE:;
984
994
#define __CPROVER_PTHREAD_H_INCLUDED
985
995
#endif
986
996
987
- __CPROVER_thread_local const void
988
- * __CPROVER_thread_keys [ __CPROVER_constant_infinity_uint ];
997
+ __CPROVER_thread_local const void * __CPROVER_thread_keys
998
+ [( __CPROVER_size_t ) 1 << ( sizeof ( __CPROVER_size_t ) * 8 - 1 - sizeof ( void * )) ];
989
999
990
1000
int pthread_key_delete (pthread_key_t key )
991
1001
{
@@ -1001,8 +1011,8 @@ __CPROVER_HIDE:;
1001
1011
#define __CPROVER_PTHREAD_H_INCLUDED
1002
1012
#endif
1003
1013
1004
- __CPROVER_thread_local const void
1005
- * __CPROVER_thread_keys [ __CPROVER_constant_infinity_uint ];
1014
+ __CPROVER_thread_local const void * __CPROVER_thread_keys
1015
+ [( __CPROVER_size_t ) 1 << ( sizeof ( __CPROVER_size_t ) * 8 - 1 - sizeof ( void * )) ];
1006
1016
1007
1017
void * pthread_getspecific (pthread_key_t key )
1008
1018
{
@@ -1017,8 +1027,8 @@ __CPROVER_HIDE:;
1017
1027
#define __CPROVER_PTHREAD_H_INCLUDED
1018
1028
#endif
1019
1029
1020
- __CPROVER_thread_local const void
1021
- * __CPROVER_thread_keys [ __CPROVER_constant_infinity_uint ];
1030
+ __CPROVER_thread_local const void * __CPROVER_thread_keys
1031
+ [( __CPROVER_size_t ) 1 << ( sizeof ( __CPROVER_size_t ) * 8 - 1 - sizeof ( void * )) ];
1022
1032
1023
1033
int pthread_setspecific (pthread_key_t key , const void * value )
1024
1034
{
0 commit comments