diff options
author | Joseph Myers <jsm28@cam.ac.uk> | 2000-09-24 10:50:30 +0100 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2000-09-24 10:50:30 +0100 |
commit | 1c44c45dbf3b62c14bcd2916365ce090d3af531a (patch) | |
tree | 1f44369fb76196e077c51bead7e4a6ec08084525 /gcc | |
parent | b15c8032f0a71929c8714cc45c4b9d389f2fb9ca (diff) | |
download | gcc-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/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/builtins.c | 1 | ||||
-rw-r--r-- | gcc/builtins.def | 1 | ||||
-rw-r--r-- | gcc/c-common.c | 12 |
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; |