From: Robert Dewar Date: Fri, 5 Jul 2013 10:21:56 +0000 (+0000) Subject: freeze.adb (Freeze_Entity): Remove test of obsolete flag Propagate_Exceptions... X-Git-Tag: releases/gcc-4.9.0~5140 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d9adb08caad78c36048380338a1a481dc157bf5f;p=thirdparty%2Fgcc.git freeze.adb (Freeze_Entity): Remove test of obsolete flag Propagate_Exceptions... 2013-07-05 Robert Dewar * freeze.adb (Freeze_Entity): Remove test of obsolete flag Propagate_Exceptions, and associated useless code that did nothing. * gnat_rm.texi: Add documentation for obsolete pragma Propagate_Exceptions. * opt.ads (Propagate_Exceptions): Obsolete flag removed. * sem_prag.adb (Analyze_Pragma, case Propagate_Exceptions): Remove useless and obsolete setting of Propagate_Exceptions flag. From-SVN: r200698 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 01d84ba0d11f..2c1f91464c14 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,14 @@ +2013-07-05 Robert Dewar + + * freeze.adb (Freeze_Entity): Remove test of obsolete flag + Propagate_Exceptions, and associated useless code that did + nothing. + * gnat_rm.texi: Add documentation for obsolete pragma + Propagate_Exceptions. + * opt.ads (Propagate_Exceptions): Obsolete flag removed. + * sem_prag.adb (Analyze_Pragma, case Propagate_Exceptions): + Remove useless and obsolete setting of Propagate_Exceptions flag. + 2013-07-05 Robert Dewar * gnat_rm.texi, sem_prag.adb: Minor comment/text fixes. diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb index 88a8f6df6560..125c3bcb6eed 100644 --- a/gcc/ada/freeze.adb +++ b/gcc/ada/freeze.adb @@ -4940,21 +4940,6 @@ package body Freeze is and then not Is_Library_Level_Entity (E) then Set_Is_Public (E, False); - - -- If no address clause and not intrinsic, then for imported - -- subprogram in main unit, generate descriptor if we are in - -- Propagate_Exceptions mode. - - -- This is very odd code, it makes a null result, why ??? - - elsif Propagate_Exceptions - and then Is_Imported (E) - and then not Is_Intrinsic_Subprogram (E) - and then Convention (E) /= Convention_Stubbed - then - if Result = No_List then - Result := Empty_List; - end if; end if; end if; diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index 312e0a8ca3da..cb559a320c76 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -206,6 +206,7 @@ Implementation Defined Pragmas * Pragma Priority_Specific_Dispatching:: * Pragma Profile:: * Pragma Profile_Warnings:: +* Pragma Propagate_Exceptions:: * Pragma Psect_Object:: * Pragma Pure_05:: * Pragma Pure_12:: @@ -1010,6 +1011,7 @@ consideration, the use of these pragmas should be minimized. * Pragma Priority_Specific_Dispatching:: * Pragma Profile:: * Pragma Profile_Warnings:: +* Pragma Propagate_Exceptions:: * Pragma Psect_Object:: * Pragma Pure_05:: * Pragma Pure_12:: @@ -5288,7 +5290,24 @@ generating @code{Restrictions} pragmas, it generates violations of the profile generate warning messages instead of error messages. +@node Pragma Propagate_Exceptions +@unnumberedsec Pragma Propagate_Exceptions +@cindex Interfacing to C++ +@findex Propagate_Exceptions +@noindent +Syntax: + +@smallexample @c ada +pragma Propagate_Exceptions; +@end smallexample + @noindent +This pragma is now obsolete and, other than generating a warning if warnings +on obsolescent features are enabled, is ignored. +It is retained for compatibility +purposes. It used to be used in connection with optimization of +a now-obsolete mechanism for implementation of exceptions. + @node Pragma Psect_Object @unnumberedsec Pragma Psect_Object @findex Psect_Object diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads index 01cbad1fc9a0..54d39f803121 100644 --- a/gcc/ada/opt.ads +++ b/gcc/ada/opt.ads @@ -1147,12 +1147,6 @@ package Opt is -- Set to true to enable printing of package standard in source form. -- This flag is set by the -gnatS switch - Propagate_Exceptions : Boolean := False; - -- GNAT - -- Indicates if subprogram descriptor exception tables should be - -- built for imported subprograms. Set True if a Propagate_Exceptions - -- pragma applies to the extended main unit. - type Usage is (Unknown, Not_In_Use, In_Use); Project_File_In_Use : Usage := Unknown; -- GNAT diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 553ce2131dde..3f70c8f05526 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -10300,7 +10300,7 @@ package body Sem_Prag is if Warn_On_Obsolescent_Feature then Error_Msg_N - ("'G'N'A'T pragma cpp'_virtual is now obsolete and has no " + ("'G'N'A'T pragma Cpp'_Virtual is now obsolete and has no " & "effect?j?", N); end if; end CPP_Virtual; @@ -10315,7 +10315,7 @@ package body Sem_Prag is if Warn_On_Obsolescent_Feature then Error_Msg_N - ("'G'N'A'T pragma cpp'_vtable is now obsolete and has no " + ("'G'N'A'T pragma Cpp'_Vtable is now obsolete and has no " & "effect?j?", N); end if; end CPP_Vtable; @@ -14604,6 +14604,7 @@ package body Sem_Prag is when Pragma_Overriding_Renamings => GNAT_Pragma; Check_Arg_Count (0); + Check_Valid_Configuration_Pragma; Overriding_Renamings := True; ---------- @@ -15039,7 +15040,7 @@ package body Sem_Prag is -- pragma Predicate -- ([Entity =>] type_LOCAL_NAME, - -- [Check =>] EXPRESSION); + -- [Check =>] boolean_EXPRESSION); when Pragma_Predicate => Predicate : declare Type_Id : Node_Id; @@ -15469,10 +15470,10 @@ package body Sem_Prag is GNAT_Pragma; Check_Arg_Count (0); - -- This code does not agree with above (no effect) comment ??? - - if In_Extended_Main_Source_Unit (N) then - Propagate_Exceptions := True; + if Warn_On_Obsolescent_Feature then + Error_Msg_N + ("'G'N'A'T pragma Propagate'_Exceptions is now obsolete " & + "and has no effect?j?", N); end if; ------------------