X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Ffortran%2Ftrans-types.c;h=fa214fd8c5572c3172b99ad1ca31a15ee33a8a62;hb=25d9f0716d723f3fd3e75cc75b96a24089d04e6a;hp=31a250d0de761e09c24a719a7723b12b6355573c;hpb=2efec2272475ffffc716fa55d3efb2766fbc9d21;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index 31a250d0de7..fa214fd8c55 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -870,7 +870,7 @@ gfc_init_types (void) ppvoid_type_node = build_pointer_type (pvoid_type_node); pchar_type_node = build_pointer_type (gfc_character1_type_node); pfunc_type_node - = build_pointer_type (build_function_type (void_type_node, NULL_TREE)); + = build_pointer_type (build_function_type_list (void_type_node, NULL_TREE)); gfc_array_index_type = gfc_get_int_type (gfc_index_integer_kind); /* We cannot use gfc_index_zero_node in definition of gfc_array_range_type, @@ -1793,6 +1793,9 @@ gfc_sym_type (gfc_symbol * sym) restricted); byref = 0; } + + if (sym->attr.cray_pointee) + GFC_POINTER_TYPE_P (type) = 1; } else { @@ -1808,7 +1811,7 @@ gfc_sym_type (gfc_symbol * sym) { if (sym->attr.allocatable || sym->attr.pointer) type = gfc_build_pointer_type (sym, type); - if (sym->attr.pointer) + if (sym->attr.pointer || sym->attr.cray_pointee) GFC_POINTER_TYPE_P (type) = 1; } @@ -1931,7 +1934,7 @@ gfc_get_ppc_type (gfc_component* c) else t = void_type_node; - return build_pointer_type (build_function_type (t, NULL_TREE)); + return build_pointer_type (build_function_type_list (t, NULL_TREE)); }