diff options
author | Jan Hubicka <jh@suse.cz> | 2003-08-23 23:18:58 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2003-08-23 21:18:58 +0000 |
commit | ebe75517d4ffdb7045a607c6c5426306dbf662ee (patch) | |
tree | ef23e0b47fa47061a7aed684f7759a059e614a6f /gcc/expr.c | |
parent | 066ec9c97beec87ae5763b7cd541d3302f81ebce (diff) | |
download | gcc-ebe75517d4ffdb7045a607c6c5426306dbf662ee.zip gcc-ebe75517d4ffdb7045a607c6c5426306dbf662ee.tar.gz gcc-ebe75517d4ffdb7045a607c6c5426306dbf662ee.tar.bz2 |
re PR c/11369 (too relaxed checking with -Wstrict-prototypes)
PR target/11369
* i386.c (ix86_expand_carry_flag_compare): Validate operand.
PR target/11031
* i386.c (const_0_to_3_operand, const_0_to_7_operand,
const_0_to_15_operand, const_0_to_255_operand): New predicates.
* i386.h (PREDICATE_CODES): Add these.
* i386.c (pinsrw and pextrw patterns): Use them.
PR target/10984
* i386.c (ix86_expand_binop_builtin): Behave sanely for VOIDmodes.
PR target/8869
* expr.c (convert_modes): Deal properly with integer to vector
constant conversion.
PR target/8871
* i386.md (zero_extendsidi2*): Add MMX and SSE alternatives.
From-SVN: r70751
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -1419,6 +1419,15 @@ convert_modes (enum machine_mode mode, enum machine_mode oldmode, rtx x, int uns return gen_lowpart (mode, x); } + /* Converting from integer constant into mode is always equivalent to an + subreg operation. */ + if (VECTOR_MODE_P (mode) && GET_MODE (x) == VOIDmode) + { + if (GET_MODE_BITSIZE (mode) != GET_MODE_BITSIZE (oldmode)) + abort (); + return simplify_gen_subreg (mode, x, oldmode, 0); + } + temp = gen_reg_rtx (mode); convert_move (temp, x, unsignedp); return temp; |