summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2012-11-26 13:56:23 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2012-11-26 13:56:23 +0000
commit8bed6809646c93b0f5d3b528942edd9e3dc89372 (patch)
treee46a6aeae9ebea5d891d766baa6784291c02d937 /gcc
parente3f9361d493097a0bc70f131feafad0f89867d6e (diff)
downloadgcc-8bed6809646c93b0f5d3b528942edd9e3dc89372.tar.gz
tree.h (DECL_RESTRICTED_P): Delete.
* tree.h (DECL_RESTRICTED_P): Delete. (DECL_READ_P): Add comment. (DECL_NONSHAREABLE): Likewise. (TYPE_NO_FORCE_BLK): Fix comment. (struct tree_decl_common): Remove decl_restricted_flag, add decl_flag_3. * tree-emutls.c (new_emutls_decl): Do not deal with DECL_RESTRICTED_P. * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Likewise. * tree-streamer-out.c (pack_ts_decl_common_value_fields): Likewise. fortran/ * trans-decl.c (gfc_finish_var_decl): Do not set DECL_RESTRICTED_P. * alias.c (nonoverlapping_component_refs_p): Fix thinko. From-SVN: r193815
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog13
-rw-r--r--gcc/alias.c14
-rw-r--r--gcc/fortran/ChangeLog4
-rw-r--r--gcc/fortran/trans-decl.c6
-rw-r--r--gcc/tree-emutls.c1
-rw-r--r--gcc/tree-streamer-in.c1
-rw-r--r--gcc/tree-streamer-out.c1
-rw-r--r--gcc/tree.h31
8 files changed, 30 insertions, 41 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2a03bcac81c..1ff798fd254 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,16 @@
+2012-11-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree.h (DECL_RESTRICTED_P): Delete.
+ (DECL_READ_P): Add comment.
+ (DECL_NONSHAREABLE): Likewise.
+ (TYPE_NO_FORCE_BLK): Fix comment.
+ (struct tree_decl_common): Remove decl_restricted_flag, add decl_flag_3.
+ * tree-emutls.c (new_emutls_decl): Do not deal with DECL_RESTRICTED_P.
+ * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Likewise.
+ * tree-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
+
+ * alias.c (nonoverlapping_component_refs_p): Fix thinko.
+
2012-11-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* doc/sourcebuild.texi: Document arm_v8_vfp_ok.
diff --git a/gcc/alias.c b/gcc/alias.c
index 21daa5fdb4f..15fd7f31804 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -2237,19 +2237,9 @@ nonoverlapping_component_refs_p (const_rtx rtlx, const_rtx rtly)
found:
/* If we're left with accessing different fields of a structure, then no
- possible overlap, unless they are both true bitfields, i.e. bitfields
- for which the size isn't a multiple of the (memory) unit. */
+ possible overlap, unless they are both bitfields. */
if (TREE_CODE (typex) == RECORD_TYPE && fieldx != fieldy)
- {
- if (!DECL_BIT_FIELD (fieldx) || !DECL_BIT_FIELD (fieldy))
- return true;
-
- if ((tree_low_cst (DECL_SIZE (fieldx), 1) % BITS_PER_UNIT) == 0
- || (tree_low_cst (DECL_SIZE (fieldy), 1) % BITS_PER_UNIT) == 0)
- return true;
-
- return false;
- }
+ return !(DECL_BIT_FIELD (fieldx) && DECL_BIT_FIELD (fieldy));
/* The comparison on the current field failed. If we're accessing
a very nested structure, look at the next outer level. */
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index d6c759c314b..2aa8d60e1f1 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,7 @@
+2012-11-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * trans-decl.c (gfc_finish_var_decl): Do not set DECL_RESTRICTED_P.
+
2012-11-26 Janus Weil <janus@gcc.gnu.org>
PR fortran/54997
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 9adcb8bddb2..3bee1781d64 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -611,12 +611,6 @@ gfc_finish_var_decl (tree decl, gfc_symbol * sym)
if (sym->attr.threadprivate
&& (TREE_STATIC (decl) || DECL_EXTERNAL (decl)))
DECL_TLS_MODEL (decl) = decl_default_tls_model (decl);
-
- if (!sym->attr.target
- && !sym->attr.pointer
- && !sym->attr.cray_pointee
- && !sym->attr.proc_pointer)
- DECL_RESTRICTED_P (decl) = 1;
}
diff --git a/gcc/tree-emutls.c b/gcc/tree-emutls.c
index 93270b861c2..8731b247196 100644
--- a/gcc/tree-emutls.c
+++ b/gcc/tree-emutls.c
@@ -296,7 +296,6 @@ new_emutls_decl (tree decl, tree alias_of)
DECL_WEAK (to) = DECL_WEAK (decl);
DECL_VISIBILITY (to) = DECL_VISIBILITY (decl);
DECL_VISIBILITY_SPECIFIED (to) = DECL_VISIBILITY_SPECIFIED (decl);
- DECL_RESTRICTED_P (to) = DECL_RESTRICTED_P (decl);
DECL_DLLIMPORT_P (to) = DECL_DLLIMPORT_P (decl);
DECL_ATTRIBUTES (to) = targetm.merge_decl_attributes (decl, to);
diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c
index 62649d18eec..73dc73cf383 100644
--- a/gcc/tree-streamer-in.c
+++ b/gcc/tree-streamer-in.c
@@ -236,7 +236,6 @@ unpack_ts_decl_common_value_fields (struct bitpack_d *bp, tree expr)
if (TREE_CODE (expr) == VAR_DECL
|| TREE_CODE (expr) == PARM_DECL)
DECL_HAS_VALUE_EXPR_P (expr) = (unsigned) bp_unpack_value (bp, 1);
- DECL_RESTRICTED_P (expr) = (unsigned) bp_unpack_value (bp, 1);
}
}
diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c
index f1470c1736f..525426c6d20 100644
--- a/gcc/tree-streamer-out.c
+++ b/gcc/tree-streamer-out.c
@@ -202,7 +202,6 @@ pack_ts_decl_common_value_fields (struct bitpack_d *bp, tree expr)
if (TREE_CODE (expr) == VAR_DECL
|| TREE_CODE (expr) == PARM_DECL)
bp_pack_value (bp, DECL_HAS_VALUE_EXPR_P (expr), 1);
- bp_pack_value (bp, DECL_RESTRICTED_P (expr), 1);
}
}
diff --git a/gcc/tree.h b/gcc/tree.h
index a830e28d682..9f17253fbf8 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -1321,18 +1321,13 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
(TREE_CHECK3 (NODE, VAR_DECL, PARM_DECL, \
RESULT_DECL)->decl_common.decl_by_reference_flag)
-/* In a RESULT_DECL, PARM_DECL and VAR_DECL, means that this decl
- can be used as restricted tag to disambiguate against other restrict
- pointers. Used by fortran to capture something like non-addressability
- (which it isn't really because the middle-end does take addresses of
- such variables). */
-#define DECL_RESTRICTED_P(NODE) \
- (TREE_CHECK3 (NODE, VAR_DECL, PARM_DECL, \
- RESULT_DECL)->decl_common.decl_restricted_flag)
-
+/* In VAR_DECL and PARM_DECL, set when the decl has been used except for
+ being set. */
#define DECL_READ_P(NODE) \
(TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_read_flag)
+/* In VAR_DECL or RESULT_DECL, set when significant code movement precludes
+ attempting to share the stack slot with some other variable. */
#define DECL_NONSHAREABLE(NODE) \
(TREE_CHECK2 (NODE, VAR_DECL, \
RESULT_DECL)->decl_common.decl_nonshareable_flag)
@@ -2195,8 +2190,8 @@ extern enum machine_mode vector_type_mode (const_tree);
get one debug info record for them. */
#define TYPE_STUB_DECL(NODE) (TREE_CHAIN (TYPE_CHECK (NODE)))
-/* In a RECORD_TYPE, UNION_TYPE or QUAL_UNION_TYPE, it means the type
- has BLKmode only because it lacks the alignment requirement for
+/* In a RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE or ARRAY_TYPE, it means
+ the type has BLKmode only because it lacks the alignment required for
its size. */
#define TYPE_NO_FORCE_BLK(NODE) \
(TYPE_CHECK (NODE)->type_common.no_force_blk_flag)
@@ -2848,26 +2843,22 @@ struct GTY(()) tree_decl_common {
In VAR_DECL, PARM_DECL and RESULT_DECL, this is
DECL_HAS_VALUE_EXPR_P. */
unsigned decl_flag_2 : 1;
+ /* 1 bit unused. */
+ unsigned decl_flag_3 : 1;
/* Logically, these two would go in a theoretical base shared by var and
parm decl. */
unsigned gimple_reg_flag : 1;
/* In VAR_DECL, PARM_DECL and RESULT_DECL, this is DECL_BY_REFERENCE. */
unsigned decl_by_reference_flag : 1;
- /* In VAR_DECL, PARM_DECL and RESULT_DECL, this is DECL_RESTRICTED_P. */
- unsigned decl_restricted_flag : 1;
-
- /* In VAR_DECL and PARM_DECL set when the decl has been used except for
- being set. */
+ /* In a VAR_DECL and PARM_DECL, this is DECL_READ_P. */
unsigned decl_read_flag : 1;
-
- /* In VAR_DECL or RESULT_DECL set when significant code movement precludes
- attempting to share the stack slot with some other variable. */
+ /* In a VAR_DECL or RESULT_DECL, this is DECL_NONSHAREABLE. */
unsigned decl_nonshareable_flag : 1;
/* DECL_OFFSET_ALIGN, used only for FIELD_DECLs. */
unsigned int off_align : 8;
- /* 24-bits unused. */
+ /* 24 bits unused. */
/* DECL_ALIGN. It should have the same size as TYPE_ALIGN. */
unsigned int align;