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
next prev parent 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).