This is the mail archive of the gcc-bugs@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]

Re: FAIL: gcc.c-torture/execute/950628-1.c execution, -O1


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

I examined some more of the gcc testsuite failures
<http://gcc.gnu.org/ml/gcc-testresults/2001-01/msg00279.html> that occur with
the current cvs source under hpux 10.20, namely 960215-1.c, 960513-1.c
and regstack-1.c.  The common thread seemed to be that these involve
an optimisation failure in handling long doubles.

Guessing that the origin of these failures was similar to that for 950628-1.c,
I disabled the addition of MEM sets to the pbi->mem_set_list in both locations
where this occurs in flow.c (see below).  I have manually compiled the above
tests and they no longer appear to fail.  Thus, there is a problem with MEMs
associated with small structs and long doubles.  I will post the complete
test results when the run completes.

The test 20010119-1.c was recently installed.  It fails because `undef (code)'
is an unsatisfied symbol.  Nominally, this is a regression against the
previous version since the call is supposed to be eliminated as dead code.
However, given the above, my preference would be not to be overly agressive
in trying to eliminate dead code.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)

2001-01-23  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 because invalidate_mems_from_set
	doesn't correctly detect all cases where the entry is not valid,
	resulting in the store being deleted.
	(mark_set_1): Same.

--- flow.c.orig	Fri Jan 19 13:40:40 2001
+++ flow.c	Tue Jan 23 15:01:52 2001
@@ -4083,7 +4083,7 @@
      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
+  if (0 && optimize
       && ! (TREE_CODE (TREE_TYPE (current_function_decl)) == FUNCTION_TYPE
 	    && (TYPE_RETURNS_STACK_DEPRESSED
 		(TREE_TYPE (current_function_decl))))
@@ -4753,7 +4753,7 @@
       if (insn && GET_CODE (reg) == MEM)
 	invalidate_mems_from_autoinc (pbi, insn);
 
-      if (pbi->mem_set_list_len < MAX_MEM_SET_LIST_LEN
+      if (0 && pbi->mem_set_list_len < MAX_MEM_SET_LIST_LEN
 	  && GET_CODE (reg) == MEM && ! side_effects_p (reg)
 	  /* ??? With more effort we could track conditional memory life.  */
 	  && ! cond

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