> Which is wrong when TRULY_NOOP_TRUNCATION_MODES_P is false which is
> what happens on MIPS.
>
> This patches fixes the problem by change the place where the call to
> gen_lowpart should have been gen_lowpart_or_truncate in
> simplify_comparison.
There is a similar transformation in the same func
Take the following testcase:
typedef unsigned long long uint64_t;
void f(uint64_t *a, uint64_t aa) __attribute__((noinline));
void f(uint64_t *a, uint64_t aa)
{
uint64_t new_value = aa;
uint64_t old_value = *a;
int bit_size = 32;
uint64_t mask = (uint64_t)(unsigned)(-1);
uint64_t tmp