r266111 - in /trunk/gcc/ada: ChangeLog exp_ch4....
pmderodat@gcc.gnu.org
pmderodat@gcc.gnu.org
Wed Nov 14 11:40:00 GMT 2018
Author: pmderodat
Date: Wed Nov 14 11:40:25 2018
New Revision: 266111
URL: https://gcc.gnu.org/viewcvs?rev=266111&root=gcc&view=rev
Log:
[Ada] Lingering loop for ignored Ghost assignment
The following patch ensures that loops generated for aggregates as part
of ignored Ghost assignments are correctly eliminated from the generated
code.
------------
-- Source --
------------
-- pack.ads
package Pack is
type addr4k is new Integer range 0 .. 100 with Size => 32;
type Four_KB_Page_Property is record
Is_Scrubbed : Boolean := False;
end record with Ghost;
type Four_KB_Page_Array is
array (addr4k range <>) of Four_KB_Page_Property with Ghost;
type Base_Memory is tagged record
Four_KB_Pages : Four_KB_Page_Array (addr4k) :=
(others => (Is_Scrubbed => False));
end record with Ghost;
subtype Memory is Base_Memory with Ghost;
Global_Memory : Memory with Ghost;
procedure Assign;
end Pack;
-- pack.adb
package body Pack is
procedure Assign is
begin
Global_Memory.Four_KB_Pages := (others => (Is_Scrubbed => True));
end Assign;
end Pack;
----------------------------
-- Compilation and output --
----------------------------
$ gcc -c -gnatDG pack.adb
$ grep -c "loop" pack.adb.dg
0
2018-11-14 Hristian Kirtchev <kirtchev@adacore.com>
gcc/ada/
* exp_ch4.adb (Expand_Concatenate): Use the proper routine to
set the need for debug info.
* exp_dbug.adb (Build_Subprogram_Instance_Renamings): Use the
proper routine to set the need for debug info.
* exp_prag.adb (Expand_Pragma_Initial_Condition): Use the proper
routine to set the need for debug info.
* exp_util.adb (Build_DIC_Procedure_Declaration): Use the proper
routine to set the need for debug info.
(Build_Invariant_Procedure_Declaration): Use the proper routine
to set the need for debug info.
* ghost.adb (Record_Ignored_Ghost_Node): Add statements as a
whole class to the list of top level ignored Ghost nodes.
* sem_util.adb (Set_Debug_Info_Needed): Do not generate debug
info for an ignored Ghost entity.
Modified:
trunk/gcc/ada/ChangeLog
trunk/gcc/ada/exp_ch4.adb
trunk/gcc/ada/exp_dbug.adb
trunk/gcc/ada/exp_prag.adb
trunk/gcc/ada/exp_util.adb
trunk/gcc/ada/ghost.adb
trunk/gcc/ada/sem_util.adb
More information about the Gcc-cvs
mailing list