Currently clang emits warning with -Wconversion for the following code
on LP64 system e.g. x86_64-unknown-linux-gnu:
long foo(long x) { return 1LL<<x; }
warning: implicit conversion changes signedness: 'long long' to 'long' [-Wsign-conversion]
return 1ll << x; ~~~~~~ ~~~~^~~~
This does not make sense since all operands are signed.
This patch fixes that to match -m32 and GCC behaviour.
Consider adding an example when this condition triggers to help understanding, e.g. long t2 = 1LL << x; on LP64 systems.