compiler: avoid negative zero in float constants

Check for negative numbers with very small magnitudes that will round
to negative zero, and force them to positive zero instead.

This implements the spec clarification in https://golang.org/cl/14727.
The test is in https://golang.org/cl/91895.

Fixes golang/go#12621

Change-Id: Idb048465d6860d41df11434343b1b545a7db073a
Reviewed-on: https://go-review.googlesource.com/92175
Reviewed-by: Than McIntosh <thanm@google.com>
2 files changed