par-ch4.adb (P_Simple_Expression): Fold long sequences of concatenations of string...
commitb54ddf5adfaa5be8c910c862d62b3726670df773
authorBob Duff <duff@adacore.com>
Fri, 31 Aug 2007 10:23:37 +0000 (31 12:23 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Fri, 31 Aug 2007 10:23:37 +0000 (31 12:23 +0200)
tree198081394ea01406fbc6cf4d9510dc38574a8add
parentb90cfacd5f804816323d230bd3d7fc4d62569d5b
par-ch4.adb (P_Simple_Expression): Fold long sequences of concatenations of string literals into a single literal...

2007-08-31  Bob Duff  <duff@adacore.com>

* par-ch4.adb (P_Simple_Expression): Fold long sequences of
concatenations of string literals into a single literal, in order to
avoid very deep recursion in the front end, which was causing stack
overflow.

* sem_eval.adb (Eval_Concatenation): If the left operand is the empty
string, and the right operand is a string literal (the case of "" &
"..."), optimize by avoiding copying the right operand -- just use the
value of the right operand directly.

* stringt.adb (Store_String_Chars): Optimize by growing the
String_Chars table all at once, rather than appending characters one by
one.
(Write_String_Table_Entry): If the string to be printed is very long,
just print the first few characters, followed by the length. Otherwise,
doing "pn(n)" in the debugger can take an extremely long time.

* sem_prag.adb (Process_Interface_Name): Replace loop doing
Store_String_Char with Store_String_Chars.

From-SVN: r127977
gcc/ada/par-ch4.adb
gcc/ada/sem_eval.adb
gcc/ada/sem_prag.adb
gcc/ada/stringt.adb