Integrated: 8371162: Compiler warns about implicit cast from long to int in shift operation

Archie Cobbs acobbs at openjdk.org
Fri Jan 30 03:46:10 UTC 2026


On Thu, 6 Nov 2025 17:17:45 GMT, Archie Cobbs <acobbs at openjdk.org> wrote:

> Consider code like this:
> 
> int x = 1;
> x <<= 1L;
> 
> The compiler currently emits this warning:
> 
> warning: [lossy-conversions] implicit cast from long to int in compound assignment is possibly lossy
>         x <<= 1L;
>               ^
> 
> By definition, bit shift operations only use the bottom 5 or 6 bits of the specified shift amount (in this example, `1L`), and the JLS does not require the shift amount to be any specific integral type, only that that it be some integral type. So as long all but the bottom 5 or 6 bits are zero, there is no loss of information and the warning is inappropriate.
> 
> The case where the bottom 5 or 6 bits are _not_ all zero is addressed separately in [JDK-5038439](https://bugs.openjdk.org/browse/JDK-5038439).

This pull request has now been integrated.

Changeset: 2953e0f4
Author:    Archie Cobbs <acobbs at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/2953e0f445e147d778d4e765be0301cda6557ed5
Stats:     46 lines in 3 files changed: 39 ins; 4 del; 3 mod

8371162: Compiler warns about implicit cast from long to int in shift operation

Reviewed-by: vromero

-------------

PR: https://git.openjdk.org/jdk/pull/28180


More information about the compiler-dev mailing list