From: Samuel Tardieu Date: Tue, 6 Oct 2009 07:19:54 +0000 (+0000) Subject: re PR ada/38333 (Illegal program not detected, ARM 6.1(20): pragma Import illegal... X-Git-Tag: releases/gcc-4.5.0~3090 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6fa30ef2813f3d16e1c7fb97f91cebfb14b8efb0;p=thirdparty%2Fgcc.git re PR ada/38333 (Illegal program not detected, ARM 6.1(20): pragma Import illegal for abstract subprograms) gcc/ada/ PR ada/38333 * sem_prag.adb (Process_Import_Or_Interface): Forbid an abstract subprogram to be completed with a "pragma Import". gcc/testsuite/ PR ada/38333 * gnat.dg/specs/import_abstract.ads: New. From-SVN: r152486 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 6520a7f46810..7af8f31c1e99 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2009-10-06 Samuel Tardieu + + PR ada/38333 + * sem_prag.adb (Process_Import_Or_Interface): Forbid an abstract + subprogram to be completed with a "pragma Import". + 2009-10-02 Eric Botcazou * gcc-interface/decl.c (gnat_to_gnu_entity) : diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 902cb30e8252..4d56d36ee398 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -3459,6 +3459,15 @@ package body Sem_Prag is else Set_Imported (Def_Id); + if Is_Subprogram (Def_Id) + and then Is_Abstract_Subprogram (Def_Id) + then + Error_Msg_Sloc := Sloc (Def_Id); + Error_Msg_NE + ("cannot import abstract subprogram& declared#", + Arg2, Def_Id); + end if; + -- Special processing for Convention_Intrinsic if C = Convention_Intrinsic then diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 13fbf3d7b846..c65aab8eb7f8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-10-06 Samuel Tardieu + + PR ada/38333 + * gnat.dg/specs/import_abstract.ads: New. + 2009-10-05 Jerry DeLisle PR libgfortran/35862 diff --git a/gcc/testsuite/gnat.dg/specs/import_abstract.ads b/gcc/testsuite/gnat.dg/specs/import_abstract.ads new file mode 100644 index 000000000000..9d05f0c1ceb5 --- /dev/null +++ b/gcc/testsuite/gnat.dg/specs/import_abstract.ads @@ -0,0 +1,6 @@ +-- { dg-do compile } +package Import_Abstract is + type T1 is abstract tagged null record; + procedure p1(X : T1) is abstract; + pragma Import (Ada, p1); -- { dg-error "cannot import abstract subprogram" } +end Import_Abstract;