[Bug tree-optimization/27236] [4.1/4.2 Regression] inliner creates an INDIRECT_REF without TREE_THIS_VOLATILE set for *a
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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