]> gcc.gnu.org Git - gcc.git/commitdiff
jump.c (jump_optimize_1): Don't delete the line note after the prologue even if it...
authorJason Merrill <jason@gcc.gnu.org>
Fri, 15 Dec 2000 15:10:30 +0000 (10:10 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 15 Dec 2000 15:10:30 +0000 (10:10 -0500)
        * jump.c (jump_optimize_1): Don't delete the line note after the
        prologue even if it seems redundant.

        * config/arm/arm.c (arm_expand_prologue): Set RTX_FRAME_RELATED_P
        on all insns used to adjust the stack.

From-SVN: r38286

gcc/ChangeLog
gcc/config/arm/arm.c
gcc/jump.c

index bf665e470a802b1a266b5819404d60ec1b28e5b4..598529a4b76a2947564972db28aec4122116549c 100644 (file)
@@ -1,3 +1,11 @@
+2000-12-15  Jason Merrill  <jason@redhat.com>
+
+       * jump.c (jump_optimize_1): Don't delete the line note after the
+       prologue even if it seems redundant.
+
+       * config/arm/arm.c (arm_expand_prologue): Set RTX_FRAME_RELATED_P
+       on all insns used to adjust the stack.
+
 Fri Dec 15 15:32:16 MET 2000  Jan Hubicka  <jh@suse.cz>
 
        * combine.c (cant_combine_insn_p): Get around SUBREGs when determining
@@ -207,24 +215,24 @@ Mon Dec 11 13:51:09 2000  Jeffrey A Law  (law@cygnus.com)
 
 2000-12-11  Neil Booth  <neilb@earthling.net>
 
-        * cpperror.c (print_location): New function.
-        (print_containing_files): Simplify.
-        (_cpp_begin_message): Simplify and use print_location.
-        * cppfiles.c (stack_include_file): Update.
-        (_cpp_pop_file_buffer): Update.
-        * cpphash.h (struct cpp_buffer): New members
-        include_stack_listed and type.   
-        * cpplib.c (_cpp_handle_directive): Buffer->inc is not null.
-        (run_directive): Take buffer type.  cpp_push_buffer cannot fail.
-        (_cpp_do__Pragma, cpp_define, _cpp_define_builtin, cpp_undef,
-        handle_assertion): Update.
-        (cpp_push_buffer): Take a buffer type and file name.
-        (cpp_pop_buffer): Update.  Clear include_stack_listed.
-        * cpplib.h (input_stack_listing_current): Remove.
-        (enum cpp_buffer_type): New.
-        (cpp_push_buffer): New prototype.
-        * cppmacro.c (builtin_macro): Simplify; buffer cannot be null.
-        * fix-header.c (read_scan_file): Update.
+       * cpperror.c (print_location): New function.
+       (print_containing_files): Simplify.
+       (_cpp_begin_message): Simplify and use print_location.
+       * cppfiles.c (stack_include_file): Update.
+       (_cpp_pop_file_buffer): Update.
+       * cpphash.h (struct cpp_buffer): New members
+       include_stack_listed and type.   
+       * cpplib.c (_cpp_handle_directive): Buffer->inc is not null.
+       (run_directive): Take buffer type.  cpp_push_buffer cannot fail.
+       (_cpp_do__Pragma, cpp_define, _cpp_define_builtin, cpp_undef,
+       handle_assertion): Update.
+       (cpp_push_buffer): Take a buffer type and file name.
+       (cpp_pop_buffer): Update.  Clear include_stack_listed.
+       * cpplib.h (input_stack_listing_current): Remove.
+       (enum cpp_buffer_type): New.
+       (cpp_push_buffer): New prototype.
+       * cppmacro.c (builtin_macro): Simplify; buffer cannot be null.
+       * fix-header.c (read_scan_file): Update.
 
 2000-12-10  Robert Lipe <robertlipe@usa.net>
 
index f5541af89874eef4364701e074ab3d538af62ab2..ee2757c31b4e56cd0e633af991762724b6f8e41e 100644 (file)
@@ -7848,9 +7848,17 @@ arm_expand_prologue ()
 
   if (amount != const0_rtx)
     {
+      /* This add can produce multiple insns for a large constant, so we
+        need to get tricky.  */
+      rtx last = get_last_insn ();
       insn = emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx,
                                    amount));
-      RTX_FRAME_RELATED_P (insn) = 1;
+      do
+       {
+         last = last ? NEXT_INSN (last) : get_insns ();
+         RTX_FRAME_RELATED_P (last) = 1;
+       }
+      while (last != insn);
 
       /* If the frame pointer is needed, emit a special barrier that
         will prevent the scheduler from moving stores to the frame
index 6a916fa8cd9751367400781caf394eddaa77955e..f4845b8e484140e218bd5b3c65118c9bd5da7561 100644 (file)
@@ -723,18 +723,25 @@ jump_optimize_1 (f, cross_jump, noop_moves, after_regscan,
     rtx last_note = 0;
 
     for (insn = f; insn; insn = NEXT_INSN (insn))
-      if (GET_CODE (insn) == NOTE && NOTE_LINE_NUMBER (insn) >= 0)
+      if (GET_CODE (insn) == NOTE)
        {
-         /* Delete this note if it is identical to previous note.  */
-         if (last_note
-             && NOTE_SOURCE_FILE (insn) == NOTE_SOURCE_FILE (last_note)
-             && NOTE_LINE_NUMBER (insn) == NOTE_LINE_NUMBER (last_note))
+         if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_FUNCTION_BEG)
+           /* Any previous line note was for the prologue; gdb wants a new
+              note after the prologue even if it is for the same line.  */
+           last_note = NULL_RTX;
+         else if (NOTE_LINE_NUMBER (insn) >= 0)
            {
-             delete_insn (insn);
-             continue;
-           }
+             /* Delete this note if it is identical to previous note.  */
+             if (last_note
+                 && NOTE_SOURCE_FILE (insn) == NOTE_SOURCE_FILE (last_note)
+                 && NOTE_LINE_NUMBER (insn) == NOTE_LINE_NUMBER (last_note))
+               {
+                 delete_insn (insn);
+                 continue;
+               }
 
-         last_note = insn;
+             last_note = insn;
+           }
        }
   }
 
This page took 0.099958 seconds and 5 git commands to generate.