URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 304 |
Rev 338 |
-- { dg-do run }
|
-- { dg-do run }
|
|
|
procedure Abstract_With_Anonymous_Result is
|
procedure Abstract_With_Anonymous_Result is
|
|
|
package Pkg is
|
package Pkg is
|
type I is abstract tagged null record;
|
type I is abstract tagged null record;
|
type Acc_I_Class is access all I'Class;
|
type Acc_I_Class is access all I'Class;
|
function Func (V : I) return access I'Class is abstract;
|
function Func (V : I) return access I'Class is abstract;
|
procedure Proc (V : access I'Class);
|
procedure Proc (V : access I'Class);
|
type New_I is new I with null record;
|
type New_I is new I with null record;
|
function Func (V : New_I) return access I'Class;
|
function Func (V : New_I) return access I'Class;
|
end Pkg;
|
end Pkg;
|
|
|
package body Pkg is
|
package body Pkg is
|
X : aliased New_I;
|
X : aliased New_I;
|
|
|
procedure Proc (V : access I'Class) is begin null; end Proc;
|
procedure Proc (V : access I'Class) is begin null; end Proc;
|
|
|
function Func (V : New_I) return access I'Class is
|
function Func (V : New_I) return access I'Class is
|
begin
|
begin
|
X := V;
|
X := V;
|
return X'Access;
|
return X'Access;
|
end Func;
|
end Func;
|
end Pkg;
|
end Pkg;
|
|
|
use Pkg;
|
use Pkg;
|
|
|
New_I_Obj : aliased New_I;
|
New_I_Obj : aliased New_I;
|
|
|
procedure Proc2 (V : access I'Class) is
|
procedure Proc2 (V : access I'Class) is
|
begin
|
begin
|
Proc (Func (V.all)); -- Call to Func causes gigi abort 122
|
Proc (Func (V.all)); -- Call to Func causes gigi abort 122
|
end Proc2;
|
end Proc2;
|
|
|
begin
|
begin
|
Proc2 (New_I_Obj'Access);
|
Proc2 (New_I_Obj'Access);
|
end Abstract_With_Anonymous_Result;
|
end Abstract_With_Anonymous_Result;
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.