gdb, fortran: Fix quad floating-point type for ifort compiler.
authorFelix Willgerodt <felix.willgerodt@intel.com>
Mon, 13 Feb 2023 10:02:23 +0000 (11:02 +0100)
committerFelix Willgerodt <felix.willgerodt@intel.com>
Wed, 15 Feb 2023 08:51:28 +0000 (09:51 +0100)
I fixed this a while ago for ifx, one of the two Intel compilers, in
8d624a9d8050ca96e154215c7858ac5c2d8b0b19.

Apparently I missed that the older ifort Intel compiler actually emits
slightly different debug info again:

0x0000007a:   DW_TAG_base_type
                DW_AT_byte_size (0x20)
                DW_AT_encoding (DW_ATE_complex_float)
                DW_AT_name ("COMPLEX(16)")

0x00000081:   DW_TAG_base_type
                DW_AT_byte_size (0x10)
                DW_AT_encoding (DW_ATE_float)
                DW_AT_name ("REAL(16)")

This fixes two failures in gdb.fortran/complex.exp with ifort.

Approved-By: Tom Tromey <tom@tromey.com>
gdb/i386-tdep.c

index da4950ac259f2eec4d36940bbf5393f41e8dc83c..acf22dba98ded0a027d794e3f967479c5e88598d 100644 (file)
@@ -8238,12 +8238,14 @@ i386_floatformat_for_type (struct gdbarch *gdbarch,
        || strcmp (name, "_Float128") == 0
        || strcmp (name, "complex _Float128") == 0
        || strcmp (name, "complex(kind=16)") == 0
+       || strcmp (name, "COMPLEX(16)") == 0
        || strcmp (name, "complex*32") == 0
        || strcmp (name, "COMPLEX*32") == 0
        || strcmp (name, "quad complex") == 0
        || strcmp (name, "real(kind=16)") == 0
        || strcmp (name, "real*16") == 0
-       || strcmp (name, "REAL*16") == 0)
+       || strcmp (name, "REAL*16") == 0
+       || strcmp (name, "REAL(16)") == 0)
       return floatformats_ieee_quad;
 
   return default_floatformat_for_type (gdbarch, name, len);