Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Dec 2016 20:41:36 -0800
From:      Mark Millard <markmi@dsl-only.net>
To:        Justin Hibbits <jhibbits@FreeBSD.org>, Nathan Whitehorn <nwhitehorn@freebsd.org>
Cc:        FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>
Subject:   sys/powerpc/powerpc/trap.c has messed up masking operation?: use of || for bit field masling
Message-ID:  <0661C9A5-5D4C-4F00-9B0C-F80688BED8A4@dsl-only.net>

next in thread | raw e-mail | index | archive | help
clang 3.9.0 is complaining about:

--- trap.o ---
/usr/src/sys/powerpc/powerpc/trap.c:283:42: warning: use of logical '||' =
with constant operand [-Wconstant-logical-operand]
                        frame->cpu.booke.dbcr0 &=3D ~(DBCR0_IDM || =
DBCR0_IC);
                                                              ^  =
~~~~~~~~
/usr/src/sys/powerpc/powerpc/trap.c:283:42: note: use '|' for a bitwise =
operation
                        frame->cpu.booke.dbcr0 &=3D ~(DBCR0_IDM || =
DBCR0_IC);
                                                              ^~
                                                              |
Looking around:


# grep DBCR0_ /usr/src/sys/powerpc/include/spr.h
. . .
#define   DBCR0_IDM               0x40000000 /* Internal Debug Mode */
. . .
#define   DBCR0_IC                0x08000000 /* Instruction Completion =
debug event */
. . .

|| use seems unlikely to be correct for the context.


There is also this that I happened to notice =
sys/powerpc/powerpc/intr_machdep.c :

--- intr_machdep.o ---
/usr/src/sys/powerpc/powerpc/intr_machdep.c:454:15: warning: comparison =
of constant -1 with expression of type 'enum intr_trigger' is always =
false [-Wtautological-constant-out-of-range-compare]
                if (i->trig =3D=3D -1)
                    ~~~~~~~ ^  ~~
/usr/src/sys/powerpc/powerpc/intr_machdep.c:500:16: warning: comparison =
of constant -1 with expression of type 'enum intr_trigger' is always =
false [-Wtautological-constant-out-of-range-compare]
                        if (i->trig =3D=3D -1)
                            ~~~~~~~ ^  ~~

There are other comparisons around with a constant=20
result at compile time. But they tend to be in less
central areas like zfs. Similarly for some other
types of compiler reports.

=3D=3D=3D
Mark Millard
markmi at dsl-only.net




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0661C9A5-5D4C-4F00-9B0C-F80688BED8A4>