+2000-12-01 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * builtins.def (BUILT_IN_IMAXABS): Add.
+ * builtins.c (expand_builtin): Also abort on BUILT_IN_IMAXABS.
+ * c-common.c (c_common_nodes_and_builtins): Create builtin
+ functions __builtin_imaxabs, and plain imaxabs unless
+ flag_no_nonansi_builtin outside C99 mode.
+ (expand_tree_builtin): Handle BUILT_IN_IMAXABS.
+ * extend.texi: Document builtin imaxabs.
+
2000-12-01 Joseph S. Myers <jsm28@cam.ac.uk>
* c-common.c: Include "defaults.h".
tree string_ftype_string_cstring_sizet, int_ftype_cstring_cstring_sizet;
tree long_ftype_long;
tree longlong_ftype_longlong;
+ tree intmax_ftype_intmax;
/* Either char* or void*. */
tree traditional_ptr_type_node;
/* Either const char* or const void*. */
tree_cons (NULL_TREE, long_long_integer_type_node,
endlink));
+ intmax_ftype_intmax
+ = build_function_type (intmax_type_node,
+ tree_cons (NULL_TREE, intmax_type_node,
+ endlink));
+
int_ftype_cptr_cptr_sizet
= build_function_type (integer_type_node,
tree_cons (NULL_TREE, const_ptr_type_node,
BUILT_IN_NORMAL, NULL_PTR);
builtin_function ("__builtin_llabs", longlong_ftype_longlong, BUILT_IN_LLABS,
BUILT_IN_NORMAL, NULL_PTR);
+ builtin_function ("__builtin_imaxabs", intmax_ftype_intmax, BUILT_IN_IMAXABS,
+ BUILT_IN_NORMAL, NULL_PTR);
builtin_function ("__builtin_saveregs", ptr_ftype, BUILT_IN_SAVEREGS,
BUILT_IN_NORMAL, NULL_PTR);
builtin_function ("__builtin_classify_type", default_function_type,
builtin_function ("labs", long_ftype_long, BUILT_IN_LABS,
BUILT_IN_NORMAL, NULL_PTR);
if (flag_isoc99 || ! flag_no_nonansi_builtin)
- builtin_function ("llabs", longlong_ftype_longlong, BUILT_IN_LLABS,
- BUILT_IN_NORMAL, NULL_PTR);
+ {
+ builtin_function ("llabs", longlong_ftype_longlong, BUILT_IN_LLABS,
+ BUILT_IN_NORMAL, NULL_PTR);
+ builtin_function ("imaxabs", intmax_ftype_intmax, BUILT_IN_IMAXABS,
+ BUILT_IN_NORMAL, NULL_PTR);
+ }
builtin_function ("memcpy", memcpy_ftype, BUILT_IN_MEMCPY,
BUILT_IN_NORMAL, NULL_PTR);
builtin_function ("memcmp", int_ftype_cptr_cptr_sizet, BUILT_IN_MEMCMP,
case BUILT_IN_ABS:
case BUILT_IN_LABS:
case BUILT_IN_LLABS:
+ case BUILT_IN_IMAXABS:
case BUILT_IN_FABS:
if (coerced_params == 0)
return integer_zero_node;
@findex fabsl
@findex ffs
@findex fputs
+@findex imaxabs
@findex index
@findex labs
@findex llabs
@code{__builtin_rindex} and @code{__builtin_ffs} are also recognized in
strict ISO C mode.
-The ISO C99 function @code{llabs} is handled as a builtin except in
+The ISO C99 functions @code{llabs} and @code{imaxabs}
+are handled as builtins except in
strict ISO C89 mode. There are also builtin versions of the ISO C99
functions @code{cosf}, @code{cosl}, @code{fabsf}, @code{fabsl},
@code{sinf}, @code{sinl}, @code{sqrtf}, and @code{sqrtl}, that are