This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
remove unreferenced copies of char * swash_property_names[]
authorDaniel Dragan <bulk88@hotmail.com>
Mon, 26 Feb 2018 02:31:26 +0000 (21:31 -0500)
committerKarl Williamson <khw@cpan.org>
Tue, 27 Feb 2018 19:16:00 +0000 (12:16 -0700)
commitf1bfbdda19c74059bee234561325e09c9d0a9708
treee55cca31125e7115ff51ba1f707d622a0e79c4ea
parenta0da1e165c011c775b9f39a37ab6d3dd6a1c0969
remove unreferenced copies of char * swash_property_names[]

Due to some MSVC bug or perl's not using MS specific CC options that I've
never figured out, MSVC does not remove unreferenced by a single .obj or
combine identical, static const data vars. MSVC funcs get removed &
combined correctly. Since for var swash_property_names removing it from
.objs that dont need it is very easy, do it. It saves some memory space.
Perhaps some other platforms/OSes/CCs have similar problems removing
unreferenced symbols from final binaries so this patch would help on those
CCs too.

regexec.c stopped using swash_property_names in commit 2a16ac9277 in 5.19.8
"regexec.c: Use compiled-in POSIX definitions"

regcomp.c stopped using swash_property_names in commit bcb875216f in 5.19.8
"regcomp.c: Rmv code for delayed 'til runtime POSIX defns"

with MSVC 2008 64, before

miniperl.exe disk file size 1761KB .rdata virtual size 0xBC354 bytes
perl527.dll disk file size 2040KB .rdata virtual size 0xC9421 bytes

after this commit

miniperl.exe disk file size 1761KB .rdata virtual size 0xBC2C4 bytes
perl527.dll disk file size 2040KB .rdata virtual size 0xC9381 bytes

~144 bytes saved by removing unused copies of swash_property_names array.

There are other cases of large duplicate static const data vars still in
the perl527.dll binary but this patch covers a very simple case.
handy.h