1 (* Builtins.mod provides access to all built-in functions.
3 Copyright (C) 2001-2024 Free Software Foundation, Inc.
4 Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
6 This file is part of GNU Modula-2.
8 GNU Modula-2 is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3, or (at your option)
13 GNU Modula-2 is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 General Public License for more details.
18 Under Section 7 of GPL version 3, you are granted additional
19 permissions described in the GCC Runtime Library Exception, version
20 3.1, as published by the Free Software Foundation.
22 You should have received a copy of the GNU General Public License and
23 a copy of the GCC Runtime Library Exception along with this program;
24 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
25 <http://www.gnu.org/licenses/>. *)
27 IMPLEMENTATION MODULE Builtins
;
29 IMPORT cbuiltin
, wrapc
;
32 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_alloca
)) alloca (i
: CARDINAL) : ADDRESS
;
34 (* This routine will never be called as it allocates memory on
35 top of the current stack frame, which is automatically
36 deallocated upon its return. *)
41 PROCEDURE alloca_trace (returned
: ADDRESS
; nBytes
: CARDINAL) : ADDRESS
;
43 (* this routine is only called if -fdebug-builtins is supplied
44 on the command line. The purpose of this routine is to allow
45 a developer to single step into this routine and inspect the
46 value of, nBytes, and, returned.
51 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_memcpy
)) memcpy (dest
, src
: ADDRESS
; nbytes
: CARDINAL) : ADDRESS
;
53 (* hopefully the compiler will choose to use the __builtin_memcpy function within GCC.
54 This call is here just in case it cannot. Ie if the user sets a procedure variable to
55 memcpy, then clearly the compiler cannot inline such a call and thus it will
56 be forced into calling this function.
58 RETURN cbuiltin.
memcpy (dest
, src
, nbytes
)
62 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_isnan
)) isnanf (x
: SHORTREAL
) : INTEGER ;
64 RETURN wrapc.
isnanf (x
)
67 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_isnan
)) isnan (x
: REAL) : INTEGER ;
69 RETURN wrapc.
isnan (x
)
72 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_isnan
)) isnanl (x
: LONGREAL) : INTEGER ;
74 RETURN wrapc.
isnanl (x
)
77 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_isfinite
)) isfinitef (x
: SHORTREAL
) : INTEGER ;
79 RETURN wrapc.
isfinitef (x
)
82 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_isfinite
)) isfinite (x
: REAL) : INTEGER ;
84 RETURN wrapc.
isfinite (x
)
87 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_isfinite
)) isfinitel (x
: LONGREAL) : INTEGER ;
89 RETURN wrapc.
isfinitel (x
)
92 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_sin
)) sin (x
: REAL) : REAL ;
94 RETURN cbuiltin.
sin (x
)
97 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_sinf
)) sinf (x
: SHORTREAL
) : SHORTREAL
;
99 RETURN cbuiltin.
sinf (x
)
102 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_sinl
)) sinl (x
: LONGREAL) : LONGREAL ;
104 RETURN cbuiltin.
sinl (x
)
107 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cos
)) cos (x
: REAL) : REAL ;
109 RETURN cbuiltin.
cos (x
)
112 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cosf
)) cosf (x
: SHORTREAL
) : SHORTREAL
;
114 RETURN cbuiltin.
cosf (x
)
117 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cosl
)) cosl (x
: LONGREAL) : LONGREAL ;
119 RETURN cbuiltin.
cosl (x
)
122 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_atan2
)) atan2 (x
, y
: REAL) : REAL ;
124 RETURN cbuiltin.
atan2 (x
, y
)
127 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_atan2f
)) atan2f (x
, y
: SHORTREAL
) : SHORTREAL
;
129 RETURN cbuiltin.
atan2f (x
, y
)
132 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_atan2l
)) atan2l (x
, y
: LONGREAL) : LONGREAL ;
134 RETURN cbuiltin.
atan2l (x
, y
)
137 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_sqrt
)) sqrt (x
: REAL) : REAL ;
139 RETURN cbuiltin.
sqrt (x
)
142 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_sqrtf
)) sqrtf (x
: SHORTREAL
) : SHORTREAL
;
144 RETURN cbuiltin.
sqrtf (x
)
147 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_sqrtl
)) sqrtl (x
: LONGREAL) : LONGREAL ;
149 RETURN cbuiltin.
sqrtl (x
)
152 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_fabs
)) fabs (x
: REAL) : REAL ;
154 RETURN cbuiltin.
fabs (x
)
157 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_fabsf
)) fabsf (x
: SHORTREAL
) : SHORTREAL
;
159 RETURN cbuiltin.
fabsf (x
)
162 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_fabsl
)) fabsl (x
: LONGREAL) : LONGREAL ;
164 RETURN cbuiltin.
fabsl (x
)
167 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_log
)) log (x
: REAL) : REAL ;
169 RETURN cbuiltin.
log (x
)
172 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_logf
)) logf (x
: SHORTREAL
) : SHORTREAL
;
174 RETURN cbuiltin.
logf (x
)
177 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_logl
)) logl (x
: LONGREAL) : LONGREAL ;
179 RETURN cbuiltin.
logl (x
)
182 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_exp
)) exp (x
: REAL) : REAL ;
184 RETURN cbuiltin.
exp (x
)
187 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_expf
)) expf (x
: SHORTREAL
) : SHORTREAL
;
189 RETURN cbuiltin.
expf (x
)
192 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_expl
)) expl (x
: LONGREAL) : LONGREAL ;
194 RETURN cbuiltin.
expl (x
)
197 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_log10
)) log10 (x
: REAL) : REAL ;
199 RETURN cbuiltin.
log10 (x
)
202 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_log10f
)) log10f (x
: SHORTREAL
) : SHORTREAL
;
204 RETURN cbuiltin.
log10f (x
)
207 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_log10l
)) log10l (x
: LONGREAL) : LONGREAL ;
209 RETURN cbuiltin.
log10l (x
)
212 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_exp10
)) exp10 (x
: REAL) : REAL ;
214 RETURN cbuiltin.
exp10 (x
)
217 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_exp10f
)) exp10f (x
: SHORTREAL
) : SHORTREAL
;
219 RETURN cbuiltin.
exp10f (x
)
222 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_exp10l
)) exp10l (x
: LONGREAL) : LONGREAL ;
224 RETURN cbuiltin.
exp10l (x
)
227 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_ilogb
)) ilogb (x
: REAL) : INTEGER ;
229 RETURN cbuiltin.
ilogb (x
)
232 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_ilogbf
)) ilogbf (x
: SHORTREAL
) : INTEGER ;
234 RETURN cbuiltin.
ilogbf (x
)
237 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_ilogbl
)) ilogbl (x
: LONGREAL) : INTEGER ;
239 RETURN cbuiltin.
ilogbl (x
)
242 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_modf
)) modf (x
: REAL; VAR y
: REAL) : REAL ;
244 RETURN cbuiltin.
modf (x
, y
)
247 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_modff
)) modff (x
: SHORTREAL
; VAR y
: SHORTREAL
) : SHORTREAL
;
249 RETURN cbuiltin.
modff (x
, y
)
252 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_modfl
)) modfl (x
: LONGREAL; VAR y
: LONGREAL) : LONGREAL ;
254 RETURN cbuiltin.
modfl (x
, y
)
257 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_signbit
)) signbit (r
: REAL) : INTEGER ;
259 RETURN wrapc.
signbit (r
)
262 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_signbitf
)) signbitf (s
: SHORTREAL
) : INTEGER ;
264 RETURN wrapc.
signbitf (s
)
267 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_signbitl
)) signbitl (l
: LONGREAL) : INTEGER ;
269 RETURN wrapc.
signbitl (l
)
272 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_nextafter
)) nextafter (x
, y
: REAL) : REAL ;
274 RETURN cbuiltin.
nextafter (x
, y
)
277 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_nextafterf
)) nextafterf (x
, y
: SHORTREAL
) : SHORTREAL
;
279 RETURN cbuiltin.
nextafterf (x
, y
)
282 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_nextafterl
)) nextafterl (x
, y
: LONGREAL) : LONGREAL ;
284 RETURN cbuiltin.
nextafterl (x
, y
)
287 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_nexttoward
)) nexttoward (x
: REAL; y
: LONGREAL) : REAL ;
289 RETURN cbuiltin.
nexttoward (x
, y
)
292 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_nexttowardf
)) nexttowardf (x
: SHORTREAL
; y
: LONGREAL) : SHORTREAL
;
294 RETURN cbuiltin.
nexttowardf (x
, y
)
297 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_nexttowardl
)) nexttowardl (x
, y
: LONGREAL) : LONGREAL ;
299 RETURN cbuiltin.
nexttowardl (x
, y
)
302 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_scalbln
)) scalbln (x
: REAL; n
: LONGINT) : REAL ;
304 RETURN cbuiltin.
scalbln (x
, n
)
307 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_scalblnf
)) scalblnf (x
: SHORTREAL
; n
: LONGINT) : SHORTREAL
;
309 RETURN cbuiltin.
scalblnf (x
, n
)
312 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_scalblnl
)) scalblnl (x
: LONGREAL; n
: LONGINT) : LONGREAL ;
314 RETURN cbuiltin.
scalblnl (x
, n
)
317 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_scalbn
)) scalbn (x
: REAL; n
: INTEGER) : REAL ;
319 RETURN cbuiltin.
scalbn (x
, n
)
322 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_scalbnf
)) scalbnf (x
: SHORTREAL
; n
: INTEGER) : SHORTREAL
;
324 RETURN cbuiltin.
scalbnf (x
, n
)
327 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_scalbnl
)) scalbnl (x
: LONGREAL; n
: INTEGER) : LONGREAL ;
329 RETURN cbuiltin.
scalbnl (x
, n
)
332 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cabsf
)) cabsf (z
: SHORTCOMPLEX
) : SHORTREAL
;
334 RETURN cbuiltin.
cabsf(z
)
337 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cabs
)) cabs (z
: COMPLEX
) : REAL ;
339 RETURN cbuiltin.
cabs(z
)
342 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cabsl
)) cabsl (z
: LONGCOMPLEX
) : LONGREAL ;
344 RETURN cbuiltin.
cabsl(z
)
347 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cargf
)) cargf (z
: SHORTCOMPLEX
) : SHORTREAL
;
349 RETURN cbuiltin.
cargf(z
)
352 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_carg
)) carg (z
: COMPLEX
) : REAL ;
354 RETURN cbuiltin.
carg(z
)
357 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cargl
)) cargl (z
: LONGCOMPLEX
) : LONGREAL ;
359 RETURN cbuiltin.
cargl(z
)
362 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_conjf
)) conjf (z
: SHORTCOMPLEX
) : SHORTCOMPLEX
;
364 RETURN cbuiltin.
conjf(z
)
367 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_conj
)) conj (z
: COMPLEX
) : COMPLEX
;
369 RETURN cbuiltin.
conj(z
)
372 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_conjl
)) conjl (z
: LONGCOMPLEX
) : LONGCOMPLEX
;
374 RETURN cbuiltin.
conjl(z
)
377 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cpowf
)) cpowerf (base
: SHORTCOMPLEX
; exp
: SHORTREAL
) : SHORTCOMPLEX
;
379 RETURN cbuiltin.
cpowf(base
, exp
)
382 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cpow
)) cpower (base
: COMPLEX
; exp
: REAL) : COMPLEX
;
384 RETURN cbuiltin.
cpow(base
, exp
)
387 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cpowl
)) cpowerl (base
: LONGCOMPLEX
; exp
: LONGREAL) : LONGCOMPLEX
;
389 RETURN cbuiltin.
cpowl(base
, exp
)
392 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_csqrtf
)) csqrtf (z
: SHORTCOMPLEX
) : SHORTCOMPLEX
;
394 RETURN cbuiltin.
csqrtf(z
)
397 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_csqrt
)) csqrt (z
: COMPLEX
) : COMPLEX
;
399 RETURN cbuiltin.
csqrt(z
)
402 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_csqrtl
)) csqrtl (z
: LONGCOMPLEX
) : LONGCOMPLEX
;
404 RETURN cbuiltin.
csqrtl(z
)
407 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cexpf
)) cexpf (z
: SHORTCOMPLEX
) : SHORTCOMPLEX
;
409 RETURN cbuiltin.
cexpf(z
)
412 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cexp
)) cexp (z
: COMPLEX
) : COMPLEX
;
414 RETURN cbuiltin.
cexp(z
)
417 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cexpl
)) cexpl (z
: LONGCOMPLEX
) : LONGCOMPLEX
;
419 RETURN cbuiltin.
cexpl(z
)
422 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_clogf
)) clnf (z
: SHORTCOMPLEX
) : SHORTCOMPLEX
;
424 RETURN cbuiltin.
clogf(z
)
427 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_clog
)) cln (z
: COMPLEX
) : COMPLEX
;
429 RETURN cbuiltin.
clog(z
)
432 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_clogl
)) clnl (z
: LONGCOMPLEX
) : LONGCOMPLEX
;
434 RETURN cbuiltin.
clogl(z
)
437 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_csinf
)) csinf (z
: SHORTCOMPLEX
) : SHORTCOMPLEX
;
439 RETURN cbuiltin.
csinf(z
)
442 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_csin
)) csin (z
: COMPLEX
) : COMPLEX
;
444 RETURN cbuiltin.
csin(z
)
447 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_csinl
)) csinl (z
: LONGCOMPLEX
) : LONGCOMPLEX
;
449 RETURN cbuiltin.
csinl(z
)
452 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_ccosf
)) ccosf (z
: SHORTCOMPLEX
) : SHORTCOMPLEX
;
454 RETURN cbuiltin.
ccosf(z
)
457 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_ccos
)) ccos (z
: COMPLEX
) : COMPLEX
;
459 RETURN cbuiltin.
ccos(z
)
462 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_ccosl
)) ccosl (z
: LONGCOMPLEX
) : LONGCOMPLEX
;
464 RETURN cbuiltin.
ccosl(z
)
467 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_ctanf
)) ctanf (z
: SHORTCOMPLEX
) : SHORTCOMPLEX
;
469 RETURN cbuiltin.
ctanf(z
)
472 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_ctan
)) ctan (z
: COMPLEX
) : COMPLEX
;
474 RETURN cbuiltin.
ctan(z
)
477 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_ctanl
)) ctanl (z
: LONGCOMPLEX
) : LONGCOMPLEX
;
479 RETURN cbuiltin.
ctanl(z
)
482 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_casinf
)) carcsinf (z
: SHORTCOMPLEX
) : SHORTCOMPLEX
;
484 RETURN cbuiltin.
casinf(z
)
487 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_casin
)) carcsin (z
: COMPLEX
) : COMPLEX
;
489 RETURN cbuiltin.
casin(z
)
492 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_casinl
)) carcsinl (z
: LONGCOMPLEX
) : LONGCOMPLEX
;
494 RETURN cbuiltin.
casinl(z
)
497 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cacosf
)) carccosf (z
: SHORTCOMPLEX
) : SHORTCOMPLEX
;
499 RETURN cbuiltin.
cacosf(z
)
502 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cacos
)) carccos (z
: COMPLEX
) : COMPLEX
;
504 RETURN cbuiltin.
cacos(z
)
507 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_cacosl
)) carccosl (z
: LONGCOMPLEX
) : LONGCOMPLEX
;
509 RETURN cbuiltin.
cacosl(z
)
512 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_catanf
)) carctanf (z
: SHORTCOMPLEX
) : SHORTCOMPLEX
;
514 RETURN cbuiltin.
catanf(z
)
517 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_catan
)) carctan (z
: COMPLEX
) : COMPLEX
;
519 RETURN cbuiltin.
catan(z
)
522 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_catanl
)) carctanl (z
: LONGCOMPLEX
) : LONGCOMPLEX
;
524 RETURN cbuiltin.
catanl(z
)
527 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_index
)) index (s
: ADDRESS
; c
: INTEGER) : ADDRESS
;
529 RETURN cbuiltin.
index (s
, c
)
532 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_rindex
)) rindex (s
: ADDRESS
; c
: INTEGER) : ADDRESS
;
534 RETURN cbuiltin.
rindex (s
, c
)
537 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_memcmp
)) memcmp (s1
, s2
: ADDRESS
; nbytes
: CARDINAL) : INTEGER ;
539 RETURN cbuiltin.
memcmp (s1
, s2
, nbytes
)
542 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_memset
)) memset (s
: ADDRESS
; c
: INTEGER; nbytes
: CARDINAL) : ADDRESS
;
544 RETURN cbuiltin.
memset (s
, c
, nbytes
)
547 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_memmove
)) memmove (s1
, s2
: ADDRESS
; nbytes
: CARDINAL) : ADDRESS
;
549 RETURN cbuiltin.
memmove (s1
, s2
, nbytes
)
552 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_strcat
)) strcat (dest
, src
: ADDRESS
) : ADDRESS
;
554 RETURN cbuiltin.
strcat (dest
, src
)
557 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_strncat
)) strncat (dest
, src
: ADDRESS
; nbytes
: CARDINAL) : ADDRESS
;
559 RETURN cbuiltin.
strncat (dest
, src
, nbytes
)
562 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_strcpy
)) strcpy (dest
, src
: ADDRESS
) : ADDRESS
;
564 RETURN cbuiltin.
strcpy (dest
, src
)
567 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_strncpy
)) strncpy (dest
, src
: ADDRESS
; nbytes
: CARDINAL) : ADDRESS
;
569 RETURN cbuiltin.
strncpy (dest
, src
, nbytes
)
572 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_strcmp
)) strcmp (s1
, s2
: ADDRESS
) : INTEGER ;
574 RETURN cbuiltin.
strcmp (s1
, s2
)
577 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_strncmp
)) strncmp (s1
, s2
: ADDRESS
; nbytes
: CARDINAL) : INTEGER ;
579 RETURN cbuiltin.
strncmp (s1
, s2
, nbytes
)
582 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_strlen
)) strlen (s
: ADDRESS
) : INTEGER ;
584 RETURN cbuiltin.
strlen (s
)
587 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_strstr
)) strstr (haystack
, needle
: ADDRESS
) : ADDRESS
;
589 RETURN cbuiltin.
strstr (haystack
, needle
)
592 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_strpbrk
)) strpbrk (s
, accept
: ADDRESS
) : ADDRESS
;
594 RETURN cbuiltin.
strpbrk (s
, accept
)
597 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_strspn
)) strspn (s
, accept
: ADDRESS
) : CARDINAL ;
599 RETURN cbuiltin.
strspn (s
, accept
)
602 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_strcspn
)) strcspn (s
, accept
: ADDRESS
) : CARDINAL ;
604 RETURN cbuiltin.
strcspn (s
, accept
)
607 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_strchr
)) strchr (s
: ADDRESS
; c
: INTEGER) : ADDRESS
;
609 RETURN cbuiltin.
strchr (s
, c
)
612 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_strrchr
)) strrchr (s
: ADDRESS
; c
: INTEGER) : ADDRESS
;
614 RETURN cbuiltin.
strrchr (s
, c
)
617 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_huge_val
)) huge_val () : REAL ;
622 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_huge_vall
)) huge_vall () : LONGREAL ;
627 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_huge_valf
)) huge_valf () : SHORTREAL
;
632 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_longjmp
)) longjmp (env
: ADDRESS
; val
: INTEGER) ;
634 (* empty, replaced internally by gcc *)
637 PROCEDURE __ATTRIBUTE__
__BUILTIN__ ((__builtin_setjmp
)) setjmp (env
: ADDRESS
) : INTEGER ;
639 (* empty, replaced internally by gcc *)
640 RETURN 0 (* keeps gm2 happy *)
645 frame_address - returns the address of the frame.
646 The current frame is obtained if level is 0,
647 the next level up is level is 1 etc.
650 PROCEDURE __ATTRIBUTE__ __BUILTIN__
651 ((__builtin_frame_address
))
652 frame_address (level
: CARDINAL) : ADDRESS
;
659 return_address - returns the return address of function.
660 The current function return address is
661 obtained if level is 0,
662 the next level up is level is 1 etc.
665 PROCEDURE __ATTRIBUTE__ __BUILTIN__
666 ((__builtin_return_address
))
667 return_address (level
: CARDINAL) : ADDRESS
;