builtins.def (BUILT_IN_IMAXABS): Add.
authorJoseph Myers <jsm28@cam.ac.uk>
Fri, 1 Dec 2000 22:35:50 +0000 (22:35 +0000)
committerJoseph Myers <jsm28@gcc.gnu.org>
Fri, 1 Dec 2000 22:35:50 +0000 (22:35 +0000)
* 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.

From-SVN: r37932

gcc/ChangeLog
gcc/builtins.c
gcc/builtins.def
gcc/c-common.c
gcc/extend.texi

index aa8cd850a5973e0bdb4b19973a8d51d1575fb28d..509dfc9d83e9e2f0667145e33899bed863d51a9c 100644 (file)
@@ -1,3 +1,13 @@
+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".
index 0e59904325e50676e0f8e8890de61729a4b4de7e..154bd7062842e78a53d7cdb3b07e6986cd7ae429 100644 (file)
@@ -3098,6 +3098,7 @@ expand_builtin (exp, target, subtarget, mode, ignore)
     case BUILT_IN_ABS:
     case BUILT_IN_LABS:
     case BUILT_IN_LLABS:
+    case BUILT_IN_IMAXABS:
     case BUILT_IN_FABS:
       /* build_function_call changes these into ABS_EXPR.  */
       abort ();
index ec4325284a32f4c740a067bef2236d02449718f2..9d2884e072a162defc6f7bc863c9648252faba52 100644 (file)
@@ -24,6 +24,7 @@ DEF_BUILTIN(BUILT_IN_ABS)
 DEF_BUILTIN(BUILT_IN_FABS)
 DEF_BUILTIN(BUILT_IN_LABS)
 DEF_BUILTIN(BUILT_IN_LLABS)
+DEF_BUILTIN(BUILT_IN_IMAXABS)
 DEF_BUILTIN(BUILT_IN_FFS)
 DEF_BUILTIN(BUILT_IN_DIV)
 DEF_BUILTIN(BUILT_IN_LDIV)
index 0a605f837415141cfdcbeb35409f12090ecf13b3..c4fd4639b065d574dc14f111e83250066ee28c4f 100644 (file)
@@ -4911,6 +4911,7 @@ c_common_nodes_and_builtins ()
   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*.  */
@@ -5007,6 +5008,11 @@ c_common_nodes_and_builtins ()
                           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,
@@ -5190,6 +5196,8 @@ c_common_nodes_and_builtins ()
                    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,
@@ -5375,8 +5383,12 @@ c_common_nodes_and_builtins ()
       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,
@@ -5573,6 +5585,7 @@ expand_tree_builtin (function, params, coerced_params)
     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;
index 17e037d2c166699f8875c930c57d237e22292930..bf60bca726d989813bf596a8e3de0f0707900452 100644 (file)
@@ -3296,6 +3296,7 @@ function as well.
 @findex fabsl
 @findex ffs
 @findex fputs
+@findex imaxabs
 @findex index
 @findex labs
 @findex llabs
@@ -3348,7 +3349,8 @@ as builtins.  Corresponding versions @code{__builtin_alloca},
 @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