compiler: handle >32bit exponent in Ldexp

Libgo's implementation of math.Ldexp declared the libc "ldexp" as
taking an 'int' exponent argument, which is not quite right for 64-bit
platforms (exp arg is always int32); this could yield incorrect
results for exponent values outside the range of Minint32/Maxint32.
Fix by upating the type for the libc version of ldexp, and adding
guards to screen for out-of-range exponents.

Fixes #21323.

Change-Id: I5a937473b594a34b6479183d5194806a925935a4
Reviewed-on: https://go-review.googlesource.com/54250
Reviewed-by: Ian Lance Taylor <iant@golang.org>
1 file changed