From 25069b4269e2fd8ca3ec7fc14fe9552ec97c0f42 Mon Sep 17 00:00:00 2001 From: Vladimir Makarov Date: Wed, 7 Jul 2004 15:11:42 +0000 Subject: [PATCH] re PR target/16130 (Gcc 3.4 ICE on valid code) 2004-07-07 Vladimir Makarov 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 | 8 ++++++++ gcc/config/ia64/ia64.c | 14 ++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 35a65f6779f..e5635432e0f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2004-07-07 Vladimir Makarov + + 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 PR target/1679. diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 3195422cb45..b8e33451daf 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -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;