aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-common.c
diff options
context:
space:
mode:
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>2000-11-13 02:14:05 +0000
committerKaveh Ghazi <ghazi@gcc.gnu.org>2000-11-13 02:14:05 +0000
commitc7b6c6cd4791c3003397feea31482c3d19419fe2 (patch)
treee2619415f3516210288dc043ad4cdec1be4247a5 /gcc/c-common.c
parent34f6fbdb65c5e2a8ff1c6553592503532ef0141f (diff)
downloadgcc-c7b6c6cd4791c3003397feea31482c3d19419fe2.zip
gcc-c7b6c6cd4791c3003397feea31482c3d19419fe2.tar.gz
gcc-c7b6c6cd4791c3003397feea31482c3d19419fe2.tar.bz2
builtins.c (expand_builtin): Handle BUILT_IN_INDEX and BUILT_IN_RINDEX.
* builtins.c (expand_builtin): Handle BUILT_IN_INDEX and BUILT_IN_RINDEX. Add missing checks for BUILT_IN_STRCHR and BUILT_IN_STRRCHR. * builtins.def (BUILT_IN_INDEX, BUILT_IN_RINDEX): New entries. * c-common.c (c_common_nodes_and_builtins): Declare index and rindex when nonansi builtins are allowed. * extend.texi (index, rindex): Document new builtins. testsuite: * gcc.c-torture/execute/string-opt-3.c: Also test builtin rindex. * gcc.c-torture/execute/string-opt-4.c: Also test builtin index. From-SVN: r37416
Diffstat (limited to 'gcc/c-common.c')
-rw-r--r--gcc/c-common.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c
index c8e9c12..fdc2875 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -5045,6 +5045,12 @@ c_common_nodes_and_builtins ()
/* Suppress error if redefined as a non-function. */
DECL_BUILT_IN_NONANSI (temp) = 1;
+ temp = builtin_function ("index", string_ftype_string_int,
+ BUILT_IN_INDEX, BUILT_IN_NORMAL, NULL_PTR);
+ DECL_BUILT_IN_NONANSI (temp) = 1;
+ temp = builtin_function ("rindex", string_ftype_string_int,
+ BUILT_IN_RINDEX, BUILT_IN_NORMAL, NULL_PTR);
+ DECL_BUILT_IN_NONANSI (temp) = 1;
/* The system prototypes for these functions have many
variations, so don't specify parameters to avoid conflicts.
The expand_* functions check the argument types anyway. */
@@ -5175,6 +5181,10 @@ c_common_nodes_and_builtins ()
BUILT_IN_BZERO, BUILT_IN_NORMAL, "bzero");
builtin_function ("__builtin_bcmp", bcmp_ftype,
BUILT_IN_BCMP, BUILT_IN_NORMAL, "bcmp");
+ builtin_function ("__builtin_index", string_ftype_string_int,
+ BUILT_IN_INDEX, BUILT_IN_NORMAL, "index");
+ builtin_function ("__builtin_rindex", string_ftype_string_int,
+ BUILT_IN_RINDEX, BUILT_IN_NORMAL, "rindex");
builtin_function ("__builtin_strcmp", int_ftype_string_string,
BUILT_IN_STRCMP, BUILT_IN_NORMAL, "strcmp");
builtin_function ("__builtin_strstr", string_ftype_string_string,