mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-23 14:31:26 +08:00
Makefile.in (gengtype): Use $(BUILD_ERRORS).
* Makefile.in (gengtype): Use $(BUILD_ERRORS). (gengtype.o): Depend on errors.h. * genattrtab.c (strcmp_check): Use gcc_assert and gcc_unreachable. (attr_rtx_1, attr_printf, attr_copy_rtx, evaluate_eq_attr, attr_alt_subset_p, attr_alt_subset_of_compl_p, attr_alt_intersection, attr_alt_union, optimize_attrs, gen_insn, write_test_expr, write_attr_value, write_eligible_delay, make_internal_attr, make_numeric_value): Likewise. * genautomata.c (regexp_name, get_str_vect, gen_presence_absence_set, automaton_decl_hash, automaton_decl_eq_p, insn_decl_hash, insn_decl_eq_p, decl_hash, decl_eq_p, process_regexp, loop_in_regexp, check_loops_in_regexps, process_regexp_cycles, reserv_sets_cmp, set_unit_reserv, test_unit_reserv, it_is_empty_reserv_sets, reserv_sets_are_intersected, reserv_sets_shift, reserv_sets_or, reserv_sets_and, output_cycle_reservs, get_free_state, intersected_state_reservs_p, states_union, remove_arc, copy_insn_regexp, transform_1, transform_2, transform_3, regexp_transform_func, store_alt_unit_usage, check_regexp_units_distribution, process_seq_for_forming_states, process_alts_for_forming_states, make_automaton, form_arcs_marked_by_insn, create_composed_state, set_out_arc_insns_equiv_num, partition_equiv_class, process_insn_equiv_class, set_insn_equiv_classes, units_to_automata_heuristic_distr, form_regexp, longest_path_length, output_dfa_max_issue_rate, add_vect, out_state_arcs_num, add_vect_el, output_trans_table, output_state_alts_table, output_dead_lock_vect, output_max_insn_queue_index_def, output_min_insn_conflict_delay_func, output_internal_insn_latency_func, output_print_reservation_func, output_cpu_unit_reservation_p, output_state_arcs, make_insn_alts_attr, make_internal_dfa_insn_code_attr, make_default_insn_latency_attr, form_important_insn_automata_lists): Likewise. * genemit.c (gen_exp, output_add_clobbers, output_added_clobbers_hard_reg_p): Likewise. * genextract.c (print_path, main): Likewise. * genflags.c (gen_macro): Likewise. * gengenrtl.c: Include errors.h (type_from_format, accessor_from_format): Likewise. * gengtype.c (get_file_basename, output_mangled_typename, walk_type, write_types_process_field, write_types_local_process_field): Likewise. * genmodes.c (complete_mode): Likewise. * genopinit.c (gen_insn): Likewise. * genoutput.c (output_insn_data, check_constraint_len, constraint_len): Likewise. * genpreds.c (add_mode_tests):Likewise. * gen-protos.c (add_hash): Likewise. * genrecog.c (find_operand, find_matching_operand, validate_pattern, add_to_sequence, maybe_both_true, nodes_identical_1, merge_trees, write_switch, write_cond, write_action, is_unconditional, make_insn_sequence, debug_decision_2): Likewise. * gensupport.c (is_predicable, collect_insn_data, alter_predicate_for_insn, maybe_eval_c_test): Likewise. From-SVN: r87236
This commit is contained in:
parent
87022a6b0e
commit
b2d59f6f77
@ -1,11 +1,73 @@
|
||||
2004-09-09 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* Makefile.in (gengtype): Use $(BUILD_ERRORS).
|
||||
(gengtype.o): Depend on errors.h.
|
||||
* genattrtab.c (strcmp_check): Use gcc_assert and gcc_unreachable.
|
||||
(attr_rtx_1, attr_printf, attr_copy_rtx, evaluate_eq_attr,
|
||||
attr_alt_subset_p, attr_alt_subset_of_compl_p,
|
||||
attr_alt_intersection, attr_alt_union, optimize_attrs, gen_insn,
|
||||
write_test_expr, write_attr_value, write_eligible_delay,
|
||||
make_internal_attr, make_numeric_value): Likewise.
|
||||
* genautomata.c (regexp_name, get_str_vect,
|
||||
gen_presence_absence_set, automaton_decl_hash,
|
||||
automaton_decl_eq_p, insn_decl_hash, insn_decl_eq_p, decl_hash,
|
||||
decl_eq_p, process_regexp, loop_in_regexp, check_loops_in_regexps,
|
||||
process_regexp_cycles, reserv_sets_cmp, set_unit_reserv,
|
||||
test_unit_reserv, it_is_empty_reserv_sets,
|
||||
reserv_sets_are_intersected, reserv_sets_shift, reserv_sets_or,
|
||||
reserv_sets_and, output_cycle_reservs, get_free_state,
|
||||
intersected_state_reservs_p, states_union, remove_arc,
|
||||
copy_insn_regexp, transform_1, transform_2, transform_3,
|
||||
regexp_transform_func, store_alt_unit_usage,
|
||||
check_regexp_units_distribution, process_seq_for_forming_states,
|
||||
process_alts_for_forming_states, make_automaton,
|
||||
form_arcs_marked_by_insn, create_composed_state,
|
||||
set_out_arc_insns_equiv_num, partition_equiv_class,
|
||||
process_insn_equiv_class, set_insn_equiv_classes,
|
||||
units_to_automata_heuristic_distr, form_regexp,
|
||||
longest_path_length, output_dfa_max_issue_rate, add_vect,
|
||||
out_state_arcs_num, add_vect_el, output_trans_table,
|
||||
output_state_alts_table, output_dead_lock_vect,
|
||||
output_max_insn_queue_index_def,
|
||||
output_min_insn_conflict_delay_func,
|
||||
output_internal_insn_latency_func, output_print_reservation_func,
|
||||
output_cpu_unit_reservation_p, output_state_arcs,
|
||||
make_insn_alts_attr, make_internal_dfa_insn_code_attr,
|
||||
make_default_insn_latency_attr,
|
||||
form_important_insn_automata_lists): Likewise.
|
||||
* genemit.c (gen_exp, output_add_clobbers,
|
||||
output_added_clobbers_hard_reg_p): Likewise.
|
||||
* genextract.c (print_path, main): Likewise.
|
||||
* genflags.c (gen_macro): Likewise.
|
||||
* gengenrtl.c: Include errors.h
|
||||
(type_from_format, accessor_from_format): Likewise.
|
||||
* gengtype.c (get_file_basename, output_mangled_typename,
|
||||
walk_type, write_types_process_field,
|
||||
write_types_local_process_field): Likewise.
|
||||
* genmodes.c (complete_mode): Likewise.
|
||||
* genopinit.c (gen_insn): Likewise.
|
||||
* genoutput.c (output_insn_data, check_constraint_len,
|
||||
constraint_len): Likewise.
|
||||
* genpreds.c (add_mode_tests):Likewise.
|
||||
* gen-protos.c (add_hash): Likewise.
|
||||
* genrecog.c (find_operand, find_matching_operand,
|
||||
validate_pattern, add_to_sequence, maybe_both_true,
|
||||
nodes_identical_1, merge_trees, write_switch, write_cond,
|
||||
write_action, is_unconditional, make_insn_sequence,
|
||||
debug_decision_2): Likewise.
|
||||
* gensupport.c (is_predicable, collect_insn_data,
|
||||
alter_predicate_for_insn, maybe_eval_c_test): Likewise.
|
||||
|
||||
2004-09-09 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* basic-block.h (guess_outgoing_edge_probabilities): Declare.
|
||||
* cfgbuild.c (compute_outgoing_frequencies): When probability is missing,
|
||||
guess it.
|
||||
(find_many_sub_basic_blocks): Do update profile only when it is present.
|
||||
* cfgbuild.c (compute_outgoing_frequencies): When probability is
|
||||
missing, guess it.
|
||||
(find_many_sub_basic_blocks): Do update profile only when it is
|
||||
present.
|
||||
* predict.c (set_even_probabilities): Break out from ...
|
||||
(combine_predictions_for_insn): ... here; deal with !can_predict_insn_p insns.
|
||||
(combine_predictions_for_insn): ... here; deal with
|
||||
!can_predict_insn_p insns.
|
||||
(combine_predictions_for_bb): Use set_even_probabilities.
|
||||
(bb_estimate_probability_locally): Break out from ....
|
||||
(estimate_probability): ... here.
|
||||
@ -6720,7 +6782,7 @@
|
||||
* config/i386/xmmintrin.h: Include <mm_malloc.h>.
|
||||
|
||||
2004-08-03 H.J. Lu <hongjiu.lu@intel.com>
|
||||
Tanguy Fautrà <tfautre@pandora.be>
|
||||
Tanguy Fautrà <tfautre@pandora.be>
|
||||
|
||||
* config/i386/pmm_malloc.h: New file.
|
||||
|
||||
|
@ -2609,12 +2609,13 @@ genpreds.o : genpreds.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) coretypes.h \
|
||||
$(GTM_H) errors.h gensupport.h $(OBSTACK_H)
|
||||
|
||||
gengtype$(build_exeext) : gengtype.o gengtype-lex.o gengtype-yacc.o \
|
||||
$(BUILD_LIBDEPS)
|
||||
$(BUILD_LIBDEPS) $(BUILD_ERRORS)
|
||||
$(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o $@ \
|
||||
gengtype.o gengtype-lex.o gengtype-yacc.o $(BUILD_LIBS)
|
||||
gengtype.o gengtype-lex.o gengtype-yacc.o $(BUILD_ERRORS) \
|
||||
$(BUILD_LIBS)
|
||||
|
||||
gengtype.o : gengtype.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(GTM_H) \
|
||||
gengtype.h gtyp-gen.h rtl.def insn-notes.def
|
||||
gengtype.h gtyp-gen.h rtl.def insn-notes.def errors.h
|
||||
|
||||
gengtype-lex.o : gengtype-lex.c gengtype.h gengtype-yacc.h \
|
||||
$(BCONFIG_H) coretypes.h $(GTM_H) $(SYSTEM_H) vec.h
|
||||
|
@ -21,7 +21,6 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
#include "coretypes.h"
|
||||
#include "tm.h"
|
||||
#include "scan.h"
|
||||
#undef abort
|
||||
|
||||
int verbose = 0;
|
||||
const char *progname;
|
||||
@ -48,8 +47,7 @@ add_hash (const char *fname)
|
||||
for (;;)
|
||||
{
|
||||
i = (i+1) % HASH_SIZE;
|
||||
if (i == i0)
|
||||
abort ();
|
||||
gcc_assert (i != i0);
|
||||
if (hash_tab[i] == 0)
|
||||
break;
|
||||
}
|
||||
|
126
gcc/genattrtab.c
126
gcc/genattrtab.c
@ -102,9 +102,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
#if 0
|
||||
#define strcmp_check(S1, S2) ((S1) == (S2) \
|
||||
? 0 \
|
||||
: (strcmp ((S1), (S2)) \
|
||||
? 1 \
|
||||
: (abort (), 0)))
|
||||
: (gcc_assert (strcmp ((S1), (S2))), 1))
|
||||
#else
|
||||
#define strcmp_check(S1, S2) ((S1) != (S2))
|
||||
#endif
|
||||
@ -596,7 +594,7 @@ attr_rtx_1 (enum rtx_code code, va_list p)
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
return rt_val;
|
||||
@ -633,8 +631,7 @@ attr_printf (unsigned int len, const char *fmt, ...)
|
||||
|
||||
va_start (p, fmt);
|
||||
|
||||
if (len > sizeof str - 1) /* Leave room for \0. */
|
||||
abort ();
|
||||
gcc_assert (len < sizeof str); /* Leave room for \0. */
|
||||
|
||||
vsprintf (str, fmt, p);
|
||||
va_end (p);
|
||||
@ -777,7 +774,7 @@ attr_copy_rtx (rtx orig)
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
return copy;
|
||||
@ -2002,45 +1999,46 @@ evaluate_eq_attr (rtx exp, rtx value, int insn_code, int insn_index)
|
||||
rtx newexp;
|
||||
int i;
|
||||
|
||||
if (GET_CODE (value) == CONST_STRING)
|
||||
switch (GET_CODE (value))
|
||||
{
|
||||
case CONST_STRING:
|
||||
if (! strcmp_check (XSTR (value, 0), XSTR (exp, 1)))
|
||||
newexp = true_rtx;
|
||||
else
|
||||
newexp = false_rtx;
|
||||
}
|
||||
else if (GET_CODE (value) == SYMBOL_REF)
|
||||
{
|
||||
char *p;
|
||||
char string[256];
|
||||
|
||||
if (GET_CODE (exp) != EQ_ATTR)
|
||||
abort ();
|
||||
|
||||
if (strlen (XSTR (exp, 0)) + strlen (XSTR (exp, 1)) + 2 > 256)
|
||||
abort ();
|
||||
|
||||
strcpy (string, XSTR (exp, 0));
|
||||
strcat (string, "_");
|
||||
strcat (string, XSTR (exp, 1));
|
||||
for (p = string; *p; p++)
|
||||
*p = TOUPPER (*p);
|
||||
|
||||
newexp = attr_rtx (EQ, value,
|
||||
attr_rtx (SYMBOL_REF,
|
||||
DEF_ATTR_STRING (string)));
|
||||
}
|
||||
else if (GET_CODE (value) == COND)
|
||||
{
|
||||
/* We construct an IOR of all the cases for which the requested attribute
|
||||
value is present. Since we start with FALSE, if it is not present,
|
||||
FALSE will be returned.
|
||||
break;
|
||||
|
||||
case SYMBOL_REF:
|
||||
{
|
||||
char *p;
|
||||
char string[256];
|
||||
|
||||
gcc_assert (GET_CODE (exp) == EQ_ATTR);
|
||||
gcc_assert (strlen (XSTR (exp, 0)) + strlen (XSTR (exp, 1)) + 2
|
||||
<= 256);
|
||||
|
||||
strcpy (string, XSTR (exp, 0));
|
||||
strcat (string, "_");
|
||||
strcat (string, XSTR (exp, 1));
|
||||
for (p = string; *p; p++)
|
||||
*p = TOUPPER (*p);
|
||||
|
||||
newexp = attr_rtx (EQ, value,
|
||||
attr_rtx (SYMBOL_REF,
|
||||
DEF_ATTR_STRING (string)));
|
||||
break;
|
||||
}
|
||||
|
||||
case COND:
|
||||
/* We construct an IOR of all the cases for which the
|
||||
requested attribute value is present. Since we start with
|
||||
FALSE, if it is not present, FALSE will be returned.
|
||||
|
||||
Each case is the AND of the NOT's of the previous conditions with the
|
||||
current condition; in the default case the current condition is TRUE.
|
||||
|
||||
|
||||
For each possible COND value, call ourselves recursively.
|
||||
|
||||
|
||||
The extra TRUE and FALSE expressions will be eliminated by another
|
||||
call to the simplification routine. */
|
||||
|
||||
@ -2080,9 +2078,11 @@ evaluate_eq_attr (rtx exp, rtx value, int insn_code, int insn_index)
|
||||
insn_code, insn_index),
|
||||
insn_code, insn_index);
|
||||
newexp = insert_right_side (IOR, orexp, right, insn_code, insn_index);
|
||||
break;
|
||||
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
else
|
||||
abort ();
|
||||
|
||||
/* If uses an address, must return original expression. But set the
|
||||
ATTR_IND_SIMPLIFIED_P bit so we don't try to simplify it again. */
|
||||
@ -2401,13 +2401,14 @@ attr_alt_subset_p (rtx s1, rtx s2)
|
||||
return !(XINT (s2, 0) &~ XINT (s1, 0));
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
/* Returns true if S1 is a subset of complement of S2. */
|
||||
|
||||
static bool attr_alt_subset_of_compl_p (rtx s1, rtx s2)
|
||||
static bool
|
||||
attr_alt_subset_of_compl_p (rtx s1, rtx s2)
|
||||
{
|
||||
switch ((XINT (s1, 1) << 1) | XINT (s2, 1))
|
||||
{
|
||||
@ -2424,7 +2425,7 @@ static bool attr_alt_subset_of_compl_p (rtx s1, rtx s2)
|
||||
return false;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -2450,7 +2451,7 @@ attr_alt_intersection (rtx s1, rtx s2)
|
||||
XINT (result, 0) = XINT (s1, 0) | XINT (s2, 0);
|
||||
break;
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
XINT (result, 1) = XINT (s1, 1) & XINT (s2, 1);
|
||||
|
||||
@ -2479,7 +2480,7 @@ attr_alt_union (rtx s1, rtx s2)
|
||||
XINT (result, 0) = XINT (s1, 0) & XINT (s2, 0);
|
||||
break;
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
|
||||
XINT (result, 1) = XINT (s1, 1) | XINT (s2, 1);
|
||||
@ -2898,8 +2899,7 @@ optimize_attrs (void)
|
||||
}
|
||||
|
||||
/* Sanity check on num_insn_ents. */
|
||||
if (iv != ivbuf + num_insn_ents)
|
||||
abort ();
|
||||
gcc_assert (iv == ivbuf + num_insn_ents);
|
||||
|
||||
/* Process one insn code at a time. */
|
||||
for (i = -2; i < insn_code_number; i++)
|
||||
@ -3210,7 +3210,7 @@ gen_insn (rtx exp, int lineno)
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -3354,7 +3354,7 @@ write_test_expr (rtx exp, int flags)
|
||||
printf (" >> ");
|
||||
break;
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
|
||||
write_test_expr (XEXP (exp, 1), flags | comparison_operator);
|
||||
@ -3388,7 +3388,7 @@ write_test_expr (rtx exp, int flags)
|
||||
printf ("-");
|
||||
break;
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
|
||||
write_test_expr (XEXP (exp, 0), flags);
|
||||
@ -3454,8 +3454,7 @@ write_test_expr (rtx exp, int flags)
|
||||
}
|
||||
|
||||
attr = find_attr (&XSTR (exp, 0), 0);
|
||||
if (! attr)
|
||||
abort ();
|
||||
gcc_assert (attr);
|
||||
|
||||
/* Now is the time to expand the value of a constant attribute. */
|
||||
if (attr->is_const)
|
||||
@ -4062,7 +4061,7 @@ write_attr_value (struct attr_desc *attr, rtx value)
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -4126,8 +4125,7 @@ write_eligible_delay (const char *kind)
|
||||
printf ("{\n");
|
||||
printf (" rtx insn;\n");
|
||||
printf ("\n");
|
||||
printf (" if (slot >= %d)\n", max_slots);
|
||||
printf (" abort ();\n");
|
||||
printf (" gcc_assert (slot < %d)\n", max_slots);
|
||||
printf ("\n");
|
||||
/* Allow dbr_schedule to pass labels, etc. This can happen if try_split
|
||||
converts a compound instruction into a loop. */
|
||||
@ -4140,8 +4138,7 @@ write_eligible_delay (const char *kind)
|
||||
if (num_delays > 1)
|
||||
{
|
||||
attr = find_attr (&delay_type_str, 0);
|
||||
if (! attr)
|
||||
abort ();
|
||||
gcc_assert (attr);
|
||||
common_av = find_most_used (attr);
|
||||
|
||||
printf (" insn = delay_insn;\n");
|
||||
@ -4157,8 +4154,7 @@ write_eligible_delay (const char *kind)
|
||||
printf (" }\n\n");
|
||||
|
||||
/* Ensure matched. Otherwise, shouldn't have been called. */
|
||||
printf (" if (slot < %d)\n", max_slots);
|
||||
printf (" abort ();\n\n");
|
||||
printf (" gcc_assert (slot >= %d);\n\n", max_slots);
|
||||
}
|
||||
|
||||
/* If just one type of delay slot, write simple switch. */
|
||||
@ -4169,8 +4165,7 @@ write_eligible_delay (const char *kind)
|
||||
printf (" {\n");
|
||||
|
||||
attr = find_attr (&delay_1_0_str, 0);
|
||||
if (! attr)
|
||||
abort ();
|
||||
gcc_assert (attr);
|
||||
common_av = find_most_used (attr);
|
||||
|
||||
for (av = attr->first_value; av; av = av->next)
|
||||
@ -4200,8 +4195,7 @@ write_eligible_delay (const char *kind)
|
||||
sprintf (str, "*%s_%d_%d", kind, delay->num, i / 3);
|
||||
pstr = str;
|
||||
attr = find_attr (&pstr, 0);
|
||||
if (! attr)
|
||||
abort ();
|
||||
gcc_assert (attr);
|
||||
common_av = find_most_used (attr);
|
||||
|
||||
for (av = attr->first_value; av; av = av->next)
|
||||
@ -4213,7 +4207,7 @@ write_eligible_delay (const char *kind)
|
||||
}
|
||||
|
||||
printf (" default:\n");
|
||||
printf (" abort ();\n");
|
||||
printf (" gcc_unreachable ();\n");
|
||||
printf (" }\n");
|
||||
}
|
||||
|
||||
@ -4292,8 +4286,7 @@ make_internal_attr (const char *name, rtx value, int special)
|
||||
struct attr_desc *attr;
|
||||
|
||||
attr = find_attr (&name, 1);
|
||||
if (attr->default_val)
|
||||
abort ();
|
||||
gcc_assert (!attr->default_val);
|
||||
|
||||
attr->is_numeric = 1;
|
||||
attr->is_const = 0;
|
||||
@ -4332,8 +4325,7 @@ make_numeric_value (int n)
|
||||
rtx exp;
|
||||
char *p;
|
||||
|
||||
if (n < 0)
|
||||
abort ();
|
||||
gcc_assert (n >= 0);
|
||||
|
||||
if (n < 20 && int_values[n])
|
||||
return int_values[n];
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -260,7 +260,7 @@ gen_exp (rtx x, enum rtx_code subroutine_type, char *used)
|
||||
case CONST_DOUBLE:
|
||||
/* These shouldn't be written in MD files. Instead, the appropriate
|
||||
routines in varasm.c should be called. */
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
|
||||
default:
|
||||
break;
|
||||
@ -277,25 +277,36 @@ gen_exp (rtx x, enum rtx_code subroutine_type, char *used)
|
||||
if (fmt[i] == '0')
|
||||
break;
|
||||
printf (",\n\t");
|
||||
if (fmt[i] == 'e' || fmt[i] == 'u')
|
||||
gen_exp (XEXP (x, i), subroutine_type, used);
|
||||
else if (fmt[i] == 'i')
|
||||
printf ("%u", XINT (x, i));
|
||||
else if (fmt[i] == 's')
|
||||
printf ("\"%s\"", XSTR (x, i));
|
||||
else if (fmt[i] == 'E')
|
||||
switch (fmt[i])
|
||||
{
|
||||
int j;
|
||||
printf ("gen_rtvec (%d", XVECLEN (x, i));
|
||||
for (j = 0; j < XVECLEN (x, i); j++)
|
||||
{
|
||||
printf (",\n\t\t");
|
||||
gen_exp (XVECEXP (x, i, j), subroutine_type, used);
|
||||
}
|
||||
printf (")");
|
||||
case 'e': case 'u':
|
||||
gen_exp (XEXP (x, i), subroutine_type, used);
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
printf ("%u", XINT (x, i));
|
||||
break;
|
||||
|
||||
case 's':
|
||||
printf ("\"%s\"", XSTR (x, i));
|
||||
break;
|
||||
|
||||
case 'E':
|
||||
{
|
||||
int j;
|
||||
printf ("gen_rtvec (%d", XVECLEN (x, i));
|
||||
for (j = 0; j < XVECLEN (x, i); j++)
|
||||
{
|
||||
printf (",\n\t\t");
|
||||
gen_exp (XVECEXP (x, i, j), subroutine_type, used);
|
||||
}
|
||||
printf (")");
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
else
|
||||
abort ();
|
||||
}
|
||||
printf (")");
|
||||
}
|
||||
@ -707,7 +718,7 @@ output_add_clobbers (void)
|
||||
}
|
||||
|
||||
printf (" default:\n");
|
||||
printf (" abort ();\n");
|
||||
printf (" gcc_unreachable ();\n");
|
||||
printf (" }\n");
|
||||
printf ("}\n");
|
||||
}
|
||||
@ -745,7 +756,7 @@ output_added_clobbers_hard_reg_p (void)
|
||||
}
|
||||
|
||||
printf (" default:\n");
|
||||
printf (" abort ();\n");
|
||||
printf (" gcc_unreachable ();\n");
|
||||
printf (" }\n");
|
||||
printf ("}\n");
|
||||
}
|
||||
|
@ -326,7 +326,7 @@ print_path (const char *path)
|
||||
else if (ISDIGIT(path[i]))
|
||||
printf ("XEXP (");
|
||||
else
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
|
||||
printf ("pat");
|
||||
@ -338,7 +338,7 @@ print_path (const char *path)
|
||||
else if (ISDIGIT(path[i]))
|
||||
printf (", %d)", path[i] - '0');
|
||||
else
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -478,7 +478,7 @@ from the machine description file `md'. */\n\n");
|
||||
/* This should never be reached. Note that we would also reach this abort
|
||||
if we tried to extract something whose INSN_CODE was a DEFINE_EXPAND or
|
||||
DEFINE_SPLIT, but that is correct. */
|
||||
printf (" default:\n abort ();\n");
|
||||
printf (" default:\n gcc_unreachable ();\n");
|
||||
|
||||
printf (" }\n}\n");
|
||||
|
||||
|
@ -102,10 +102,8 @@ gen_macro (const char *name, int real, int expect)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (real > expect)
|
||||
abort ();
|
||||
if (real == 0)
|
||||
abort ();
|
||||
gcc_assert (real <= expect);
|
||||
gcc_assert (real);
|
||||
|
||||
/* #define GEN_CALL(A, B, C, D) gen_call((A), (B)) */
|
||||
fputs ("#define GEN_", stdout);
|
||||
|
@ -84,7 +84,7 @@ type_from_format (int c)
|
||||
case 'B':
|
||||
return "struct basic_block_def *"; /* basic block - typedef not available */
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -120,7 +120,7 @@ accessor_from_format (int c)
|
||||
return "XBBDEF";
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
#include "tm.h"
|
||||
#include "gengtype.h"
|
||||
#include "gtyp-gen.h"
|
||||
#undef abort
|
||||
#include "errors.h"
|
||||
|
||||
/* Nonzero iff an error has occurred. */
|
||||
static int hit_error = 0;
|
||||
@ -1128,7 +1128,7 @@ get_file_basename (const char *f)
|
||||
{
|
||||
basename -= l2 + 1;
|
||||
if ((basename - f - 1) != srcdir_len)
|
||||
abort (); /* Match is wrong - should be preceded by $srcdir. */
|
||||
fatal ("filename `%s' should be preceded by $srcdir", f);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1442,7 +1442,7 @@ output_mangled_typename (outf_p of, type_p t)
|
||||
}
|
||||
break;
|
||||
case TYPE_ARRAY:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1608,7 +1608,7 @@ walk_type (type_p t, struct walk_type_data *d)
|
||||
if (maybe_undef_p
|
||||
&& t->u.p->u.s.line.file == NULL)
|
||||
{
|
||||
oprintf (d->of, "%*sif (%s) abort();\n", d->indent, "", d->val);
|
||||
oprintf (d->of, "%*sgcc_assert (!%s);\n", d->indent, "", d->val);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1844,7 +1844,7 @@ walk_type (type_p t, struct walk_type_data *d)
|
||||
d->used_length = false;
|
||||
|
||||
if (union_p && use_param_p && d->param == NULL)
|
||||
oprintf (d->of, "%*sabort();\n", d->indent, "");
|
||||
oprintf (d->of, "%*sgcc_unreachable ();\n", d->indent, "");
|
||||
else
|
||||
walk_type (f->type, d);
|
||||
|
||||
@ -1900,7 +1900,7 @@ walk_type (type_p t, struct walk_type_data *d)
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1957,7 +1957,7 @@ write_types_process_field (type_p f, const struct walk_type_data *d)
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -2227,7 +2227,7 @@ write_types_local_process_field (type_p f, const struct walk_type_data *d)
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -364,7 +364,7 @@ complete_mode (struct mode_data *m)
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
|
||||
/* If not already specified, the mode alignment defaults to the largest
|
||||
|
@ -281,7 +281,7 @@ gen_insn (rtx insn)
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -379,7 +379,7 @@ output_insn_data (void)
|
||||
printf ("#endif\n");
|
||||
break;
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
|
||||
if (d->name && d->name[0] != '*')
|
||||
@ -1076,8 +1076,7 @@ check_constraint_len (void)
|
||||
|
||||
for (p = ",#*+=&%!1234567890"; *p; p++)
|
||||
for (d = -9; d < 9; d++)
|
||||
if (constraint_len (p, d) != d)
|
||||
abort ();
|
||||
gcc_assert (constraint_len (p, d) == d);
|
||||
}
|
||||
|
||||
static int
|
||||
@ -1085,8 +1084,7 @@ constraint_len (const char *p, int genoutput_default_constraint_len)
|
||||
{
|
||||
/* Check that we still match defaults.h . First we do a generation-time
|
||||
check that fails if the value is not the expected one... */
|
||||
if (DEFAULT_CONSTRAINT_LEN (*p, p) != 1)
|
||||
abort ();
|
||||
gcc_assert (DEFAULT_CONSTRAINT_LEN (*p, p) == 1);
|
||||
/* And now a compile-time check that should give a diagnostic if the
|
||||
definition doesn't exactly match. */
|
||||
#define DEFAULT_CONSTRAINT_LEN(C,STR) 1
|
||||
|
@ -259,38 +259,47 @@ add_mode_tests (struct pred_data *p)
|
||||
for (;;)
|
||||
{
|
||||
rtx subexp = *pos;
|
||||
if (GET_CODE (subexp) == IOR)
|
||||
{
|
||||
if (NO_MODE_TEST (XEXP (subexp, 0))
|
||||
&& NO_MODE_TEST (XEXP (subexp, 1)))
|
||||
break;
|
||||
else if (NO_MODE_TEST (XEXP (subexp, 0)))
|
||||
pos = &XEXP (subexp, 0);
|
||||
else if (NO_MODE_TEST (XEXP (subexp, 1)))
|
||||
pos = &XEXP (subexp, 1);
|
||||
else
|
||||
abort ();
|
||||
}
|
||||
else if (GET_CODE (subexp) == IF_THEN_ELSE)
|
||||
{
|
||||
if (NO_MODE_TEST (XEXP (subexp, 0))
|
||||
&& NO_MODE_TEST (XEXP (subexp, 1))
|
||||
&& NO_MODE_TEST (XEXP (subexp, 2)))
|
||||
break;
|
||||
else if (NO_MODE_TEST (XEXP (subexp, 0))
|
||||
&& NO_MODE_TEST (XEXP (subexp, 1)))
|
||||
/* Must put it on the dependent clause, not the controlling
|
||||
expression, or we change the meaning of the test. */
|
||||
pos = &XEXP (subexp, 1);
|
||||
else if (NO_MODE_TEST (XEXP (subexp, 2)))
|
||||
pos = &XEXP (subexp, 2);
|
||||
else
|
||||
abort ();
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
switch (GET_CODE (subexp))
|
||||
{
|
||||
case IOR:
|
||||
{
|
||||
int test0 = NO_MODE_TEST (XEXP (subexp, 0));
|
||||
int test1 = NO_MODE_TEST (XEXP (subexp, 1));
|
||||
|
||||
gcc_assert (test0 || test1);
|
||||
|
||||
if (test0 && test1)
|
||||
goto break_loop;
|
||||
pos = test0 ? &XEXP (subexp, 0) : &XEXP (subexp, 1);
|
||||
}
|
||||
break;
|
||||
|
||||
case IF_THEN_ELSE:
|
||||
{
|
||||
int test0 = NO_MODE_TEST (XEXP (subexp, 0));
|
||||
int test1 = NO_MODE_TEST (XEXP (subexp, 1));
|
||||
int test2 = NO_MODE_TEST (XEXP (subexp, 2));
|
||||
|
||||
gcc_assert ((test0 && test1) || test2);
|
||||
|
||||
if (test0 && test1 && test2)
|
||||
goto break_loop;
|
||||
if (test0 && test1)
|
||||
/* Must put it on the dependent clause, not the
|
||||
controlling expression, or we change the meaning of
|
||||
the test. */
|
||||
pos = &XEXP (subexp, 1);
|
||||
else
|
||||
pos = &XEXP (subexp, 2);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
goto break_loop;
|
||||
}
|
||||
}
|
||||
break_loop:
|
||||
XEXP (and_exp, 0) = *pos;
|
||||
*pos = and_exp;
|
||||
}
|
||||
|
@ -547,7 +547,7 @@ find_operand (rtx pattern, int n, rtx stop)
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -598,7 +598,7 @@ find_matching_operand (rtx pattern, int n)
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -851,7 +851,7 @@ validate_pattern (rtx pattern, rtx insn, rtx set, int set_code)
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1050,18 +1050,18 @@ add_to_sequence (rtx pattern, struct decision_head *last, const char *position,
|
||||
{
|
||||
if (fmt[i] == 'i')
|
||||
{
|
||||
if (i == 0)
|
||||
gcc_assert (i < 2);
|
||||
|
||||
if (!i)
|
||||
{
|
||||
test = new_decision_test (DT_elt_zero_int, &place);
|
||||
test->u.intval = XINT (pattern, i);
|
||||
}
|
||||
else if (i == 1)
|
||||
else
|
||||
{
|
||||
test = new_decision_test (DT_elt_one_int, &place);
|
||||
test->u.intval = XINT (pattern, i);
|
||||
}
|
||||
else
|
||||
abort ();
|
||||
}
|
||||
else if (fmt[i] == 'w')
|
||||
{
|
||||
@ -1071,16 +1071,14 @@ add_to_sequence (rtx pattern, struct decision_head *last, const char *position,
|
||||
= ((int) XWINT (pattern, i) == XWINT (pattern, i))
|
||||
? DT_elt_zero_wide_safe : DT_elt_zero_wide;
|
||||
|
||||
if (i != 0)
|
||||
abort ();
|
||||
gcc_assert (!i);
|
||||
|
||||
test = new_decision_test (type, &place);
|
||||
test->u.intval = XWINT (pattern, i);
|
||||
}
|
||||
else if (fmt[i] == 'E')
|
||||
{
|
||||
if (i != 0)
|
||||
abort ();
|
||||
gcc_assert (!i);
|
||||
|
||||
test = new_decision_test (DT_veclen, &place);
|
||||
test->u.veclen = XVECLEN (pattern, i);
|
||||
@ -1117,7 +1115,7 @@ add_to_sequence (rtx pattern, struct decision_head *last, const char *position,
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1139,8 +1137,7 @@ add_to_sequence (rtx pattern, struct decision_head *last, const char *position,
|
||||
}
|
||||
|
||||
/* If we didn't insert any tests or accept nodes, hork. */
|
||||
if (this->tests == NULL)
|
||||
abort ();
|
||||
gcc_assert (this->tests);
|
||||
|
||||
ret:
|
||||
free (subpos);
|
||||
@ -1311,8 +1308,7 @@ maybe_both_true (struct decision *d1, struct decision *d2,
|
||||
cmp = strcmp (d1->position, d2->position);
|
||||
if (cmp != 0)
|
||||
{
|
||||
if (toplevel)
|
||||
abort ();
|
||||
gcc_assert (!toplevel);
|
||||
|
||||
/* If the d2->position was lexically lower, swap. */
|
||||
if (cmp > 0)
|
||||
@ -1390,7 +1386,7 @@ nodes_identical_1 (struct decision_test *d1, struct decision_test *d2)
|
||||
return 1;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1492,8 +1488,7 @@ merge_trees (struct decision_head *oldh, struct decision_head *addh)
|
||||
}
|
||||
|
||||
/* Trying to merge bits at different positions isn't possible. */
|
||||
if (strcmp (oldh->first->position, addh->first->position))
|
||||
abort ();
|
||||
gcc_assert (!strcmp (oldh->first->position, addh->first->position));
|
||||
|
||||
for (add = addh->first; add ; add = next)
|
||||
{
|
||||
@ -1989,7 +1984,7 @@ write_switch (struct decision *start, int depth)
|
||||
printf ("(int) XWINT (x%d, 0)", depth);
|
||||
break;
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
printf (")\n%s {\n", indent);
|
||||
|
||||
@ -2022,7 +2017,7 @@ write_switch (struct decision *start, int depth)
|
||||
print_host_wide_int (p->tests->u.intval);
|
||||
break;
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
printf (":\n%s goto L%d;\n", indent, p->success.first->number);
|
||||
p->success.first->need_label = 1;
|
||||
@ -2102,21 +2097,13 @@ write_cond (struct decision_test *p, int depth,
|
||||
break;
|
||||
|
||||
case DT_accept_insn:
|
||||
switch (subroutine_type)
|
||||
{
|
||||
case RECOG:
|
||||
if (p->u.insn.num_clobbers_to_add == 0)
|
||||
abort ();
|
||||
printf ("pnum_clobbers != NULL");
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
}
|
||||
gcc_assert (subroutine_type == RECOG);
|
||||
gcc_assert (p->u.insn.num_clobbers_to_add);
|
||||
printf ("pnum_clobbers != NULL");
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -2151,14 +2138,12 @@ write_action (struct decision *p, struct decision_test *test,
|
||||
if (test->next)
|
||||
{
|
||||
test = test->next;
|
||||
if (test->type != DT_accept_insn)
|
||||
abort ();
|
||||
gcc_assert (test->type == DT_accept_insn);
|
||||
}
|
||||
}
|
||||
|
||||
/* Sanity check that we're now at the end of the list of tests. */
|
||||
if (test->next)
|
||||
abort ();
|
||||
gcc_assert (!test->next);
|
||||
|
||||
if (test->type == DT_accept_insn)
|
||||
{
|
||||
@ -2196,7 +2181,7 @@ write_action (struct decision *p, struct decision_test *test,
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -2231,7 +2216,7 @@ is_unconditional (struct decision_test *t, enum routine_type subroutine_type)
|
||||
case PEEPHOLE2:
|
||||
return -1;
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -2527,8 +2512,7 @@ make_insn_sequence (rtx insn, enum routine_type type)
|
||||
char c_test_pos[2];
|
||||
|
||||
/* We should never see an insn whose C test is false at compile time. */
|
||||
if (truth == 0)
|
||||
abort ();
|
||||
gcc_assert (truth);
|
||||
|
||||
record_insn_name (next_insn_code, (type == RECOG ? XSTR (insn, 0) : NULL));
|
||||
|
||||
@ -2874,7 +2858,7 @@ debug_decision_2 (struct decision_test *test)
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -392,7 +392,7 @@ is_predicable (struct queue_elem *elem)
|
||||
return 0;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -559,7 +559,7 @@ collect_insn_data (rtx pattern, int *palt, int *pmax)
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -645,7 +645,7 @@ alter_predicate_for_insn (rtx pattern, int alt, int max_op, int lineno)
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1119,8 +1119,7 @@ maybe_eval_c_test (const char *expr)
|
||||
|
||||
dummy.expr = expr;
|
||||
test = (const struct c_test *)htab_find (condition_table, &dummy);
|
||||
if (!test)
|
||||
abort ();
|
||||
gcc_assert (test);
|
||||
|
||||
return test->value;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user