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 > <seg...@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