Commit fa978426 by Andreas Schwab Committed by Andreas Schwab

ia64.md: Define new attribute "empty".

	* config/ia64/ia64.md: Define new attribute "empty".
	(prologue_use, nop_x, insn_group_barrier): Set it.

	* config/ia64/ia64.c (ia64_reorg): When looking for trailing call
	skip over "empty" insns.

From-SVN: r84059
parent 83e113ae
2004-07-03 Andreas Schwab <schwab@suse.de>
* config/ia64/ia64.md: Define new attribute "empty".
(prologue_use, nop_x, insn_group_barrier): Set it.
* config/ia64/ia64.c (ia64_reorg): When looking for trailing call
skip over "empty" insns.
2004-07-03 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 2004-07-03 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* tree-inline.c (initialize_inlined_parameters): Pass proper function * tree-inline.c (initialize_inlined_parameters): Pass proper function
......
...@@ -7666,11 +7666,12 @@ ia64_reorg (void) ...@@ -7666,11 +7666,12 @@ ia64_reorg (void)
insn = get_last_insn (); insn = get_last_insn ();
if (! INSN_P (insn)) if (! INSN_P (insn))
insn = prev_active_insn (insn); insn = prev_active_insn (insn);
if (GET_CODE (insn) == INSN /* Skip over insns that expand to nothing. */
&& GET_CODE (PATTERN (insn)) == UNSPEC_VOLATILE while (GET_CODE (insn) == INSN && get_attr_empty (insn) == EMPTY_YES)
&& XINT (PATTERN (insn), 1) == UNSPECV_INSN_GROUP_BARRIER) {
{ if (GET_CODE (PATTERN (insn)) == UNSPEC_VOLATILE
saw_stop = 1; && XINT (PATTERN (insn), 1) == UNSPECV_INSN_GROUP_BARRIER)
saw_stop = 1;
insn = prev_active_insn (insn); insn = prev_active_insn (insn);
} }
if (GET_CODE (insn) == CALL_INSN) if (GET_CODE (insn) == CALL_INSN)
......
...@@ -154,6 +154,10 @@ ...@@ -154,6 +154,10 @@
(define_attr "predicable" "no,yes" (const_string "yes")) (define_attr "predicable" "no,yes" (const_string "yes"))
;; Empty. True iff this insn does not generate any code.
(define_attr "empty" "no,yes" (const_string "no"))
;; DFA descriptions of ia64 processors used for insn scheduling and ;; DFA descriptions of ia64 processors used for insn scheduling and
...@@ -5425,7 +5429,8 @@ ...@@ -5425,7 +5429,8 @@
"" ""
"" ""
[(set_attr "itanium_class" "ignore") [(set_attr "itanium_class" "ignore")
(set_attr "predicable" "no")]) (set_attr "predicable" "no")
(set_attr "empty" "yes")])
;; Allocate a new register frame. ;; Allocate a new register frame.
...@@ -5592,7 +5597,8 @@ ...@@ -5592,7 +5597,8 @@
[(const_int 5)] [(const_int 5)]
"" ""
"" ""
[(set_attr "itanium_class" "nop_x")]) [(set_attr "itanium_class" "nop_x")
(set_attr "empty" "yes")])
;; The following insn will be never generated. It is used only by ;; The following insn will be never generated. It is used only by
;; insn scheduler to change state before advancing cycle. ;; insn scheduler to change state before advancing cycle.
...@@ -5624,7 +5630,8 @@ ...@@ -5624,7 +5630,8 @@
"" ""
";;" ";;"
[(set_attr "itanium_class" "stop_bit") [(set_attr "itanium_class" "stop_bit")
(set_attr "predicable" "no")]) (set_attr "predicable" "no")
(set_attr "empty" "yes")])
(define_expand "trap" (define_expand "trap"
[(trap_if (const_int 1) (const_int 0))] [(trap_if (const_int 1) (const_int 0))]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment