+2014-03-21 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/60577
+ * tree-core.h (struct tree_base): Document nothrow_flag use
+ in VAR_DECL_NONALIASED.
+ * tree.h (VAR_DECL_NONALIASED): New.
+ (may_be_aliased): Adjust.
+ * coverage.c (build_var): Set VAR_DECL_NONALIASED.
+
2014-03-20 Eric Botcazou <ebotcazou@adacore.com>
* expr.c (expand_expr_real_1): Remove outdated comment.
DECL_NAME (var) = get_identifier (buf);
TREE_STATIC (var) = 1;
TREE_ADDRESSABLE (var) = 1;
+ DECL_NONALIASED (var) = 1;
DECL_ALIGN (var) = TYPE_ALIGN (type);
return var;
+2014-03-21 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/60577
+ * gcc.dg/tree-ssa/ssa-lim-11.c: New testcase.
+
2014-03-21 Tobias Burnus <burnus@net-b.de>
PR fortran/60599
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-O -fprofile-arcs -fdump-tree-lim1-details" } */
+
+struct thread_param
+{
+ long* buf;
+ long iterations;
+ long accesses;
+} param;
+
+void access_buf(struct thread_param* p)
+{
+ long i,j;
+ long iterations = p->iterations;
+ long accesses = p->accesses;
+ for (i=0; i<iterations; i++)
+ {
+ long* pbuf = p->buf;
+ for (j=0; j<accesses; j++)
+ pbuf[j] += 1;
+ }
+}
+
+/* { dg-final { scan-tree-dump-times "Executing store motion of __gcov0.access_buf\\\[\[01\]\\\] from loop 1" 2 "lim1" } } */
+/* { dg-final { cleanup-tree-dump "lim1" } } */
SSA_NAME_IN_FREELIST in
SSA_NAME
+ VAR_DECL_NONALIASED in
+ VAR_DECL
+
deprecated_flag:
TREE_DEPRECATED in
#define DECL_NONLOCAL_FRAME(NODE) \
(VAR_DECL_CHECK (NODE)->base.default_def_flag)
+/* In a VAR_DECL, nonzero if this variable is not aliased by any pointer. */
+#define DECL_NONALIASED(NODE) \
+ (VAR_DECL_CHECK (NODE)->base.nothrow_flag)
+
/* This field is used to reference anything in decl.result and is meant only
for use by the garbage collector. */
#define DECL_RESULT_FLD(NODE) \
may_be_aliased (const_tree var)
{
return (TREE_CODE (var) != CONST_DECL
- && !((TREE_STATIC (var) || TREE_PUBLIC (var) || DECL_EXTERNAL (var))
- && TREE_READONLY (var)
- && !TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (var)))
&& (TREE_PUBLIC (var)
|| DECL_EXTERNAL (var)
- || TREE_ADDRESSABLE (var)));
+ || TREE_ADDRESSABLE (var))
+ && !((TREE_STATIC (var) || TREE_PUBLIC (var) || DECL_EXTERNAL (var))
+ && ((TREE_READONLY (var)
+ && !TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (var)))
+ || (TREE_CODE (var) == VAR_DECL
+ && DECL_NONALIASED (var)))));
}
/* Return pointer to optimization flags of FNDECL. */