This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH (9/7)] Widening multiplies with constant inputs


On 21/07/11 14:22, Richard Guenther wrote:
On Thu, Jul 21, 2011 at 2:53 PM, Andrew Stubbs<ams@codesourcery.com> wrote:
This patch is part bug fix, part better optimization.

Firstly, my initial patch series introduced a bug that caused an internal
compiler error when the input to a multiply was a constant. This was caused
by the gimple verification rejecting such things. I'm not totally clear how
this ever worked, but I've corrected it by inserting a temporary SSA_NAME
between the constant and the multiply.

Huh? Constant operands should be perfectly fine. What was the error you got?

Ok, so it seems that the fold_convert we thought was redundant in patch 5 (now moved to patch 2) was in fact responsible for making constants the right type.


I've rewritten it to use fold_convert to change the constant.

I also discovered that widening multiply-and-accumulate operations were not
recognised if any one of the three inputs were a constant. I've corrected
this by adjusting the pattern matching. This also required inserting new
SSA_NAMEs to make it work.

See above.

The pattern matching stuff remains the same, but the constant conversions have been updated.


In order to insert the new SSA_NAME, I've simply reused the existing type
conversion code - the only difference is that the conversion may be a no-op,
so it just generates a straight forward assignment.

OK?

Nope. I suppose you forget to adjust the constants type? Just fold-convert it before using it as input to a macc.

Done.


OK?

Andrew


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]