summaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2001-11-18 19:36:01 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2001-11-18 14:36:01 -0500
commitc3d321205faccb3dc6c1360fe96b80b44f0682ab (patch)
treee65409914fec6e66c9baf2b8cc7705fd81ee165a /gcc/tree.h
parent69deb6e055c718a94929ffd3012b149c461bb9a0 (diff)
downloadgcc-c3d321205faccb3dc6c1360fe96b80b44f0682ab.tar.gz
tree.h (TYPE_ALIGN_OK): New flag.
* tree.h (TYPE_ALIGN_OK): New flag. * emit-rtl.c (set_mem_attributes): Handle it. * expr.c (emit_single_push_insn): Only set to alias set 0 if doing sibcall optimization. (expand_expr, case COMPONENT_REF): Call set_mem_attributes on case when make temporary. (expand_expr, case CONVERT_EXPR): Simplify convert-to-union case. (expand_expr, case ADDR_EXPR): Abort if TYPE_ALIGN_OK and need copy. From-SVN: r47149
Diffstat (limited to 'gcc/tree.h')
-rw-r--r--gcc/tree.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index 98ba6e59792..9c45fb851ad 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -596,6 +596,14 @@ extern void tree_class_check_failed PARAMS ((const tree, int,
an exception. In a CALL_EXPR, nonzero means the call cannot throw. */
#define TREE_NOTHROW(NODE) ((NODE)->common.nothrow_flag)
+/* In a type, nonzero means that all objects of the type are guaranteed by the
+ language or front-end to be properly aligned, so we can indicate that a MEM
+ of this type is aligned at least to the alignment of the type, even if it
+ doesn't appear that it is. We see this, for example, in object-oriented
+ languages where a tag field may show this is an object of a more-aligned
+ variant of the more generic type. */
+#define TYPE_ALIGN_OK(NODE) (TYPE_CHECK (NODE)->common.nothrow_flag)
+
/* Used in classes in C++. */
#define TREE_PRIVATE(NODE) ((NODE)->common.private_flag)
/* Used in classes in C++.