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: Iaf8221d40b8afb4318848990800d2ca2e43f0f8b
Reviewed-on: https://go-review.googlesource.com/91915
Reviewed-by: Than McIntosh <thanm@google.com>
2 files changed