zsh-workers
 help / color / mirror / code / Atom feed
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)

      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).