On Tue, Jul 31, 2018 at 12:35 AM Alexandre Oliva <ol...@gnu.org> wrote: > > On Jul 24, 2018, Alexandre Oliva <ol...@gnu.org> wrote: > > > Ok to install the first two patches? (the third is just for reference) > > Ping? > > https://gcc.gnu.org/ml/gcc-patches/2018-07/msg01419.html
OK for the middle-end parts, the Ada parts need separate approval (maybe CC a maintainer). Thanks, Richard. > > > Introduce instance discriminators > > > From: Alexandre Oliva <ol...@adacore.com> > > > With -gnateS, the Ada compiler sets itself up to output discriminators > > for different instantiations of generics, but the middle and back ends > > have lacked support for that. This patch introduces the missing bits, > > translating the GNAT-internal representation of the per-file instance > > map to an instance_table that maps decls to instance discriminators. > > > > From: Alexandre Oliva <ol...@adacore.com>, Olivier Hainque > > <hain...@adacore.com> > > for gcc/ChangeLog > > > * debug.h (decl_to_instance_map_t): New type. > > (decl_to_instance_map): Declare. > > (maybe_create_decl_to_instance_map): New inline function. > > * final.c (bb_discriminator, last_bb_discriminator): New statics, > > to track basic block discriminators. > > (final_start_function_1): Initialize them. > > (final_scan_insn_1): On NOTE_INSN_BASIC_BLOCK, track > > bb_discriminator. > > (decl_to_instance_map): New variable. > > (map_decl_to_instance, maybe_set_discriminator): New functions. > > (notice_source_line): Set discriminator. > > > for gcc/ada > > > * trans.c: Include debug.h. > > (file_map): New static variable. > > (gigi): Set it. Create decl_to_instance_map when needed. > > (Subprogram_Body_to_gnu): Pass gnu_subprog_decl to... > > (Sloc_to_locus): ... this. Add decl parm, map it to instance. > > * gigi.h (Sloc_to_locus): Adjust declaration. > > > for gcc/testsuite/ChangeLog > > > * gnat.dg/dinst.adb: New. > > * gnat.dg/dinst_pkg.ads, gnat.dg/dinst_pkg.adb: New. > > [...] > > > Save discriminator info for LTO > > > From: Alexandre Oliva <ol...@adacore.com> > > > for gcc/ChangeLog > > > * gimple-streamer-in.c (input_bb): Restore BB discriminator. > > * gimple-streamer-out.c (output_bb): Save it. > > * lto-streamer-in.c (input_struct_function_base): Restore > > instance discriminator if available. Create map on demand. > > * lto-streamer-out.c (output_struct_function_base): Save it if > > available. > > * final.c (decl_to_instance_map): Document LTO strategy. > > > -- > Alexandre Oliva, freedom fighter https://FSFLA.org/blogs/lxo > Be the change, be Free! FSF Latin America board member > GNU Toolchain Engineer Free Software Evangelist