public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* Fix PR48484
@ 2011-04-08 22:08 Xinliang David Li
  2011-04-09 15:42 ` Richard Guenther
  0 siblings, 1 reply; 2+ messages in thread
From: Xinliang David Li @ 2011-04-08 22:08 UTC (permalink / raw)
  To: GCC Patches; +Cc: Jakub Jelinek

[-- Attachment #1: Type: text/plain, Size: 381 bytes --]

Hi, this patch fixes the test failure. OK after bootstrap and regression test?

Thanks,

David


2011-04-08  Xinliang David Li  <davidxl@google.com>

	PR tree-optimization/PR48484
	* tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Set
	has_valid_pred lazily

2011-04-08  Xinliang David Li  <davidxl@google.com>

	PR tree-optimization/48484
	* g++.dg/pr48484.C: New test.

[-- Attachment #2: uninit_pred_ice.p --]
[-- Type: text/x-pascal, Size: 2845 bytes --]

Index: tree-ssa-uninit.c
===================================================================
--- tree-ssa-uninit.c	(revision 172211)
+++ tree-ssa-uninit.c	(working copy)
@@ -349,9 +349,6 @@ convert_control_dep_chain_into_preds (VE
   if (num_chains == 0 || num_chains >= MAX_NUM_CHAINS)
     return false;
 
-  /* Now convert CD chains into predicates  */
-  has_valid_pred = true;
-
   /* Now convert the control dep chain into a set
      of predicates.  */
   *preds = XCNEWVEC (VEC(use_pred_info_t, heap) *,
@@ -412,6 +409,7 @@ convert_control_dep_chain_into_preds (VE
           one_pred->cond = cond_stmt;
           one_pred->invert = !!(e->flags & EDGE_FALSE_VALUE);
           VEC_safe_push (use_pred_info_t, heap, (*preds)[i], one_pred);
+	  has_valid_pred = true;
         }
 
       if (!has_valid_pred)
Index: testsuite/g++.dg/pr48484.C
===================================================================
--- testsuite/g++.dg/pr48484.C	(revision 0)
+++ testsuite/g++.dg/pr48484.C	(revision 0)
@@ -0,0 +1,105 @@
+/* { dg-do compile } */
+/* { dg-options "-O -finline-functions -finline-small-functions -Wuninitialized" }  */
+
+
+struct SQObjectPtr
+{
+  int _type;
+  SQObjectPtr operator = (long);
+};
+struct SQObjectPtrVec
+{
+  SQObjectPtr fff (unsigned);
+  SQObjectPtr *_vals;
+};
+
+struct SQInstruction
+{
+  int _arg1;
+  unsigned op;
+  unsigned _arg0;
+  unsigned _arg2;
+};
+struct SQVM
+{
+  struct CallInfo
+  {
+    SQInstruction *_ip;
+  };
+    bool
+    Execute (SQObjectPtr &, long, long, long, SQObjectPtr &, unsigned, int);
+    bool
+    FOREACH_OP
+    (SQObjectPtr
+     &, SQObjectPtr &, SQObjectPtr &, SQObjectPtr &, long, int, int &);
+  SQObjectPtrVec _stack;
+  CallInfo *ci;
+  long _nnativecalls;
+  bool ShouldSuspend ();
+};
+struct AutoDec
+{
+  AutoDec (long *);
+   ~AutoDec ();
+};
+bool
+  SQVM::FOREACH_OP
+  (SQObjectPtr
+   &
+   o1,
+   SQObjectPtr & o2, SQObjectPtr &, SQObjectPtr & o4, long, int, int &jump)
+{
+  long
+    nrefidx = 0;
+  switch (o1._type)
+    {
+    case 0x02000000:
+      o4 = nrefidx;
+      jump = 1;
+      return true;
+    case 0x00000080:
+      {
+	long
+	  idx = 10;
+	o2 = idx;
+	jump = 0;
+      }
+    }
+}
+
+bool
+  SQVM::Execute
+  (SQObjectPtr &, long, long, long, SQObjectPtr &, unsigned, int)
+{
+  AutoDec
+  ad (&_nnativecalls);
+  for (;;)
+    {
+      if (ShouldSuspend ())
+	return true;
+      SQInstruction
+	_i_ = *ci->_ip;
+      switch (_i_.op)
+	{
+	case 0:
+	  {
+	    int
+	      tojump;
+
+	    FOREACH_OP
+	      (_stack._vals
+	       [_i_._arg0],
+	       _stack._vals
+	       [_i_._arg2],
+	       _stack._vals
+	       [_i_._arg2],
+	       _stack._vals[_i_._arg2], _i_._arg2, _i_._arg1, tojump);
+
+	    ci += tojump;  /* { dg-warning "uninitialized" "warning" }  */
+	  }
+	case 1:
+	  _stack.fff (_i_._arg1);
+	}
+    }
+
+}

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Fix PR48484
  2011-04-08 22:08 Fix PR48484 Xinliang David Li
@ 2011-04-09 15:42 ` Richard Guenther
  0 siblings, 0 replies; 2+ messages in thread
From: Richard Guenther @ 2011-04-09 15:42 UTC (permalink / raw)
  To: Xinliang David Li; +Cc: GCC Patches, Jakub Jelinek

On Sat, Apr 9, 2011 at 12:08 AM, Xinliang David Li <davidxl@google.com> wrote:
> Hi, this patch fixes the test failure. OK after bootstrap and regression test?

Ok.

Thanks,
Richard.

> Thanks,
>
> David
>
>
> 2011-04-08  Xinliang David Li  <davidxl@google.com>
>
>        PR tree-optimization/PR48484
>        * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Set
>        has_valid_pred lazily
>
> 2011-04-08  Xinliang David Li  <davidxl@google.com>
>
>        PR tree-optimization/48484
>        * g++.dg/pr48484.C: New test.
>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-04-09 15:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-04-08 22:08 Fix PR48484 Xinliang David Li
2011-04-09 15:42 ` Richard Guenther

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).