re PR target/16130 (Gcc 3.4 ICE on valid code)
authorVladimir Makarov <vmakarov@redhat.com>
Wed, 7 Jul 2004 15:11:42 +0000 (15:11 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Wed, 7 Jul 2004 15:11:42 +0000 (15:11 +0000)
2004-07-07  Vladimir Makarov  <vmakarov@redhat.com>

PR target/16130
PR target/16142
PR target/16143
* config/ia64/ia64.c (ia64_dfa_new_cycle): Reset DFA state for asm
insn.

From-SVN: r84202

gcc/ChangeLog
gcc/config/ia64/ia64.c

index 35a65f6779f3fc20d138c0e027215d677fd81847..e5635432e0fb5061957643e4fed119316a25ef48 100644 (file)
@@ -1,3 +1,11 @@
+2004-07-07  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR target/16130
+       PR target/16142
+       PR target/16143
+       * config/ia64/ia64.c (ia64_dfa_new_cycle): Reset DFA state for asm
+       insn.
+       
 2004-07-06  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>
 
        PR target/1679.
index 3195422cb458ed60214d7a71759c8e0b6b59466b..b8e33451dafc9b6283763263936923a12c784c92 100644 (file)
@@ -6326,10 +6326,16 @@ ia64_dfa_new_cycle (FILE *dump, int verbose, rtx insn, int last_clock,
        }
       else if (reload_completed)
        setup_clocks_p = TRUE;
-      memcpy (curr_state, prev_cycle_state, dfa_state_size);
-      state_transition (curr_state, dfa_stop_insn);
-      state_transition (curr_state, dfa_pre_cycle_insn);
-      state_transition (curr_state, NULL);
+      if (GET_CODE (PATTERN (last_scheduled_insn)) == ASM_INPUT
+         || asm_noperands (PATTERN (last_scheduled_insn)) >= 0)
+       state_reset (curr_state);
+      else
+       {
+         memcpy (curr_state, prev_cycle_state, dfa_state_size);
+         state_transition (curr_state, dfa_stop_insn);
+         state_transition (curr_state, dfa_pre_cycle_insn);
+         state_transition (curr_state, NULL);
+       }
     }
   else if (reload_completed)
     setup_clocks_p = TRUE;