http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37110
--- Comment #5 from nicolas.boulenguez at free dot fr 2011-09-03 03:23:36 UTC --- -- There were two distinct bugs. package P is type T1 is tagged null record; type T2 is tagged null record; function Func (Func_Formal : in T1'Class; I : in Integer) return access T2; procedure Proc (Proc_Formal : out T2); end P; -- This legal line causes a bug box. -- 4.4.6 (x86_64-pc-linux-gnu) Assert_Failure sinfo.adb:1149 -- 4.6.1 (x86_64-pc-linux-gnu) Assert_Failure sinfo.adb:1240 with P; use P; procedure Trigger1 is Actual : constant T1 := (null record); begin Proc (Proc_Formal => Func (Func_Formal => Actual, I => 0).all); end Trigger1; -- Obsessive Obfuscated Programming on Trigger1 caused another kind of -- bug box with 4.3 and 4.4. -- 4.4.6 (x86_64-pc-linux-gnu) Assert_Failure atree.adb:884 -- 4.6.1 (x86_64-pc-linux-gnu) detects the missing body. with P; use P; procedure Trigger2 is Actual : constant T1 := (null record); begin Actual.Func (0).Proc; end Trigger2;