diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-11-18 19:36:01 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-11-18 19:36:01 +0000 |
commit | a9d9ab08e44531dc708dfa385147c321643b86fc (patch) | |
tree | e65409914fec6e66c9baf2b8cc7705fd81ee165a /gcc/tree.h | |
parent | 61ef20483a810bfb77b1e742557fc5624c4f39d2 (diff) | |
download | gcc-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.h | 8 |
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++. |