This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PowerPC] Fix PR25176: Array_3 bytecode->native test fail


On Thu, Dec 01, 2005 at 12:40:42PM +0000, Andrew Haley wrote:
> Alan Modra writes:
>  > On Thu, Dec 01, 2005 at 07:50:55PM +1030, Alan Modra wrote:
>  > > A quick fix is relatively easy.
>  > 
>  > This is the powerpc fix I'm currently testing.  I've verified that it
>  > fixes the libjava test failure for powerpc64-linux, but bootstrap and
>  > regression test on both powerpc-linux and powerpc64-linux are not yet
>  > complete.
> 
> There's this code in expand_function_end:
> 
>   clear_pending_stack_adjust ();
>   do_pending_stack_adjust ();
> 
>   /* @@@ This is a kludge.  We want to ensure that instructions that
>      may trap are not moved into the epilogue by scheduling, because
>      we don't always emit unwind information for the epilogue.
>      However, not all machine descriptions define a blockage insn, so
>      emit an ASM_INPUT to act as one.  */
>   if (flag_non_call_exceptions)
>     emit_insn (gen_rtx_ASM_INPUT (VOIDmode, ""));
> 
> which should be executed?
> 
> Is the problem that this is the wrong place for PPC?

Interesting.  I see the asm in .00.expand and .01.eunotes, and it is in
the right place.  However, there is no hint of it in .02.sibling.
Something's eaten it, and I'm too tired to try tracking it down tonight.

======= .01.eunotes
;; End of basic block 1, registers live:
 (nil)

(barrier 17 16 29)

;; Start of basic block 2, registers live: (nil)
(note 29 17 18 2 [bb 2] NOTE_INSN_BASIC_BLOCK)

(insn 18 29 19 2 (asm_input ("")) -1 (nil)
    (nil))

(note 19 18 20 2 NOTE_INSN_FUNCTION_END)

(note 20 19 23 2 ("Array_3.java") 0)

(insn 23 20 24 2 (clobber (reg/i:DI 3 3)) -1 (nil)
    (nil))

(insn 24 23 25 2 (clobber (reg:DI 120 [ <result> ])) -1 (nil)
    (nil))

(jump_insn 25 24 26 2 (set (pc)
        (label_ref 27)) -1 (nil)
    (nil))
;; End of basic block 2, registers live:
 (nil)

(barrier 26 25 21)

;; Start of basic block 3, registers live: (nil)
(code_label 21 26 30 3 5 "" [1 uses])

(note 30 21 22 3 [bb 3] NOTE_INSN_BASIC_BLOCK)

(insn 22 30 27 3 (set (reg/i:DI 3 3)
        (reg:DI 120 [ <result> ])) -1 (nil)
    (nil))
;; End of basic block 3, registers live:
 (nil)

;; Start of basic block 4, registers live: (nil)
(code_label 27 22 31 4 6 "" [1 uses])


====== .02.sibling
;; End of basic block 1, registers live:
 (nil)

(note 19 15 20 2 NOTE_INSN_FUNCTION_END)

(note 20 19 21 2 ("Array_3.java") 0)

;; Start of basic block 3, registers live: (nil)
(code_label 21 20 30 3 5 "" [0 uses])

(note 30 21 22 3 [bb 3] NOTE_INSN_BASIC_BLOCK)

(insn 22 30 27 3 (set (reg/i:DI 3 3)
        (reg:DI 120 [ <result> ])) -1 (nil)
    (nil))
;; End of basic block 3, registers live:
 (nil)

;; Start of basic block 4, registers live: (nil)
(code_label 27 22 31 4 6 "" [0 uses])


-- 
Alan Modra
IBM OzLabs - Linux Technology Centre


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]