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 PR55111


This fixes PR55111.

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

Richard.

2012-10-30  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/55111
	* tree-ssa-pre.c (eliminate_insert): Properly fold the built
	stmt.

	* gcc.dg/torture/pr55111.c: New testcase.

Index: gcc/tree-ssa-pre.c
===================================================================
*** gcc/tree-ssa-pre.c	(revision 192983)
--- gcc/tree-ssa-pre.c	(working copy)
*************** eliminate_insert (gimple_stmt_iterator *
*** 3996,4003 ****
  
    tree res = make_temp_ssa_name (TREE_TYPE (val), NULL, "pretmp");
    gimple tem = gimple_build_assign (res,
! 				    build1 (TREE_CODE (expr),
! 					    TREE_TYPE (expr), leader));
    gsi_insert_before (gsi, tem, GSI_SAME_STMT);
    VN_INFO_GET (res)->valnum = val;
  
--- 3996,4003 ----
  
    tree res = make_temp_ssa_name (TREE_TYPE (val), NULL, "pretmp");
    gimple tem = gimple_build_assign (res,
! 				    fold_build1 (TREE_CODE (expr),
! 						 TREE_TYPE (expr), leader));
    gsi_insert_before (gsi, tem, GSI_SAME_STMT);
    VN_INFO_GET (res)->valnum = val;
  
Index: gcc/testsuite/gcc.dg/torture/pr55111.c
===================================================================
*** gcc/testsuite/gcc.dg/torture/pr55111.c	(revision 0)
--- gcc/testsuite/gcc.dg/torture/pr55111.c	(working copy)
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile } */
+ 
+ int a, b, c;
+ long d;
+ unsigned long *e;
+ 
+ int f(void)
+ {
+   for(;; a++)
+     {
+       if(c)
+ 	{
+ 	  for(b = d = 0; b < 1; b++)
+ 	    e = &d;
+ 
+ 	  --*e;
+ 
+ 	  if(d > 0)
+ 	    a = 0;
+ 
+ 	  return d;
+ 	}
+     }
+ }


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