This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Tested on i686-linux, committed on trunk This change fixes a bug in the handling of pragma No_Exception_Handlers with a regular run-time, which would generate incorrect calls to __gnat_last_chance_handler. The following program should run generate: raised PROGRAM_ERROR : no_exc.adb:6 explicit raise pragma Restrictions (No_Exception_Handlers); procedure no_exc is begin raise Program_Error; end; Also, restriction No_Elaboration_Code should be enforced on a unit by unit basis. The use of inlining wrongly imported this restriction from a withed package containing this restriction and a subprogram to be inlined. The following example should compile cleanly when inlining (-gnatn) is enabled: package P is function Something return Integer; end P; with Q; package body P is Result : Integer; function Something return Integer is begin return Result; end Something; begin Result := Q.Init; end P; package Q is function Init return Integer; pragma Inline (Init); end Q; pragma Restrictions (No_Elaboration_Code); package body Q is function Init return Integer is begin return 42; end Init; end Q; 2007-06-06 Arnaud Charlet <charlet@adacore.com> * restrict.ads, restrict.adb (No_Exception_Handlers_Set): Only return true if configurable run-time or No_Run_Time is set. (Set_Restriction): Avoid setting restriction No_Elaboration_Code when processing an unit which is not the one being compiled.
Attachment:
difs
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |