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]

[PATCH] Fix PR45071


We forgot to update op->opcode.

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

2010-07-26  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/45071
	* tree-ssa-sccvn.c  (vn_reference_maybe_forwprop_address): Always
	adjust op->opcode.

	* gcc.dg/pr45071.c: New testcase.

Index: gcc/tree-ssa-sccvn.c
===================================================================
*** gcc/tree-ssa-sccvn.c	(revision 162526)
--- gcc/tree-ssa-sccvn.c	(working copy)
*************** vn_reference_maybe_forwprop_address (VEC
*** 1050,1060 ****
    else
      mem_op->off = -1;
    if (TREE_CODE (op->op0) == SSA_NAME)
!     {
!       op->op0 = SSA_VAL (op->op0);
!       if (TREE_CODE (op->op0) != SSA_NAME)
! 	op->opcode = TREE_CODE (op->op0);
!     }
  
    /* And recurse.  */
    if (TREE_CODE (op->op0) == SSA_NAME)
--- 1050,1058 ----
    else
      mem_op->off = -1;
    if (TREE_CODE (op->op0) == SSA_NAME)
!     op->op0 = SSA_VAL (op->op0);
!   if (TREE_CODE (op->op0) != SSA_NAME)
!     op->opcode = TREE_CODE (op->op0);
  
    /* And recurse.  */
    if (TREE_CODE (op->op0) == SSA_NAME)
Index: gcc/testsuite/gcc.dg/pr45071.c
===================================================================
*** gcc/testsuite/gcc.dg/pr45071.c	(revision 0)
--- gcc/testsuite/gcc.dg/pr45071.c	(revision 0)
***************
*** 0 ****
--- 1,34 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O -ftree-vrp -ftree-vectorize" } */
+ 
+ struct A
+ {
+   int i;
+ };
+ 
+ struct B
+ {
+   struct A a;
+ };
+ 
+ extern void f4 (void *);
+ 
+ inline void
+ f3 (struct A *a)
+ {
+   f4 (a);
+   while (a->i);
+ }
+ 
+ static inline void
+ f2 (struct B *b)
+ {
+   f3 (&b->a);
+ }
+ 
+ void
+ f1 ()
+ {
+   struct B *b = 0;
+   f2 (b);
+ }


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