re PR middle-end/20419 (ICE in gen_lowpart_general, at rtlhooks.c:58)

PR middle-end/20419
	* builtins.c (expand_builtin_signbit): Force the signbit's word
	into an integer register to avoid SUBREGs of floating point modes.

From-SVN: r96328
This commit is contained in:
Roger Sayle 2005-03-12 04:56:29 +00:00 committed by Roger Sayle
parent 7999e310bf
commit 210e185272
2 changed files with 11 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2005-03-11 Roger Sayle <roger@eyesopen.com>
PR middle-end/20419
* builtins.c (expand_builtin_signbit): Force the signbit's word
into an integer register to avoid SUBREGs of floating point modes.
2005-03-12 Kazu Hirata <kazu@cs.umass.edu>
* cfglayout.c, loop-doloop.c, profile.c, target-def.h,

View File

@ -5003,6 +5003,11 @@ expand_builtin_signbit (tree exp, rtx target)
bitpos = bitpos % BITS_PER_WORD;
}
/* Force the intermediate word_mode (or narrower) result into a
register. This avoids attempting to create paradoxical SUBREGs
of floating point modes below. */
temp = force_reg (imode, temp);
/* If the bitpos is within the "result mode" lowpart, the operation
can be implement with a single bitwise AND. Otherwise, we need
a right shift and an AND. */