re PR middle-end/52329 (Invalid MEM_REF encountered in set_mem_attributes_minus_bitpos)
authorRichard Guenther <rguenther@suse.de>
Wed, 22 Feb 2012 11:21:48 +0000 (11:21 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 22 Feb 2012 11:21:48 +0000 (11:21 +0000)
2012-02-22  Richard Guenther  <rguenther@suse.de>

PR middle-end/52329
* gimple-fold.c (fold_stmt_1): Also canonicalize ADDR_EXPRs
for GIMPLE_DEBUG stmts.

From-SVN: r184466

gcc/ChangeLog
gcc/gimple-fold.c

index ff81abd699cdf10f319b79f2940fca621699fe98..cc6d64c4f10ca3041c9b653de71296854121ee7f 100644 (file)
@@ -1,3 +1,9 @@
+2012-02-22  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/52329
+       * gimple-fold.c (fold_stmt_1): Also canonicalize ADDR_EXPRs
+       for GIMPLE_DEBUG stmts.
 2012-02-22  Martin Jambor  <mjambor@suse.cz>
 
        PR middle-end/51782
index eae4cbe461525765b7247b1b380d00583698dc7e..5ba7178b0da8c622d178aa34e0c59b80f3b9f6ff 100644 (file)
@@ -1250,6 +1250,18 @@ fold_stmt_1 (gimple_stmt_iterator *gsi, bool inplace)
                  changed = true;
                }
            }
+         else if (val
+                  && TREE_CODE (val) == ADDR_EXPR)
+           {
+             tree ref = TREE_OPERAND (val, 0);
+             tree tem = maybe_fold_reference (ref, false);
+             if (tem)
+               {
+                 tem = build_fold_addr_expr_with_type (tem, TREE_TYPE (val));
+                 gimple_debug_bind_set_value (stmt, tem);
+                 changed = true;
+               }
+           }
        }
       break;