/* Subroutines used by or related to instruction recognition.
Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 2, or (at your option) any later
+Software Foundation; either version 3, or (at your option) any later
version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
for more details.
You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING. If not, write to the Free
-Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301, USA. */
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
#include "config.h"
if (changes[i].unshare)
*changes[i].loc = copy_rtx (*changes[i].loc);
- /* Avoid unnecesary rescaning when multiple changes to same instruction
+ /* Avoid unnecesary rescanning when multiple changes to same instruction
are made. */
if (object)
{
|| (GET_CODE (x) == GET_CODE (from) && GET_MODE (x) == GET_MODE (from)
&& rtx_equal_p (x, from)))
{
- validate_change (object, loc, to, 1);
+ validate_unshare_change (object, loc, to, 1);
return;
}
Otherwise return -1. */
int
-asm_noperands (rtx body)
+asm_noperands (const_rtx body)
{
switch (GET_CODE (body))
{
}
if (loc)
- {
-#ifdef USE_MAPPED_LOCATION
- *loc = ASM_OPERANDS_SOURCE_LOCATION (asmop);
-#else
- loc->file = ASM_OPERANDS_SOURCE_FILE (asmop);
- loc->line = ASM_OPERANDS_SOURCE_LINE (asmop);
-#endif
- }
+ *loc = ASM_OPERANDS_SOURCE_LOCATION (asmop);
return ASM_OPERANDS_TEMPLATE (asmop);
}
return 0;
}
-struct tree_opt_pass pass_peephole2 =
+struct rtl_opt_pass pass_peephole2 =
{
+ {
+ RTL_PASS,
"peephole2", /* name */
gate_handle_peephole2, /* gate */
rest_of_handle_peephole2, /* execute */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_df_finish |
- TODO_dump_func, /* todo_flags_finish */
- 'z' /* letter */
+ TODO_df_finish | TODO_verify_rtl_sharing |
+ TODO_dump_func /* todo_flags_finish */
+ }
};
static unsigned int
return 0;
}
-struct tree_opt_pass pass_split_all_insns =
+struct rtl_opt_pass pass_split_all_insns =
{
+ {
+ RTL_PASS,
"split1", /* name */
NULL, /* gate */
rest_of_handle_split_all_insns, /* execute */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func, /* todo_flags_finish */
- 0 /* letter */
+ TODO_dump_func /* todo_flags_finish */
+ }
};
static unsigned int
return 0;
}
-struct tree_opt_pass pass_split_after_reload =
+struct rtl_opt_pass pass_split_after_reload =
{
+ {
+ RTL_PASS,
"split2", /* name */
NULL, /* gate */
rest_of_handle_split_after_reload, /* execute */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func, /* todo_flags_finish */
- 0 /* letter */
+ TODO_dump_func /* todo_flags_finish */
+ }
};
static bool
return 0;
}
-struct tree_opt_pass pass_split_before_regstack =
+struct rtl_opt_pass pass_split_before_regstack =
{
+ {
+ RTL_PASS,
"split3", /* name */
gate_handle_split_before_regstack, /* gate */
rest_of_handle_split_before_regstack, /* execute */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func, /* todo_flags_finish */
- 0 /* letter */
+ TODO_dump_func /* todo_flags_finish */
+ }
};
static bool
return 0;
}
-struct tree_opt_pass pass_split_before_sched2 =
+struct rtl_opt_pass pass_split_before_sched2 =
{
+ {
+ RTL_PASS,
"split4", /* name */
gate_handle_split_before_sched2, /* gate */
rest_of_handle_split_before_sched2, /* execute */
0, /* properties_destroyed */
0, /* todo_flags_start */
TODO_verify_flow |
- TODO_dump_func, /* todo_flags_finish */
- 0 /* letter */
+ TODO_dump_func /* todo_flags_finish */
+ }
};
/* The placement of the splitting that we do for shorten_branches
#endif
}
-struct tree_opt_pass pass_split_for_shorten_branches =
+struct rtl_opt_pass pass_split_for_shorten_branches =
{
+ {
+ RTL_PASS,
"split5", /* name */
gate_do_final_split, /* gate */
split_all_insns_noflow, /* execute */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func, /* todo_flags_finish */
- 0 /* letter */
+ TODO_dump_func | TODO_verify_rtl_sharing /* todo_flags_finish */
+ }
};