On Thu, Apr 10, 2025 at 2:26 PM Ard Biesheuvel <ardb+...@google.com> wrote: > > From: Ard Biesheuvel <a...@kernel.org> > > -mnop-mcount can be trivially enabled for -fPIC codegen as long as PLTs > are being used, given that the instruction encodings are identical, only > the target may resolve differently depending on how the linker decides > to incorporate the object file. > > So relax the option check, and add a test to ensure that 5-byte NOPs are > emitted when -mnop-mcount is being used. > > Signed-off-by: Ard Biesheuvel <a...@kernel.org> > > gcc/ChangeLog: > > PR target/119386 > * config/i386/i386-options.cc: Permit -mnop-mcount when using > -fpic with PLTs. > > gcc/testsuite/ChangeLog: > > PR target/119386 > * gcc.target/i386/pr119386-3.c: New test.
LGTM. Thanks, Uros. > --- > gcc/config/i386/i386-options.cc | 4 ++-- > gcc/testsuite/gcc.target/i386/pr119386-3.c | 10 ++++++++++ > 2 files changed, 12 insertions(+), 2 deletions(-) > create mode 100644 gcc/testsuite/gcc.target/i386/pr119386-3.c > > diff --git a/gcc/config/i386/i386-options.cc b/gcc/config/i386/i386-options.cc > index a9fac011f3d..964449fa8cd 100644 > --- a/gcc/config/i386/i386-options.cc > +++ b/gcc/config/i386/i386-options.cc > @@ -2828,8 +2828,8 @@ ix86_option_override_internal (bool main_args_p, > if (flag_nop_mcount) > error ("%<-mnop-mcount%> is not compatible with this target"); > #endif > - if (flag_nop_mcount && flag_pic) > - error ("%<-mnop-mcount%> is not implemented for %<-fPIC%>"); > + if (flag_nop_mcount && flag_pic && !flag_plt) > + error ("%<-mnop-mcount%> is not implemented for %<-fno-plt%>"); > > /* Accept -msseregparm only if at least SSE support is enabled. */ > if (TARGET_SSEREGPARM_P (opts->x_target_flags) > diff --git a/gcc/testsuite/gcc.target/i386/pr119386-3.c > b/gcc/testsuite/gcc.target/i386/pr119386-3.c > new file mode 100644 > index 00000000000..287410b951a > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/pr119386-3.c > @@ -0,0 +1,10 @@ > +/* PR target/119386 */ > +/* { dg-do compile { target *-*-linux* } } */ > +/* { dg-options "-O2 -fpic -pg -mnop-mcount" } */ > +/* { dg-final { scan-assembler ".byte\[ \t\]+0x0f, 0x1f, 0x44, 0x00, 0x00" } > } */ > + > +int > +main () > +{ > + return 0; > +} > -- > 2.49.0.504.g3bcea36a83-goog >