diff options
author | Steven Bosscher <steven@gcc.gnu.org> | 2006-07-23 17:56:34 +0000 |
---|---|---|
committer | Steven Bosscher <steven@gcc.gnu.org> | 2006-07-23 17:56:34 +0000 |
commit | d88259d140c0f82745f460e659b0266fa3eb67f7 (patch) | |
tree | e0887a2560fec0a0e8b3c179f750ffe3d3ab7f18 | |
parent | 2e9e6f68746fe18837764600755017652bd15a19 (diff) | |
download | gcc-d88259d140c0f82745f460e659b0266fa3eb67f7.zip gcc-d88259d140c0f82745f460e659b0266fa3eb67f7.tar.gz gcc-d88259d140c0f82745f460e659b0266fa3eb67f7.tar.bz2 |
re PR debug/25468 (-g makes g++ loop forever)
2006-07-23 Steven Bosscher <steven@gcc.gnu.org>
PR debug/25468
* config/elfos.h (ASM_OUTPUT_ASCII): Remove 'register' marks.
Cache the last found '\0' marker to avoid quadratic behavior.
From-SVN: r115685
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/elfos.h | 19 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.fortran-torture/execute/der_init_4.f90 | 2 |
4 files changed, 21 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index de9be71..d52141a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-07-23 Steven Bosscher <steven@gcc.gnu.org> + + PR debug/25468 + * config/elfos.h (ASM_OUTPUT_ASCII): Remove 'register' marks. + Cache the last found '\0' marker to avoid quadratic behavior. + 2006-07-23 Jan Hubicka <jh@suse.cz> * i386.md (subsi_3_zext): Fix output template. diff --git a/gcc/config/elfos.h b/gcc/config/elfos.h index 31e309d..a2bd49f 100644 --- a/gcc/config/elfos.h +++ b/gcc/config/elfos.h @@ -429,14 +429,15 @@ Boston, MA 02110-1301, USA. */ #define ASM_OUTPUT_ASCII(FILE, STR, LENGTH) \ do \ { \ - register const unsigned char *_ascii_bytes = \ + const unsigned char *_ascii_bytes = \ (const unsigned char *) (STR); \ - register const unsigned char *limit = _ascii_bytes + (LENGTH); \ - register unsigned bytes_in_chunk = 0; \ + const unsigned char *limit = _ascii_bytes + (LENGTH); \ + const unsigned char *last_null = NULL; \ + unsigned bytes_in_chunk = 0; \ \ for (; _ascii_bytes < limit; _ascii_bytes++) \ { \ - register const unsigned char *p; \ + const unsigned char *p; \ \ if (bytes_in_chunk >= 60) \ { \ @@ -444,8 +445,14 @@ Boston, MA 02110-1301, USA. */ bytes_in_chunk = 0; \ } \ \ - for (p = _ascii_bytes; p < limit && *p != '\0'; p++) \ - continue; \ + if (_ascii_bytes > last_null) \ + { \ + for (p = _ascii_bytes; p < limit && *p != '\0'; p++) \ + continue; \ + last_null = p; \ + } \ + else \ + p = last_null; \ \ if (p < limit && (p - _ascii_bytes) <= (long)STRING_LIMIT) \ { \ diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index ad63dd1..13ba611 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,6 +1,6 @@ 2006-07-22 Steven Bosscher <steven@gcc.gnu.org> - PR fortran/28439 + PR fortran/28439 * trans-stmt.c (gfc_trans_arithmetic_if): Evaluate the condition once. 2006-07-16 Jakub Jelinek <jakub@redhat.com> diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/der_init_4.f90 b/gcc/testsuite/gfortran.fortran-torture/execute/der_init_4.f90 index 2b13620..644ef65 100644 --- a/gcc/testsuite/gfortran.fortran-torture/execute/der_init_4.f90 +++ b/gcc/testsuite/gfortran.fortran-torture/execute/der_init_4.f90 @@ -1,5 +1,5 @@ ! PR13930 -! We were trying to assugn a default initializer to dummy variables. +! We were trying to assign a default initializer to dummy variables. program der_init_4 type t integer :: i = 42 |