diff options
author | Yvan Roux <yvan.roux@linaro.org> | 2015-12-28 12:06:31 +0100 |
---|---|---|
committer | Linaro Code Review <review@review.linaro.org> | 2016-01-12 15:20:36 +0000 |
commit | d4b825e4125794fe16c45c49bae1cb79d7483d21 (patch) | |
tree | 5302e71ed1827e06e0b7c4107cbaf3847cc43f1c | |
parent | a49af31a9eabf698ecf1bbf71dec73d71d67034b (diff) |
gcc/
Backport from trunk r231758.
2015-12-17 Christian Bruel <christian.bruel@st.com>
* tree.h (TYPE_MODE_RAW): New macro.
* tree-streamer-out.c (pack_ts_type_common_value_fields):
Replace TYPE_MODE by TYPE_MODE_RAW.
Change-Id: Ie4f2e98e9c5c07ff40bd21e55db2f65565569cba
-rw-r--r-- | gcc/tree-streamer-out.c | 5 | ||||
-rw-r--r-- | gcc/tree.h | 1 |
2 files changed, 5 insertions, 1 deletions
diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c index 0e5458b14f2..4a5fee74287 100644 --- a/gcc/tree-streamer-out.c +++ b/gcc/tree-streamer-out.c @@ -325,7 +325,10 @@ pack_ts_function_decl_value_fields (struct bitpack_d *bp, tree expr) static void pack_ts_type_common_value_fields (struct bitpack_d *bp, tree expr) { - bp_pack_machine_mode (bp, TYPE_MODE (expr)); + /* for VECTOR_TYPE, TYPE_MODE reevaluates the mode using target_flags + not necessary valid in a global context. + Use the raw value previously set by layout_type. */ + bp_pack_machine_mode (bp, TYPE_MODE_RAW (expr)); bp_pack_value (bp, TYPE_STRING_FLAG (expr), 1); bp_pack_value (bp, TYPE_NO_FORCE_BLK (expr), 1); bp_pack_value (bp, TYPE_NEEDS_CONSTRUCTING (expr), 1); diff --git a/gcc/tree.h b/gcc/tree.h index 9fe3ce61316..89c14d8645a 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -1650,6 +1650,7 @@ extern void protected_set_expr_location (tree, location_t); #define TYPE_MAIN_VARIANT(NODE) (TYPE_CHECK (NODE)->type_common.main_variant) #define TYPE_CONTEXT(NODE) (TYPE_CHECK (NODE)->type_common.context) +#define TYPE_MODE_RAW(NODE) (TYPE_CHECK (NODE)->type_common.mode) #define TYPE_MODE(NODE) \ (VECTOR_TYPE_P (TYPE_CHECK (NODE)) \ ? vector_type_mode (NODE) : (NODE)->type_common.mode) |