All changes made as Richard requested. Retested on x86-64. committed as revision 190627 2012-08-23 Kenneth Zadeck * alias.c (rtx_equal_for_memref_p): Convert constant cases. * combine.c (find_single_use_1, mark_used_regs_combine): Convert to CASE_CONST_ANY. * cse.c (exp_equiv_p, canon_reg, fold_rtx, cse_process_notes_1, count_reg_usage): Convert constant cases. * cselib.c (cselib_expand_value_rtx_1): Convert to CASE_CONST_ANY. (cselib_subst_to_values): Convert constant cases. * df-scan.c (df_uses_record): Ditto. * dse.c (const_or_frame_p): Convert case statements to explicit if-then-else using mode classes. * emit-rtl.c (verify_rtx_sharing, copy_insn_1): Convert constant cases. * explow.c (convert_memory_address_addr_space): Ditto. * gcse.c (want_to_gcse_p, oprs_unchanged_p, compute_transp): Ditto. * genattrtab.c (attr_copy_rtx, clear_struct_flag): Ditto. * ira.c (equiv_init_varies_p, contains_replace_regs, memref_referenced_p, rtx_moveable_p): Ditto. * jump.c (mark_jump_label_1): Remove constant cases. (rtx_renumbered_equal_p): Convert to CASE_CONST_UNIQUE. * loop-invariant.c (check_maybe_invariant, hash_invariant_expr_1, invariant_expr_equal_p): Convert to CASE_CONST_ANY. * postreload-gcse.c (oprs_unchanged_p): Convert constant cases. * reginfo.c (reg_scan_mark_refs): Ditto. * regrename.c (scan_rtx): Ditto. * reload1.c (eliminate_regs_1, elimination_effects, scan_paradoxical_subregs): Ditto. * reload.c (operands_match_p, subst_reg_equivs): Ditto. * resource.c (mark_referenced_resources, mark_set_resources): Ditto. * rtlanal.c (rtx_unstable_p, rtx_varies_p, count_occurrences) (reg_mentioned_p, modified_between_p, modified_in_p) (volatile_insn_p, volatile_refs_p, side_effects_p, may_trap_p_1, inequality_comparisons_p, computed_jump_p_1): Ditto. * rtl.c (copy_rtx, rtx_equal_p_cb, rtx_equal_p): Ditto. * sched-deps.c (sched_analyze_2): Ditto. * valtrack.c (cleanup_auto_inc_dec): Ditto. * rtl.h: (CASE_CONST_SCALAR_INT, CASE_CONST_UNIQUE, CASE_CONST_ANY): New macros. On 08/21/2012 12:56 PM, Richard Sandiford wrote: > Kenneth Zadeck writes: >> I plan to commit this in a few days unless someone has some comments. >> This is a mostly trivial patch and the changes from that are Richard >> Sandiford's and he is an rtl maintainer. > Please don't do this. Patches need to be sent for review in their > final form. Obviously, having got this far with the patch, you're free > to beat me up if I don't review it. :-) > > Anyway, please do call it CASE_CONST_SCALAR_INT rather than > CASE_CONST_SCALAR_INTEGER. Like I said in my original mail, > CASE_CONST_SCALAR_INT chimes nicely with SCALAR_INT_MODE_P, etc., > and (as I didn't say) it'd be better not to have two spellings > of the same thing. > >> diff -upNr '--exclude=.svn' gccBaseline/gcc/combine.c gccWCase/gcc/combine.c >> --- gccBaseline/gcc/combine.c 2012-08-17 09:35:24.802195795 -0400 >> +++ gccWCase/gcc/combine.c 2012-08-20 15:43:34.659362244 -0400 >> @@ -531,12 +531,10 @@ find_single_use_1 (rtx dest, rtx *loc) >> >> switch (code) >> { >> - case CONST_INT: >> case CONST: >> case LABEL_REF: >> case SYMBOL_REF: >> - case CONST_DOUBLE: >> - case CONST_VECTOR: >> + CASE_CONST_UNIQUE: >> case CLOBBER: >> return 0; >> >> @@ -12788,10 +12786,8 @@ mark_used_regs_combine (rtx x) >> { >> case LABEL_REF: >> case SYMBOL_REF: >> - case CONST_INT: >> case CONST: >> - case CONST_DOUBLE: >> - case CONST_VECTOR: >> + CASE_CONST_UNIQUE: >> case PC: >> case ADDR_VEC: >> case ADDR_DIFF_VEC: > These were supposed to be CASE_CONST_ANY. The omission of CONST_FIXED > looks like an oversight. > >> switch (code) >> { >> - case CONST_INT: >> - case CONST_DOUBLE: >> - case CONST_FIXED: >> + CASE_CONST_UNIQUE: >> case SYMBOL_REF: >> case CONST: >> case LABEL_REF: > This was suppsoed to be CASE_CONST_ANY too. The omission of CONST_VECTOR > looks like an oversight. > >> +/* Match CONST_*s for which pointer equality corresponds to value >> +equality. */ > Should be: > > /* Match CONST_*s for which pointer equality corresponds to value equality. */ > > (probably an artefact of my work mailer, sorry) > >> + >> + >> + > Rather a lot of whitespace there. One line seems enough, since we're > just before the definition of CONST_INT_P. > > OK with those changes, thanks. > > Richard