{"push_id":3805833537,"size":326,"distinct_size":2,"ref":"refs/heads/aoliva/testme","head":"98bae41674d4f4b69a75c124e1825b2068774dfc","before":"f928d1393c7fc9919bc1d9dc5c789e193d6293e4","commits":[{"sha":"371c539c1002c7c7cfec004a34c7b05593e0256f","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Exp_Attr: remove dead code\n\n2019-07-03  Javier Miranda  <miranda@adacore.com>\n\ngcc/ada/\n\n\t* exp_attr.adb (Expand_Min_Max_Attribute): Code cleanup:\n\tremoving code that it is now never executed in the CCG compiler\n\t(dead code).\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272959 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/371c539c1002c7c7cfec004a34c7b05593e0256f"},{"sha":"5a87a4d96077644d95e7b8b24ebbe511735f7aac","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Document that boolean types with convention C now map to C99 bool\n\n2019-07-03  Eric Botcazou  <ebotcazou@adacore.com>\n\ngcc/ada/\n\n\t* doc/gnat_rm/interfacing_to_other_languages.rst (Interfacing to C):\n\tDocument that boolean types with convention C now map to C99 bool.\n\t* gnat_rm.texi: Regenerate.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272960 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/5a87a4d96077644d95e7b8b24ebbe511735f7aac"},{"sha":"78611c86573a68137b696af39ff24ed94f332206","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Spurious error on predicate of subtype in generic\n\nThis patch fixes a spurious error on a dynamic predicate of a record\nsubtype when the expression for the predicate includes a selected\ncomponent that denotes a component of the subtype.\n\n2019-07-03  Ed Schonberg  <schonberg@adacore.com>\n\ngcc/ada/\n\n\t* sem_ch8.adb (Find_Selected_Component): If the prefix is the\n\tcurrent instance of a type or subtype, complete the resolution\n\tof the name by finding the component of the type denoted by the\n\tselector name.\n\ngcc/testsuite/\n\n\t* gnat.dg/predicate4.adb, gnat.dg/predicate4_pkg.ads: New\n\ttestcase.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272961 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/78611c86573a68137b696af39ff24ed94f332206"},{"sha":"c336ed705d80c18c77e7b2e6330f1e671b01fbb4","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Clarify wording on documentation for No_Multiple_Elaboration\n\n2019-07-03  Arnaud Charlet  <charlet@adacore.com>\n\ngcc/ada/\n\n\t* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:\n\tClarify wording on No_Multiple_Elaboration.\n\t* gnat_rm.texi: Regenerate.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272962 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/c336ed705d80c18c77e7b2e6330f1e671b01fbb4"},{"sha":"2f65e9f77883db31a453e0baa2f7433dedd20071","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Missing consistency check for constant modifier\n\nThis patch fixes an issue whereby instantiations of generic packages\nwere incorrectly allowed despite formal and actual subprograms not\nhaving matching declarations with anonymous constant access type\nparameters.\n\n------------\n-- Source --\n------------\n\n-- gen1.ads\n\npackage Gen1 is\n   generic\n      with procedure View (IA : not null access constant Integer);\n   procedure Dispatch (IA : access Integer);\nend;\n\n-- gen2.adb\n\npackage body Gen1 is\n   procedure Dispatch (IA : access Integer) is\n   begin\n      View (IA);\n   end;\nend;\n\n-- bad1.ads\n\nwith Gen1;\npackage Bad1 is\n   procedure Bad_View (IA : not null access Integer);\n   procedure Bad_Dispatch is new Gen1.Dispatch (Bad_View);\nend;\n\n-- bad1.adb\n\npackage body Bad1 is\n   procedure Bad_View (IA : not null access Integer) is\n   begin\n      IA.all := IA.all + 1;\n   end;\nend;\n\n-- gen2.ads\n\npackage Gen2 is\n   generic\n      with procedure View (IA : access constant Integer);\n   procedure Dispatch (IA : access Integer);\nend;\n\n-- gen2.adb\n\npackage body Gen2 is\n   procedure Dispatch (IA : access Integer) is\n   begin\n      View (IA);\n   end;\nend;\n\n-- bad2.ads\n\nwith Gen2;\npackage Bad2 is\n   procedure Bad_View (IA : access Integer);\n   procedure Bad_Dispatch is new Gen2.Dispatch (Bad_View);\nend;\n\n-- bad2.adb\n\npackage body Bad2 is\n   procedure Bad_View (IA : access Integer) is\n   begin\n      IA.all := IA.all + 1;\n   end;\nend;\n\n-----------------\n-- Compilation --\n-----------------\n\n$ gnatmake -q bad1.adb\n$ bad1.ads:4:04: instantiation error at gen1.ads:3\n$ bad1.ads:4:04: not mode conformant with declaration at line 3\n$ bad1.ads:4:04: constant modifier does not match\n$ gnatmake: \"bad1.adb\" compilation error\n$ gnatmake -q bad2.adb\n$ bad2.ads:4:04: instantiation error at gen2.ads:3\n$ bad2.ads:4:04: not mode conformant with declaration at line 3\n$ bad2.ads:4:04: constant modifier does not match\n$ gnatmake: \"bad2.adb\" compilation error\n\n2019-07-03  Justin Squirek  <squirek@adacore.com>\n\ngcc/ada/\n\n\t* sem_ch6.adb (Check_Conformance): Add expression checking for\n\tconstant modifiers in anonymous access types (in addition to\n\t\"non-null\" types) so that they are considered \"matching\" for\n\tsubsequent conformance tests.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272963 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/2f65e9f77883db31a453e0baa2f7433dedd20071"},{"sha":"f4a31b16cb7ab779e08e77c9e9e436f3e369fc3c","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Do not consider inlined subprograms when generating C code\n\n2019-07-03  Arnaud Charlet  <charlet@adacore.com>\n\ngcc/ada/\n\n\t* sem_ch7.adb (Has_Referencer): Do not consider inlined\n\tsubprograms when generating C code, which allows us to generate\n\tstatic inline subprograms.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272964 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/f4a31b16cb7ab779e08e77c9e9e436f3e369fc3c"},{"sha":"f3e16ef4ee195631e1babb9839dcada42492c944","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Add a gnatbind option to generate C code\n\n2019-07-03  Arnaud Charlet  <charlet@adacore.com>\n\ngcc/ada/\n\n\t* bindgen.adb (Gen_Main): Disable generation of reference to\n\tAda_Main_Program_Name for CCG.\n\t* bindusg.adb (Display): Add -G to the command-line usage for\n\tgnatbind.\n\t* opt.ads (Generate_C_Code): Update comment.\n\t* switch-b.adb (Scan_Binder_Switches): Add handling for -G.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272965 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/f3e16ef4ee195631e1babb9839dcada42492c944"},{"sha":"6d6f134ec540638d13e38dff2e00bd7ae9e62bad","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Update the section on resolving elaboration circularities\n\n2019-07-03  Hristian Kirtchev  <kirtchev@adacore.com>\n\ngcc/ada/\n\n\t* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update\n\tthe section on resolving elaboration circularities to eliminate\n\tcertain combinations of switches which together do not produce\n\tthe desired effect and confuse users.\n\t* gnat_ugn.texi: Regenerate.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272966 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/6d6f134ec540638d13e38dff2e00bd7ae9e62bad"},{"sha":"c38b32ea453ed594796737a837274bf389e0bb27","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Make loop labels unique for front-end inlined calls\n\nThis patch transforms loop labels in the body of subprograms that are to\nbe inlined by the front-end, to prevent accidental duplication of loop\nlabels, which might make the resulting source illegal.\n\n----\nSource program:\n----\npackage P is\n   procedure Get_Rom_Addr_Offset\n     with Inline_Always;\nend P;\n----\npackage body P is\n   procedure Get_Rom_Addr_Offset is\n      X : Integer;\n   begin\n      Main_Block :\n      for I in 1 .. 10 loop\n         X := 2;\n         exit Main_Block when I > 4;\n      other_loop:\n         for J in character'('a') .. 'z' loop\n            if I < 5 then\n               exit Main_Block when J = 'k';\n            else\n               Exit Other_Loop;\n            end if;\n         end loop other_loop;\n      end loop Main_Block;\n   end Get_Rom_Addr_Offset;\n\n   procedure P2 is\n   begin\n      Main_Block :\n      for I in 1 .. 1 loop\n         Get_Rom_Addr_Offset;\n      end loop Main_Block;\n   end P2;\nend P;\n----\nCommand:\n\n   gcc -c -gnatN -gnatd.u -gnatDG p.adb\n\n----\nOutput\n----\n\npackage body p is\n\n   procedure p__get_rom_addr_offset is\n      x : integer;\n      other_loop : label\n      main_block : label\n   begin\n      main_block : for i in 1 .. 10 loop\n         x := 2;\n         exit main_block when i > 4;\n         other_loop : for j in 'a' .. 'z' loop\n            if i < 5 then\n               exit main_block when j = 'k';\n            else\n               exit other_loop;\n            end if;\n         end loop other_loop;\n      end loop main_block;\n      return;\n   end p__get_rom_addr_offset;\n\n   procedure p__p2 is\n      main_block : label\n   begin\n      main_block : for i in 1 .. 1 loop\n         B6b : declare\n            x : integer;\n            other_loopL10b : label\n            main_blockL9b : label\n         begin\n            main_blockL9b : for i in 1 .. 10 loop\n               x := 2;\n               exit main_blockL9b when i > 4;\n               other_loopL10b : for j in 'a' .. 'z' loop\n                  if i < 5 then\n                     exit main_blockL9b when j = 'k';\n                  else\n                     exit other_loopL10b;\n                  end if;\n               end loop other_loopL10b;\n            end loop main_blockL9b;\n         end B6b;\n      end loop main_block;\n      return;\n   end p__p2;\nbegin\n   null;\nend p;\n\n2019-07-03  Ed Schonberg  <schonberg@adacore.com>\n\ngcc/ada/\n\n\t* inline.adb (Make_Loop_Labels_Unique):  New procedure to modify\n\tthe source code of subprograms that are inlined by the\n\tfront-end, to prevent accidental duplication between loop labels\n\tin the inlined code and the code surrounding the inlined call.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272967 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/c38b32ea453ed594796737a837274bf389e0bb27"},{"sha":"c8406f30f3996d6a6b8bfcc0c52f27b84ff633ed","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Fix bogus error on array with overaligned scalar component\n\nThe compiler would wrongly reject an alignment clause larger than 8 on\nthe component type of an array of scalars, which is valid albeit\npathological.\n\n2019-07-03  Eric Botcazou  <ebotcazou@adacore.com>\n\ngcc/ada/\n\n\t* layout.adb (Layout_Type): Do not set the component size of an\n\tarray with a scalar component if the component type is\n\toveraligned.\n\ngcc/testsuite/\n\n\t* gnat.dg/alignment14.adb: New testcase.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272968 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/c8406f30f3996d6a6b8bfcc0c52f27b84ff633ed"},{"sha":"0396441f50c7defbff51c3d23714a698f3336d8e","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Spurious error on dynamic predicate in a generic context\n\nThis patch fixes a spurious error on the conformance checking between\nthe expression for an aspect analyzed at the freeze point of the type,\nand the analysis of a copy of the expression performed at the end of the\nenclosing list of declarationss. In a generic context the first may not\nhave been analyzed yet and this must be done before the conformance\ncheck.\n\n2019-07-03  Ed Schonberg  <schonberg@adacore.com>\n\ngcc/ada/\n\n\t* sem_ch13.adb (Analyze_Attribute_Definition_Clause): No error\n\tmessage on attribute applied to a renaming when the renamed\n\tobject is an aggregate (from code reading).\n\t(Check_Aspect_At_End_Of_Declarations): In a generic context\n\twhere freeze nodes are not generated, the original expression\n\tfor an aspect may need to be analyzed to precent spurious\n\tconformance errors when compared with the expression that is\n\tanakyzed at the end of the current declarative list.\n\ngcc/testsuite/\n\n\t* gnat.dg/predicate5.adb, gnat.dg/predicate5.ads: New testcase.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272969 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/0396441f50c7defbff51c3d23714a698f3336d8e"},{"sha":"08237d0defb34510cfd1f74858496a8abcf24e2d","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Spell \"laid\" correctly\n\n2019-07-03  Bob Duff  <duff@adacore.com>\n\ngcc/ada/\n\n\t* einfo.ads, exp_util.adb, layout.ads, sinfo.ads: Spell \"laid\"\n\tcorrectly.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272970 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/08237d0defb34510cfd1f74858496a8abcf24e2d"},{"sha":"2c75027ad968a269158bef774ad8603ce48e3e2c","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Extend -gnatw.z warning to array types\n\nThe -gnatw.z switch causes the compiler to issue a warning on record\ntypes subject to both an alignment clause and a size clause, when the\nspecified size is not a multiple of the alignment in bits, because this\nmeans that the Object_Size will be strictly larger than the specified\nsize.\n\nIt makes sense to extend this warning to array types, but not to the\ncases of bit-packed arrays where the size is not a multiple of storage\nunit and the specified alignment is the minimum one, because there would\nbe no way to get rid of it apart from explicitly silencing it.\n\nThe compiler must issue the warning:\n\np.ads:5:03: warning: size is not a multiple of alignment for \"Triplet\"\np.ads:5:03: warning: size of 24 specified at line 4\np.ads:5:03: warning: Object_Size will be increased to 32\n\non the following package:\n\npackage P is\n\n  type Triplet is new String (1 .. 3);\n  for Triplet'Size use 24;\n  for Triplet'Alignment use 4;\n\n  type Arr is array (1 .. 7) of Boolean;\n  pragma Pack (Arr);\n  for Arr'Size use 7;\n  for Arr'Alignment use 1;\n\nend P;\n\n2019-07-03  Eric Botcazou  <ebotcazou@adacore.com>\n\ngcc/ada/\n\n\t* doc/gnat_ugn/building_executable_programs_with_gnat.rst\n\t(Warning message control): Document that -gnatw.z/Z apply to\n\tarray types.\n\t* freeze.adb (Freeze_Entity): Give -gnatw.z warning for array\n\ttypes as well, but not if the specified alignment is the minimum\n\tone.\n\t* gnat_ugn.texi: Regenerate.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272971 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/2c75027ad968a269158bef774ad8603ce48e3e2c"},{"sha":"800597f6d2b52c47e58df6a34d7f256a6ac7f1e9","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Style check for mixed-case identifiers\n\nThis patch implements a new switch, -gnatyD, enables a style check that\nrequires defining identifiers to be in mixed case.\n\n2019-07-03  Bob Duff  <duff@adacore.com>\n\ngcc/ada/\n\n\t* par-ch3.adb (P_Defining_Identifier): Call\n\tCheck_Defining_Identifier_Casing.\n\t* style.ads, styleg.ads, styleg.adb\n\t(Check_Defining_Identifier_Casing): New procedure to check for\n\tmixed-case defining identifiers.\n\t* stylesw.ads, stylesw.adb (Style_Check_Mixed_Case_Decls): New\n\tflag for checking for mixed-case defining identifiers.\n\t* doc/gnat_ugn/building_executable_programs_with_gnat.rst:\n\tDocument new feature.\n\t* gnat_ugn.texi: Regenerate.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272972 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/800597f6d2b52c47e58df6a34d7f256a6ac7f1e9"},{"sha":"99d90c850de9d69c3cc617248b59a170064a4ae3","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Minor reformatting\n\n2019-07-03  Hristian Kirtchev  <kirtchev@adacore.com>\n\ngcc/ada/\n\n\t* bindgen.adb, inline.adb, layout.adb, sem_ch12.adb,\n\tsem_ch13.adb, sem_ch7.adb, styleg.adb: Minor reformatting.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272973 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/99d90c850de9d69c3cc617248b59a170064a4ae3"},{"sha":"f3f142ac910cfa8e840482f6139c2c0bad275097","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Spurious error with static predicate in generic unit\n\nThis patch fixes a spurious error in a generic unit that invludes a\nsubtype with a static predicate, when the type is used in a case\nexpression.\n\n2019-07-03  Ed Schonberg  <schonberg@adacore.com>\n\ngcc/ada/\n\n\t* sem_ch13.adb (Build_Predicate_Functions): In a generic context\n\twe do not build the bodies of predicate fuctions, but the\n\texpression in a static predicate must be elaborated to allow\n\tcase coverage checking within the generic unit.\n\t(Build_Discrete_Static_Predicate): In a generic context, return\n\twithout building function body once the\n\tStatic_Discrete_Predicate expression for the type has been\n\tconstructed.\n\ngcc/testsuite/\n\n\t* gnat.dg/predicate6.adb, gnat.dg/predicate6.ads: New testcase.\n\t* gnat.dg/static_pred1.adb: Remove expected error.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272974 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/f3f142ac910cfa8e840482f6139c2c0bad275097"},{"sha":"df177848692f3a2b33c9ac126623da893ca6a884","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] SPARK pointer support extended to local borrowers and observers\n\nSPARK rules allow local borrowers and observers to be declared. During\ntheir lifetime, the access to the borrowed/observed object is\nrestricted.\n\nThere is no impact on compilation.\n\n2019-07-03  Yannick Moy  <moy@adacore.com>\n\ngcc/ada/\n\n\t* sem_spark.adb: Add support for locally borrowing and observing\n\ta path.\n\t(Get_Root_Object): Add parameter Through_Traversal to denote\n\twhen we are interesting in getting to the traversed parameter.\n\t(Is_Prefix_Or_Almost): New function to support detection of\n\tillegal access to borrowed or observed paths.\n\t(Check_Pragma): Add analysis of assertion pragmas.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272975 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/df177848692f3a2b33c9ac126623da893ca6a884"},{"sha":"5f71d12c857ae2fd6ec2496f1e18666ddcb19fad","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] ABE checks v3.0, foundations of Elaboration order v4.0\n\n------------------------\n-- Elaboration checks --\n------------------------\n\nThe dynamic ABE checks model now emits the same diagnostics as those of the\nstatic ABE checks model.\n\nThe ABE checks mechanism has been redesigned and refactored in the face of\nincreasing requirements. Most of the functionality can now be toggled, thus\nallowing for various combinations of behavior. The combinations are defined\nas \"initial states\" and may be further altered.\n\nScenarios and targets have been distinctly separated at the higher level,\ninstead of directly working with nodes and entitites. Scenarios and targets\nnow carry a representation which removes the need to constantly recompute\nrelevant attributes, and offers a common interface for the various processors.\n\nMost processing has now been refactored into \"services\" which perform a single\nABE-related function.\n\n-----------------------\n-- Elaboration order --\n-----------------------\n\nA new elaboration order mechanism based on the use of an invocation graph to\nprovide extra information about the flow of execution at elaboration time has\nbeen introduced.\n\nThe ABE checks mechanism has been altered to encode pieces of the invocation\ngraph in the associated ALI files of units.\n\nThe new elaboration order mechanism reconstructs the full invocation graph at\nbind time, and coupled with the library item graph, determines the elaboration\norder of units.\n\nThe new elaboration order mechanism is currently inaccessible.\n\n------------\n-- Source --\n------------\n\n--  pack.ads\n\npackage Pack is\n   procedure ABE_Proc;\n   procedure Safe_Proc;\nend Pack;\n\n--  pack.adb\n\nwith Ada.Text_IO; use Ada.Text_IO;\n\npackage body Pack is\n   function Call_Proc (ABE : Boolean) return Integer;\n\n   procedure Safe_Proc is\n   begin\n      Put_Line (\"safe\");\n   end Safe_Proc;\n\n   function Call_Proc (ABE : Boolean) return Integer is\n   begin\n      if ABE then\n         ABE_Proc;\n      else\n         Safe_Proc;\n      end if;\n\n      return 0;\n   end Call_Proc;\n\n   Elab_1 : constant Integer := Call_Proc (ABE => False);\n   Elab_2 : constant Integer := Call_Proc (ABE => True);\n\n   procedure ABE_Proc is\n   begin\n      Put_Line (\"ABE\");\n   end ABE_Proc;\nend Pack;\n\n--  main.adb\n\nwith Pack;\n\nprocedure Main is begin null; end Main;\n\n----------------------------\n-- Compilation and output --\n----------------------------\n\n$ gnatmake -f -q -gnatE main.adb\n$ ./main\n$ gnatmake -f -q -gnatE main.adb -gnatDG -gnatwL\n$ grep -c \"safeE\" pack.adb.dg\npack.adb:14:10: warning: cannot call \"ABE_Proc\" before body seen\npack.adb:14:10: warning: Program_Error may be raised at run time\npack.adb:14:10: warning:   body of unit \"Pack\" elaborated\npack.adb:14:10: warning:   function \"Call_Proc\" called at line 22\npack.adb:14:10: warning:   procedure \"ABE_Proc\" called at line 14\npack.adb:14:10: warning: cannot call \"ABE_Proc\" before body seen\npack.adb:14:10: warning: Program_Error may be raised at run time\npack.adb:14:10: warning:   body of unit \"Pack\" elaborated\npack.adb:14:10: warning:   function \"Call_Proc\" called at line 23\npack.adb:14:10: warning:   procedure \"ABE_Proc\" called at line 14\nsafe\n\nraised PROGRAM_ERROR : pack.adb:14 access before elaboration\n0\n\n2019-07-03  Hristian Kirtchev  <kirtchev@adacore.com>\n\ngcc/ada/\n\n\t* ali.adb: Add with and use clauses for GNAT,\n\tGNAT.Dynamic_HTables, and Snames.  Add a map from invocation\n\tsignature records to invocation signature ids.  Add various\n\tencodings of invocation-related attributes.  Sort and update\n\ttable Known_ALI_Lines.\n\t(Add_Invocation_Construct, Add_Invocation_Relation,\n\tBody_Placement_Kind_To_Code, Code_To_Body_Placement_Kind,\n\tCode_To_Invocation_Construct_Kind, Code_To_Invocation_Kind,\n\tCode_To_Invocation_Graph_Line_Kind, Destroy, Hash): New\n\troutines.\n\t(Initialize_ALI): Sort the initialization sequence. Add\n\tinitialization for all invocation-related tables.\n\t(Invocation_Construct_Kind_To_Code,\n\tInvocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code,\n\tInvocation_Signature_Of, Present): New routines.\n\t(Scan_ALI): Add the default values for invocation-related ids.\n\tScan invocation graph lines.\n\t(Scan_Invocation_Graph_Line): New routine.\n\t* ali.ads: Add with clause for GNAT.Dynamic_Tables.  Add types\n\tfor invocation constructs, relations, and signatures.  Add\n\ttables for invocation constructs, relations, and signatures.\n\tUpdate Unit_Record to capture invocation-related ids.  Relocate\n\ttable Unit_Id_Tables and subtypes Unit_Id_Table, Unit_Id_Array\n\tfrom Binde.\n\t(Add_Invocation_Construct, Add_Invocation_Relation,\n\tBody_Placement_Kind_To_Code, Code_To_Body_Placement_Kind,\n\tCode_To_Invocation_Construct_Kind, Code_To_Invocation_Kind,\n\tCode_To_Invocation_Graph_Line_Kind,\n\tInvocation_Construct_Kind_To_Code,\n\tInvocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code,\n\tInvocation_Signature_Of, Present): New routines.\n\t* binde.adb: Add with and use clause for Types.  Add use clause\n\tfor ALI.Unit_Id_Tables;\n\t* binde.ads: Relocate table Unit_Id_Tables and subtypes\n\tUnit_Id_Table, Unit_Id_Array to ALI.\n\t* bindgen.adb: Remove with and use clause for ALI.\n\t* bindgen.ads: Remove with and use clause for Binde.  Add with\n\tand use clause for ALI.\n\t* bindo.adb,  bindo.ads, bindo-augmentors.adb,\n\tbindo-augmentors.ads, bindo-builders.adb, bindo-builders.ads,\n\tbindo-diagnostics.adb, bindo-diagnostics.ads,\n\tbindo-elaborators.adb, bindo-elaborators.ads, bindo-graphs.adb,\n\tbindo-graphs.ads, bindo-units.adb, bindo-units.ads,\n\tbindo-validators.adb, bindo-validators.ads, bindo-writers.adb,\n\tbindo-writers.ads: New units.\n\t* debug.adb: Use and describe GNAT debug switches -gnatd_F and\n\t-gnatd_G.  Add GNATbind debug switches in the ranges dA .. dZ,\n\td.a .. d.z, d.A .. d.Z, d.1 .. d.9, d_a .. d_z, d_A .. d_Z, and\n\td_1 .. d_9.  Use and describe GNATbind debug switches -d_A,\n\t-d_I, -d_L, -d_N, -d_O, -d_T, and -d_V.\n\t* exp_util.adb, exp_util.ads (Exceptions_OK): Relocate to\n\tSem_Util.\n\t* gnatbind.adb: Add with and use clause for Bindo.  Use the new\n\tBindo elaboration order only when -d_N is in effect.\n\t* lib-writ.adb\n\t(Column, Extra, Invoker, Kind, Line, Locations, Name, Placement,\n\tScope, Signature, Target): New routines.\n\t(Write_ALI): Output all invocation-related data.\n\t(Write_Invocation_Graph): New routine.\n\t* lib-writ.ads: Document the invocation graph ALI line.\n\t* namet.adb, namet.ads (Present): New routines.\n\t* sem_ch8.adb (Find_Direct_Name): Capture the status of\n\telaboration checks and warnings of an identifier.\n\t(Find_Expanded_Name): Capture the status of elaboration checks\n\tand warnings of an expanded name.\n\t* sem_ch12.adb (Analyze_Generic_Package_Declaration): Ensure\n\tthat invocation graph-related data within the body of the main\n\tunit is encoded in the ALI file.\n\t(Analyze_Generic_Subprogram_Declaration): Ensure that invocation\n\tgraph-related data within the body of the main unit is encoded\n\tin the ALI file.\n\t(Analyze_Package_Instantiation): Perform minimal decoration of\n\tthe instance entity.\n\t(Analyze_Subprogram_Instantiation): Perform minimal decoration\n\tof the instance entity.\n\t* sem_elab.adb: Perform heavy refactoring of all code. The unit\n\tis now split into \"services\" which specialize in one area of ABE\n\tchecks.  Add processing in order to capture invocation-graph\n\trelated attributes of the main unit, and encode them in the ALI\n\tfile.  The Processing phase can now operate in multiple modes,\n\tall described by type Processing_Kind.  Scenarios and targets\n\tare now distinct at the higher level, and carry their own\n\trepresentations. This eliminates the need to constantly\n\trecompute their attributes, and offers the various processors a\n\tuniform interface.  The various initial states of the Processing\n\tphase are now encoded using type Processing_In_State, and\n\txxx_State constants.\n\t* sem_elab.ads: Update the literals of type\n\tEnclosing_Level_Kind.  Add Inline pragmas on several routines.\n\t* sem_prag.adb (Process_Inline): Ensure that invocation\n\tgraph-related data within the body of the main unit is encoded\n\tin the ALI file.\n\t* sem_util.adb (Enclosing_Generic_Body, Enclosing_Generic_Unit):\n\tCode clean up.\n\t(Exceptions_OK): Relocated from Sem_Util.\n\t(Mark_Save_Invocation_Graph_Of_Body): New routine.\n\t* sem_util.ads (Exceptions_OK): Relocated from Sem_Util.\n\t(Mark_Save_Invocation_Graph_Of_Body): New routine.\n\t* sinfo.adb (Is_Elaboration_Checks_OK_Node): Now applicable to\n\tN_Variable_Reference_Marker.\n\t(Is_Elaboration_Warnings_OK_Node): Now applicable to\n\tN_Expanded_Name, N_Identifier, N_Variable_Reference_Marker.\n\t(Is_Read): Use Flag4.\n\t(Is_SPARK_Mode_On_Node): New applicable to\n\tN_Variable_Reference_Marker.\n\t(Is_Write): Use Flag5.\n\t(Save_Invocation_Graph_Of_Body): New routine.\n\t(Set_Is_Elaboration_Checks_OK_Node): Now applicable to\n\tN_Variable_Reference_Marker.\n\t(Set_Is_Elaboration_Warnings_OK_Node): Now applicable to\n\tN_Expanded_Name, N_Identifier, N_Variable_Reference_Marker.\n\t(Set_Is_SPARK_Mode_On_Node): New applicable to\n\tN_Variable_Reference_Marker.\n\t(Set_Save_Invocation_Graph_Of_Body): New routine.\n\t* sinfo.ads: Update the documentation of attributes\n\tIs_Elaboration_Checks_OK_Node, Is_Elaboration_Warnings_OK_Node,\n\tIs_SPARK_Mode_On_Node.  Update the flag usage of attributes\n\tIs_Read, Is_Write.  Add attribute Save_Invocation_Graph_Of_Body\n\tand update its occurrence in nodes.\n\t(Save_Invocation_Graph_Of_Body): New routine along with pragma\n\tInline.\n\t(Set_Save_Invocation_Graph_Of_Body): New routine along with\n\tpragma Inline.\n\t* switch-b.adb (Scan_Binder_Switches): Refactor the scanning of\n\tdebug switches.\n\t(Scan_Debug_Switches): New routine.\n\t* libgnat/g-dynhta.adb, libgnat/g-dynhta.ads (Contains): New routine.\n\t* libgnat/g-graphs.adb (Associate_Vertices): Update the use of\n\tComponent_Vertex_Iterator.\n\t(Contains_Component, Contains_Edge, Contains_Vertex, Has_Next):\n\tReimplemented.\n\t(Iterate_Component_Vertices): New routine.\n\t(Iterate_Vertices): Removed.\n\t(Next): Update the parameter profile.\n\t(Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New\n\troutines.\n\t* libgnat/g-graphs.ads: Update the initialization of\n\tNo_Component.  Add type Component_Vertex_Iterator.  Remove type\n\tVertex_Iterator.\n\t(Has_Next): Add new versions and remove old ones.\n\t(Iterate_Component_Vertices): New routine.\n\t(Iterate_Vertices): Removed.\n\t(Next): Add new versions and remove old ones.\n\t(Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New\n\troutines.\n\t* libgnat/g-sets.adb (Contains): Reimplemented.\n\t* gcc-interface/Make-lang.in (GNATBIND_OBJS): Add\n\tGNAT.Dynamic_HTables, GNAT.Graphs and Bindo units.\n\t* rtsfind.ads: Remove extra space.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272976 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/5f71d12c857ae2fd6ec2496f1e18666ddcb19fad"},{"sha":"17b5260dc4acbb36df06480a2b60bd1ba64496b4","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Document default new-line behavior for GNATpp\n\n2019-07-03  Bob Duff  <duff@adacore.com>\n\ngcc/ada/\n\n\t* doc/gnat_ugn/gnat_utility_programs.rst: Document default\n\tnew-line behavior.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272977 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/17b5260dc4acbb36df06480a2b60bd1ba64496b4"},{"sha":"2ccf6539224f357092030b061e2edf769c80c39f","author":{"name":"pmderodat","email":"255b77987335f3e0502c7a75db867d4e15b89d02@138bc75d-0d04-0410-961f-82ee72b054a4"},"message":"[Ada] Improve warnings about infinite loops\n\nThe compiler now has fewer false alarms when warning about infinite\nloops. For example, a loop of the form \"for X of A ...\", where A is an\narray, cannot be infinite.  The compiler no longer warns in this case.\n\n2019-07-03  Bob Duff  <duff@adacore.com>\n\ngcc/ada/\n\n\t* sem_warn.adb (Check_Infinite_Loop_Warning): Avoid the warning\n\tif an Iterator_Specification is present.\n\ngcc/testsuite/\n\n\t* gnat.dg/warn20.adb, gnat.dg/warn20_pkg.adb,\n\tgnat.dg/warn20_pkg.ads: New testcase.\n\ngit-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@272978 138bc75d-0d04-0410-961f-82ee72b054a4","distinct":false,"url":"https://api.github.com/repos/kraj/gcc/commits/2ccf6539224f357092030b061e2edf769c80c39f"}]}
{"actor":{"display_login":"kraj"}}