Skip to content

Compiling protobuf with -no-gen-decoders leaves unused functions #242

@bsuh

Description

@bsuh
git clone https://github.com/tomas-abrahamsson/gpb.git
git clone https://github.com/google/perfetto.git
make -C gpb
erl -pa gpb/ebin -s gpb_compile c perfetto/protos/perfetto/trace/trace.proto -extra -Iperfetto/protos/perfetto/trace -Iperfetto/ -strbin -pldefs -maps -pkgs -no-gen-verifiers -no-gen-decoders -no-gen-introspect
erlc -Wall perfetto/protos/perfetto/trace/trace.erl
perfetto/protos/perfetto/trace/trace.erl:45424:1: Warning: function 'tr_decode_init_default_perfetto.protos.ChromeHistorgramTranslationTable.hash_to_name'/2 is unused
% 45424| 'tr_decode_init_default_perfetto.protos.ChromeHistorgramTranslationTable.hash_to_name'(_, _) -> mt_empty_map_m().
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45427:1: Warning: function 'tr_merge_perfetto.protos.ChromeHistorgramTranslationTable.hash_to_name'/3 is unused
% 45427| 'tr_merge_perfetto.protos.ChromeHistorgramTranslationTable.hash_to_name'(X1, X2, _) -> mt_merge_maps_m(X1, X2).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45430:1: Warning: function 'tr_decode_repeated_finalize_perfetto.protos.ChromeHistorgramTranslationTable.hash_to_name'/2 is unused
% 45430| 'tr_decode_repeated_finalize_perfetto.protos.ChromeHistorgramTranslationTable.hash_to_name'(L, TrUserData) -> id(L, TrUserData).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45436:1: Warning: function 'tr_decode_repeated_add_elem_perfetto.protos.ChromeHistorgramTranslationTable.hash_to_name'/3 is unused
% 45436| 'tr_decode_repeated_add_elem_perfetto.protos.ChromeHistorgramTranslationTable.hash_to_name'(Elem, L, _) -> mt_add_item_m(Elem, L).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45439:1: Warning: function 'tr_decode_init_default_perfetto.protos.ChromeUserEventTranslationTable.action_hash_to_name'/2 is unused
% 45439| 'tr_decode_init_default_perfetto.protos.ChromeUserEventTranslationTable.action_hash_to_name'(_, _) -> mt_empty_map_m().
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45442:1: Warning: function 'tr_merge_perfetto.protos.ChromeUserEventTranslationTable.action_hash_to_name'/3 is unused
% 45442| 'tr_merge_perfetto.protos.ChromeUserEventTranslationTable.action_hash_to_name'(X1, X2, _) -> mt_merge_maps_m(X1, X2).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45445:1: Warning: function 'tr_decode_repeated_finalize_perfetto.protos.ChromeUserEventTranslationTable.action_hash_to_name'/2 is unused
% 45445| 'tr_decode_repeated_finalize_perfetto.protos.ChromeUserEventTranslationTable.action_hash_to_name'(L, TrUserData) -> id(L, TrUserData).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45451:1: Warning: function 'tr_decode_repeated_add_elem_perfetto.protos.ChromeUserEventTranslationTable.action_hash_to_name'/3 is unused
% 45451| 'tr_decode_repeated_add_elem_perfetto.protos.ChromeUserEventTranslationTable.action_hash_to_name'(Elem, L, _) -> mt_add_item_m(Elem, L).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45454:1: Warning: function 'tr_decode_init_default_perfetto.protos.ChromePerformanceMarkTranslationTable.site_hash_to_name'/2 is unused
% 45454| 'tr_decode_init_default_perfetto.protos.ChromePerformanceMarkTranslationTable.site_hash_to_name'(_, _) -> mt_empty_map_m().
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45457:1: Warning: function 'tr_merge_perfetto.protos.ChromePerformanceMarkTranslationTable.site_hash_to_name'/3 is unused
% 45457| 'tr_merge_perfetto.protos.ChromePerformanceMarkTranslationTable.site_hash_to_name'(X1, X2, _) -> mt_merge_maps_m(X1, X2).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45460:1: Warning: function 'tr_decode_repeated_finalize_perfetto.protos.ChromePerformanceMarkTranslationTable.site_hash_to_name'/2 is unused
% 45460| 'tr_decode_repeated_finalize_perfetto.protos.ChromePerformanceMarkTranslationTable.site_hash_to_name'(L, TrUserData) -> id(L, TrUserData).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45466:1: Warning: function 'tr_decode_repeated_add_elem_perfetto.protos.ChromePerformanceMarkTranslationTable.site_hash_to_name'/3 is unused
% 45466| 'tr_decode_repeated_add_elem_perfetto.protos.ChromePerformanceMarkTranslationTable.site_hash_to_name'(Elem, L, _) -> mt_add_item_m(Elem, L).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45469:1: Warning: function 'tr_decode_init_default_perfetto.protos.ChromePerformanceMarkTranslationTable.mark_hash_to_name'/2 is unused
% 45469| 'tr_decode_init_default_perfetto.protos.ChromePerformanceMarkTranslationTable.mark_hash_to_name'(_, _) -> mt_empty_map_m().
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45472:1: Warning: function 'tr_merge_perfetto.protos.ChromePerformanceMarkTranslationTable.mark_hash_to_name'/3 is unused
% 45472| 'tr_merge_perfetto.protos.ChromePerformanceMarkTranslationTable.mark_hash_to_name'(X1, X2, _) -> mt_merge_maps_m(X1, X2).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45475:1: Warning: function 'tr_decode_repeated_finalize_perfetto.protos.ChromePerformanceMarkTranslationTable.mark_hash_to_name'/2 is unused
% 45475| 'tr_decode_repeated_finalize_perfetto.protos.ChromePerformanceMarkTranslationTable.mark_hash_to_name'(L, TrUserData) -> id(L, TrUserData).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45481:1: Warning: function 'tr_decode_repeated_add_elem_perfetto.protos.ChromePerformanceMarkTranslationTable.mark_hash_to_name'/3 is unused
% 45481| 'tr_decode_repeated_add_elem_perfetto.protos.ChromePerformanceMarkTranslationTable.mark_hash_to_name'(Elem, L, _) -> mt_add_item_m(Elem, L).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45484:1: Warning: function 'tr_decode_init_default_perfetto.protos.SliceNameTranslationTable.raw_to_deobfuscated_name'/2 is unused
% 45484| 'tr_decode_init_default_perfetto.protos.SliceNameTranslationTable.raw_to_deobfuscated_name'(_, _) -> mt_empty_map_m().
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45487:1: Warning: function 'tr_merge_perfetto.protos.SliceNameTranslationTable.raw_to_deobfuscated_name'/3 is unused
% 45487| 'tr_merge_perfetto.protos.SliceNameTranslationTable.raw_to_deobfuscated_name'(X1, X2, _) -> mt_merge_maps_m(X1, X2).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45490:1: Warning: function 'tr_decode_repeated_finalize_perfetto.protos.SliceNameTranslationTable.raw_to_deobfuscated_name'/2 is unused
% 45490| 'tr_decode_repeated_finalize_perfetto.protos.SliceNameTranslationTable.raw_to_deobfuscated_name'(L, TrUserData) -> id(L, TrUserData).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45496:1: Warning: function 'tr_decode_repeated_add_elem_perfetto.protos.SliceNameTranslationTable.raw_to_deobfuscated_name'/3 is unused
% 45496| 'tr_decode_repeated_add_elem_perfetto.protos.SliceNameTranslationTable.raw_to_deobfuscated_name'(Elem, L, _) -> mt_add_item_m(Elem, L).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45499:1: Warning: function 'tr_decode_init_default_perfetto.protos.ProcessTrackNameTranslationTable.raw_to_deobfuscated_name'/2 is unused
% 45499| 'tr_decode_init_default_perfetto.protos.ProcessTrackNameTranslationTable.raw_to_deobfuscated_name'(_, _) -> mt_empty_map_m().
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45502:1: Warning: function 'tr_merge_perfetto.protos.ProcessTrackNameTranslationTable.raw_to_deobfuscated_name'/3 is unused
% 45502| 'tr_merge_perfetto.protos.ProcessTrackNameTranslationTable.raw_to_deobfuscated_name'(X1, X2, _) -> mt_merge_maps_m(X1, X2).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45505:1: Warning: function 'tr_decode_repeated_finalize_perfetto.protos.ProcessTrackNameTranslationTable.raw_to_deobfuscated_name'/2 is unused
% 45505| 'tr_decode_repeated_finalize_perfetto.protos.ProcessTrackNameTranslationTable.raw_to_deobfuscated_name'(L, TrUserData) -> id(L, TrUserData).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45511:1: Warning: function 'tr_decode_repeated_add_elem_perfetto.protos.ProcessTrackNameTranslationTable.raw_to_deobfuscated_name'/3 is unused
% 45511| 'tr_decode_repeated_add_elem_perfetto.protos.ProcessTrackNameTranslationTable.raw_to_deobfuscated_name'(Elem, L, _) -> mt_add_item_m(Elem, L).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45514:1: Warning: function 'tr_decode_init_default_perfetto.protos.ChromeStudyTranslationTable.hash_to_name'/2 is unused
% 45514| 'tr_decode_init_default_perfetto.protos.ChromeStudyTranslationTable.hash_to_name'(_, _) -> mt_empty_map_m().
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45517:1: Warning: function 'tr_merge_perfetto.protos.ChromeStudyTranslationTable.hash_to_name'/3 is unused
% 45517| 'tr_merge_perfetto.protos.ChromeStudyTranslationTable.hash_to_name'(X1, X2, _) -> mt_merge_maps_m(X1, X2).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45520:1: Warning: function 'tr_decode_repeated_finalize_perfetto.protos.ChromeStudyTranslationTable.hash_to_name'/2 is unused
% 45520| 'tr_decode_repeated_finalize_perfetto.protos.ChromeStudyTranslationTable.hash_to_name'(L, TrUserData) -> id(L, TrUserData).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45526:1: Warning: function 'tr_decode_repeated_add_elem_perfetto.protos.ChromeStudyTranslationTable.hash_to_name'/3 is unused
% 45526| 'tr_decode_repeated_add_elem_perfetto.protos.ChromeStudyTranslationTable.hash_to_name'(Elem, L, _) -> mt_add_item_m(Elem, L).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45529:1: Warning: function 'tr_decode_init_default_perfetto.protos.LayerProto.metadata'/2 is unused
% 45529| 'tr_decode_init_default_perfetto.protos.LayerProto.metadata'(_, _) -> mt_empty_map_m().
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45532:1: Warning: function 'tr_merge_perfetto.protos.LayerProto.metadata'/3 is unused
% 45532| 'tr_merge_perfetto.protos.LayerProto.metadata'(X1, X2, _) -> mt_merge_maps_m(X1, X2).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45535:1: Warning: function 'tr_decode_repeated_finalize_perfetto.protos.LayerProto.metadata'/2 is unused
% 45535| 'tr_decode_repeated_finalize_perfetto.protos.LayerProto.metadata'(L, TrUserData) -> id(L, TrUserData).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45541:1: Warning: function 'tr_decode_repeated_add_elem_perfetto.protos.LayerProto.metadata'/3 is unused
% 45541| 'tr_decode_repeated_add_elem_perfetto.protos.LayerProto.metadata'(Elem, L, _) -> mt_add_item_m(Elem, L).
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45555:1: Warning: function mt_empty_map_m/0 is unused
% 45555| mt_empty_map_m() -> #{}.
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45559:1: Warning: function mt_add_item_m/2 is unused
% 45559| mt_add_item_m(#{key := K, value := V}, M) -> M#{K => V}.
%      | ^

perfetto/protos/perfetto/trace/trace.erl:45563:1: Warning: function mt_merge_maps_m/2 is unused
% 45563| mt_merge_maps_m(M1, M2) -> maps:merge(M1, M2).
%      | ^

Would it be possible to remove these additional functions from the output that seem to be unused when not generating decoders?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions