From: Wayne Davison <wayned@users.sourceforge.net>
To: Peter Stephenson <pws@csr.com>
Cc: zsh-workers@sunsite.dk
Subject: Re: PATCH: silencing compiler warnings from gcc 4
Date: Fri, 12 Aug 2005 06:27:19 -0700 [thread overview]
Message-ID: <20050812132719.GA1879@blorf.net> (raw)
In-Reply-To: <20050812123114.00f88c0b.pws@csr.com>
[-- Attachment #1: Type: text/plain, Size: 1197 bytes --]
On Fri, Aug 12, 2005 at 12:31:14PM +0100, Peter Stephenson wrote:
> But maybe it simply means if inline isn't available, we end up calling
> two functions to get a simple strlen().
Yes, that's what my patch did. I had been thinking about optimizing
that in the same way you suggested. I'm currently debating whether it
might be enough to only use the inline functions if __GNUC__ is defined
(since the value of the inline functions is at compile-time, not
runtime). The only argument against this that I can come up with is
that there may be some conditional code (at some point) that won't get
compiled by gcc, and thus it won't get type-checked. The argument for
only doing this with gcc is that we're sure that the inline functions
are doing the right thing.
Since it seems that we agree that this is a good thing for at least gcc,
I've checked in a patch that uses inline functions for gcc and attached
that patch to this email. If we want to extend this to use inline
functions on every compiler that supports inline functions, the second
attached patch should accomplish that -- it changes configure to add a
new define, INLINE_AVAILABLE, if inline functions are possible.
..wayne..
[-- Attachment #2: signedness.diff --]
[-- Type: text/plain, Size: 1098 bytes --]
--- Src/Zle/zle.h 10 Aug 2005 10:56:41 -0000 1.15
+++ Src/Zle/zle.h 12 Aug 2005 13:12:37 -0000
@@ -89,10 +89,22 @@ typedef int ZLE_INT_T;
#define ZS_memmove memmove
#define ZS_memset memset
#define ZS_memcmp memcmp
-#define ZS_strlen strlen
-#define ZS_strcpy strcpy
-#define ZS_strncpy strncpy
-#define ZS_strncmp strncmp
+
+#ifdef __GNUC__
+static inline size_t ZS_strlen(ZLE_STRING_T s)
+{ return strlen((char*)s); }
+static inline ZLE_STRING_T ZS_strcpy(ZLE_STRING_T t, ZLE_STRING_T f)
+{ return (ZLE_STRING_T)strcpy((char*)t, (char*)f); }
+static inline ZLE_STRING_T ZS_strncpy(ZLE_STRING_T t, ZLE_STRING_T f, size_t l)
+{ return (ZLE_STRING_T)strncpy((char*)t, (char*)f, l); }
+static inline int ZS_strncmp(ZLE_STRING_T s1, ZLE_STRING_T s2, size_t l)
+{ return strncmp((char*)s1, (char*)s2, l); }
+#else
+#define ZS_strlen(s) strlen((char*)(s))
+#define ZS_strcpy(t,f) strcpy((char*)(t),(char*)(f))
+#define ZS_strncpy(t,f,l) strncpy((char*)(t),(char*)(f),(l))
+#define ZS_strncmp(s1,s2,l) strncmp((char*)(s1),(char*)(s2),(l))
+#endif
#define ZC_iblank iblank
#define ZC_icntrl icntrl
[-- Attachment #3: signedness2.patch --]
[-- Type: text/plain, Size: 978 bytes --]
--- configure.ac 1 Aug 2005 09:54:56 -0000 1.37
+++ configure.ac 12 Aug 2005 13:14:41 -0000
@@ -437,6 +437,14 @@ AC_SUBST(LIBLDFLAGS)dnl
AC_PROG_CPP dnl Figure out how to run C preprocessor.
AC_PROG_GCC_TRADITIONAL dnl Do we need -traditional flag for gcc.
AC_C_CONST dnl Does compiler support `const'.
+AC_C_INLINE
+
+AH_TEMPLATE([INLINE_AVAILABLE],
+[Define to 1 if inline functions are possible.])
+case $ac_cv_c_inline in
+ no) ;;
+ *) AC_DEFINE(INLINE_AVAILABLE) ;;
+esac
dnl Default preprocessing on Mac OS X produces warnings
case "$host_os" in
--- Src/Zle/zle.h 12 Aug 2005 13:12:37 -0000 1.16
+++ Src/Zle/zle.h 12 Aug 2005 13:14:41 -0000
@@ -90,7 +90,7 @@ typedef int ZLE_INT_T;
#define ZS_memset memset
#define ZS_memcmp memcmp
-#ifdef __GNUC__
+#ifdef INLINE_AVAILABLE
static inline size_t ZS_strlen(ZLE_STRING_T s)
{ return strlen((char*)s); }
static inline ZLE_STRING_T ZS_strcpy(ZLE_STRING_T t, ZLE_STRING_T f)
prev parent reply other threads:[~2005-08-12 13:27 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-08-11 20:02 Wayne Davison
2005-08-12 10:29 ` Peter Stephenson
2005-08-12 11:31 ` Peter Stephenson
2005-08-12 13:27 ` Wayne Davison [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050812132719.GA1879@blorf.net \
--to=wayned@users.sourceforge.net \
--cc=pws@csr.com \
--cc=zsh-workers@sunsite.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).