Evgeny Karpov <evgeny.kar...@microsoft.com> writes: > Monday, September 2, 2024 5:00 PM > Richard Sandiford <richard.sandif...@arm.com> wrote: > >> I think we should instead patch the callers that are using >> aarch64_symbol_binds_local_p for GOT decisions. The function itself >> is checking for a more general property (and one that could be useful >> in other contexts). > > The patch has been refactored to address the review. Thanks! > > diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc > index e4df70ddedc..8dc10efa629 100644 > --- a/gcc/config/aarch64/aarch64.cc > +++ b/gcc/config/aarch64/aarch64.cc > @@ -20988,7 +20988,7 @@ aarch64_classify_symbol (rtx x, HOST_WIDE_INT offset) > /* With -fPIC non-local symbols use the GOT. For orthogonality > always use the GOT for extern weak symbols. */ > if ((flag_pic || SYMBOL_REF_WEAK (x)) > - && !aarch64_symbol_binds_local_p (x)) > + && !aarch64_symbol_binds_local_p (x) && !TARGET_PECOFF) > return SYMBOL_TINY_GOT; > > /* When we retrieve symbol + offset address, we have to make sure > @@ -21010,7 +21010,7 @@ aarch64_classify_symbol (rtx x, HOST_WIDE_INT offset) > case AARCH64_CMODEL_SMALL_PIC: > case AARCH64_CMODEL_SMALL: > if ((flag_pic || SYMBOL_REF_WEAK (x)) > - && !aarch64_symbol_binds_local_p (x)) > + && !aarch64_symbol_binds_local_p (x) && !TARGET_PECOFF) > return aarch64_cmodel == AARCH64_CMODEL_SMALL_SPIC > ? SYMBOL_SMALL_GOT_28K : SYMBOL_SMALL_GOT_4G;
Sorry for the nits, but: the GCC convention is to put each && on a separate line when the && chain spans multiple lines. And I think it makes sense to test TARGET_PECOFF first: if (!TARGET_PECOFF && (flag_pic || SYMBOL_REF_WEAK (x)) && !aarch64_symbol_binds_local_p (x)) Thanks, Richard