[Bug tree-optimization/27236] [4.1/4.2 Regression] inliner creates an INDIRECT_REF without TREE_THIS_VOLATILE set for *a

2006-04-24 Thread rguenth at gcc dot gnu dot org


--- Comment #6 from rguenth at gcc dot gnu dot org  2006-04-24 08:32 ---
Note that I just figured out that your patch doesn't fix the problem.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||rguenth at gcc dot gnu dot
   ||org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27236



[Bug tree-optimization/27236] [4.1/4.2 Regression] inliner creates an INDIRECT_REF without TREE_THIS_VOLATILE set for *a

2006-04-24 Thread rguenth at gcc dot gnu dot org


--- Comment #7 from rguenth at gcc dot gnu dot org  2006-04-24 09:06 ---
Subject: Bug 27236

Author: rguenth
Date: Mon Apr 24 09:06:51 2006
New Revision: 113221

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=113221
Log:
2006-04-24  Andrew Pinski  [EMAIL PROTECTED]
Richard Guenther  [EMAIL PROTECTED]

PR tree-optimization/27236
* tree-inline.c (copy_body_r): Make sure to copy
TREE_THIS_VOLATILE flag.

* gcc.dg/tree-ssa/pr27236.c: New testcase.

Added:
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr27236.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-inline.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27236



[Bug tree-optimization/27236] [4.1/4.2 Regression] inliner creates an INDIRECT_REF without TREE_THIS_VOLATILE set for *a

2006-04-23 Thread patchapp at dberlin dot org


--- Comment #5 from patchapp at dberlin dot org  2006-04-23 11:25 ---
Subject: Bug number PR27236

A patch for this bug has been added to the patch tracker.
The mailing list url for the patch is
http://gcc.gnu.org/ml/gcc-patches/2006-04/msg00871.html


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27236



[Bug tree-optimization/27236] [4.1/4.2 Regression] inliner creates an INDIRECT_REF without TREE_THIS_VOLATILE set for *a

2006-04-22 Thread pinskia at gcc dot gnu dot org


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-04-22 19:07 ---
ipa-pure-const is just a symtom of the problem.
TREE_THIS_VOLATILE is not set on the INDIRECT_REF.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

Summary|[4.1/4.2 Regression] ipa-   |[4.1/4.2 Regression] inliner
   |pure-const says functions   |creates an INDIRECT_REF
   |which read from volatile mem|without TREE_THIS_VOLATILE
   |are pure|set for *a


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27236



[Bug tree-optimization/27236] [4.1/4.2 Regression] inliner creates an INDIRECT_REF without TREE_THIS_VOLATILE set for *a

2006-04-22 Thread pinskia at gcc dot gnu dot org


--- Comment #3 from pinskia at gcc dot gnu dot org  2006-04-22 19:19 ---
One more inliner fix:
Index: tree-inline.c
===
--- tree-inline.c   (revision 112997)
+++ tree-inline.c   (working copy)
@@ -590,6 +590,7 @@ copy_body_r (tree *tp, int *walk_subtree
  if (n)
{
  tree new;
+ tree old;
  /* If we happen to get an ADDR_EXPR in n-value, strip
 it manually here as we'll eventually get ADDR_EXPRs
 which lie about their types pointed to.  In this case
@@ -598,13 +599,17 @@ copy_body_r (tree *tp, int *walk_subtree
 does other useful transformations, try that first, though.  */
  tree type = TREE_TYPE (TREE_TYPE ((tree)n-value));
  new = unshare_expr ((tree)n-value);
+ old = *tp;
  *tp = fold_indirect_ref_1 (type, new);
  if (! *tp)
{
  if (TREE_CODE (new) == ADDR_EXPR)
*tp = TREE_OPERAND (new, 0);
  else
-   *tp = build1 (INDIRECT_REF, type, new);
+   {
+  *tp = build1 (INDIRECT_REF, type, new);
+ TREE_THIS_VOLATILE (*tp) = TREE_THIS_VOLATILE (old);
+   }
}
  *walk_subtrees = 0;
  return NULL;


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu dot
   ||org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27236



[Bug tree-optimization/27236] [4.1/4.2 Regression] inliner creates an INDIRECT_REF without TREE_THIS_VOLATILE set for *a

2006-04-22 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2006-04-22 21:37 ---
Bootstrapped and tested on x86_64-unknown-linux-gnu.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27236