> 
> On Wed, 2006-02-08 at 12:28 -0500, Andrew Pinski wrote:
> > > 
> > > I've build in a unified (symlink) tree, with sourceware stuff checked 
> > > out via cvs from date/time D2006.02.07.17.00.00
> > 
> > I am reducing this failure and will file a bug report.
> > 
> 
> This failure is actually a latent bug elsewhere in marking statements
> annotations with volatile ops
> 
> PRE doesn't touch statements that contain volatile operations because
> operand_equal_p claims two volatile operands are different, even if they
> look the same (which is the underlying cause of your infinite loop.  We
> keep thinking we've generated new values because the hash lookup never
> finds the old ones because operand_equal_p returns false)
> 
> All the other statements related to your volatile expressions have
> stmt_ann (stmt)->has_volatile_ops set to 1.
> 
> yet
> 
> (gdb) p ann->has_volatile_ops
> $18 = 0
> :(

I have a patch which is testing right now and I will apply it as pre-approved
(by Diego) once it has finishing testing. 

Thanks,
Andrew Pinski


ChangeLog:

        * tree-flow-inline.h (var_can_have_subvars): 
        Volatile variables should not have subvariables.


Index: tree-flow-inline.h
===================================================================
--- tree-flow-inline.h  (revision 110761)
+++ tree-flow-inline.h  (working copy)
@@ -1463,6 +1463,11 @@ get_subvar_at (tree var, unsigned HOST_W
 static inline bool
 var_can_have_subvars (tree v)
 {
+
+  /* Volatile variables should never have subvars.  */
+  if (TREE_THIS_VOLATILE (v))
+    return false;
+
   /* Non decls or memory tags can never have subvars.  */
   if (!DECL_P (v) || MTAG_P (v))
     return false;

Reply via email to