i-cexten.ads (Float_128): New type.
ada/ * libgnat/i-cexten.ads (Float_128): New type. c-family/ * c-ada-spec.c (dump_ada_node) <NULLPTR_TYPE>: New case. <REAL_TYPE>: Deal specifically with _Float128/__float128. From-SVN: r258068
This commit is contained in:
parent
9e25c7ed96
commit
c6db43fa35
4 changed files with 34 additions and 4 deletions
|
@ -1,3 +1,7 @@
|
|||
2018-02-28 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* libgnat/i-cexten.ads (Float_128): New type.
|
||||
|
||||
2018-02-02 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gcc-interface/decl.c (array_type_has_nonaliased_component): Return
|
||||
|
|
|
@ -72,6 +72,15 @@ package Interfaces.C.Extensions is
|
|||
pragma Convention (C_Pass_By_Copy, Signed_128);
|
||||
for Signed_128'Alignment use unsigned_long_long'Alignment * 2;
|
||||
|
||||
-- 128-bit floating-point type available on x86:
|
||||
-- typedef long_double float_128 __attribute__ ((mode (TF)));
|
||||
|
||||
type Float_128 is record
|
||||
low, high : unsigned_long_long;
|
||||
end record;
|
||||
pragma Convention (C_Pass_By_Copy, Float_128);
|
||||
for Float_128'Alignment use unsigned_long_long'Alignment * 2;
|
||||
|
||||
-- Types for bitfields
|
||||
|
||||
type Unsigned_1 is mod 2 ** 1;
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2018-02-28 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* c-ada-spec.c (dump_ada_node) <NULLPTR_TYPE>: New case.
|
||||
<REAL_TYPE>: Deal specifically with _Float128/__float128.
|
||||
|
||||
2018-02-28 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* c-ada-spec.c (dump_ada_double_name) <ENUMERAL_TYPE>: New case.
|
||||
|
|
|
@ -2126,6 +2126,7 @@ dump_ada_node (pretty_printer *buffer, tree node, tree type, int spc,
|
|||
pp_string (buffer, "--- unexpected node: TREE_VEC");
|
||||
return 0;
|
||||
|
||||
case NULLPTR_TYPE:
|
||||
case VOID_TYPE:
|
||||
if (package_prefix)
|
||||
{
|
||||
|
@ -2151,8 +2152,20 @@ dump_ada_node (pretty_printer *buffer, tree node, tree type, int spc,
|
|||
dump_ada_enum_type (buffer, node, type, spc, true);
|
||||
break;
|
||||
|
||||
case INTEGER_TYPE:
|
||||
case REAL_TYPE:
|
||||
if (TYPE_NAME (node)
|
||||
&& TREE_CODE (TYPE_NAME (node)) == TYPE_DECL
|
||||
&& IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (node))) [0] == '_'
|
||||
&& (id_equal (DECL_NAME (TYPE_NAME (node)), "_Float128")
|
||||
|| id_equal (DECL_NAME (TYPE_NAME (node)), "__float128")))
|
||||
{
|
||||
append_withs ("Interfaces.C.Extensions", false);
|
||||
pp_string (buffer, "Extensions.Float_128");
|
||||
break;
|
||||
}
|
||||
/* fallthrough */
|
||||
|
||||
case INTEGER_TYPE:
|
||||
case FIXED_POINT_TYPE:
|
||||
case BOOLEAN_TYPE:
|
||||
if (TYPE_NAME (node))
|
||||
|
@ -2233,9 +2246,8 @@ dump_ada_node (pretty_printer *buffer, tree node, tree type, int spc,
|
|||
{
|
||||
if (TREE_CODE (node) == POINTER_TYPE
|
||||
&& TREE_CODE (TREE_TYPE (node)) == INTEGER_TYPE
|
||||
&& !strcmp
|
||||
(IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME
|
||||
(TREE_TYPE (node)))), "char"))
|
||||
&& id_equal (DECL_NAME (TYPE_NAME (TREE_TYPE (node))),
|
||||
"char"))
|
||||
{
|
||||
if (!name_only)
|
||||
pp_string (buffer, "new ");
|
||||
|
|
Loading…
Add table
Reference in a new issue