mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-08 09:41:09 +08:00
decl.c (SS_MARK_NAME): New define.
* gcc-interface/decl.c (SS_MARK_NAME): New define. (gnat_to_gnu_entity) <E_Function>: Prepend leaf attribute on entities whose name is SS_MARK_NAME. From-SVN: r185780
This commit is contained in:
parent
a5695aa2c9
commit
d3cef56c98
@ -1,3 +1,9 @@
|
||||
2012-03-25 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gcc-interface/decl.c (SS_MARK_NAME): New define.
|
||||
(gnat_to_gnu_entity) <E_Function>: Prepend leaf attribute on entities
|
||||
whose name is SS_MARK_NAME.
|
||||
|
||||
2012-03-25 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gcc-interface/utils.c (add_parallel_type): Take a TYPE instead of a
|
||||
|
@ -81,6 +81,9 @@
|
||||
#define FOREIGN_FORCE_REALIGN_STACK 0
|
||||
#endif
|
||||
|
||||
/* The (internal) name of the System.Secondary_Stack.SS_Mark function. */
|
||||
#define SS_MARK_NAME "system__secondary_stack__ss_mark"
|
||||
|
||||
struct incomplete
|
||||
{
|
||||
struct incomplete *next;
|
||||
@ -4405,6 +4408,21 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
|
||||
get_identifier ("force_align_arg_pointer"), NULL_TREE,
|
||||
gnat_entity);
|
||||
|
||||
/* ??? Declare System.Secondary_Stack.SS_Mark as leaf, in order to
|
||||
avoid creating abnormal edges in SJLJ mode, which can break the
|
||||
dominance relationship if there is a dynamic stack allocation.
|
||||
We cannot do this in System.Secondary_Stack directly since it's
|
||||
a compiler unit and this would introduce bootstrap path issues. */
|
||||
if (IDENTIFIER_LENGTH (gnu_entity_name) == strlen (SS_MARK_NAME)
|
||||
&& IDENTIFIER_POINTER (gnu_entity_name)[0] == SS_MARK_NAME[0]
|
||||
&& IDENTIFIER_POINTER (gnu_entity_name)[1] == SS_MARK_NAME[1]
|
||||
&& IDENTIFIER_POINTER (gnu_entity_name)[2] == SS_MARK_NAME[2]
|
||||
&& gnu_entity_name == get_identifier (SS_MARK_NAME))
|
||||
prepend_one_attribute_to
|
||||
(&attr_list, ATTR_MACHINE_ATTRIBUTE,
|
||||
get_identifier ("leaf"), NULL_TREE,
|
||||
gnat_entity);
|
||||
|
||||
/* The lists have been built in reverse. */
|
||||
gnu_param_list = nreverse (gnu_param_list);
|
||||
if (has_stub)
|
||||
|
@ -1,4 +1,8 @@
|
||||
2012-03-21 Jason Merrill <jason@redhat.com>
|
||||
2012-03-25 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/concat2.ad[sb]: New test.
|
||||
|
||||
2012-03-24 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* g++.dg/cpp0x/auto3.C: Compile with -pedantic-errors.
|
||||
* g++.dg/cpp0x/trailing2.C: Likewise.
|
||||
|
18
gcc/testsuite/gnat.dg/concat2.adb
Normal file
18
gcc/testsuite/gnat.dg/concat2.adb
Normal file
@ -0,0 +1,18 @@
|
||||
with Text_IO; use Text_IO;
|
||||
|
||||
package body Concat2 is
|
||||
|
||||
function Get_Param return String is
|
||||
begin
|
||||
return "";
|
||||
end;
|
||||
|
||||
procedure Browse is
|
||||
Mode : constant String := Get_Param;
|
||||
Mode_Param : constant String := "MODE=" & Mode;
|
||||
begin
|
||||
Put_Line (Mode_Param);
|
||||
end;
|
||||
|
||||
end Concat2;
|
||||
|
8
gcc/testsuite/gnat.dg/concat2.ads
Normal file
8
gcc/testsuite/gnat.dg/concat2.ads
Normal file
@ -0,0 +1,8 @@
|
||||
-- { dg-do compile }
|
||||
-- { dg-options "-O" }
|
||||
|
||||
package Concat2 is
|
||||
|
||||
procedure Browse;
|
||||
|
||||
end Concat2;
|
Loading…
x
Reference in New Issue
Block a user