diff options
author | Ian Lance Taylor <iant@golang.org> | 2021-10-07 15:28:36 -0700 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2021-10-07 15:28:36 -0700 |
commit | 0b6b70a0733672600644c8df96942cda5bf86d3d (patch) | |
tree | 9a1fbd7f782c54df55ab225ed1be057e3f3b0b8a /gcc/ada/gcc-interface | |
parent | a5b5cabc91c38710adbe5c8a2b53882abe994441 (diff) | |
parent | fba228e259dd5112851527f2dbb62c5601100985 (diff) | |
download | gcc-0b6b70a0733672600644c8df96942cda5bf86d3d.zip gcc-0b6b70a0733672600644c8df96942cda5bf86d3d.tar.gz gcc-0b6b70a0733672600644c8df96942cda5bf86d3d.tar.bz2 |
Merge from trunk revision fba228e259dd5112851527f2dbb62c5601100985.
Diffstat (limited to 'gcc/ada/gcc-interface')
-rw-r--r-- | gcc/ada/gcc-interface/Make-lang.in | 2 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/cuintp.c | 1 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/decl.c | 8 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/gigi.h | 2 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/targtyps.c | 1 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/trans.c | 14 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/utils.c | 12 |
7 files changed, 30 insertions, 10 deletions
diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in index c341e2d..61a627f 100644 --- a/gcc/ada/gcc-interface/Make-lang.in +++ b/gcc/ada/gcc-interface/Make-lang.in @@ -517,7 +517,6 @@ GNAT_ADA_OBJS+= \ ada/libgnat/s-excmac.o \ ada/libgnat/s-exctab.o \ ada/libgnat/s-htable.o \ - ada/libgnat/s-imenne.o \ ada/libgnat/s-imgint.o \ ada/libgnat/s-mastop.o \ ada/libgnat/s-memory.o \ @@ -684,7 +683,6 @@ GNATBIND_OBJS += \ ada/libgnat/s-excmac.o \ ada/libgnat/s-exctab.o \ ada/libgnat/s-htable.o \ - ada/libgnat/s-imenne.o \ ada/libgnat/s-imgint.o \ ada/libgnat/s-mastop.o \ ada/libgnat/s-memory.o \ diff --git a/gcc/ada/gcc-interface/cuintp.c b/gcc/ada/gcc-interface/cuintp.c index 6ac82d7..abf8d46 100644 --- a/gcc/ada/gcc-interface/cuintp.c +++ b/gcc/ada/gcc-interface/cuintp.c @@ -39,6 +39,7 @@ #include "ada.h" #include "types.h" #include "uintp.h" +#include "sinfo.h" #include "ada-tree.h" #include "gigi.h" diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index 884d1d8..13e9004 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -557,7 +557,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, bool definition) /* If the entity is an inherited component (in the case of extended tagged record types), just return the original entity, which must be a FIELD_DECL. Likewise for discriminants. If the entity is a - non-girder discriminant (in the case of derived untagged record + non-stored discriminant (in the case of derived untagged record types), return the stored discriminant it renames. */ if (Present (Original_Record_Component (gnat_entity)) && Original_Record_Component (gnat_entity) != gnat_entity) @@ -6503,7 +6503,8 @@ range_cannot_be_superflat (Node_Id gnat_range) Node_Id gnat_scalar_range; tree gnu_lb, gnu_hb, gnu_lb_minus_one; - /* If the low bound is not constant, try to find an upper bound. */ + /* If the low bound is not constant, take the worst case by finding an upper + bound for its type, repeatedly if need be. */ while (Nkind (gnat_lb) != N_Integer_Literal && (Ekind (Etype (gnat_lb)) == E_Signed_Integer_Subtype || Ekind (Etype (gnat_lb)) == E_Modular_Integer_Subtype) @@ -6512,7 +6513,8 @@ range_cannot_be_superflat (Node_Id gnat_range) || Nkind (gnat_scalar_range) == N_Range)) gnat_lb = High_Bound (gnat_scalar_range); - /* If the high bound is not constant, try to find a lower bound. */ + /* If the high bound is not constant, take the worst case by finding a lower + bound for its type, repeatedly if need be. */ while (Nkind (gnat_hb) != N_Integer_Literal && (Ekind (Etype (gnat_hb)) == E_Signed_Integer_Subtype || Ekind (Etype (gnat_hb)) == E_Modular_Integer_Subtype) diff --git a/gcc/ada/gcc-interface/gigi.h b/gcc/ada/gcc-interface/gigi.h index 49b85a4..692ef44 100644 --- a/gcc/ada/gcc-interface/gigi.h +++ b/gcc/ada/gcc-interface/gigi.h @@ -234,7 +234,7 @@ extern "C" { extern void gigi (Node_Id gnat_root, int max_gnat_node, int number_name, - Field_Offset *node_offsets_ptr, + Node_Header *node_offsets_ptr, any_slot *slots_ptr, Node_Id *next_node_ptr, Node_Id *prev_node_ptr, diff --git a/gcc/ada/gcc-interface/targtyps.c b/gcc/ada/gcc-interface/targtyps.c index 704172d..fb103a1 100644 --- a/gcc/ada/gcc-interface/targtyps.c +++ b/gcc/ada/gcc-interface/targtyps.c @@ -34,6 +34,7 @@ #include "ada.h" #include "types.h" +#include "sinfo.h" #include "ada-tree.h" #include "gigi.h" diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index d3c421d..3fec060 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -75,7 +75,7 @@ #define ALLOCA_THRESHOLD 1000 /* Pointers to front-end tables accessed through macros. */ -Field_Offset *Node_Offsets_Ptr; +Node_Header *Node_Offsets_Ptr; any_slot *Slots_Ptr; Node_Id *Next_Node_Ptr; Node_Id *Prev_Node_Ptr; @@ -279,7 +279,7 @@ void gigi (Node_Id gnat_root, int max_gnat_node, int number_name ATTRIBUTE_UNUSED, - Field_Offset *node_offsets_ptr, + Node_Header *node_offsets_ptr, any_slot *slots_ptr, Node_Id *next_node_ptr, Node_Id *prev_node_ptr, @@ -3893,7 +3893,7 @@ Subprogram_Body_to_gnu (Node_Id gnat_node) /* If the body comes from an expression function, arrange it to be inlined in almost all cases. */ - if (Was_Expression_Function (gnat_node)) + if (Was_Expression_Function (gnat_node) && !Debug_Flag_Dot_8) DECL_DISREGARD_INLINE_LIMITS (gnu_subprog_decl) = 1; /* Try to create a bona-fide thunk and hand it over to the middle-end. */ @@ -8261,6 +8261,7 @@ gnat_to_gnu (Node_Id gnat_node) || kind == N_Selected_Component) && TREE_CODE (get_base_type (gnu_result_type)) == BOOLEAN_TYPE && Nkind (Parent (gnat_node)) != N_Attribute_Reference + && Nkind (Parent (gnat_node)) != N_Pragma_Argument_Association && Nkind (Parent (gnat_node)) != N_Variant_Part && !lvalue_required_p (gnat_node, gnu_result_type, false, false)) { @@ -10507,10 +10508,15 @@ set_end_locus_from_node (tree gnu_node, Node_Id gnat_node) case N_Package_Body: case N_Subprogram_Body: case N_Block_Statement: - gnat_end_label = End_Label (Handled_Statement_Sequence (gnat_node)); + if (Present (Handled_Statement_Sequence (gnat_node))) + gnat_end_label = End_Label (Handled_Statement_Sequence (gnat_node)); + else + gnat_end_label = Empty; + break; case N_Package_Declaration: + gcc_checking_assert (Present (Specification (gnat_node))); gnat_end_label = End_Label (Specification (gnat_node)); break; diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c index be3f107..ab5ca5b 100644 --- a/gcc/ada/gcc-interface/utils.c +++ b/gcc/ada/gcc-interface/utils.c @@ -94,6 +94,7 @@ static tree handle_sentinel_attribute (tree *, tree, tree, int, bool *); static tree handle_noreturn_attribute (tree *, tree, tree, int, bool *); static tree handle_stack_protect_attribute (tree *, tree, tree, int, bool *); static tree handle_no_stack_protector_attribute (tree *, tree, tree, int, bool *); +static tree handle_strub_attribute (tree *, tree, tree, int, bool *); static tree handle_noinline_attribute (tree *, tree, tree, int, bool *); static tree handle_noclone_attribute (tree *, tree, tree, int, bool *); static tree handle_noicf_attribute (tree *, tree, tree, int, bool *); @@ -157,6 +158,8 @@ const struct attribute_spec gnat_internal_attribute_table[] = { "no_stack_protector",0, 0, true, false, false, false, handle_no_stack_protector_attribute, attr_stack_protect_exclusions }, + { "strub", 0, 1, false, true, false, true, + handle_strub_attribute, NULL }, { "noinline", 0, 0, true, false, false, false, handle_noinline_attribute, NULL }, { "noclone", 0, 0, true, false, false, false, @@ -6602,6 +6605,15 @@ handle_no_stack_protector_attribute (tree *node, tree name, tree, int, return NULL_TREE; } +/* Handle a "strub" attribute; arguments as in + struct attribute_spec.handler. */ + +static tree +handle_strub_attribute (tree *, tree, tree, int, bool *no_add_attrs) +{ + *no_add_attrs = true; + return NULL_TREE; +} /* Handle a "noinline" attribute; arguments as in struct attribute_spec.handler. */ |