mirror of
https://forge.sourceware.org/marek/gcc.git
synced 2026-02-22 03:47:02 -05:00
With toplevel assembly we are sometimes not allowed to globalize static symbols. So such symbols cannot be in more than one partition. must_remain_in_tu_* guarantee that such symbols or references to them do not escape the original translation unit. Thus 1to1 partitioning is always valid. gcc/ChangeLog: * cgraph.h: Add must_remain_in_tu_*. * cgraphclones.cc (cgraph_node::create_clone): Propagate must_remain_in_tu_body. * cif-code.def (MUST_REMAIN_IN_TU): New. * ipa-icf.cc (sem_function::equals_wpa): Check must_remain_in_tu_* (sem_variable::equals_wpa): Likewise. * ipa-inline-transform.cc (inline_call): Propagate must_remain_in_tu_body. * ipa-inline.cc (can_inline_edge_p): Check must_remain_in_tu_body. * lto-cgraph.cc (lto_output_node): Output must_remain_in_tu_* (lto_output_varpool_node): Likewise. (input_overwrite_node): Input must_remain_in_tu_*. (input_varpool_node): Likewise. * tree.cc (decl_address_ip_invariant_p): Check must_remain_in_tu_name. * varpool.cc (varpool_node::ctor_useable_for_folding_p): Check must_remain_in_tu_body. gcc/lto/ChangeLog: * lto-symtab.cc (lto_cgraph_replace_node): Propagate must_remain_in_tu_*. (lto_varpool_replace_node): Likewise.
5.9 KiB
5.9 KiB