https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115695
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Reduced testcase:
```
int f() {
short a = 0;
return (unsigned)a * sizeof(short);
}
```
The warning in GCC 9 and before was:
```
<source>:4:16: warning: conversion to 'long unsigned int' from 'short int' may
change the sign of the result [-Wsign-conversion]
```
I think that is wrong too.
Looks like the warning is happening after some optimization moving the multiply
and then giving the wrong types incorrectly.