On Sun, Jul 15, 2018 at 11:21:56PM +0200, Tom de Vries wrote: > 2018-07-15 Tom de Vries <tdevr...@suse.de> > > * var-tracking.c (vt_initialize): Fix pre_dec handling. Print adjusted > insn slim if dump_flags request TDF_SLIM. > > * gcc.target/i386/vartrack-1.c: New test. > > --- > --- a/gcc/var-tracking.c > +++ b/gcc/var-tracking.c > @@ -115,6 +115,7 @@ > #include "tree-pretty-print.h" > #include "rtl-iter.h" > #include "fibonacci_heap.h" > +#include "print-rtl.h" > > typedef fibonacci_heap <long, basic_block_def> bb_heap_t; > typedef fibonacci_node <long, basic_block_def> bb_heap_node_t; > @@ -10208,12 +10209,17 @@ vt_initialize (void) > log_op_type (PATTERN (insn), bb, insn, > MO_ADJUST, dump_file); > VTI (bb)->mos.safe_push (mo); > - VTI (bb)->out.stack_adjust += pre; > } > } > > cselib_hook_called = false; > adjust_insn (bb, insn); > + > + if (!frame_pointer_needed) > + { > + if (pre) > + VTI (bb)->out.stack_adjust += pre; > + }
That is certainly unexpected. For the pre side-effects, they should be applied before adjusting the insn, not after that. I'll want to see this under the debugger. > if (DEBUG_MARKER_INSN_P (insn)) > { > reemit_marker_as_note (insn); > @@ -10227,7 +10233,10 @@ vt_initialize (void) > cselib_process_insn (insn); > if (dump_file && (dump_flags & TDF_DETAILS)) > { > - print_rtl_single (dump_file, insn); > + if (dump_flags & TDF_SLIM) > + dump_insn_slim (dump_file, insn); > + else > + print_rtl_single (dump_file, insn); > dump_cselib_table (dump_file); > } > } This part is certainly ok. Jakub