Commit de9528f0 by Eric Botcazou Committed by Eric Botcazou

utils.c (update_pointer_to): Finalize named pointer types.

	* gcc-interface/utils.c (update_pointer_to): Finalize named pointer
	types.

From-SVN: r171887
parent d9d7a26c
2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/utils.c (update_pointer_to): Finalize named pointer
types.
2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/lang.opt (feliminate-unused-debug-types): Delete.
* gcc-interface/misc.c (gnat_handle_option): Remove special handling
code for -feliminate-unused-debug-types
code for -feliminate-unused-debug-types.
(gnat_post_options): Likewise.
2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
......
......@@ -3559,7 +3559,12 @@ update_pointer_to (tree old_type, tree new_type)
for (; ptr; ptr = TYPE_NEXT_PTR_TO (ptr))
for (t = TYPE_MAIN_VARIANT (ptr); t; t = TYPE_NEXT_VARIANT (t))
TREE_TYPE (t) = new_type;
TYPE_POINTER_TO (old_type) = NULL_TREE;
/* If we have adjusted named types, finalize them. This is necessary
since we had forced a DWARF typedef for them in gnat_pushdecl. */
for (ptr = TYPE_POINTER_TO (old_type); ptr; ptr = TYPE_NEXT_PTR_TO (ptr))
if (TYPE_NAME (ptr) && TREE_CODE (TYPE_NAME (ptr)) == TYPE_DECL)
rest_of_type_decl_compilation (TYPE_NAME (ptr));
/* Chain REF and its variants at the end. */
new_ref = TYPE_REFERENCE_TO (new_type);
......@@ -3576,6 +3581,8 @@ update_pointer_to (tree old_type, tree new_type)
for (; ref; ref = TYPE_NEXT_REF_TO (ref))
for (t = TYPE_MAIN_VARIANT (ref); t; t = TYPE_NEXT_VARIANT (t))
TREE_TYPE (t) = new_type;
TYPE_POINTER_TO (old_type) = NULL_TREE;
TYPE_REFERENCE_TO (old_type) = NULL_TREE;
}
......
2011-04-02 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/debug2.ad[sb]: New test.
* gnat.dg/debug2_pkg.ads: New helper.
* gnat.dg/debug3.ad[sb]: New test.
2011-04-01 Uros Bizjak <ubizjak@gmail.com>
* go.test/go-test.exp (go-set-goarch): Recognize alpha*-*-*.
......
-- { dg-do compile }
-- { dg-options "-g" }
with Debug2_Pkg; use Debug2_Pkg;
package body Debug2 is
procedure Proc is
function F return String_List_Ptr is
begin
return new String_List'(Singleton);
end;
A : String_List_Ptr := F;
begin
null;
end;
function Get return Integer is
begin
return 0;
end;
Failed : exception;
A: String_Ptr;
begin
declare
Server_Args : Integer;
begin
Server_Args := Get;
exception
when X : Failed => A := To_Heap;
end;
end Debug2;
package Debug2 is
procedure Proc;
end Debug2;
package Debug2_Pkg is
type String_Ptr is access all String;
function To_Heap return String_Ptr;
type String_List(Chars_Length: Positive) is private;
type String_List_Ptr is access constant String_List;
function Singleton return String_List;
private
type String_List(Chars_Length: Positive) is record
Chars: String(1..Chars_Length);
end record;
end Debug2_Pkg;
-- { dg-do compile }
-- { dg-options "-g" }
with Ada.Unchecked_Conversion;
with System;
package body Debug3 is
type Rec is record
I : Integer;
end record;
for Rec'Alignment use 1;
type Ptr is access Rec;
function To_Ptr is new Ada.Unchecked_Conversion(System.Address, Ptr);
procedure Proc is
function Get (S1 : String) return Ptr is
begin
return To_Ptr (S1'Address);
end;
M : Ptr;
begin
M := Get ("");
end;
end Debug3;
package Debug3 is
procedure Proc;
end Debug3;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment