On Wed, 2014-08-13 at 11:52 -0600, Jeff Law wrote: > On 08/06/14 11:20, David Malcolm wrote: > > More scaffolding: strengthen the return types from the various emit_ > > functions from rtx to rtx_insn * (or to the rtx_barrier * subclass in a > > few cases). > > > > These will ultimately have their params strengthened also, but we > > postpone that until much later in the patch series. So for now there > > are also various checked casts to ensure we really got an insn when > > returning such params back. > > > > Doing so requires a minor tweak to config/sh/sh.c > > > > gcc/ > > * emit-rtl.h (emit_copy_of_insn_after): Strengthen return type > > from rtx to rtx_insn *. > > > > * rtl.h (emit_insn_before): Likewise. > > (emit_insn_before_noloc): Likewise. > > (emit_insn_before_setloc): Likewise. > > (emit_jump_insn_before): Likewise. > > (emit_jump_insn_before_noloc): Likewise. > > (emit_jump_insn_before_setloc): Likewise. > > (emit_call_insn_before): Likewise. > > (emit_call_insn_before_noloc): Likewise. > > (emit_call_insn_before_setloc): Likewise. > > (emit_debug_insn_before): Likewise. > > (emit_debug_insn_before_noloc): Likewise. > > (emit_debug_insn_before_setloc): Likewise. > > (emit_label_before): Likewise. > > (emit_insn_after): Likewise. > > (emit_insn_after_noloc): Likewise. > > (emit_insn_after_setloc): Likewise. > > (emit_jump_insn_after): Likewise. > > (emit_jump_insn_after_noloc): Likewise. > > (emit_jump_insn_after_setloc): Likewise. > > (emit_call_insn_after): Likewise. > > (emit_call_insn_after_noloc): Likewise. > > (emit_call_insn_after_setloc): Likewise. > > (emit_debug_insn_after): Likewise. > > (emit_debug_insn_after_noloc): Likewise. > > (emit_debug_insn_after_setloc): Likewise. > > (emit_label_after): Likewise. > > (emit_insn): Likewise. > > (emit_debug_insn): Likewise. > > (emit_jump_insn): Likewise. > > (emit_call_insn): Likewise. > > (emit_label): Likewise. > > (gen_clobber): Likewise. > > (emit_clobber): Likewise. > > (gen_use): Likewise. > > (emit_use): Likewise. > > (emit): Likewise. > > > > (emit_barrier_before): Strengthen return type from rtx to > > rtx_barrier *. > > (emit_barrier_after): Likewise. > > (emit_barrier): Likewise. > > > > * emit-rtl.c (emit_pattern_before_noloc): Strengthen return type > > from rtx to rtx_insn *. Add checked casts for now when converting > > "last" from rtx to rtx_insn *. > > (emit_insn_before_noloc): Likewise for return type. > > (emit_jump_insn_before_noloc): Likewise. > > (emit_call_insn_before_noloc): Likewise. > > (emit_debug_insn_before_noloc): Likewise. > > (emit_barrier_before): Strengthen return type and local "insn" > > from rtx to rtx_barrier *. > > (emit_label_before): Strengthen return type from rtx to > > rtx_insn *. Add checked cast for now when returning param > > (emit_pattern_after_noloc): Strengthen return type from rtx to > > rtx_insn *. Add checked casts for now when converting "last" from > > rtx to rtx_insn *. > > (emit_insn_after_noloc): Strengthen return type from rtx to > > rtx_insn *. > > (emit_jump_insn_after_noloc): Likewise. > > (emit_call_insn_after_noloc): Likewise. > > (emit_debug_insn_after_noloc): Likewise. > > (emit_barrier_after): Strengthen return type from rtx to > > rtx_barrier *. > > (emit_label_after): Strengthen return type from rtx to rtx_insn *. > > Add checked cast for now when converting "label" from rtx to > > rtx_insn *. > > (emit_pattern_after_setloc): Strengthen return type from rtx to > > rtx_insn *. Add checked casts for now when converting "last" from > > rtx to rtx_insn *. > > (emit_pattern_after): Strengthen return type from rtx to > > rtx_insn *. > > (emit_insn_after_setloc): Likewise. > > (emit_insn_after): Likewise. > > (emit_jump_insn_after_setloc): Likewise. > > (emit_jump_insn_after): Likewise. > > (emit_call_insn_after_setloc): Likewise. > > (emit_call_insn_after): Likewise. > > (emit_debug_insn_after_setloc): Likewise. > > (emit_debug_insn_after): Likewise. > > (emit_pattern_before_setloc): Likewise. Add checked casts for now > > when converting "last" from rtx to rtx_insn *. > > (emit_pattern_before): Strengthen return type from rtx to > > rtx_insn *. > > (emit_insn_before_setloc): Likewise. > > (emit_insn_before): Likewise. > > (emit_jump_insn_before_setloc): Likewise. > > (emit_jump_insn_before): Likewise. > > (emit_call_insn_before_setloc): Likewise. > > (emit_call_insn_before): Likewise. > > (emit_debug_insn_before_setloc): Likewise. > > (emit_debug_insn_before): Likewise. > > (emit_insn): Strengthen return type and locals "last", "insn", > > "next" from rtx to rtx_insn *. Add checked cast to rtx_insn > > within cases where we know we have an insn. > > (emit_debug_insn): Likewise. > > (emit_jump_insn): Likewise. > > (emit_call_insn): Strengthen return type and local "insn" from rtx > > to rtx_insn *. > > (emit_label): Strengthen return type from rtx to rtx_insn *. Add > > a checked cast to rtx_insn * for now on "label". > > (emit_barrier): Strengthen return type from rtx to rtx_barrier *. > > (emit_clobber): Strengthen return type from rtx to rtx_insn *. > > (emit_use): Likewise. > > (gen_use): Likewise, also for local "seq". > > (emit): Likewise for return type and local "insn". > > (rtx_insn): Likewise for return type and local "new_rtx". > > > > * cfgrtl.c (emit_barrier_after_bb): Strengthen local "barrier" > > from rtx to rtx_barrier *. > > > > * config/sh/sh.c (output_stack_adjust): Since emit_insn has > > changed return type from rtx to rtx_insn *, we must update > > "emit_fn" type, and this in turn means updating... > > (frame_insn): ...this. Strengthen return type from rtx to > > rtx_insn *. Introduce a new local "insn" of the appropriate type. > OK. This will require the obvious updates for the nullable change. Thanks. Fixed up and committed to trunk as r214194, having having bootstrapped®rtested on x86_64-unknown-linux-gnu (Fedora 20) albeit in combination with patches 30-39, and verified that it builds standalone both for that target, and for sh-elf, to give additional coverage for the sh.c change. Am attaching what I committed.