sys/powerpc/powerpc/trap.c has messed up masking operation?: use of || for bit field masling

Justin Hibbits jhibbits at FreeBSD.org
Fri Dec 16 04:42:40 UTC 2016


Hi Mark,

On Dec 13, 2016, at 10:41 PM, Mark Millard wrote:

> 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 &= ~(DBCR0_IDM ||  
> DBCR0_IC);
>                                                              ^   
> ~~~~~~~~
> /usr/src/sys/powerpc/powerpc/trap.c:283:42: note: use '|' for a  
> bitwise operation
>                        frame->cpu.booke.dbcr0 &= ~(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.
>

Good find.  Fixed in r310146, to be merged to stable/11 in a couple  
weeks.


>
> 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 == -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 == -1)
>                            ~~~~~~~ ^  ~~

This may or may not be a problem, depending on optimization settings.   
Can you file a bug for this so it doesn't get lost?

>
> There are other comparisons around with a constant
> result at compile time. But they tend to be in less
> central areas like zfs. Similarly for some other
> types of compiler reports.
>
> ===
> Mark Millard
> markmi at dsl-only.net
>


Thanks for the clang and external toolchain testing.  Lots of good  
finds.

- Justin


More information about the freebsd-ppc mailing list