Hi, composite_type doesn't consider the pointer mode when creating a pointer. As a consequence:
type char *p32 __attribute__((mode (SI)); type char *p32 __attribute__((mode (SI)); creates a 64-bit pointers (on ia64-hp-openvms and certainly some other configuration). This breaks some compiler builds (depending on the build options). As far as I know, this is not a regression, so it may not qualify for a stage 4 submission. Tristan. 2012-01-25 Tristan Gingold <ging...@adacore.com> * c-typeck.c (composite_type): Keep mode for pointers. diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index b696e5e..2e33763 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -394,7 +394,7 @@ composite_type (tree t1, tree t2) tree pointed_to_1 = TREE_TYPE (t1); tree pointed_to_2 = TREE_TYPE (t2); tree target = composite_type (pointed_to_1, pointed_to_2); - t1 = build_pointer_type (target); + t1 = build_pointer_type_for_mode (target, TYPE_MODE (t1), false); t1 = build_type_attribute_variant (t1, attributes); return qualify_type (t1, t2); }