[PATCH] Fix a missing truncate due with combine

2012-05-06 Thread Andrew Pinski
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

Re: [PATCH] Fix a missing truncate due with combine

2012-05-06 Thread Eric Botcazou
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 function: