re PR debug/25468 (-g makes g++ loop forever)
authorSteven Bosscher <steven@gcc.gnu.org>
Sun, 23 Jul 2006 17:56:34 +0000 (17:56 +0000)
committerSteven Bosscher <steven@gcc.gnu.org>
Sun, 23 Jul 2006 17:56:34 +0000 (17:56 +0000)
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

gcc/ChangeLog
gcc/config/elfos.h
gcc/fortran/ChangeLog
gcc/testsuite/gfortran.fortran-torture/execute/der_init_4.f90

index de9be71ced10018ae253825e1348f3bf6c8b75ef..d52141a09313edb15f7253bff42d28a605f62710 100644 (file)
@@ -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.
index 31e309d9b07f4377c9629ff4ab6b2d7aa44dc36f..a2bd49f909ad7d32f9249d951681fd3984f30dc6 100644 (file)
@@ -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)    \
            {                                                           \
index ad63dd19bbbcf3134de6c979f9b89b94fcce79bb..13ba61136604306020cf99bc5ccf3ccede84d261 100644 (file)
@@ -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>
index 2b136207aa8e488d63905385a6dfaaa3c3c34b88..644ef65e1abf6a2e8bedab862c29fcbf628ab8f0 100644 (file)
@@ -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