Skip to content

Commit

Permalink
ipa-visibility: remove assert in TLS optimization [PR107353]
Browse files Browse the repository at this point in the history
When upgrading TLS access model based on optimized symbol visibility
status, we attempted to assert that recomputing the model would not
weaken it. It turns out that C, C++, and Fortran front-ends all can
(unintentionally) assign a stronger model than what can be derived
from the declaration.

Let's act conservatively instead of asserting, at least as long as
such pre-existing issues remain.

gcc/ChangeLog:

	PR other/107353
	* ipa-visibility.cc (function_and_variable_visibility):
	Conditionally upgrade TLS model instead of asserting.
  • Loading branch information
amonakov committed Oct 26, 2022
1 parent a87819b commit 82e629c
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions gcc/ipa-visibility.cc
Original file line number Diff line number Diff line change
Expand Up @@ -886,8 +886,12 @@ function_and_variable_visibility (bool whole_program)
&& vnode->ref_list.referring.length ())
{
enum tls_model new_model = decl_default_tls_model (decl);
gcc_checking_assert (new_model >= decl_tls_model (decl));
set_decl_tls_model (decl, new_model);
STATIC_ASSERT (TLS_MODEL_GLOBAL_DYNAMIC < TLS_MODEL_LOCAL_DYNAMIC);
STATIC_ASSERT (TLS_MODEL_INITIAL_EXEC < TLS_MODEL_LOCAL_EXEC);
/* We'd prefer to assert that recomputed model is not weaker than
what the front-end assigned, but cannot: see PR 107353. */
if (new_model >= decl_tls_model (decl))
set_decl_tls_model (decl, new_model);
}
}
}
Expand Down

0 comments on commit 82e629c

Please sign in to comment.