Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Jan 2018 10:30:20 -0800
From:      Conrad Meyer <cem@freebsd.org>
To:        "Rodney W. Grimes" <rgrimes@freebsd.org>
Cc:        src-committers <src-committers@freebsd.org>, svn-src-all@freebsd.org,  svn-src-head@freebsd.org
Subject:   Re: svn commit: r328159 - head/sys/modules
Message-ID:  <CAG6CVpUj3SfiuHAaPMB1zGXpXPw=U-CsHgk%2BivEPyrzhvrrPKw@mail.gmail.com>
In-Reply-To: <201801191737.w0JHbM90073097@pdx.rh.CN85.dnsmgr.net>
References:  <CAG6CVpV6Suft3v-=08f5UH6BTH2NEJgU_4kYd-UphLZ6yoJB4Q@mail.gmail.com> <201801191737.w0JHbM90073097@pdx.rh.CN85.dnsmgr.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Jan 19, 2018 at 9:37 AM, Rodney W. Grimes
<freebsd@pdx.rh.cn85.dnsmgr.net> wrote:
> If you think in assembler it is easy to understand why this is UB,
> most (all) architectures Right Logic or Arithmetic Shift only accept an
> operand that is a size that can hold log2(wordsize).

This is a logical right shift by a constant larger than the width of
the left operand.  As a result, it would a constant zero in any
emitted machine code.  It is a bug in the C standard and a concession
to naive, non-optimizing compilers that this is considered UB.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAG6CVpUj3SfiuHAaPMB1zGXpXPw=U-CsHgk%2BivEPyrzhvrrPKw>