From 4ec8aa9e94858144a4ca831ae810d741a172d4b7 Mon Sep 17 00:00:00 2001 From: Nils-Christian Kempke Date: Mon, 11 Apr 2022 14:06:55 +0200 Subject: [PATCH] gdb/fortran: change default logical type to builtin_logical According to the Fortran standard, logical is of the size of a 'single numeric storage unit' (just like real and integer). For gfortran, flang and ifx/ifort this storage unit (or the default logical type) is of size kind 4, actually occupying 4 bytes of storage, and so the default type for logical expressions in Fortran should probably also be Logical*4 and not Logical*2. I adapted GDB's behavior to be in line with gfortran/ifort/ifx/flang. --- gdb/f-lang.c | 2 +- gdb/testsuite/gdb.fortran/types.exp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/gdb/f-lang.c b/gdb/f-lang.c index 80846244dfb..fb28cb7a561 100644 --- a/gdb/f-lang.c +++ b/gdb/f-lang.c @@ -1570,7 +1570,7 @@ f_language::language_arch_info (struct gdbarch *gdbarch, add (builtin->builtin_void); lai->set_string_char_type (builtin->builtin_character); - lai->set_bool_type (builtin->builtin_logical_s2, "logical"); + lai->set_bool_type (builtin->builtin_logical, "logical"); } /* See language.h. */ diff --git a/gdb/testsuite/gdb.fortran/types.exp b/gdb/testsuite/gdb.fortran/types.exp index 4205d308be7..8122cbcca38 100644 --- a/gdb/testsuite/gdb.fortran/types.exp +++ b/gdb/testsuite/gdb.fortran/types.exp @@ -48,10 +48,10 @@ proc test_logical_literal_types_accepted {} { # Test the only possible values for a logical, TRUE and FALSE (and # also true and false). - gdb_test "pt .TRUE." "type = logical\\*2" - gdb_test "pt .FALSE." "type = logical\\*2" - gdb_test "pt .true." "type = logical\\*2" - gdb_test "pt .false." "type = logical\\*2" + gdb_test "pt .TRUE." "type = logical\\*4" + gdb_test "pt .FALSE." "type = logical\\*4" + gdb_test "pt .true." "type = logical\\*4" + gdb_test "pt .false." "type = logical\\*4" } proc test_float_literal_types_accepted {} { -- 2.30.2