From fcdb5d68deffd7e82c3362e210e64dec78a66d62 Mon Sep 17 00:00:00 2001 From: Kai Tietz Date: Wed, 22 Aug 2007 13:06:22 +0000 Subject: [PATCH] [PATCH Fortran] bootstrap failure by wrong sizetype. From-SVN: r127704 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/f95-lang.c | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index d26607ccbee..85e39038c8b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2007-08-22 Kai Tietz + + * f95-lang.c: (gfc_init_decl_processing): Choose sizetype by using + Pmode. + 2007-08-21 Paul Brook Nathan Sidwell Mark Mitchell diff --git a/gcc/fortran/f95-lang.c b/gcc/fortran/f95-lang.c index cc660fb9e47..1e1b640537e 100644 --- a/gcc/fortran/f95-lang.c +++ b/gcc/fortran/f95-lang.c @@ -615,7 +615,15 @@ gfc_init_decl_processing (void) only use it for actual characters, not for INTEGER(1). Also, we want double_type_node to actually have double precision. */ build_common_tree_nodes (false, false); - set_sizetype (long_unsigned_type_node); + /* x86_64 minw32 has a sizetype of "unsigned long long", most other hosts + have a sizetype of "unsigned long". Therefore choose the correct size + in mostly target independent way. */ + if (TYPE_MODE (long_unsigned_type_node) == Pmode) + set_sizetype (long_unsigned_type_node); + else if (TYPE_MODE (long_long_unsigned_type_node) == Pmode) + set_sizetype (long_long_unsigned_type_node); + else + set_sizetype (long_unsigned_type_node); build_common_tree_nodes_2 (0); void_list_node = build_tree_list (NULL_TREE, void_type_node); -- 2.30.2