This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, middle-end]: Fix rtl-optimization/32366, [4.3 Regression] Segfault in significand_size with -ftree-vectorize
- From: Eric Botcazou <ebotcazou at libertysurf dot fr>
- To: Uros Bizjak <ubizjak at gmail dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Sun, 17 Jun 2007 13:50:39 +0200
- Subject: Re: [PATCH, middle-end]: Fix rtl-optimization/32366, [4.3 Regression] Segfault in significand_size with -ftree-vectorize
- References: <46751ACD.40905@gmail.com>
> Sometimes vector modes wander into places that are not prepared to
> handle them. Attached patch fixes ICE in significand_size() by
> converting vector and complex modes into their inner mode before further
> processing.
I'm not sure this makes much sense for
/* (float_truncate (float x)) is (float x) */
if (GET_CODE (op) == FLOAT
&& (flag_unsafe_math_optimizations
|| ((unsigned)significand_size (GET_MODE (op))
>= (GET_MODE_BITSIZE (GET_MODE (XEXP (op, 0)))
- num_sign_bit_copies (XEXP (op, 0),
GET_MODE (XEXP (op, 0)))))))
return simplify_gen_unary (FLOAT, mode,
XEXP (op, 0),
GET_MODE (XEXP (op, 0)));
What about checking that the mode is scalar instead?
--
Eric Botcazou