This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: FAIL: gcc.c-torture/execute/950628-1.c execution, -O1
- To: dave at hiauly1 dot hia dot nrc dot ca (John David Anglin)
- Subject: Re: FAIL: gcc.c-torture/execute/950628-1.c execution, -O1
- From: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- Date: Mon, 22 Jan 2001 14:56:40 -0500 (EST)
- Cc: gcc-bugs at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
> It can be seen for example that the MEM in insn 46 is referenced latter
> in insn 61. Possibly, the MEM is not invalidated on the pbi->mem_set_list
> because the reference is indirect via register SI 113.
> (insn 35 34 46 (set (reg:SI 107)
> (zero_extend:SI (subreg:HI (reg:SI 29 %r29) 0))) 133 {*pa.md:3362} (nil)
> (nil))
>
> (insn 46 35 47 (set (mem/s/u:HI (plus:SI (reg/f:SI 3 %r3)
> (const_int 20 [0x14])) 0)
> (subreg:HI (reg:SI 107) 0)) 91 {*pa.md:2554} (nil)
> (nil))
> (insn 59 58 61 (set (reg/f:SI 113)
> (plus:SI (reg/f:SI 3 %r3)
> (const_int 20 [0x14]))) 169 {addsi3} (nil)
> (nil))
>
> (insn 61 59 62 (set (reg:HI 117)
> (mem/s/u:HI (reg/f:SI 113) 0)) 91 {*pa.md:2554} (nil)
> (nil))
The patch (hack) below is a temporary fix to the test failure. It prevents
the deletion of the SET at insn 46 when the indirect reference in 59-61
is detected.
Dave
--
J. David Anglin dave.anglin@nrc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6605)
2001-01-22 John David Anglin <dave@hiauly1.hia.nrc.ca>
* flow.c (init_propagate_block_info): Disable scan for stores to the
frame in blocks with no successors.
--- flow.c.orig Wed Jan 17 01:46:51 2001
+++ flow.c Mon Jan 22 14:27:34 2001
@@ -4083,7 +4083,9 @@
used later in the block are dead. So make a pass over the block
recording any such that are made and show them dead at the end. We do
a very conservative and simple job here. */
- if (optimize
+ /* FIXME: This optimisation is disabled because the check for stores
+ used later doesn't detect some indirect cases. */
+ if (0 && optimize
&& ! (TREE_CODE (TREE_TYPE (current_function_decl)) == FUNCTION_TYPE
&& (TYPE_RETURNS_STACK_DEPRESSED
(TREE_TYPE (current_function_decl))))