[PATCH RESEND] riscv: don't specify -mno-save-restore when building with clang

Tobias Klauser tklauser at distanz.ch
Wed Jul 29 00:41:43 EDT 2020


On 2020-07-28 at 18:06:36 +0200, Tobias Klauser <tklauser at distanz.ch> wrote:
> On 2020-07-28 at 17:20:45 +0200, Palmer Dabbelt <palmer at dabbelt.com> wrote:
> > On Tue, 28 Jul 2020 06:12:52 PDT (-0700), tklauser at distanz.ch wrote:
> > > Clang doesn't support -msave-restore and -mno-save-restore. This avoids
> > > the following message emitted by clang:
> > > 
> > >   '-save-restore' is not a recognized feature for this target (ignoring feature)
> > > 
> > > Signed-off-by: Tobias Klauser <tklauser at distanz.ch>
> > > ---
> > > Resent due to infradead.org mailing list issues.
> > > 
> > >  arch/riscv/Makefile | 2 ++
> > >  1 file changed, 2 insertions(+)
> > > 
> > > diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile
> > > index fb6e37db836d..cd3720bc45e8 100644
> > > --- a/arch/riscv/Makefile
> > > +++ b/arch/riscv/Makefile
> > > @@ -44,7 +44,9 @@ riscv-march-$(CONFIG_RISCV_ISA_C)	:= $(riscv-march-y)c
> > >  KBUILD_CFLAGS += -march=$(subst fd,,$(riscv-march-y))
> > >  KBUILD_AFLAGS += -march=$(riscv-march-y)
> > > 
> > > +ifndef CONFIG_CC_IS_CLANG
> > >  KBUILD_CFLAGS += -mno-save-restore
> > > +endif
> > >  KBUILD_CFLAGS += -DCONFIG_PAGE_OFFSET=$(CONFIG_PAGE_OFFSET)
> > > 
> > >  ifeq ($(CONFIG_CMODEL_MEDLOW),y)
> > 
> > Thanks, this one didn't make it the first time.  Is there a reason we can't use
> > cc-option here?  IIRC that's what we use for the other compiler options that
> > may be unimplemented, and it has the advantage of avoiding encoding specific
> > compilers into the build system.
> 
> Thanks for the hint. I don't know how I could've overlooked cc-option.
> Will send a v2 using cc-option.

Looks like it's a bit more complicated:

Using just cc-option still leads to the warning being emitted, so I
think the CONFIG_CC_IS_CLANG check is still needed (checked using clang
10). Also, it looks like clang 11 and newer support -m{no,}save-restore
[1], so we would want to keep it for these versions. Will send a v1
shortly with a proper clang version check. Also see [2].

[1] https://github.com/llvm/llvm-project/commit/07f7c00208b393296f8f27d6cd3cec2b11d86fd8
[2] https://github.com/ClangBuiltLinux/linux/issues/804



More information about the linux-riscv mailing list