On 2011/3/20 08:11 PM, Richard Guenther wrote:
> On Sun, Mar 20, 2011 at 12:01 PM, Chung-Lin Tang
> <clt...@codesourcery.com> wrote:
>> Hi,
>> PR48183 is a case where ARM NEON instrinsics, under -O -g, produce debug
>> insns that tries to expand OImode (32-byte integer) zero constants, much
>> too large to represent as two HOST_WIDE_INTs; as the internals manual
>> indicates, such large constants are not supported in general, and ICEs
>> on the GET_MODE_BITSIZE(mode) == 2*HOST_BITS_PER_WIDE_INT assertion.
>>
>> This patch allows the cases where the large integer constant is still
>> representable using a single CONST_INT, such as zero(0). Bootstrapped
>> and tested on i686 and x86_64, cross-tested on ARM, all without
>> regressions. Okay for trunk?
> 
> Hum, if you make it fit into a CONST_INT why not make it fit into a 
> CONST_DOUBLE
> where it should _always_ fit because of the limits of the arguments given to
> immed_double_const.  Thus, why not simply remove the assert - also a question

Well you're right, simply removing the assertion might work as well; my
patch sort of tried to solve the specific case at hand conservatively...

> for other reviewers?  Or rather, why does immed_double_const have a mode
> argument and does not require the caller to properly truncate?

I guess the existence of such large integer modes are probably
relatively new, and usually not directly used this way?

Thanks,
Chung-Lin

Reply via email to