diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8466debe661..f998afd4503 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,17 @@ Mon Apr 20 14:48:29 1998 Michael Meissner + * configure.in (AC_CHECK_FUNCS): Check for strchr and strrchr. + * configure: Regenerate. + * config.in: Add #undef's for strchr and strrchr. + + * protoize.c (toplevel): If we have rindex, but not strrchr, map + rindex to strrchr. + (file_could_be_converted): Use strrchr, not rindex since rindex is + not defined on Linux systems when _POSIX_SOURCE is defined. + (file_normally_convertible): Ditto. + (process_aux_info_file): Ditto. + (main): Ditto. + * rs6000.md (mov{sf,df} define_splits): When splitting a move of a constant to an integer register, don't split the insns that do the simple AND and OR operations, rather just split each word, and diff --git a/gcc/config.in b/gcc/config.in index 8d0631a1110..bf2d02f0bb6 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -92,12 +92,18 @@ /* Define if you have the rindex function. */ #undef HAVE_RINDEX +/* Define if you have the strchr function. */ +#undef HAVE_STRCHR + /* Define if you have the setrlimit function. */ #undef HAVE_SETRLIMIT /* Define if you have the strerror function. */ #undef HAVE_STRERROR +/* Define if you have the strrchr function. */ +#undef HAVE_STRRCHR + /* Define if you have the strtoul function. */ #undef HAVE_STRTOUL diff --git a/gcc/configure b/gcc/configure index b68a0c60c3c..5e97fc0b181 100755 --- a/gcc/configure +++ b/gcc/configure @@ -1676,7 +1676,7 @@ fi echo "$ac_t""$gcc_cv_header_inttypes_h" 1>&6 for ac_func in strtoul bsearch strerror putenv popen vprintf bcopy bzero bcmp \ - index rindex kill getrlimit setrlimit atoll atoq sysconf + index rindex strchr strrchr kill getrlimit setrlimit atoll atoq sysconf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:1683: checking for $ac_func" >&5 diff --git a/gcc/configure.in b/gcc/configure.in index 1387ed0e130..61bfc9a9d0a 100644 --- a/gcc/configure.in +++ b/gcc/configure.in @@ -181,7 +181,7 @@ AC_CACHE_VAL(gcc_cv_header_inttypes_h, AC_MSG_RESULT($gcc_cv_header_inttypes_h) AC_CHECK_FUNCS(strtoul bsearch strerror putenv popen vprintf bcopy bzero bcmp \ - index rindex kill getrlimit setrlimit atoll atoq sysconf) + index rindex strchr strrchr kill getrlimit setrlimit atoll atoq sysconf) GCC_FUNC_PRINTF_PTR diff --git a/gcc/protoize.c b/gcc/protoize.c index 699bfe683ec..754d6c23ce8 100644 --- a/gcc/protoize.c +++ b/gcc/protoize.c @@ -74,6 +74,16 @@ Boston, MA 02111-1307, USA. */ #include #include "gansidecl.h" +/* Some systems like Linux don't declare rindex if _POSIX_SOURCE is declared, + but it normally does declare it. This means that configure thinks we don't + need to declare it. Favor using strrchr if it is available. */ + +#ifndef HAVE_STRRCHR +#ifdef HAVE_RINDEX +#define strrchr rindex +#endif +#endif + /* Include getopt.h for the sake of getopt_long. We don't need the declaration of getopt, and it could conflict with something from a system header file, so effectively nullify that. */ @@ -897,7 +907,7 @@ file_could_be_converted (const char *path) char *dir_last_slash; strcpy (dir_name, path); - dir_last_slash = rindex (dir_name, '/'); + dir_last_slash = strrchr (dir_name, '/'); if (dir_last_slash) *dir_last_slash = '\0'; else @@ -931,7 +941,7 @@ file_normally_convertible (const char *path) char *dir_last_slash; strcpy (dir_name, path); - dir_last_slash = rindex (dir_name, '/'); + dir_last_slash = strrchr (dir_name, '/'); if (dir_last_slash) *dir_last_slash = '\0'; else @@ -2370,7 +2380,7 @@ start_over: ; char *dir_end; aux_info_relocated_name = xmalloc (base_len + (p-invocation_filename)); strcpy (aux_info_relocated_name, base_source_filename); - dir_end = rindex (aux_info_relocated_name, '/'); + dir_end = strrchr (aux_info_relocated_name, '/'); if (dir_end) dir_end++; else @@ -4575,7 +4585,7 @@ main (argc, argv) int c; const char *params = ""; - pname = rindex (argv[0], '/'); + pname = strrchr (argv[0], '/'); pname = pname ? pname+1 : argv[0]; cwd_buffer = getpwd ();