public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Thomas Schwinge <thomas@codesourcery.com>
To: Bernd Schmidt <bschmidt@redhat.com>,
	Nathan Sidwell	<nathan@codesourcery.com>
Cc: <gcc-patches@gcc.gnu.org>, Jeff Law <law@redhat.com>,
	Segher Boessenkool	<segher@kernel.crashing.org>
Subject: Re: [PATCH 3/3] function: Restructure *logue insertion
Date: Fri, 20 May 2016 13:21:00 -0000	[thread overview]
Message-ID: <87zirkuapm.fsf@hertz.schwinge.homeip.net> (raw)
In-Reply-To: <87shxdt6x2.fsf@kepler.schwinge.homeip.net>

Hi!

The nvptx maintainer Bernd, Nathan: can you take it from here, or should
I continue to figure it out?

On Fri, 20 May 2016 11:28:25 +0200, I wrote:
> > > >	* function.c (make_epilogue_seq): Remove epilogue_end parameter.
> > > >	(thread_prologue_and_epilogue_insns): Remove bb_flags.  Restructure
> > > >	code.  Ignore sibcalls on EDGE_IGNORE edges.
> > > >	* shrink-wrap.c (handle_simple_exit): New function.  Set EDGE_IGNORE
> > > >	on edges for sibcalls that run without prologue.  The rest of the
> > > >	function is combined from...
> > > >	(fix_fake_fallthrough_edge): ... this, and ...
> > > >	(try_shrink_wrapping): ... a part of this.  Remove the bb_with
> > > >	function argument, make it a local variable.
> 
> On Thu, 19 May 2016 17:20:46 -0500, Segher Boessenkool <segher@kernel.crashing.org> wrote:
> > On Thu, May 19, 2016 at 04:00:22PM -0600, Jeff Law wrote:
> > > OK for the trunk, but please watch closely for any fallout.
> > 
> > Thanks, and I will!
> 
> With nvptx offloading on x86_64 GNU/Linux, this (r236491) is causing
> several execution test failures.  I'll have a look.

OK, no offloading required.  The problem -- or, "a" problem; hopefully
the same ;-) -- also reproduces with a nvptx-none target configuration.
A before/after r236491 diff of:

    $ build-gcc/gcc/xgcc -Bbuild-gcc/gcc/ source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c -O0 -Wall -Wextra -Bbuild-gcc/nvptx-none/newlib/ -Lbuild-gcc/nvptx-none/newlib -mmainkernel -o ./20000121-1.exe -fdump-tree-all -fdump-ipa-all -fdump-rtl-all -save-temps

..., shows the execution failure ("nvptx-none-run-single 20000121-1.exe"
returns exit code 1), and (aside from earlier, hopefully benign
address/ID changes) shows the following dump changes, starting with:

    --- before/20000121-1.c.281r.mach       2016-05-20 14:56:37.794367323 +0200
    +++ after/20000121-1.c.281r.mach        2016-05-20 14:54:34.537741174 +0200
    @@ -5,16 +5,10 @@
     ending the processing of deferred insns
     df_analyze called
     df_worklist_dataflow_doublequeue:n_basic_blocks 3 n_edges 2 count 3 (    1)
    -scanning new insn with uid = 11.
    -changing bb of uid 13
    -  unscanned insn
    -changing bb of uid 11
    -  from 2 to 3
     starting the processing of deferred insns
     ending the processing of deferred insns
     df_analyze called
    -df_worklist_dataflow_doublequeue:n_basic_blocks 4 n_edges 3 count 4 (    1)
    -df_worklist_dataflow_doublequeue:n_basic_blocks 4 n_edges 3 count 4 (    1)
    +df_worklist_dataflow_doublequeue:n_basic_blocks 3 n_edges 2 count 3 (    1)
     
     
     big
    @@ -27,8 +21,8 @@
     ;;  entry block defs    1 [%stack] 2 [%frame] 3 [%args] 4 [%chain]
     ;;  exit block uses     1 [%stack] 2 [%frame]
     ;;  regs ever live      2 [%frame]
    -;;  ref usage  r1={1d,3u} r2={1d,4u} r3={1d,2u} r4={1d} r22={1d,1u} 
    -;;    total ref usage 15{5d,10u,0e} in 4{4 regular + 0 call} insns.
    +;;  ref usage  r1={1d,2u} r2={1d,3u} r3={1d,1u} r4={1d} r22={1d,1u} 
    +;;    total ref usage 12{5d,7u,0e} in 3{3 regular + 0 call} insns.
     
     ( )->[0]->( 2 )
     ;; bb 0 artificial_defs: { d-1(1){ }d-1(2){ }d-1(3){ }d-1(4){ }}
    @@ -42,7 +36,7 @@
     ;; lr  out      1 [%stack] 2 [%frame] 3 [%args]
     ;; live  out    1 [%stack] 2 [%frame] 3 [%args]
     
    -( 0 )->[2]->( 3 )
    +( 0 )->[2]->( 1 )
     ;; bb 2 artificial_defs: { }
     ;; bb 2 artificial_uses: { u-1(1){ }u-1(2){ }u-1(3){ }}
     ;; lr  in       1 [%stack] 2 [%frame] 3 [%args]
    @@ -54,19 +48,7 @@
     ;; lr  out      1 [%stack] 2 [%frame] 3 [%args]
     ;; live  out    1 [%stack] 2 [%frame] 3 [%args]
     
    -( 2 )->[3]->( 1 )
    -;; bb 3 artificial_defs: { }
    -;; bb 3 artificial_uses: { u-1(1){ }u-1(2){ }u-1(3){ }}
    -;; lr  in       1 [%stack] 2 [%frame] 3 [%args]
    -;; lr  use      1 [%stack] 2 [%frame] 3 [%args]
    -;; lr  def     
    -;; live  in     1 [%stack] 2 [%frame] 3 [%args]
    -;; live  gen   
    -;; live  kill  
    -;; lr  out      1 [%stack] 2 [%frame] 3 [%args]
    -;; live  out    1 [%stack] 2 [%frame] 3 [%args]
    -
    -( 3 )->[1]->( )
    +( 2 )->[1]->( )
     ;; bb 1 artificial_defs: { }
     ;; bb 1 artificial_uses: { u-1(1){ }u-1(2){ }}
     ;; lr  in       1 [%stack] 2 [%frame]
    @@ -92,8 +74,8 @@
     ;;  entry block defs    1 [%stack] 2 [%frame] 3 [%args] 4 [%chain]
     ;;  exit block uses     1 [%stack] 2 [%frame]
     ;;  regs ever live      2 [%frame]
    -;;  ref usage  r1={1d,3u} r2={1d,4u} r3={1d,2u} r4={1d} r22={1d,1u} 
    -;;    total ref usage 15{5d,10u,0e} in 4{4 regular + 0 call} insns.
    +;;  ref usage  r1={1d,2u} r2={1d,3u} r3={1d,1u} r4={1d} r22={1d,1u} 
    +;;    total ref usage 12{5d,7u,0e} in 3{3 regular + 0 call} insns.
     (note 1 0 5 NOTE_INSN_DELETED)
     (note 5 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
     (insn 2 5 3 2 (set (reg:DI 22)
    @@ -105,14 +87,8 @@
             (reg:DI 22)) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:1 5 {*movdi_insn}
          (nil))
     (note 4 3 9 2 NOTE_INSN_FUNCTION_BEG)
    -(insn 9 4 10 2 (const_int 0 [0]) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:1 191 {nop}
    +(insn 9 4 0 2 (const_int 0 [0]) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:1 191 {nop}
          (nil))
    -(note 10 9 13 2 NOTE_INSN_EPILOGUE_BEG)
    -(note 13 10 11 3 [bb 3] NOTE_INSN_BASIC_BLOCK)
    -(jump_insn 11 13 12 3 (return) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:1 192 {return}
    -     (nil)
    - -> return)
    -(barrier 12 11 0)
     
     ;; Function doit (doit, funcdef_no=1, decl_uid=1375, cgraph_uid=1, symbol_order=1)
     
    @@ -120,19 +96,13 @@
     ending the processing of deferred insns
     df_analyze called
     df_worklist_dataflow_doublequeue:n_basic_blocks 3 n_edges 2 count 3 (    1)
    -scanning new insn with uid = 27.
     verify found no changes in insn with uid = 16.
     verify found no changes in insn with uid = 19.
     verify found no changes in insn with uid = 22.
    -changing bb of uid 29
    -  unscanned insn
    -changing bb of uid 27
    -  from 2 to 3
     starting the processing of deferred insns
     ending the processing of deferred insns
     df_analyze called
    -df_worklist_dataflow_doublequeue:n_basic_blocks 4 n_edges 3 count 4 (    1)
    -df_worklist_dataflow_doublequeue:n_basic_blocks 4 n_edges 3 count 4 (    1)
    +df_worklist_dataflow_doublequeue:n_basic_blocks 3 n_edges 2 count 3 (    1)
     
     
     doit
    @@ -145,8 +115,8 @@
     ;;  entry block defs    1 [%stack] 2 [%frame] 3 [%args] 4 [%chain]
     ;;  exit block uses     1 [%stack] 2 [%frame]
     ;;  regs ever live      1 [%stack] 2 [%frame]
    -;;  ref usage  r0={3d} r1={1d,6u} r2={1d,9u} r3={1d,2u} r4={4d} r5={3d} r6={3d} r7={3d} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r22={1d,1u} r23={1d,1u} r24={1d,1u} r25={1d,1u} r26={1d,1u} r27={1d,1u} r28={1d,1u} r29={1d,1u} r30={1d,1u} r31={1d,1u} r32={1d,1u} r33={1d,1u} 
    -;;    total ref usage 84{55d,29u,0e} in 20{17 regular + 3 call} insns.
    +;;  ref usage  r0={3d} r1={1d,5u} r2={1d,8u} r3={1d,1u} r4={4d} r5={3d} r6={3d} r7={3d} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r22={1d,1u} r23={1d,1u} r24={1d,1u} r25={1d,1u} r26={1d,1u} r27={1d,1u} r28={1d,1u} r29={1d,1u} r30={1d,1u} r31={1d,1u} r32={1d,1u} r33={1d,1u} 
    +;;    total ref usage 81{55d,26u,0e} in 19{16 regular + 3 call} insns.
     
     ( )->[0]->( 2 )
     ;; bb 0 artificial_defs: { d-1(1){ }d-1(2){ }d-1(3){ }d-1(4){ }}
    @@ -160,7 +130,7 @@
     ;; lr  out      1 [%stack] 2 [%frame] 3 [%args]
     ;; live  out    1 [%stack] 2 [%frame] 3 [%args]
     
    -( 0 )->[2]->( 3 )
    +( 0 )->[2]->( 1 )
     ;; bb 2 artificial_defs: { }
     ;; bb 2 artificial_uses: { u-1(1){ }u-1(2){ }u-1(3){ }}
     ;; lr  in       1 [%stack] 2 [%frame] 3 [%args]
    @@ -172,19 +142,7 @@
     ;; lr  out      1 [%stack] 2 [%frame] 3 [%args]
     ;; live  out    1 [%stack] 2 [%frame] 3 [%args]
     
    -( 2 )->[3]->( 1 )
    -;; bb 3 artificial_defs: { }
    -;; bb 3 artificial_uses: { u-1(1){ }u-1(2){ }u-1(3){ }}
    -;; lr  in       1 [%stack] 2 [%frame] 3 [%args]
    -;; lr  use      1 [%stack] 2 [%frame] 3 [%args]
    -;; lr  def     
    -;; live  in     1 [%stack] 2 [%frame] 3 [%args]
    -;; live  gen   
    -;; live  kill  
    -;; lr  out      1 [%stack] 2 [%frame] 3 [%args]
    -;; live  out    1 [%stack] 2 [%frame] 3 [%args]
    -
    -( 3 )->[1]->( )
    +( 2 )->[1]->( )
     ;; bb 1 artificial_defs: { }
     ;; bb 1 artificial_uses: { u-1(1){ }u-1(2){ }}
     ;; lr  in       1 [%stack] 2 [%frame]
    @@ -210,8 +168,8 @@
     ;;  entry block defs    1 [%stack] 2 [%frame] 3 [%args] 4 [%chain]
     ;;  exit block uses     1 [%stack] 2 [%frame]
     ;;  regs ever live      1 [%stack] 2 [%frame]
    -;;  ref usage  r0={3d} r1={1d,6u} r2={1d,9u} r3={1d,2u} r4={4d} r5={3d} r6={3d} r7={3d} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r22={1d,1u} r23={1d,1u} r24={1d,1u} r25={1d,1u} r26={1d,1u} r27={1d,1u} r28={1d,1u} r29={1d,1u} r30={1d,1u} r31={1d,1u} r32={1d,1u} r33={1d,1u} 
    -;;    total ref usage 84{55d,29u,0e} in 20{17 regular + 3 call} insns.
    +;;  ref usage  r0={3d} r1={1d,5u} r2={1d,8u} r3={1d,1u} r4={4d} r5={3d} r6={3d} r7={3d} r8={3d} r9={3d} r10={3d} r11={3d} r12={3d} r13={3d} r14={3d} r15={3d} r22={1d,1u} r23={1d,1u} r24={1d,1u} r25={1d,1u} r26={1d,1u} r27={1d,1u} r28={1d,1u} r29={1d,1u} r30={1d,1u} r31={1d,1u} r32={1d,1u} r33={1d,1u} 
    +;;    total ref usage 81{55d,26u,0e} in 19{16 regular + 3 call} insns.
     (note 1 0 9 NOTE_INSN_DELETED)
     (note 9 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
     (insn 2 9 3 2 (set (reg:SI 26)
    @@ -258,7 +216,7 @@
             (reg:DI 23 [ _2 ])) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:5 5 {*movdi_insn}
          (nil))
     (call_insn 16 15 17 2 (parallel [
    -            (call (mem:QI (symbol_ref:DI ("big") [flags 0x3]  <function_decl 0x7fea3de250e0 big>) [0 big S1 A8])
    +            (call (mem:QI (symbol_ref:DI ("big") [flags 0x3]  <function_decl 0x7fb5fdc880e0 big>) [0 big S1 A8])
                     (const_int 0 [0]))
                 (use (reg:DI 31))
             ]) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:5 129 {call_insn}
    @@ -271,7 +229,7 @@
             (reg:DI 24 [ _3 ])) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:6 5 {*movdi_insn}
          (nil))
     (call_insn 19 18 20 2 (parallel [
    -            (call (mem:QI (symbol_ref:DI ("big") [flags 0x3]  <function_decl 0x7fea3de250e0 big>) [0 big S1 A8])
    +            (call (mem:QI (symbol_ref:DI ("big") [flags 0x3]  <function_decl 0x7fb5fdc880e0 big>) [0 big S1 A8])
                     (const_int 0 [0]))
                 (use (reg:DI 32))
             ]) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:6 129 {call_insn}
    @@ -285,20 +243,14 @@
             (reg:DI 25 [ _4 ])) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:7 5 {*movdi_insn}
          (nil))
     (call_insn 22 21 25 2 (parallel [
    -            (call (mem:QI (symbol_ref:DI ("big") [flags 0x3]  <function_decl 0x7fea3de250e0 big>) [0 big S1 A8])
    +            (call (mem:QI (symbol_ref:DI ("big") [flags 0x3]  <function_decl 0x7fb5fdc880e0 big>) [0 big S1 A8])
                     (const_int 0 [0]))
                 (use (reg:DI 33))
             ]) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:7 129 {call_insn}
          (nil)
         (nil))
    -(insn 25 22 26 2 (const_int 0 [0]) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:8 191 {nop}
    +(insn 25 22 0 2 (const_int 0 [0]) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:8 191 {nop}
          (nil))
    -(note 26 25 29 2 NOTE_INSN_EPILOGUE_BEG)
    -(note 29 26 27 3 [bb 3] NOTE_INSN_BASIC_BLOCK)
    -(jump_insn 27 29 28 3 (return) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:8 192 {return}
    -     (nil)
    - -> return)
    -(barrier 28 27 0)
     
     ;; Function main (main, funcdef_no=2, decl_uid=1378, cgraph_uid=2, symbol_order=2)
     
    @@ -306,17 +258,11 @@
     ending the processing of deferred insns
     df_analyze called
     df_worklist_dataflow_doublequeue:n_basic_blocks 3 n_edges 2 count 3 (    1)
    -scanning new insn with uid = 20.
     verify found no changes in insn with uid = 8.
    -changing bb of uid 22
    -  unscanned insn
    -changing bb of uid 20
    -  from 2 to 3
     starting the processing of deferred insns
     ending the processing of deferred insns
     df_analyze called
    -df_worklist_dataflow_doublequeue:n_basic_blocks 4 n_edges 3 count 4 (    1)
    -df_worklist_dataflow_doublequeue:n_basic_blocks 4 n_edges 3 count 4 (    1)
    +df_worklist_dataflow_doublequeue:n_basic_blocks 3 n_edges 2 count 3 (    1)
     
     
     main
    @@ -329,8 +275,8 @@
     ;;  entry block defs    1 [%stack] 2 [%frame] 3 [%args] 4 [%chain]
     ;;  exit block uses     0 [%value] 1 [%stack] 2 [%frame]
     ;;  regs ever live      0 [%value] 1 [%stack]
    -;;  ref usage  r0={2d,2u} r1={1d,4u} r2={1d,3u} r3={1d,2u} r4={2d} r5={1d} r6={1d} r7={1d} r8={1d} r9={1d} r10={1d} r11={1d} r12={1d} r13={1d} r14={1d} r15={1d} r22={1d,1u} r23={1d,1u} r24={1d,1u} r25={1d,1u} r26={1d,1u} 
    -;;    total ref usage 39{23d,16u,0e} in 9{8 regular + 1 call} insns.
    +;;  ref usage  r0={2d,2u} r1={1d,3u} r2={1d,2u} r3={1d,1u} r4={2d} r5={1d} r6={1d} r7={1d} r8={1d} r9={1d} r10={1d} r11={1d} r12={1d} r13={1d} r14={1d} r15={1d} r22={1d,1u} r23={1d,1u} r24={1d,1u} r25={1d,1u} r26={1d,1u} 
    +;;    total ref usage 36{23d,13u,0e} in 8{7 regular + 1 call} insns.
     
     ( )->[0]->( 2 )
     ;; bb 0 artificial_defs: { d-1(1){ }d-1(2){ }d-1(3){ }d-1(4){ }}
    @@ -344,7 +290,7 @@
     ;; lr  out      1 [%stack] 2 [%frame] 3 [%args]
     ;; live  out    1 [%stack] 2 [%frame] 3 [%args]
     
    -( 0 )->[2]->( 3 )
    +( 0 )->[2]->( 1 )
     ;; bb 2 artificial_defs: { }
     ;; bb 2 artificial_uses: { u-1(1){ }u-1(2){ }u-1(3){ }}
     ;; lr  in       1 [%stack] 2 [%frame] 3 [%args]
    @@ -356,19 +302,7 @@
     ;; lr  out      0 [%value] 1 [%stack] 2 [%frame] 3 [%args]
     ;; live  out    0 [%value] 1 [%stack] 2 [%frame] 3 [%args]
     
    -( 2 )->[3]->( 1 )
    -;; bb 3 artificial_defs: { }
    -;; bb 3 artificial_uses: { u-1(1){ }u-1(2){ }u-1(3){ }}
    -;; lr  in       0 [%value] 1 [%stack] 2 [%frame] 3 [%args]
    -;; lr  use      1 [%stack] 2 [%frame] 3 [%args]
    -;; lr  def     
    -;; live  in     0 [%value] 1 [%stack] 2 [%frame] 3 [%args]
    -;; live  gen   
    -;; live  kill  
    -;; lr  out      0 [%value] 1 [%stack] 2 [%frame] 3 [%args]
    -;; live  out    0 [%value] 1 [%stack] 2 [%frame] 3 [%args]
    -
    -( 3 )->[1]->( )
    +( 2 )->[1]->( )
     ;; bb 1 artificial_defs: { }
     ;; bb 1 artificial_uses: { u-1(0){ }u-1(1){ }u-1(2){ }}
     ;; lr  in       0 [%value] 1 [%stack] 2 [%frame]
    @@ -394,13 +328,13 @@
     ;;  entry block defs    1 [%stack] 2 [%frame] 3 [%args] 4 [%chain]
     ;;  exit block uses     0 [%value] 1 [%stack] 2 [%frame]
     ;;  regs ever live      0 [%value] 1 [%stack]
    -;;  ref usage  r0={2d,2u} r1={1d,4u} r2={1d,3u} r3={1d,2u} r4={2d} r5={1d} r6={1d} r7={1d} r8={1d} r9={1d} r10={1d} r11={1d} r12={1d} r13={1d} r14={1d} r15={1d} r22={1d,1u} r23={1d,1u} r24={1d,1u} r25={1d,1u} r26={1d,1u} 
    -;;    total ref usage 39{23d,16u,0e} in 9{8 regular + 1 call} insns.
    +;;  ref usage  r0={2d,2u} r1={1d,3u} r2={1d,2u} r3={1d,1u} r4={2d} r5={1d} r6={1d} r7={1d} r8={1d} r9={1d} r10={1d} r11={1d} r12={1d} r13={1d} r14={1d} r15={1d} r22={1d,1u} r23={1d,1u} r24={1d,1u} r25={1d,1u} r26={1d,1u} 
    +;;    total ref usage 36{23d,13u,0e} in 8{7 regular + 1 call} insns.
     (note 1 0 3 NOTE_INSN_DELETED)
     (note 3 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
     (note 2 3 5 2 NOTE_INSN_FUNCTION_BEG)
     (insn 5 2 6 2 (set (reg:DI 26)
    -        (symbol_ref/f:DI ("$LC0") [flags 0x802]  <var_decl 0x7fea3f484480 $LC0>)) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:12 5 {*movdi_insn}
    +        (symbol_ref/f:DI ("$LC0") [flags 0x802]  <var_decl 0x7fb5ff2e7480 $LC0>)) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:12 5 {*movdi_insn}
          (nil))
     (insn 6 5 7 2 (set (reg:SI 25)
             (const_int 1 [0x1])) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:12 4 {*movsi_insn}
    @@ -409,7 +343,7 @@
             (const_int 1 [0x1])) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:12 4 {*movsi_insn}
          (nil))
     (call_insn 8 7 9 2 (parallel [
    -            (call (mem:QI (symbol_ref:DI ("doit") [flags 0x3]  <function_decl 0x7fea3de251c0 doit>) [0 doit S1 A8])
    +            (call (mem:QI (symbol_ref:DI ("doit") [flags 0x3]  <function_decl 0x7fb5fdc881c0 doit>) [0 doit S1 A8])
                     (const_int 0 [0]))
                 (use (reg:SI 24))
                 (use (reg:SI 25))
    @@ -426,11 +360,5 @@
     (insn 16 12 17 2 (set (reg/i:SI 0 %value)
             (reg:SI 23 [ <retval> ])) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:14 4 {*movsi_insn}
          (nil))
    -(insn 17 16 19 2 (use (reg/i:SI 0 %value)) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:14 -1
    +(insn 17 16 0 2 (use (reg/i:SI 0 %value)) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:14 -1
          (nil))
    -(note 19 17 22 2 NOTE_INSN_EPILOGUE_BEG)
    -(note 22 19 20 3 [bb 3] NOTE_INSN_BASIC_BLOCK)
    -(jump_insn 20 22 21 3 (return) source-gcc/gcc/testsuite/gcc.c-torture/execute/20000121-1.c:14 192 {return}
    -     (nil)
    - -> return)
    -(barrier 21 20 0)
    --- before/20000121-1.c.282r.barriers   2016-05-20 14:56:37.794367323 +0200
    +++ after/20000121-1.c.282r.barriers    2016-05-20 14:54:34.537741174 +0200
    [...]
    --- before/20000121-1.c.286r.shorten    2016-05-20 14:56:37.794367323 +0200
    +++ after/20000121-1.c.286r.shorten     2016-05-20 14:54:34.537741174 +0200
    [...]
    --- before/20000121-1.c.287r.nothrow    2016-05-20 14:56:37.794367323 +0200
    +++ after/20000121-1.c.287r.nothrow     2016-05-20 14:54:34.537741174 +0200
    [...]
    --- before/20000121-1.c.289r.final      2016-05-20 14:56:37.794367323 +0200
    +++ after/20000121-1.c.289r.final       2016-05-20 14:54:34.537741174 +0200
    [...]
    --- before/20000121-1.c.290r.dfinish    2016-05-20 14:56:37.794367323 +0200
    +++ after/20000121-1.c.290r.dfinish     2016-05-20 14:54:34.537741174 +0200
    [...]

..., and resulting in the following assembly changes:

    --- before/20000121-1.s 2016-05-20 14:56:37.794367323 +0200
    +++ after/20000121-1.s  2016-05-20 14:54:34.537741174 +0200
    @@ -19,7 +19,6 @@
            .reg.u64 %r22;
                    mov.u64 %r22, %ar0;
                    st.u64  [%frame], %r22;
    -       ret;
     }
     
     // BEGIN GLOBAL FUNCTION DECL: doit
    @@ -79,7 +78,6 @@
                    st.param.u64 [%out_arg1], %r33;
                    call big, (%out_arg1);
            }
    -       ret;
     }
     
     // BEGIN VAR DEF: $LC0
    @@ -112,6 +110,4 @@
                    mov.u32 %r22, 0;
                    mov.u32 %r23, %r22;
                    mov.u32 %value, %r23;
    -       st.param.u32    [%value_out], %value;
    -       ret;
     }

The disappearing "ret" statements don't matter, but the disappearing
store at the end of "main" does.


Grüße
 Thomas

  reply	other threads:[~2016-05-20 13:21 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-17  1:09 [PATCH 1/3] function: Do the CLEANUP_EXPENSIVE after shrink-wrapping, not before Segher Boessenkool
2016-05-17  1:09 ` [PATCH 3/3] function: Restructure *logue insertion Segher Boessenkool
2016-05-19  8:04   ` Segher Boessenkool
2016-05-19 22:00   ` Jeff Law
2016-05-19 22:20     ` Segher Boessenkool
2016-05-20  9:28       ` Thomas Schwinge
2016-05-20 13:21         ` Thomas Schwinge [this message]
2016-05-20 14:47           ` Nathan Sidwell
2016-05-20 15:35             ` Segher Boessenkool
2016-05-20 21:27         ` Segher Boessenkool
2016-05-17  1:09 ` [PATCH 2/3] function: Factor out make_*logue_seq Segher Boessenkool
2016-05-17 20:35   ` Jeff Law
2016-05-18 17:17   ` H.J. Lu
2016-05-18 18:11     ` Segher Boessenkool
2016-05-18 18:20       ` H.J. Lu
2016-05-18 18:24         ` H.J. Lu
2016-05-18 18:35         ` Segher Boessenkool
2016-05-18 22:13           ` Segher Boessenkool
2016-05-19  7:16             ` Jakub Jelinek
2016-05-19  7:28               ` Segher Boessenkool
2016-05-19  7:41                 ` Jakub Jelinek
2016-05-19 17:20               ` Jeff Law
2016-05-17  8:06 ` [PATCH 1/3] function: Do the CLEANUP_EXPENSIVE after shrink-wrapping, not before Eric Botcazou
2016-05-17  8:47   ` Segher Boessenkool
2016-05-17  9:08     ` Eric Botcazou
2016-05-17  9:18       ` Segher Boessenkool
2016-05-17 22:23         ` Segher Boessenkool
2016-05-17 22:34           ` Eric Botcazou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87zirkuapm.fsf@hertz.schwinge.homeip.net \
    --to=thomas@codesourcery.com \
    --cc=bschmidt@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=law@redhat.com \
    --cc=nathan@codesourcery.com \
    --cc=segher@kernel.crashing.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).