middle-end: Improve RTL expansion in expand_mul_overflow,
authorRoger Sayle <roger@nextmovesoftware.com>
Sat, 11 Jul 2020 19:03:39 +0000 (20:03 +0100)
committerRoger Sayle <roger@nextmovesoftware.com>
Sat, 11 Jul 2020 19:03:39 +0000 (20:03 +0100)
commit2b4bbc17077ac12fc9742ade4919a6de0277ac8c
treed18d787ae9291c18b6a31f6e37ad5c8c70435156
parent90efb2512d40f0a59b063aa0416a6d28849ee424
middle-end: Improve RTL expansion in expand_mul_overflow,

This patch improves the RTL that the middle-end generates for testing
signed overflow following a widening multiplication.  During this
expansion the middle-end generates a truncation which can get used
multiple times.  Placing this intermediate value in a pseudo register
reduces the amount of code generated on platforms where this truncation
requires an explicit instruction.

2020-07-11  Roger Sayle  <roger@nextmovesoftware.com>

gcc/ChangeLog:
* internal-fn.c (expand_mul_overflow): When checking for signed
overflow from a widening multiplication, we access the truncated
lowpart RES twice, so keep this value in a pseudo register.
gcc/internal-fn.c