diff options
Diffstat (limited to 'gdb/i386-tdep.c')
-rw-r--r-- | gdb/i386-tdep.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index 83ae9d1..dc1202e 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -1579,10 +1579,12 @@ i386_return_value (struct gdbarch *gdbarch, struct type *type, { enum type_code code = TYPE_CODE (type); - if ((code == TYPE_CODE_STRUCT - || code == TYPE_CODE_UNION - || code == TYPE_CODE_ARRAY) - && !i386_reg_struct_return_p (gdbarch, type)) + if (((code == TYPE_CODE_STRUCT + || code == TYPE_CODE_UNION + || code == TYPE_CODE_ARRAY) + && !i386_reg_struct_return_p (gdbarch, type)) + /* 128-bit decimal float uses the struct return convention. */ + || (code == TYPE_CODE_DECFLOAT && TYPE_LENGTH (type) == 16)) { /* The System V ABI says that: |