aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJoseph Myers <jsm28@cam.ac.uk>2000-09-24 10:50:30 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2000-09-24 10:50:30 +0100
commit1c44c45dbf3b62c14bcd2916365ce090d3af531a (patch)
tree1f44369fb76196e077c51bead7e4a6ec08084525 /gcc
parentb15c8032f0a71929c8714cc45c4b9d389f2fb9ca (diff)
downloadgcc-1c44c45dbf3b62c14bcd2916365ce090d3af531a.zip
gcc-1c44c45dbf3b62c14bcd2916365ce090d3af531a.tar.gz
gcc-1c44c45dbf3b62c14bcd2916365ce090d3af531a.tar.bz2
builtins.def (BUILT_IN_LLABS): Add.
* builtins.def (BUILT_IN_LLABS): Add. * builtins.c (expand_builtin): Also abort on BUILT_IN_LLABS. * c-common.c (c_common_nodes_builtins): Create builtin functions __builtin_llabs, and plain llabs unless no_nonansi_builtins outside of C99 mode. (expand_tree_builtin): Handle BUILT_IN_LLABS. From-SVN: r36585
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/builtins.c1
-rw-r--r--gcc/builtins.def1
-rw-r--r--gcc/c-common.c12
4 files changed, 23 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6b29754..9fb5b7a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2000-09-24 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * builtins.def (BUILT_IN_LLABS): Add.
+ * builtins.c (expand_builtin): Also abort on BUILT_IN_LLABS.
+ * c-common.c (c_common_nodes_builtins): Create builtin functions
+ __builtin_llabs, and plain llabs unless no_nonansi_builtins
+ outside of C99 mode.
+ (expand_tree_builtin): Handle BUILT_IN_LLABS.
+
Sat 23-Sep-2000 22:39:18 BST Neil Booth <NeilB@earthling.net>
* cpphash.h (CPP_RESERVE, CPP_PUTS_Q, CPP_PUTS, CPP_PUTC_Q,
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 4f03dc7..187164a 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -2595,6 +2595,7 @@ expand_builtin (exp, target, subtarget, mode, ignore)
{
case BUILT_IN_ABS:
case BUILT_IN_LABS:
+ case BUILT_IN_LLABS:
case BUILT_IN_FABS:
/* build_function_call changes these into ABS_EXPR. */
abort ();
diff --git a/gcc/builtins.def b/gcc/builtins.def
index ede0d2e..eda40d8 100644
--- a/gcc/builtins.def
+++ b/gcc/builtins.def
@@ -23,6 +23,7 @@ DEF_BUILTIN(BUILT_IN_ALLOCA)
DEF_BUILTIN(BUILT_IN_ABS)
DEF_BUILTIN(BUILT_IN_FABS)
DEF_BUILTIN(BUILT_IN_LABS)
+DEF_BUILTIN(BUILT_IN_LLABS)
DEF_BUILTIN(BUILT_IN_FFS)
DEF_BUILTIN(BUILT_IN_DIV)
DEF_BUILTIN(BUILT_IN_LDIV)
diff --git a/gcc/c-common.c b/gcc/c-common.c
index ce0b33a..d72c45b 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -4020,6 +4020,7 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
tree int_ftype_cptr_cptr_sizet;
tree int_ftype_string_string, string_ftype_ptr_ptr;
tree long_ftype_long;
+ tree longlong_ftype_longlong;
/* Either char* or void*. */
tree traditional_ptr_type_node;
/* Either const char* or const void*. */
@@ -4094,6 +4095,11 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
tree_cons (NULL_TREE, long_integer_type_node,
endlink));
+ longlong_ftype_longlong
+ = build_function_type (long_long_integer_type_node,
+ tree_cons (NULL_TREE, long_long_integer_type_node,
+ endlink));
+
int_ftype_cptr_cptr_sizet
= build_function_type (integer_type_node,
tree_cons (NULL_TREE, const_ptr_type_node,
@@ -4234,6 +4240,8 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
BUILT_IN_NORMAL, NULL_PTR);
builtin_function ("__builtin_labs", long_ftype_long, BUILT_IN_LABS,
BUILT_IN_NORMAL, NULL_PTR);
+ builtin_function ("__builtin_llabs", longlong_ftype_longlong, BUILT_IN_LLABS,
+ 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,
@@ -4400,6 +4408,9 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
BUILT_IN_NORMAL, NULL_PTR);
builtin_function ("labs", long_ftype_long, BUILT_IN_LABS,
BUILT_IN_NORMAL, NULL_PTR);
+ if (flag_isoc99 || ! no_nonansi_builtins)
+ builtin_function ("llabs", longlong_ftype_longlong, BUILT_IN_LLABS,
+ 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,
@@ -4578,6 +4589,7 @@ expand_tree_builtin (function, params, coerced_params)
{
case BUILT_IN_ABS:
case BUILT_IN_LABS:
+ case BUILT_IN_LLABS:
case BUILT_IN_FABS:
if (coerced_params == 0)
return integer_zero_node;