summaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2001-11-18 19:36:01 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2001-11-18 19:36:01 +0000
commita9d9ab08e44531dc708dfa385147c321643b86fc (patch)
treee65409914fec6e66c9baf2b8cc7705fd81ee165a /gcc/tree.h
parent61ef20483a810bfb77b1e742557fc5624c4f39d2 (diff)
downloadgcc-a9d9ab08e44531dc708dfa385147c321643b86fc.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47149 138bc75d-0d04-0410-961f-82ee72b054a4
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++.