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