Hi,

Kalle Olavi Niemitalo wrote:
"Mark A. Carlson" <mark.carl...@sun.com> writes:

+#if defined (__SUNPRO_C)
+static inline void
+#else
 inline void
+#endif
 load_frames(struct session *ses, struct document_view *doc_view)

This looks like <http://bugzilla.elinks.cz/show_bug.cgi?id=1047>.
That bug was reported against ELinks 0.12pre1 though.
I haven't heard about such problems with 0.11.5 before.
It looks like 0.10.6 has the same bug; can you confirm?

Yes, elinks-0.10.6 has the same bug (in session.c and conv.c).
Because ELinks is violating a C99 requirement, rather than
something specific to Sun, I don't think it's right to make an
exception for the Sun compiler.  Instead, we should make the
functions not inline and measure how that affects the speed.
If it hurts too much, then define e.g. static inline int
inline_elinks_ulongcat() and make both int elinks_ulongcat()
and int elinks_longcat() call that.  GCC should generate from
that approximately the same code as from the current sources.
Attached is the modified patch incorporating the above comments. Please confirm if the patch is acceptable.

Regards
Muktha
--- elinks-0.11.5/src/session/session.c	2009-02-23 03:50:00.852630689 -0800
+++ elinks-0.11.5-new/src/session/session.c	2009-02-23 03:49:38.152751175 -0800
@@ -423,7 +423,7 @@ load_ecmascript_imports(struct session *
 #define load_ecmascript_imports(ses, doc_view)
 #endif
 
-inline void
+void
 load_frames(struct session *ses, struct document_view *doc_view)
 {
 	struct document *document = doc_view->document;
--- elinks-0.11.5/src/util/conv.c	2009-02-23 03:54:45.261625605 -0800
+++ elinks-0.11.5-new/src/util/conv.c	2009-02-24 00:10:55.615002838 -0800
@@ -46,8 +46,8 @@
  */
 /* The function returns 0 if OK or width needed for the whole number to fit
  * there, if it had to be truncated. A negative value signs an error. */
-int inline
-elinks_ulongcat(unsigned char *s, unsigned int *slen,
+static int inline
+inline_elinks_ulongcat(unsigned char *s, unsigned int *slen,
 		unsigned long number, unsigned int width,
 		unsigned char fillchar, unsigned int base,
 		unsigned int upper)
@@ -103,8 +103,17 @@ elinks_ulongcat(unsigned char *s, unsign
 	return ret;
 }
 
+int 
+elinks_ulongcat(unsigned char *s, unsigned int *slen,
+		unsigned long number, unsigned int width,
+		unsigned char fillchar, unsigned int base,
+		unsigned int upper)
+{
+	inline_elinks_ulongcat(s, slen, number, width, fillchar, base, upper);
+}
+
 /* Similar to elinks_ulongcat() but for long number. */
-int inline
+int 
 elinks_longcat(unsigned char *s, unsigned int *slen,
 	       long number, unsigned int width,
 	       unsigned char fillchar, unsigned int base,
_______________________________________________
elinks-dev mailing list
elinks-dev@linuxfromscratch.org
http://linuxfromscratch.org/mailman/listinfo/elinks-dev

Reply via email to