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

Reply via email to