This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PATCH: eliminate checks for debug output in compiler built with --disable-checking
On Sep 3, 2004, at 12:34 PM, Jakub Jelinek wrote:
On Fri, Sep 03, 2004 at 12:19:05PM -0700, Matt Austern wrote:
This patch gives a small but measurable C++ compile speed improvement
by eliminating a conditional in some time-critical functions in the
parser. OK to commit to mainline?
+ #ifdef ENABLE_CHECKING
+
static inline bool
cp_lexer_debugging_p (cp_lexer *lexer)
{
return lexer->debugging_p;
}
How about:
+ #else
+
+ #define cp_lexer_debugging_p(lexer) 0
+ #define cp_lexer_print_token(stream, token)
+ #define cp_lexer_debug_stream NULL
I agree that's an improvement; shortens the patch and the changelog
entry, anyway!
Here's the new version. I verified that it bootstrapped, and I did a
sanity check by making sure that nothing in parser.o is calling
fprintf, but I didn't rerun any timing tests.
OK to commit to mainline?
--Matt
Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/ChangeLog,v
retrieving revision 1.4330
diff -p -r1.4330 ChangeLog
*** ChangeLog 3 Sep 2004 18:09:26 -0000 1.4330
--- ChangeLog 3 Sep 2004 20:21:06 -0000
***************
*** 1,3 ****
--- 1,16 ----
+ 2004-0903 Matt Austern <austern@apple.com>
+ Compile speed improvement.
+ * parser.c (cp_lexer_print_token): Only define if ENABLE_CHECKING
set.
+ Otherwise define a stub macro that expands to nothing.
+ (cp_lexer_debugging_p): Only define if ENABLE_CHECKING set.
Otherwise
+ define a stub macro that expands to 0.
+ (cp_lexer_start_debugging): Only define if ENABLE_CHECKING set.
+ (cp_lexer_stop_debugging): Likewise.
+ (cp_lexer_debug_stream): Only define if ENABLE_CHECKING set.
Otherwise
+ define a stub macro that expands to NULL.
+ (cp_lexer_new_main): Only set debugging_p if ENABLE_CHECKING set.
+ (cp_lexer_new_from_tokens): Likewise.
+
2004-09-03 Jan Beulich <jbeulich@novell.com>
* g++spec.c (MATH_LIBRARY_PROFILE): Default to MATH_LIBRARY rather
Index: parser.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cp/parser.c,v
retrieving revision 1.241
diff -p -r1.241 parser.c
*** parser.c 30 Aug 2004 16:03:45 -0000 1.241
--- parser.c 3 Sep 2004 20:21:10 -0000
*************** static void cp_lexer_rollback_tokens
*** 256,261 ****
--- 256,262 ----
(cp_lexer *);
static inline void cp_lexer_set_source_position_from_token
(cp_lexer *, const cp_token *);
+ #ifdef ENABLE_CHECKING
static void cp_lexer_print_token
(FILE *, cp_token *);
static inline bool cp_lexer_debugging_p
*************** static void cp_lexer_start_debugging
*** 264,269 ****
--- 265,275 ----
(cp_lexer *) ATTRIBUTE_UNUSED;
static void cp_lexer_stop_debugging
(cp_lexer *) ATTRIBUTE_UNUSED;
+ #else
+ #define cp_lexer_debug_stream NULL
+ #define cp_lexer_print_token(str, tok)
+ #define cp_lexer_debugging_p(lexer) 0
+ #endif /* ENABLE_CHECKING */
/* Manifest constants. */
*************** static void cp_lexer_stop_debugging
*** 292,299 ****
--- 298,307 ----
/* Variables. */
+ #ifdef ENABLE_CHECKING
/* The stream to which debugging output should be written. */
static FILE *cp_lexer_debug_stream;
+ #endif /* ENABLE_CHECKING */
/* Create a new main C++ lexer, the lexer that gets tokens from the
preprocessor. */
*************** cp_lexer_new_main (void)
*** 332,339 ****
--- 340,349 ----
/* Create the STRINGS array. */
VARRAY_TREE_INIT (lexer->string_tokens, 32, "strings");
+ #ifdef ENABLE_CHECKING
/* Assume we are not debugging. */
lexer->debugging_p = false;
+ #endif /* ENABLE_CHECKING */
return lexer;
}
*************** cp_lexer_new_from_tokens (cp_token_cache
*** 383,402 ****
--- 393,418 ----
/* Create the STRINGS array. */
VARRAY_TREE_INIT (lexer->string_tokens, 32, "strings");
+ #ifdef ENABLE_CHECKING
/* Assume we are not debugging. */
lexer->debugging_p = false;
+ #endif /* ENABLE_CHECKING */
return lexer;
}
/* Returns nonzero if debugging information should be output. */
+ #ifdef ENABLE_CHECKING
+
static inline bool
cp_lexer_debugging_p (cp_lexer *lexer)
{
return lexer->debugging_p;
}
+ #endif /* ENABLE_CHECKING */
+
/* Set the current source position from the information stored in
TOKEN. */
*************** cp_lexer_rollback_tokens (cp_lexer* lexe
*** 910,915 ****
--- 926,933 ----
/* Print a representation of the TOKEN on the STREAM. */
+ #ifdef ENABLE_CHECKING
+
static void
cp_lexer_print_token (FILE * stream, cp_token* token)
{
*************** cp_lexer_stop_debugging (cp_lexer* lexer
*** 994,999 ****
--- 1012,1019 ----
--lexer->debugging_p;
}
+ #endif /* ENABLE_CHECKING */
+
/* Decl-specifiers. */