Re: [PATCH] RFC: x86/jump_label: Mark arguments as const to satisfy asm constraints

From: Jason Gerecke
Date: Fri Feb 12 2021 - 10:56:19 EST


On Fri, Feb 12, 2021 at 7:27 AM Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
>
> On Fri, Feb 12, 2021 at 09:40:59AM -0500, Steven Rostedt wrote:
> > On Thu, 11 Feb 2021 13:48:48 -0800
> > Jason Gerecke <killertofu@xxxxxxxxx> wrote:
> >
> > > When compiling an external kernel module with `-O0` or `-O1`, the following
> > > compile error may be reported:
> > >
> > > ./arch/x86/include/asm/jump_label.h:25:2: error: impossible constraint in ‘asm’
> > > 25 | asm_volatile_goto("1:"
> > > | ^~~~~~~~~~~~~~~~~
> > >
> > > It appears that these lower optimization levels prevent GCC from detecting
> > > that the key/branch arguments can be treated as constants and used as
> > > immediate operands. To work around this, explicitly add the `const` label.
> >
> > Yes this makes sense. The "i" constraint needs to be a constant.
>
> Right, using -O[01] seems a little daft though. But yeah, that patch is
> correct and won't cause harm.
>
> I've queued it for after the next merge window.

Thanks. Only reason I even tried compiling at those levels was to play
around with GCC's new static analyzer options. They seem to be
ineffective at more normal optimization levels.