Eager newline handling for cpplib [patch]

Zack Weinberg zack@rabi.columbia.edu
Sat Mar 13 10:41:00 GMT 1999


The appended patch implements "eager newline handling" in cpplib.
This fixes at least two bugs involving backslash-newline in odd
places.  It also squelches the number one performance bottleneck;
cpplib's performance is now neck and neck with cccp.

Some statistics: times to compile glibc (shared/static only) with the
cc1 from egcs-2.93.11 19990311 (gcc2 ss-980929 experimental) on
i586-linux [kernel 2.2.1, glibc 2.1, 32Mb]

- cccp:			  1:47:31 - usr 4797.29 sys 581.91
- cpplib without patch:   2:29:06 - usr 7342.79 sys 575.91
- cpplib with patch:	  1:48:37 - usr 4935.84 sys 568.37

There are no regressions in the testsuite, in fact this fixes
gcc.dg/990119-1.c and 990228-1.c.

Patch is relative to my previous patch for cpplib ("cpplib
initialization overhaul, revised") which is at
http://egcs.cygnus.com/ml/egcs-patches/1999-03/msg00218.html .

zw

1999-03-13 12:56 -0500  Zack Weinberg  <zack@rabi.columbia.edu>

	"Eager" newline handling for cpplib.

	* cppfile.c (read_and_prescan): Map backslash-newline to '\r'
	(which cannot otherwise appear in the processed buffer) and
	move it out of tokens that it appears in the middle of.
	Improve performance.
	(find_position): New function.

	* cpplib.c: \r (one character) indicates backslash
	newline, not \\\n (two characters).  It cannot appear in the
	middle of a token.  Call CPP_BUMP_LINE (pfile) whenever
	parsing moves past \n or \r.  Increment pfile->lineno whenever
	a \n is placed into token_buffer.  Only one mark can exist at
	a time, and CPP_BUMP_LINE must not be used while it is
	active.  It is automatically cleared by cpp_pop_buffer and
	parse_goto_mark.  \r is not in is_hor_space or is_space.

	(NEWLINE_FIX, NEWLINE_FIX1, adjust_position,
	update_position, count_newlines, parse_move_mark): Removed.
	(parse_string, copy_comment): New functions.
	(parse_name): Returns void.
	(parse_set_mark, parse_clear_mark, parse_goto_mark): Take only
	one argument, a cpp_reader *.  Change for new marking scheme.
	(skip_comment): Handle CHILL line comments too.  Second
	argument is now first character of comment marker; all callers
	changed.  Issue error for unterminated block comment here.
	(cpp_skip_hspace): Recognize CHILL comments.
	(copy_rest_of_line): Likewise.  Call skip_comment and
	parse_string directly, don't go through cpp_get_token.  Emit
	"/**/" for block comments if -traditional (create_definition
	needs this).
	(do_define): Don't play with put_out_comments.
	(cpp_push_buffer): Initialize ->mark to -1.
	(cpp_buf_line_and_col): Just read out the values in the buffer
	structure.
	(output_line_command): Use cpp_buf_line_and_col.  Fix
	formatting.  Remove stale code.
	(cpp_get_token): Break out string parsing code to
	parse_string.  Use skip_comment for CHILL comments too.  Use
	copy_comment for put_out_comments instead of dinking with
	marks.  Remove stale code.  Don't call output_line_command
	unless it's necessary.

	* cpplib.h (parse_marker): Removed.
	(struct cpp_buffer): line_base is now a unsigned char *; add
	`mark' [long], remove `marks' [struct parse_marker *].
	(parse_set_mark, parse_clear_mark, parse_goto_mark): Update
	prototypes.
	(CPP_BUMP_LINE, CPP_BUMP_BUFFER_LINE): New macros.
	* cppinit.c (is_hor_space, is_space): '\r' is not considered
	whitespace.
	* cppexp.c (cpp_parse_expression): Use cpp_skip_hspace, not
	SKIP_WHITE_SPACE.
	* cpphash.c (macarg): Disable line commands while expanding.

begin-base64 644 eager-nl.diff.gz
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
N39IZV54OYWUiT7CWy7BTo3gyCmLIqm2n95mtaoPxsuZFQWxUsHHhklj5ssU
hK98j2hZr5d92h2kSxdY5vIm8yaKNf5DXq5SkVfgSpEtjTIJHINXq/RynB3b
I4kizsDDBvILMCWmzyw49nZ0OlqngzR9mLu0L1/xXuaF8qLbwks6+8aZ4Eke
vTseU6iQvzmugSCFqrCqJl1uI/JsVb4sZhlqclxsEbRmnfXyOhu6nA/Nq+9i
9INmUzWUZ+vy1Mr/bgA6sYQeYVrk5jlFgTM5f9fC0BYdSY9ahPzFbJnSPxsr
C8xKNeWtige2WgtZFTkoqG4Fqts0ArUaMLmXdvlluq3qq3S1oJedRm4cH1DW
itgIfklLx4GNDRWEW5oB9y49iCpAfZJW28VXvt2sCy3ohiamxw0IJumcQI+h
Io6oIbQSh4Xy29qxC3Unm1PG7eurM1sJ6gs+CsrXWKl599bb1Tzzr8DPrTer
hxM6A1DShu6abU8XfPGDRWbOnn68CIO0EBTwiUE/b+O6ZfXLPrrq/gd/l6l8
8l3+nQGKDJYT7mCFuzo/21nlZwtOVT4sfsx/FZ8Qf4v/0h18PfHhbN9gSNZy
tLp33er9gV5PX0FoTdK3UFVNqlGarzVOKHdMtjN63J39aHcFmfwYyPs+8CWj
EFIVj3NVeXCFI9ucKibyqDOWQiofEjQoHUG/hSOMCjKpI0Yqi1D3oSLzruhX
ATDT3h8Xyi1tTdRes84l5l4wLx19wB8ypUzhbLGmuiI7ftnuFUMNDU/9Ng0i
chTbLHkQj9rt1PrnTsU//7d63Krd+293lUV7VJGA+QOWZf6gXakYhopHrRqH
CqNzj8rqbH4PzErnqhSoGjfmSiJyPf8uz6nnF5yn+G6tXaUjD2mkCeuErimz
196gAPaeR9R6XZkC4WN6/v7dehOkisG1l3xDvw6ADBdnd12Z7bVzJZv9HWeT
bgp2dp3hJqdKVvzCptUnVimC6qmTMMFRtdpACZES99yLWS5D5B7DPllJKrBI
vT3817sDjsPyoYWbCJ9LrdQMuxKhfqh+cMe6rjg8tY8qN8221sRqZYH4/+au
vbmNHLn/TVc+BJZba4kaUuZTEqWzNzpbe1bi1TqSbpOqbIWhyaHFWorDI0U7
PkffPegHgAYGMyTlTdWpyhbFATB4dDca/fjBCh6OLnCC54cV7CJawjifjhpP
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
AVtiEb0AAA==
====


More information about the Gcc-patches mailing list